When the design fails timing by a small amount after route, it is usually due to a small timing
margin after placement. It is possible to increase the timing budget for the router by
tightening the timing requirements during placement and physical optimization. To
accomplish this, Xilinx recommends using the
set_clock_uncertainty constraint for the following reasons:
- It does not modify the clock relationships (clock waveforms remain unchanged).
- It is additive to the tool-computed clock uncertainty (jitter, phase error).
- It is specific to the clock domain or clock crossing specified by the
- It can easily be reset by applying a null value to override the previous clock uncertainty constraint.
In any case, Xilinx recommends that you:
- Overconstrain only the clocks or clock crossing that cannot meet setup timing.
- Use the
-setupoption to tighten the setup requirement only.Note: If you do not specify this option, both setup and hold requirements are tightened.
- Reset the extra uncertainty before running the router step.
A design misses timing by -0.2 ns on paths with the
clk1 clock domain and on paths from
clk3 by -0.3 ns
before and after route.
- Load netlist design and apply the normal constraints.
- Apply the additional clock uncertainty to overconstrain certain
- The value should be at least the amount of violation.
- The constraint should be applied only to setup paths.
set_clock_uncertainty -from clk0 -to clk1 0.3 -setup set_clock_uncertainty -from clk2 -to clk3 0.4 -setup
- Run the flow up to the router step. It is best if the pre-route timing is met.
- Remove the extra uncertainty.
set_clock_uncertainty -from clk0 -to clk1 0 -setup set_clock_uncertainty -from clk2 -to clk3 0 -setup
- Run the router.
After running the router, you can review the timing results to evaluate the benefits of overconstraining. If timing was met after placement but still fails by some amount after route, you can increase the amount of uncertainty and try again.
group_path -weight 2 -name
<ClockName> options. The priority of user-defined path groups
cannot be changed.