Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] How to fix intra clock timing violation

Status
Not open for further replies.

UltraGreen

Junior Member level 3
Joined
Aug 26, 2016
Messages
30
Helped
0
Reputation
0
Reaction score
0
Trophy points
6
Activity points
269
Hello all ,

There are times, when I am not allowed to change the RTL, and all the clocking structure in the design are already optimized.
Still I face situations where I have negative slack ( setup as well as hold )
Some times by trying few strategies in Vivado, the tool solves the timing violations, but what if it doesn't ?

Question 1 : Can I always set false path for violation occurring at inter-clock-path ? ( provided , CDC is taken care in RTL )

Question 2 : How to solve Intra-clock-path timing violations ( setup and hold )

Thanks in advance..
 

Can I always set false path for violation occurring at inter-clock-path ? ( provided , CDC is taken care in RTL )
Yes.

How to solve Intra-clock-path timing violations ( setup and hold )
Provided that you follow good FPGA design practices (mainly using dedicated clock routes) - hold time violations will rarely occur.
Setup violations are common and can be mitigated by pipelining (adding registers between combinatoric logic blocks), avoiding high fanout buses, smart pin location assignments and working at a lower temperature.
When these don't help - you simply have to lower the frequency of your design.
 
Question 1 : Can I always set false path for violation occurring at inter-clock-path ? ( provided , CDC is taken care in RTL )

No. There is a constraint for each CDC. For example, gray code will fail if bits arrive with more than one cycle of skew. Other protocols can be similar. Vivado now has set_bus_skew and set_data_check for this purpose. Synchronizers should have the ASYNC_REG property set. See UG903 and UG912 if you are using Vivado.
 
Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top