The-OpenROAD-Project / OpenROAD-flow-scripts

OpenROAD's scripts implementing an RTL-to-GDS Flow. Documentation at https://openroad-flow-scripts.readthedocs.io/en/latest/
https://theopenroadproject.org/
Other
334 stars 288 forks source link

CTS should work better on mock-array with -insertion_delay #1657

Closed oharboe closed 8 months ago

oharboe commented 11 months ago

Description

@tspyrou @precisionmoon @maliberty

unzip insertion-delay.zip

./run-me-mock-array-asap7-base.sh

In the output, we can see that the insertion delay has been detected:

[deleted]
[DEBUG CTS-clustering] sink ces_7_7/clock has ins delay=8.66e-11 and micron leng=27683.4 dbUnits/um=1000
[DEBUG CTS-clustering] capPerMicron=1.29e-16 resPerMicron=2.42e+01
[deleted]

Now load the generated output:

. vars-mock-array-asap7-base.sh  
ODB_FILE=results/asap7/mock-array/base/4_1_cts.odb openroad -gui scripts/gui.tcl

The element clock network delay does not appear to have been taken into account in the CTS. The flip flops have the shortest insertion delay and the elements the longest, whereas I expected the the oposite.

image

Suggested Solution

Modify CTS so that elements have the shortest network insertion delay and the flip flops the shortest

Additional Context

No response

precisionmoon commented 11 months ago

Thanks much for your help with validation. Current support for insertion delay is done as follows:

  1. Translate insertion delay in timing models from time units to length units.
  2. Include insertion delay in all point-to-point distance computation in CTS.
  3. Enhance clustering to give more weights to sink pins with insertion delay.

This approach did improve clock skew for one of the unit tests (src/cts/test/array_ins_delay.tcl). from 0.25 to 0.16. But this is not making any difference for the mock-array testcase. Let us get back to you on how we can improve the insertion delay handling.

Thanks.

precisionmoon commented 8 months ago

This issue is a duplicate of https://github.com/The-OpenROAD-Project/OpenROAD/issues/3759 which has been resolved.