Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎06-12-2015

Trying to understand output delays in Vivado

I don't seem to understand how Vivado defines output delays. The timing constraints wizard shows this diagram:


The setup delay makes sense, and a setup analysis is supposed to be performed with the -max TCL switch.


First of all, the hold time in this diagram appears to be going in the wrong direction, it should extend to the right of the rising clock edge, not to the left if data is going to be captured on that edge.


Secondly, the constraints wizard places extra restrictions on the delays, like I cannot use 0 or a negative value. Also, -min must be less than -max, but I don't see any reason why a hold time would necessarily be less than a setup time.


For example, I have the following signals from an ARM EBI interface:



MCKI is a shared clock, NCS is an active low chip select input, and NWAIT is a combinational output from the FPGA. NWAIT can be extended for multiple clock cycles, but in order to be read properly it must have a setup time of 0.6ns and be held for at least 3.2ns after the rising edge of the clock.


In this case my hold time is longer than my setup time, making -min larger than -max in the TCL commands, which is invalid in Vivado.



0 Kudos
1 Reply
Registered: ‎01-23-2009

The output timing can be a bit confusing, but they are consistent.


The set_output_delay -max should be the setup requirement of the external device.


The set_output_delay -min should be the negative of the hold requirement.


So, for your example, it should be


set_output_delay -clock <clock> 0.6 [get_ports NWAIT]

set_output_delay -clock <clock> -3.2 -min [get_ports NWAIT]


If you add board delays, then add the maximum board delay to the setup (-max) and the minimum board delay to the hold (-min).


I don't know what problems you may be having with the constraint wizard, but these are the correct (and legal) constraints in Vivado.



0 Kudos