cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
abregnsbo
Visitor
Visitor
858 Views
Registered: ‎05-09-2019

How to prevent Vivado synthesis from changing ports on an instance

Jump to solution

How do I prevent Vivado synthesis from changing ports on an instance ? During Vivado synthesis the tool add numerous ports and many name changes on a lower level instance. I need the ports unmodified compared to rtl so I can use the hierarchy (and everything below) for a gatelevel simulations.

In the VHDL architecture I added the KEEP_HIERARCHY attribute, and tried setting it to "yes" and "true", but this had no effect.

architecture rtl of maserati is

-- The keep_hierarchy is needed if we want to do gate-level simulation on the maserati hierarchy. Without this
-- attribute Vivado synthesis polutes the maserati hierarchy with numerous extra ports and extensive port renaming.
-- However below code does not work. Tried with both "yes" and "true".
attribute keep_hierarchy : string;
attribute keep_hierarchy of rtl : architecture is "true";

 

0 Kudos
1 Solution

Accepted Solutions
nithink
Xilinx Employee
Xilinx Employee
835 Views
Registered: ‎09-04-2017

I meant the same when i mentioned that hierarchies will be retained. when you use flatten_hierarchy none, all the hierachies along with the ports will be retained.

You need to understand that if there are user defined datatypes, those will be bitblasted.

Thanks,

Nithin

View solution in original post

4 Replies
nithink
Xilinx Employee
Xilinx Employee
856 Views
Registered: ‎09-04-2017

If you want all the hierarchies to be retained, you can synthesize with 

flatten_ierarchy = "none" option switch during synth_design

The RTL attributes works at that level. It doesn't propagate across the internal hierarchies

Thanks,

Nithin

 

0 Kudos
abregnsbo
Visitor
Visitor
838 Views
Registered: ‎05-09-2019

The problem is not that a hierarchy is removed. The hierarchy I want is retained, but Vivado synthesis makes numerious changes of the ports of that hierarchy.

0 Kudos
nithink
Xilinx Employee
Xilinx Employee
836 Views
Registered: ‎09-04-2017

I meant the same when i mentioned that hierarchies will be retained. when you use flatten_hierarchy none, all the hierachies along with the ports will be retained.

You need to understand that if there are user defined datatypes, those will be bitblasted.

Thanks,

Nithin

View solution in original post

abregnsbo
Visitor
Visitor
833 Views
Registered: ‎05-09-2019
Ahh ok. Will try that out.
0 Kudos