CTS quality enhancement and debugging
General guidelines to improve the cts quality are:
- Use buffers and inverters with a minimal difference between its rise and fall delay.
- Use default values for CTS constraints.
Tightening max_trans, max_cap, max_fanout will degrade the clock tree power considerably.
- Avoid setting the fixed attribute on clock tree cells. The fixed attribute can cause CTS to take non-optimal path from insertion delay point of view. Only specify on few cells if necessary.
- Tightening the max_buffer_levels setting can result in huge DRC violations and poor CTS results.
Common setup for cts
- Give ref buf list.
- Give ref inv list.
- Create NDR rule with layers and shield and spacing.
- Give max trans.
- Give target latency.
- Give target skew.
- Primary delay corner.
Debugging techniques
1) Pre-CTS debug:
- check_clock_tree –> This command checks clock tree structure, constraints and clock tree exceptions.
2) Post-CTS debug: from logs, clock tree debugger. Identify longest path delay, shortest path delay and maximum skew flops.
Check in my design - local skew reported by report_clock_timing -type skew is larger than global skew reported by report_clock_qor -type summary because global skew takes derates into account unlike local skew.
Written on September 16, 2020