![]() |
|
![]() |
|
Answers Database
SYNPLIFY: How to manage hierarchy using the syn_netlist_hierarchy and syn_hier attributes?
Record #216
Product Family: Software define_global_attribute syn_netlist_hierarchy 1 For non-Virtex designs, you should continue to accept the default of a flattened hierarchy (syn_netlist_hierarchy = 0) of the EDIF netlist. Setting this attribute to 0 will also cause the hierarchy in the Technology View of HDL Analyst to be flattened. "syn_hier" - Controls the amount of logic hierarchy flattening inside a module or instance. 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 which hierarchical boundaries to dissolve. Synplify chooses between "firm" and "hard" depending upon which is optimum for your design unit. This attribute affects only to the design unit it was specified in. "firm" - Prevents a level of hierarchy from being dissolved, however, simple boolean optimizations will still take place across hierarchical boundaries. This attribute affects only to the design unit to which it was specified. "hard" - Preserve the interface of the design unit with no exceptions. This attribute affects only to the design unit to which it was specified. "remove" - Dissolves a level of hierarchy in the design unit in which is was specified. Hierarchy at lower levels are unaffected. "flatten" - Flatten the hierarchy of all levels below, but not including, the one in 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. This restoration 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 a comma) in conjunction with the other values as shown below. If "flatten" is used in conjunction with another value, Synplify will flatten as directed until encountering another syn_hier attribute set at a lower level. The lower level syn_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 interface of the design unit it was specified in and allow optimization of cell packing across 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 during optimization 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 hierarchical boundary optimizations, and structurally as close as possible to the source code. Solution 1: VHDL ---- VHDL: attribute syn_hier: string; attribute syn_hier of block_A : architecture is "firm"; Solution 2: Verilog ------- module block_A (<port_interface>) /* synthesis syn_hier = "firm" */; Solution 3: SDC --- define_attribute {U1} syn_hier {firm} End of Record #216 - Last Modified: 06/18/99 10:45 |
| For the latest news, design tips, and patch information on the Xilinx design environment, check out the Technical Tips! |