OpenROAD icon indicating copy to clipboard operation
OpenROAD copied to clipboard

Reduce CTS skew

Open oharboe opened this issue 2 years ago • 9 comments

Description

image

To reproduce, unzip https://drive.google.com/file/d/1jSxumDJ_oWN5MEXX24faCkrg9UB5qNnc/view?usp=sharing, then run (ca. 4000s):

./run-me-BoomTile-asap7-base.sh

Suggested Solution

Improve skew in CTS with default/automatic arguments.

Additional Context

No response

oharboe avatar Dec 18 '23 23:12 oharboe

@precisionmoon this is somewhat old - not sure if your recent work has solved this.

maliberty avatar Mar 05 '24 23:03 maliberty

Let me re-run this with the latest version of CTS.

precisionmoon avatar Mar 06 '24 00:03 precisionmoon

Here are some observations:

  1. There are no macro sinks here, only registers. So -insertion_delay doesn't help.
  2. Skew gets worse after timing repair.
  3. clustering diameter and size are no longer required. Removing these options to enable auto clustering slightly improved skew.

This is clock tree before timing repair. clock tree before timing repair new

This is clock tree after timing repair. clock tree after timing repair

There is no short-term quick solution. We need to have a more holistic solution where timing repair can be done within CTS such that optimization is clock-tree aware.

Thanks.

precisionmoon avatar Mar 06 '24 05:03 precisionmoon

@precisionmoon When you say holistic solution, does that include taking advantage of "useful skew" #4656 ?

If so, then I propose closing this issue as it covered by #4656. This is then perhaps a useful testcase, but it is not a separate issue, as such.

oharboe avatar Mar 06 '24 05:03 oharboe

We will keep this issue open for now. Useful skew is a different solution.

precisionmoon avatar Mar 06 '24 05:03 precisionmoon

There is a huge change in insertion delay before and after timing repair. Do you know what accounts for that? Is it related to repair_clock_net?

maliberty avatar Mar 06 '24 06:03 maliberty

I didn't see any macro sinks, so where did you see insertion delay changes? There are some "wire" buffers on clock trees that degrade clock skew.

precisionmoon avatar Mar 06 '24 06:03 precisionmoon

I meant that the scale on the left side of the graphs is substantially different ~400 vs ~1400

maliberty avatar Mar 06 '24 07:03 maliberty

Yes, the latencies increased after repair_clock_net.

precisionmoon avatar Mar 06 '24 17:03 precisionmoon