cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
833 Views
Registered: ‎09-19-2019

vivado can't apply DONT_TOUCH attribute after ASYNC_REG

Hi,

At synchronizer implementation, I want to ensure that after implementation, both FFs will be at the same CLB.

I set two attributes to the FFs - (* ASYNC_REG = "TRUE", DONT_TOUCH = "TRUE" *) 

After synthesis or implementation, when I examine each FF property, I see that only async_reg set to true and dont_touch remain at false.

When I change the order of the attributes, i.e (*DONT_TOUCH = "TRUE" ,ASYNC_REG = "TRUE"*) , only dont_touch applied.

Did there is any problem to set them both? Or any priority issue?

Thanks

Tags (2)
0 Kudos
4 Replies
819 Views
Registered: ‎01-22-2015

amostrabelsi@gmail.com 

Welcome to the Xilinx Forum!

As explained on page 143 of UG912(v2019.1), Vivado synthesis treats the ASYNC_REG property like the DONT_TOUCH property.  So, setting the ASYNC_REG property alone is all that's needed.

In earlier versions of Vivado (prior to about v2016.1), setting ASYNC_REG using HDL attribute statements did not work reliably.  The solution was to place a Tcl constraint similar to the following in the Vivado .xdc file.

set_property ASYNC_REG TRUE [get_cells {sync_regs*}]


Also, I have some old notes saying that use of DONT_TOUCH and ASYNC_REG together on a register in old versions of Vivado caused problems.

However, I find that both the HDL attribute statements and the xdc-file Tcl constraints are reliably setting the ASYNC_REG property in the new versions (year-2016 and beyond) of Vivado - and treating it like DONT_TOUCH.

Mark

0 Kudos
806 Views
Registered: ‎09-19-2019

Thanks Mark.

According to case we open to xilinx, DONT_TOUCH was added since Xilinx has a bug which it doesn't interperter the ASYNC_REG correctly and the FFs don't place at the same CLB.

But I understand why only aysnc_reg sets and not dont_touch.

Thanks

 

0 Kudos
graces
Moderator
Moderator
652 Views
Registered: ‎07-16-2008

From syntax point of view, you may want to apply the two attributes like:

(*DONT_TOUCH = "TRUE"*) (*ASYNC_REG = "TRUE"*)

-----------------------------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
If starting with Versal take a look at our Versal Design Process Hub and our Versal Blogs.
-----------------------------------------------------------------------------------------------------------------------
0 Kudos
rshekhaw
Xilinx Employee
Xilinx Employee
564 Views
Registered: ‎05-22-2018

Hi amostrabelsi@gmail.com ,

Do you have further queries on this? If not, can you please mark the response that resolved your issue, as Accepted Solution and close the thread.

Thanks,

Raj

0 Kudos