We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome,
Firefox,
Internet Explorer 11,
Safari. Thank you!

AR# 216

SYNPLIFY: How to manage hierarchy using the syn_netlist_hierarchy and syn_hier attributes?

Description

Keywords: Synplify, hierarchy

Urgency: Standard

General Description: How to manage hierarchy with Synplify using thesyn_netlist_hierarchy and syn_hier attributes?

Synplify provides 2 attributes to manage hiearchy, syn_netlist_hierarchyand syn_hier. The syn_netlist_hierarchy attribute when true maintainshierarchy in the EDIF netlist. When 0, gives a flattened netlist (thoughsynthesis may still be maintaining hierarchy). The syn_hier is controlshierarchy boundaries during synthesis. The syn_hier_netlist does notaffect synthesis, just the output from synthesis. While syn_hier affectssynthesis, and hence, maybe the output EDIF file.

When targeting Virtex designs, hierarchy can be preserved in the EDIFnetlist with the syn_netlist_hierarchy attribute. To specify thesyn_netlist_hierarchy attribute globally in the SDC file.

define_global_attribute syn_netlist_hierarchy 1

For non-Virtex designs, you should continue to accept the default of aflattened hierarchy (syn_netlist_hierarchy = 0) of the EDIF netlist.Setting this attribute to 0 will also cause the hierarchy in the TechnologyView of HDL Analyst to be flattened.

The syn_hier attribute is applied to instances, modules, or architectures.It takes one of 5 values:

"soft" - The default option, and gives Synplify control over whichhierarchical boundaries to dissolve. Synplify chooses between "firm" and"hard" depending upon which is optimum for your design unit. This attributeaffects only to the design unit it was specified in.

"firm" - Prevents a level of hierarchy from being dissolved, however, simpleboolean optimizations will still take place across hierarchical boundaries. Thisattribute affects only to the design unit to which it was specified.

"hard" - Preserve the interface of the design unit with no exceptions. Thisattribute affects only to the design unit to which it was specified.

"remove" - Dissolves a level of hierarchy in the design unit in which is wasspecified. Hierarchy at lower levels are unaffected.

"flatten" - Flatten the hierarchy of all levels below, but not including, the onein which it was specified. This value applies to optimization and mapping only.By default, the hierarchy of your design is restored in the output netlist. Thisrestoration can be inhibited by setting a syn_netlist_hierarchy attribute to 0(false) on the top-level module of your design.

The "flatten" value can optionally be used as the first value (followed by acomma) in conjunction with the other values as shown below. If "flatten" isused in conjunction with another value, Synplify will flatten as directed untilencountering another syn_hier attribute set at a lower level. The lower levelsyn_hier attribute will then take precedence over the higher level one.

"flatten,soft" - The same as "flatten" by itself.

"flatten,firm" - Flatten all lower levels of the design but preserve the interfaceof the design unit it was specified in and allow optimization of cell packingacross the boundary.

"flatten,remove" - Flatten all lower levels of the design including this one.

Notice that these options control the way Synplify handles a design duringoptimization only. Regardless of which option is selected (remove, soft, hard,firm, or hard), Synplify will rebuild the hierarchy before the final netlist is created,ensuring that the netlist created by Synplify is efficient with regard to hierarchicalboundary optimizations, and structurally as close as possible to the source code.