UPGRADE YOUR BROWSER

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!

cancel
Showing results for 
Search instead for 
Did you mean: 
Visitor girinaresh
Visitor
3,332 Views
Registered: ‎06-11-2017

XDC Macro Use For Multiple Instances

Hi Everyone,

 

I am trying to create macro and use it for multiple instances of same module. I can create a macro and and write constraints of macro using write_xdc command. But while applying it for other instances of same module using read_xdc -cell command it shows

 

CRITICAL WARNING: [Vivado 2-1106] update_macro: no cell found for cell name. 

 

This is because the Leaf Cells have different names for different instances.

How can I make Leaf Cells with same name, so that I can use Macro? I have read UG903 and watched video on YouTube but they do not tell about names on leaf cells because of which it's giving me warning.

 

Thank you,

Nare

Tags (3)
0 Kudos
7 Replies
Xilinx Employee
Xilinx Employee
3,288 Views
Registered: ‎09-20-2012

Re: XDC Macro Use For Multiple Instances

Hi @girinaresh

 

Are you saying that the vivado tool is changing the names of leaf cells? 

 

Can you show us the same leaf cell names in different instances of same module?

Thanks,
Deepika.
--------------------------------------------------------------------------------------------
Google your question before posting. If someone's post answers your question, mark the post as answer with "Accept as solution". If you see a particularly good and informative post, consider giving it Kudos (the star on the left)
0 Kudos
Visitor girinaresh
Visitor
3,262 Views
Registered: ‎06-11-2017

Re: XDC Macro Use For Multiple Instances

Hi Deepika,

 

Thanks for the reply.

 

The image of netlist is attached. Here, RO1, RO2, RO3, and RO4 are instances of same module "RO". And the name of leaf cells for each instances are different.

If I create a macro for RO1 and use it for RO2 and RO3... it gives me warning because cell name are different for each instances.

 

And I have instantiated module 'RO' using code as

RO RO1(  .enable ( enable ),
         .out (roOut1)
       );
RO RO2(  .enable (enable ),
         .out ( roOut2 )
       );

and so on. Here, RO is simple combination of 'and gate and not gates'.

 

Thank you.

 

Nare

netlist.PNG
0 Kudos
Xilinx Employee
Xilinx Employee
3,227 Views
Registered: ‎09-20-2012

Re: XDC Macro Use For Multiple Instances

Hi @girinaresh

 

From the LUT cell names, it looks like these cells are inferred by the synthesis tool. If you want same leaf cell names, you can synthesize this module in OOC mode separately and use the netlist in the top level project instead.

Thanks,
Deepika.
--------------------------------------------------------------------------------------------
Google your question before posting. If someone's post answers your question, mark the post as answer with "Accept as solution". If you see a particularly good and informative post, consider giving it Kudos (the star on the left)
Visitor girinaresh
Visitor
3,186 Views
Registered: ‎06-11-2017

Re: XDC Macro Use For Multiple Instances

Hi Deepika,

 

Thank you for the reply. Synthesizing RO module in OOC mode generated same leaf cell names for each instantiation. And I can reuse macro for other instantiations.

 

But I get new critical warning as 

CRITICAL WARNING: [Vivado 12-2285] Cannot set LOC property of instance 'RO4/w5_inferred_i_1', Instance RO4/w5_inferred_i_1 can not be placed in A6LUT of site SLICE_X0Y0 because the bel is occupied by RO1/w5_inferred_i_1(port:). This could be caused by bel constraint conflict [C:/Users/bpoudel/Desktop/Vivado/RingOscillatorPUF/macro1.xdc:13]
Resolution: When using BEL constraints, ensure the BEL constraints are defined before the LOC constraints to avoid conflicts at a given site.

 

I think this is because, I am trying to use same macro location for other instantiation as well. How can I solve this? Should I manually place for each macro instantiations?

0 Kudos
Xilinx Employee
Xilinx Employee
3,176 Views
Registered: ‎09-20-2012

Re: XDC Macro Use For Multiple Instances

Hi @girinaresh

 

You may have to create separate XDC macro for each instance. 

Thanks,
Deepika.
--------------------------------------------------------------------------------------------
Google your question before posting. If someone's post answers your question, mark the post as answer with "Accept as solution". If you see a particularly good and informative post, consider giving it Kudos (the star on the left)
0 Kudos
Visitor hazarinoor
Visitor
1,142 Views
Registered: ‎09-30-2016

Re: XDC Macro Use For Multiple Instances

Hi,

 

Have you able to solve the problems? I am trying to do the same thing and stuck in creating the macro.

in my case when I try to update the macro it shows 

update_macro Rosc{u0/LUT1_inst X43Y2 u0/LUT3_inst X43Y2 u0/LUT5_inst X43Y2 u0/LUT2_inst X42Y2 u0/LUT4_inst X42Y2 }
ERROR: [Common 17-165] Too many positional options when parsing '}', please type 'update_macro -help' for usage info.

I need help because it is not clear after watching the video on xdc macro. 

I used to work on ISE and now switching to vivado.

0 Kudos
Highlighted
Moderator
Moderator
1,016 Views
Registered: ‎01-16-2013

Re: XDC Macro Use For Multiple Instances

@hazarinoor,

 

your error seems to be incorrect syntax. Can you try giving space after Rosc? 

update_macro Rosc {u0/LUT1_inst X43Y2 u0/LUT3_inst X43Y2 u0/LUT5_inst X43Y2 u0/LUT2_inst X42Y2 u0/LUT4_inst X42Y2 }

 

--Syed

---------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.

Did you check our new quick reference timing closure guide (UG1292)?
---------------------------------------------------------------------------------------------
Tags (1)