Summary
The current hardening flow can complete placement/routing while leaving severe transition and setup violations, yet its QoR summary reports CAP=0, TRAN=0, TDRC=0 and stage quality pass. On a 100 MHz macro SoC, independent OpenROAD/OpenSTA analysis confirms a real Fmax of only about 44-46 MHz.
The low Fmax is not an iSTA interpolation bug: OpenSTA reproduces the same multi-nanosecond cell delays caused by extreme slew on minimum-drive cells. The flow has fanout buffering and CTS, but no effective post-placement timing repair/resizing stage.
Versions
- ECC:
f783db8d8c4d22559993d27ddeac314fa35a58ca
- ecc-tools:
33617742b6dbaaa4dd6711def4bf81d4920d3bfc
- DreamPlace:
dcc67cd85ca02fab0337cbcf08b59bcbccc0be01
- PDK: ICS55
- Target: 100 MHz, macro SoC, physical utilization about 54%
Current ECC/iSTA result
setup WNS = -11.923 ns
setup TNS = -72,288.3 ns
violating paths = 11,988
estimated Fmax = 46 MHz
CAP=0 FANOUT=0 TRAN=0 TDRC=0
The worst path includes:
AOI211X0P5H7R cell delay = 6.451794 ns
Its output net has one sink and about 0.116 pF extracted capacitance. The large delay is driven by very poor slew, not a single ultra-high-fanout data net.
Independent OpenROAD/OpenSTA control
Using the same routed DEF, RC-worst SPEF, Liberty files, and 10 ns SDC:
setup WNS = -12.558320 ns
setup TNS = -84,091.367188 ns
hold WNS = -0.035856 ns
For the same worst-path cell:
capacitance = 0.117125 pF
output slew = 10.877978 ns
cell delay = 6.446505 ns
max-slew limit near the path = 0.795659 ns
Thus OpenSTA and iSTA agree on the pathological data delay. The ECC QoR fields showing zero transition violations do not represent a clean design.
Flow observations
- DreamPlace is forced to
timing_opt_flag=0 and with_sta=False in chipcompiler/tools/ecc_dreamplace/module.py.
- The flow inserts fanout buffers, but it does not run an equivalent of timing-driven sizing/buffering such as OpenROAD
repair_design/repair_timing after placement and CTS.
- Post-CTS SDC generated by
create_default_sdc() contains only create_clock; it does not request propagated clocks.
- Route/STA checklists can pass without populated transition/capacitance checks or without timing closure.
Expected behavior
For a hardening/signoff preset:
- Run timing-driven cell sizing/buffering and hold repair after physical parasitics are available.
- Populate max transition, capacitance, fanout, setup, and hold checks from real STA data.
- Fail hardening quality when those checks violate configured limits.
- Use propagated clocks after CTS (subject to the separate current iSTA propagation defect).
- Preserve both configured target frequency and achieved signoff frequency in the QoR output.
This is related to CTS configuration issue #221, but the current run no longer has an unbuffered 13k-sink raw clock net. The remaining dominant setup failure is data-path slew and missing timing repair, so CTS configuration alone does not resolve it.
Summary
The current hardening flow can complete placement/routing while leaving severe transition and setup violations, yet its QoR summary reports
CAP=0,TRAN=0,TDRC=0and stage qualitypass. On a 100 MHz macro SoC, independent OpenROAD/OpenSTA analysis confirms a real Fmax of only about 44-46 MHz.The low Fmax is not an iSTA interpolation bug: OpenSTA reproduces the same multi-nanosecond cell delays caused by extreme slew on minimum-drive cells. The flow has fanout buffering and CTS, but no effective post-placement timing repair/resizing stage.
Versions
f783db8d8c4d22559993d27ddeac314fa35a58ca33617742b6dbaaa4dd6711def4bf81d4920d3bfcdcc67cd85ca02fab0337cbcf08b59bcbccc0be01Current ECC/iSTA result
The worst path includes:
Its output net has one sink and about 0.116 pF extracted capacitance. The large delay is driven by very poor slew, not a single ultra-high-fanout data net.
Independent OpenROAD/OpenSTA control
Using the same routed DEF, RC-worst SPEF, Liberty files, and 10 ns SDC:
For the same worst-path cell:
Thus OpenSTA and iSTA agree on the pathological data delay. The ECC QoR fields showing zero transition violations do not represent a clean design.
Flow observations
timing_opt_flag=0andwith_sta=Falseinchipcompiler/tools/ecc_dreamplace/module.py.repair_design/repair_timingafter placement and CTS.create_default_sdc()contains onlycreate_clock; it does not request propagated clocks.Expected behavior
For a hardening/signoff preset:
This is related to CTS configuration issue #221, but the current run no longer has an unbuffered 13k-sink raw clock net. The remaining dominant setup failure is data-path slew and missing timing repair, so CTS configuration alone does not resolve it.