Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

make repair_timing fail early on futile setup repair #4908

Open
oharboe opened this issue Apr 5, 2024 · 0 comments · May be fixed by #4926
Open

make repair_timing fail early on futile setup repair #4908

oharboe opened this issue Apr 5, 2024 · 0 comments · May be fixed by #4926
Assignees
Labels
rsz Resizer

Comments

@oharboe
Copy link
Collaborator

oharboe commented Apr 5, 2024

Description

When putting a design under CI early, it is useful to run through CTS quickly to get a macro abstract so that floorplanning can proceed indepenently of solving timing issues down at the macro level.

In the case below, looking at the WNS for a clock period of 1000, the setup repair is obviously futile. repair_timing could give up more quickly.

repair_timing does give up on hold as the 20% buffer threshold is met, but the hold repair happens after a lengthy futile setup repair attempt.

repair_timing -verbose -repair_tns 0
[INFO RSZ-0094] Found 2261 endpoints with setup violations.
Iteration | Resized | Buffers | Cloned Gates | Pin Swaps |   WNS   |   TNS   | Endpoint
---------------------------------------------------------------------------------------
        0 |       0 |       0 |            0 |         0 | -9331.476 | -6446508.000 | io_...
       10 |       3 |       0 |            2 |         4 | -9292.986 | -6428689.000 | io_...
       20 |      11 |       0 |            4 |         4 | -9263.688 | -6393942.000 | io_...
       30 |      15 |       0 |            9 |         5 | -9208.877 | -6361912.500 | io_...
       40 |      21 |       0 |           13 |         5 | -9176.483 | -6351535.000 | io_...
       50 |      26 |       0 |           16 |         7 | -9170.731 | -6349262.000 | io_...
       60 |      34 |       0 |           18 |         7 | -9158.175 | -6341483.000 | io_...
       70 |      44 |       0 |           18 |         7 | -9150.161 | -6335393.000 | io_...
       80 |      51 |       2 |           20 |         7 | -9142.903 | -6327522.500 | io_...
       90 |      55 |       2 |           24 |         9 | -9108.962 | -6310355.000 | io_...
      100 |      59 |       6 |           27 |        10 | -9091.226 | -6298352.000 | io_...
      110 |      62 |       8 |           31 |        12 | -9073.103 | -6288537.500 | io_...
      120 |      65 |      19 |           35 |        12 | -9014.830 | -6239610.000 | io_...
      130 |      66 |      19 |           41 |        15 | -8979.107 | -6225933.500 | io_...
      140 |      67 |      23 |           47 |        16 | -8967.909 | -6217542.500 | io_...
      150 |      67 |      23 |           53 |        20 | -8956.291 | -6208358.000 | io_...
      160 |      68 |      25 |           56 |        24 | -8937.215 | -6198154.500 | io_...
      170 |      68 |      29 |           62 |        25 | -8909.112 | -6181045.000 | io_...
      180 |      68 |      38 |           62 |        27 | -8930.631 | -6185781.500 | io_...
      190 |      70 |      41 |           66 |        28 | -8935.765 | -6188781.000 | io_...
      200 |      75 |      46 |           68 |        28 | -8929.567 | -6187565.000 | io_...
      210 |      77 |      53 |           71 |        29 | -8925.813 | -6187079.500 | io_...
      220 |      80 |      58 |           74 |        29 | -8933.716 | -6184588.000 | io_...
      230 |      80 |      63 |           76 |        32 | -8974.421 | -6191987.000 | io_...
      240 |      80 |      73 |           76 |        32 | -9060.264 | -6219459.000 | io_...
      250 |      80 |      83 |           76 |        32 | -9146.106 | -6246929.500 | io_...
      260 |      80 |      93 |           76 |        32 | -9231.948 | -6274394.000 | io_...
      265 |      79 |      55 |           73 |        32 | -8899.399 | -6170303.000 | io_...
    final |      79 |      55 |           73 |        32 | -8899.670 | -6171126.000 | io_...
---------------------------------------------------------------------------------------
[INFO RSZ-0045] Inserted 41 buffers, 1 to split loads.
[INFO RSZ-0041] Resized 79 instances.
[INFO RSZ-0043] Swapped pins on 32 instances.
[INFO RSZ-0049] Cloned 73 instances.
[WARNING RSZ-0062] Unable to repair all setup violations.
[INFO RSZ-0046] Found 5011 endpoints with hold violations.
Iteration | Resized | Buffers | Cloned Gates |   WNS   |   TNS   | Endpoint
---------------------------------------------------------------------------
        0 |       0 |       0 |            0 | -281.233 | -858598.125 | doohickey...$_DFF_P_/D
    final |      18 |   26464 |            0 | -143.998 | -388767.750 | doohickey...$_DFFE_PN_/D
---------------------------------------------------------------------------
[WARNING RSZ-0066] Unable to repair all hold violations.
[INFO RSZ-0032] Inserted 26464 hold buffers.
[ERROR RSZ-0060] Max buffer count reached.
Error: cts.tcl, 86 RSZ-0060

Suggested Solution

Make repair_timing fail quickly with clear and actionable error message when there is no hope.

A fast failing timing repair in CTS indicates to the user that for now the abstract has to be made immediately after make place.

Additional Context

No response

@maliberty maliberty added the rsz Resizer label Apr 5, 2024
@maliberty maliberty self-assigned this Apr 5, 2024
openroad-robot pushed a commit to The-OpenROAD-Project-staging/OpenROAD that referenced this issue Apr 8, 2024
…period)

Fixes The-OpenROAD-Project#4908

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rsz Resizer
Projects
None yet
2 participants