Unless you plan to force Vivado synthesis to keep the complete hierarchy of
your design, some or all levels of the hierarchy can be flattened during synthesis. For
more information, see the -flatten_hierarchy
information at this link in the
Vivado Design Suite User Guide: Synthesis (UG901).
For example, consider the following register located in a sub-level of the design. Elaborated Design Example:
inst_A/inst_B/control_reg
During synthesis (assuming no special optimization is performed on this register), you can get either flat or hierarchical name depending on the tool options or the design structure.
Instance name in a flat netlist:
inst_A/inst_B/control_reg (F)
Instance name in a hierarchical netlist:
inst_A/inst_B/control_reg (H)
There is no obvious difference because the / character is also used to mark flattened hierarchy levels. You will notice the difference when querying the object in memory. The following commands will return the netlist object for F but not H:
% get_cells -hierarchical *inst_B/control_reg
% get_cells inst_A*control_reg
In order to avoid problems related to hierarchical names, Xilinx recommends that you do the following:
- Use
get_*
commands without the-hierarchical
option. - Mark explicitly with the forward-slash (/) character all the levels of hierarchy as they show in the elaborated design view.
Examples without the -hierarchical
option:
- This option works for both flat and hierarchical
netlists:
% get_cells inst_A/inst_B/*_reg % get_cells inst_*/inst_B/control_reg
- Another option
is:
% get_cells -hier -filter {NAME =~ inst_A/inst_B/*_reg} % get_cells -hier -filter {NAME =~ inst_*/inst_B/control_reg}
Some pre-synthesis constraints might no longer apply properly because of the transformations performed by synthesis on the design. To resolve these problems, do the following:
- Find the new XDC syntax that applies to the synthesized netlist.
- Save the constraints in a new XDC file to be used during implementation only.
- Move the synthesis constraints that can no longer be applied to a separate XDC file that will be used for synthesis only.