Meeting timing requirements across all corners
Timing closure means all timing requirements are met - no setup or hold violations.
| Term | Definition |
|---|---|
| WNS | Worst Negative Slack - worst path |
| TNS | Total Negative Slack - sum of all violations |
| Slack | Required time - Arrival time (positive = good) |
| Setup | Data must be stable before clock edge |
| Hold | Data must be stable after clock edge |
Design must work across all Process, Voltage, Temperature conditions.
| Corner | Process | Voltage | Temp | Used For |
|---|---|---|---|---|
| Worst Setup (SS) | Slow | Low | High | Setup analysis |
| Best Hold (FF) | Fast | High | Low | Hold analysis |
| Typical (TT) | Typical | Nominal | 25°C | Reference |
Data arrives TOO LATE (after setup window).
# Upsize a cell
ecoChangeCell -inst U1 -cell AND2_X4 # X1 → X4
# Add buffer to reduce fanout
ecoAddRepeater -net slow_net -cell BUF_X4
# Optimize automatically
optDesign -postRoute -setup
Data arrives TOO FAST (before hold window ends).
# Add delay buffer
ecoAddRepeater -net fast_net -cell DELAY_X1
# Optimize automatically
optDesign -postRoute -hold
# Check hold after fixing
timeDesign -postRoute -hold
| Technique | For Setup | For Hold |
|---|---|---|
| Cell sizing | Upsize ↑ | Downsize ↓ |
| Buffer insertion | Reduce load | Add delay |
| Vt swapping | Use LVT | Use HVT |
| Wire optimization | Shorten wires | Longer wires (rare) |
| Logic restructuring | Parallel paths | N/A |
Intentionally delay clock to help setup timing.
Analyze timing across multiple scenarios simultaneously.
# Define corners
create_timing_condition tc_slow -library slow.lib
create_timing_condition tc_fast -library fast.lib
# Define modes
create_mode func_mode -sdc func.sdc
create_mode test_mode -sdc test.sdc
# Create analysis views
create_analysis_view view_slow_func \
-timing_condition tc_slow \
-mode func_mode
# Run MCMM analysis
timeDesign -postRoute
Small fixes after routing is complete.
# Manual cell swap
ecoChangeCell -inst U1 -cell BUF_X8
# Add buffer
ecoAddRepeater -term U2/A -cell BUF_X2
# Remove cell
ecoDeleteRepeater -inst BUF1
# Legalize after ECO
ecoPlace
# Route ECO changes
ecoRoute
# Summary report
report_timing -summary
# Worst paths
report_timing -nworst 10
# Hold report
report_timing -delay_type min
# Check specific path
report_timing -from reg_A/Q -to reg_B/D
# All violating paths
report_timing -max_slack 0
| Concept | Key Point |
|---|---|
| Setup | Data arrives before clock |
| Hold | Data stable after clock |
| WNS | Worst single violation |
| TNS | Total of all violations |
| Corners | SS for setup, FF for hold |