Useful Skew
Useful Skew
However, meeting zero skew in some large designs can be unnecessarily costly. If clock skew is used
intentionally to meet timing then it is called useful skew. P&R tools can use useful skew as an
optimization option in CTS and other stage optimizations to leverage the clock signal in meeting timing,
with acceptable margins.
Given below is a design with zero skew, but setup timing violation.
Let’s take the clock period of the circuit as 10ns, with 2ns insertion to delay to clock pin of each register.
Let’s also assume that the setup and hold times of the flops are zero for this example. The path1
combinational delay is 11ns and path2 combinational delay is 5ns.
2ns(clock path delay till FF1/CP) + 11ns < 2ns(clock path delay till FF2/CP)+10ns(clock period)
If we decide to keep the clock network intact, we need to fix this timing violation by reducing the
combinational path delay of Path1. However, path2 timing is met with considerable margin.
So, ideally we could borrow some cycle time from path2, if no other paths are affected by it.
2ns(clock path delay till FF1/CP) + 11ns < 4ns(clock path delay till FF2/CP)+10ns(clock period)
However, now there is a clock skew of 2ns between these registers, and the Path2 timing has now
changed to:
9ns < 12ns –-> Still not violated, even though margin is now less.
PnR tools when enabled 'useful skew' can change the clock network and introduce intentional skew to
meet timing with smaller cost. Some of the useful commands in Innovus tool are: