Skip to content

[Bug] Harden flow passes severe slew and timing violations without physical timing repair #230

Description

@WilliamHHL

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:

  1. Run timing-driven cell sizing/buffering and hold repair after physical parasitics are available.
  2. Populate max transition, capacitance, fanout, setup, and hold checks from real STA data.
  3. Fail hardening quality when those checks violate configured limits.
  4. Use propagated clocks after CTS (subject to the separate current iSTA propagation defect).
  5. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions