cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Observer
Observer
1,392 Views
Registered: ‎04-04-2013

Get a list of primitives supported by the current device

Is there a way to obtain all library cells that are supported by the device used?

I.e. get_lib_cells returns a list of all cells for the architecture currently open but for some cells there are no bels available.

0 Kudos
Reply
6 Replies
Moderator
Moderator
1,375 Views
Registered: ‎11-04-2010

Hi, @redted ,

Hope my reply in this thread can help you:

https://forums.xilinx.com/t5/Vivado-TCL-Community/how-to-print-all-the-different-components-in-one-clock-region/td-p/929601

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 Kudos
Reply
Observer
Observer
1,346 Views
Registered: ‎04-04-2013

Hi @hongh,

while that is a good starting point I miss some primitives, i.e. FIFOs, which are mapped onto the BRAMs. If I select a BRAM tile and run get_sites -of [get_selected_objects ] I get RAMB18_X1Y95 RAMB18_X1Y94 RAMB36_X1Y47, the FIFO sites are not visible. Do you know how I can fix that?

0 Kudos
Reply
Moderator
Moderator
1,339 Views
Registered: ‎11-04-2010

Hi, @redted ,

There is no FIFO site.

FIFO primitive is also placed in RAMB18_X?Y? site, same as BRAM.

 

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
pic2.png
0 Kudos
Reply
Moderator
Moderator
1,338 Views
Registered: ‎11-04-2010

Hi, @redted , 

Can the below command be helpful?

join [get_primitives] \n

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Observer
Observer
1,281 Views
Registered: ‎04-04-2013

Hello @hongh,

thank you so much for your continued support, I actually missed get_primitives, however it seems to output a bit more, i.e. if I run it on a design with an xczu3eg-sfva625-1-i  I get  for instance a cell GTHE4_CHANNEL, however, I can't place the cell, since the target device does not have ANY compatible sites. I.e. the command seems to report the primitives for the current device family rather than the part.

Regarding the "FIFO site", I was talking about bels. If I have a placed design and run "get_property TYPE [get_bels -of <placedFifo>]" I get FIFO18E2_FIFO18E2 or FIFO36E2_FIFO36E2, however, if I use this bel type to look for available bels I get an empty result:

get_bels -filter TYPE==FIFO36E2_FIFO36E2&&!IS_USED.

By the way, when skimming the results from get_primitives I noticed that LUT6_2 was absent, further investigation showed me that this actually is a macro. Is there a way to get the available macros as well? ([get_macros -help] states that it only reports macros used in the design, and it does not even return LUT6_2 even though I am working on a design with a placed LUT6_2)

0 Kudos
Reply
Moderator
Moderator
1,275 Views
Registered: ‎11-04-2010

Hi, @redted , 

I try the below commands in xczu3eg-sfva625-1-i. It seem that the type of the bel you are using is incorrect, which cause no object found.

%get_property TYPE [get_bels RAMB18_X1Y70/RAMBFIFO18]
RAMBFIFO18E2_RAMBFIFO18E2
%get_bels -filter { TYPE==RAMBFIFO18E2_RAMBFIFO18E2 && !IS_USED}
RAMB18_X0Y70/RAMBFIFO18 RAMB18_X1Y70/RAMBFIFO18 RAMB18_X2Y70/RAMBFIFO18 ...

For the primitive LUT6_2, it just shares the same site of the related LUT6.

 

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 Kudos
Reply