Reporting Violations Into a Clock Gater
Loop over every startpoint pin in the fan-in cone of the clock-gate enable pin and report timing from each one to the clock gater. For example: foreach_in_collection pin [all_fanin -to <clk_gate_pin> -startpoints_only -flat] { report_timing -nosplit -nworst 1 -max_paths 1 -from [get_pins $pin] -to [get_pins <clk_gate_pin>] >> ./clock_gate_vios.rpt }
KEY Iterate over the gater's fan-in startpoints with all_fanin and report_timing each path into a file.
Steps in Building the CTS Clock Tree
- Trace the clock network.
- Delete the existing clock-tree cells.
- Insert buffers according to the transition limit, with the tool keeping the more common shared path.
- Balance skew based on the path with the highest delay.
KEY CTS build: trace, delete old tree, insert buffers per transition limit, then balance skew.
Checks Performed During CTS
- Design rule violations - max transition, max capacitance and fanout.
- Skew, both local and global.
- Timing - setup and hold.
- Clock quality.
- Power.
KEY CTS checks cover DRVs, local/global skew, setup/hold timing, clock quality and power.
Causes and Fixes for Clock-Gating Violations
- A clock gater is always on the capture side - it cannot launch data to any flop, so timing paths always run 'to the clock gater'.
The basic problem is skew: the launch register can have a larger clock-path delay than the clock-gating cell, where skew is launch
