-
Notifications
You must be signed in to change notification settings - Fork 588
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
Resizer unable to optimize fanout for GF180 PDK #2339
Resizer unable to optimize fanout for GF180 PDK #2339
Comments
Please run this with the latest OR and package a test case from that: incompatible database schema revision |
I don't see any max_fanout specified in gf180 |
The SDC file has a fanout limit:
but the liberty file is missing:
Same problem as we had on sky130. |
@proppy @QuantamHD PDK issue... |
Looking now. |
@louiic see the note from Anton |
@maliberty @antonblanchard I don't see a |
What is a sensible default? |
I think 1, that's what we changed the sky130 PDK to use in RTimothyEdwards/open_pdks@86f9b0c |
Ethan,
I tried setting default_max_fanout in .LIB … did not help.
Louii
… On Oct 6, 2022, at 2:15 PM, Anton Blanchard ***@***.***> wrote:
What is a sensible default?
I think 1, that's what we changed the sky130 PDK to use in ***@***.*** <RTimothyEdwards/open_pdks@86f9b0c>
—
Reply to this email directly, view it on GitHub <#2339 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/APIVRGGXHVSSTYDU3LWRRRLWB46QHANCNFSM6AAAAAAQ6SMS6Q>.
You are receiving this because you were mentioned.
|
Works for me. Are you sure your SDC has a baseline:
With the fix:
|
@antonblanchard What happens to the area/power with this change? Timing is met either way |
Anton,
Did all these … did not help
.LIB
default_max_fanout : 1 ;
default_fanout_load : 1 ;
.SDC
set_max_fanout 20 [current_design]
Louii
… On Oct 6, 2022, at 3:37 PM, Anton Blanchard ***@***.***> wrote:
Ethan, I tried setting default_max_fanout in .LIB … did not help.
Works for me. Are you sure your SDC has a set_max_fanout statement and your liberty file has default_fanout_load : 1?
baseline:
Startpoint: reset_n (input port clocked by clk)
Endpoint: _38075_ (recovery check against rising-edge clock clk)
Path Group: **async_default**
Path Type: max
Fanout Cap Slew Delay Time Description
-----------------------------------------------------------------------------
0.15 0.00 0.00 clock clk (rise edge)
0.00 0.00 clock network delay (ideal)
10.00 10.00 ^ input external delay
0.19 0.07 10.07 ^ reset_n (in)
1 0.00 reset_n (net)
0.19 0.00 10.07 ^ input53/I (gf180mcu_fd_sc_mcu7t5v0__buf_2)
0.57 0.55 10.62 ^ input53/Z (gf180mcu_fd_sc_mcu7t5v0__buf_2)
1 0.05 net98 (net)
0.57 0.00 10.62 ^ input10/I (gf180mcu_fd_sc_mcu7t5v0__buf_20)
0.84 0.68 11.30 ^ input10/Z (gf180mcu_fd_sc_mcu7t5v0__buf_20)
86 0.72 net10 (net)
0.87 0.09 11.39 ^ repeater88/I (gf180mcu_fd_sc_mcu7t5v0__buf_20)
1.56 1.10 12.49 ^ repeater88/Z (gf180mcu_fd_sc_mcu7t5v0__buf_20)
179 1.36 net88 (net)
1.58 0.10 12.59 ^ repeater87/I (gf180mcu_fd_sc_mcu7t5v0__buf_20)
2.09 1.39 13.98 ^ repeater87/Z (gf180mcu_fd_sc_mcu7t5v0__buf_20)
236 1.87 net87 (net)
2.12 0.14 14.11 ^ repeater85/I (gf180mcu_fd_sc_mcu7t5v0__buf_20)
2.09 1.49 15.60 ^ repeater85/Z (gf180mcu_fd_sc_mcu7t5v0__buf_20)
236 1.80 net85 (net)
2.11 0.12 15.72 ^ repeater84/I (gf180mcu_fd_sc_mcu7t5v0__buf_20)
1.62 1.19 16.91 ^ repeater84/Z (gf180mcu_fd_sc_mcu7t5v0__buf_20)
185 1.40 net84 (net)
1.63 0.04 16.94 ^ repeater83/I (gf180mcu_fd_sc_mcu7t5v0__buf_20)
1.77 1.23 18.17 ^ repeater83/Z (gf180mcu_fd_sc_mcu7t5v0__buf_20)
210 1.55 net83 (net)
1.90 0.28 18.45 ^ _38075_/RN (gf180mcu_fd_sc_mcu7t5v0__dffrnq_1)
18.45 data arrival time
0.15 50.00 50.00 clock clk (rise edge)
0.00 50.00 clock network delay (ideal)
-0.25 49.75 clock uncertainty
0.00 49.75 clock reconvergence pessimism
49.75 ^ _38075_/CLK (gf180mcu_fd_sc_mcu7t5v0__dffrnq_1)
0.00 49.75 library recovery time
49.75 data required time
-----------------------------------------------------------------------------
49.75 data required time
-18.45 data arrival time
-----------------------------------------------------------------------------
31.30 slack (MET)
With the fix:
Startpoint: reset_n (input port clocked by clk)
Endpoint: _37688_ (recovery check against rising-edge clock clk)
Path Group: **async_default**
Path Type: max
Fanout Cap Slew Delay Time Description
-----------------------------------------------------------------------------
0.15 0.00 0.00 clock clk (rise edge)
0.00 0.00 clock network delay (ideal)
10.00 10.00 ^ input external delay
0.16 0.05 10.05 ^ reset_n (in)
1 0.00 reset_n (net)
0.16 0.00 10.05 ^ input53/I (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
0.29 0.37 10.42 ^ input53/Z (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
1 0.01 net98 (net)
0.29 0.00 10.42 ^ input10/I (gf180mcu_fd_sc_mcu7t5v0__buf_4)
0.16 0.29 10.72 ^ input10/Z (gf180mcu_fd_sc_mcu7t5v0__buf_4)
3 0.02 net10 (net)
0.16 0.00 10.72 ^ fanout611/I (gf180mcu_fd_sc_mcu7t5v0__buf_1)
0.61 0.58 11.30 ^ fanout611/Z (gf180mcu_fd_sc_mcu7t5v0__buf_1)
4 0.02 net656 (net)
0.61 0.00 11.30 ^ fanout610/I (gf180mcu_fd_sc_mcu7t5v0__buf_2)
0.65 0.66 11.95 ^ fanout610/Z (gf180mcu_fd_sc_mcu7t5v0__buf_2)
7 0.05 net655 (net)
0.65 0.00 11.95 ^ repeater88/I (gf180mcu_fd_sc_mcu7t5v0__buf_4)
0.14 0.31 12.27 ^ repeater88/Z (gf180mcu_fd_sc_mcu7t5v0__buf_4)
2 0.01 net88 (net)
0.14 0.00 12.27 ^ fanout535/I (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
0.56 0.54 12.80 ^ fanout535/Z (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
4 0.02 net580 (net)
0.56 0.00 12.80 ^ fanout525/I (gf180mcu_fd_sc_mcu7t5v0__buf_1)
0.74 0.72 13.52 ^ fanout525/Z (gf180mcu_fd_sc_mcu7t5v0__buf_1)
4 0.03 net570 (net)
0.74 0.00 13.52 ^ fanout524/I (gf180mcu_fd_sc_mcu7t5v0__buf_2)
0.69 0.70 14.21 ^ fanout524/Z (gf180mcu_fd_sc_mcu7t5v0__buf_2)
8 0.06 net569 (net)
0.69 0.00 14.22 ^ repeater87/I (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
0.16 0.37 14.58 ^ repeater87/Z (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
1 0.00 net87 (net)
0.16 0.00 14.58 ^ fanout412/I (gf180mcu_fd_sc_mcu7t5v0__buf_1)
0.76 0.67 15.25 ^ fanout412/Z (gf180mcu_fd_sc_mcu7t5v0__buf_1)
5 0.03 net457 (net)
0.76 0.00 15.26 ^ fanout400/I (gf180mcu_fd_sc_mcu7t5v0__buf_1)
0.69 0.71 15.96 ^ fanout400/Z (gf180mcu_fd_sc_mcu7t5v0__buf_1)
4 0.03 net445 (net)
0.69 0.00 15.96 ^ fanout399/I (gf180mcu_fd_sc_mcu7t5v0__buf_3)
0.59 0.69 16.66 ^ fanout399/Z (gf180mcu_fd_sc_mcu7t5v0__buf_3)
8 0.07 net444 (net)
0.59 0.00 16.66 ^ repeater85/I (gf180mcu_fd_sc_mcu7t5v0__buf_8)
0.13 0.30 16.97 ^ repeater85/Z (gf180mcu_fd_sc_mcu7t5v0__buf_8)
3 0.02 net85 (net)
0.13 0.00 16.97 ^ fanout262/I (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
0.52 0.51 17.48 ^ fanout262/Z (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
5 0.02 net307 (net)
0.52 0.00 17.48 ^ fanout243/I (gf180mcu_fd_sc_mcu7t5v0__buf_1)
0.77 0.73 18.21 ^ fanout243/Z (gf180mcu_fd_sc_mcu7t5v0__buf_1)
5 0.03 net288 (net)
0.77 0.00 18.21 ^ fanout239/I (gf180mcu_fd_sc_mcu7t5v0__buf_2)
0.69 0.70 18.91 ^ fanout239/Z (gf180mcu_fd_sc_mcu7t5v0__buf_2)
8 0.06 net284 (net)
0.69 0.00 18.91 ^ repeater84/I (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
0.16 0.37 19.28 ^ repeater84/Z (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
1 0.00 net84 (net)
0.16 0.00 19.28 ^ fanout191/I (gf180mcu_fd_sc_mcu7t5v0__buf_1)
0.69 0.62 19.90 ^ fanout191/Z (gf180mcu_fd_sc_mcu7t5v0__buf_1)
4 0.03 net236 (net)
0.69 0.00 19.90 ^ fanout186/I (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
0.52 0.61 20.51 ^ fanout186/Z (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
4 0.02 net231 (net)
0.52 0.00 20.51 ^ fanout182/I (gf180mcu_fd_sc_mcu7t5v0__buf_2)
0.50 0.56 21.06 ^ fanout182/Z (gf180mcu_fd_sc_mcu7t5v0__buf_2)
6 0.04 net227 (net)
0.50 0.00 21.06 ^ fanout180/I (gf180mcu_fd_sc_mcu7t5v0__buf_2)
0.69 0.67 21.73 ^ fanout180/Z (gf180mcu_fd_sc_mcu7t5v0__buf_2)
8 0.06 net225 (net)
0.69 0.00 21.73 ^ repeater83/I (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
0.18 0.38 22.11 ^ repeater83/Z (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
1 0.00 net83 (net)
0.18 0.00 22.11 ^ fanout157/I (gf180mcu_fd_sc_mcu7t5v0__clkbuf_2)
0.41 0.52 22.63 ^ fanout157/Z (gf180mcu_fd_sc_mcu7t5v0__clkbuf_2)
5 0.03 net202 (net)
0.41 0.00 22.64 ^ fanout132/I (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
0.55 0.58 23.22 ^ fanout132/Z (gf180mcu_fd_sc_mcu7t5v0__clkbuf_1)
4 0.02 net177 (net)
0.55 0.00 23.22 ^ fanout124/I (gf180mcu_fd_sc_mcu7t5v0__buf_1)
0.62 0.64 23.86 ^ fanout124/Z (gf180mcu_fd_sc_mcu7t5v0__buf_1)
4 0.02 net169 (net)
0.62 0.00 23.86 ^ fanout120/I (gf180mcu_fd_sc_mcu7t5v0__buf_2)
0.71 0.70 24.56 ^ fanout120/Z (gf180mcu_fd_sc_mcu7t5v0__buf_2)
8 0.06 net165 (net)
0.71 0.00 24.56 ^ fanout119/I (gf180mcu_fd_sc_mcu7t5v0__buf_2)
0.73 0.72 25.28 ^ fanout119/Z (gf180mcu_fd_sc_mcu7t5v0__buf_2)
8 0.06 net164 (net)
0.73 0.00 25.28 ^ _37688_/RN (gf180mcu_fd_sc_mcu7t5v0__dffrnq_1)
25.28 data arrival time
0.15 50.00 50.00 clock clk (rise edge)
0.00 50.00 clock network delay (ideal)
-0.25 49.75 clock uncertainty
0.00 49.75 clock reconvergence pessimism
49.75 ^ _37688_/CLK (gf180mcu_fd_sc_mcu7t5v0__dffrnq_1)
0.33 50.08 library recovery time
50.08 data required time
-----------------------------------------------------------------------------
50.08 data required time
-25.28 data arrival time
-----------------------------------------------------------------------------
Are you sure you are setting
—
Reply to this email directly, view it on GitHub <#2339 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/APIVRGCNTOPCCPEOU5GKRELWB5IBVANCNFSM6AAAAAAQ6SMS6Q>.
You are receiving this because you were mentioned.
|
I was investigating why the design specified a max fanout, but OpenROAD ignored it. No idea what it does for area/performance. @vijayank88 what is the issue here? As @maliberty mentions the design makes timing. |
with gf180 there are slew violations post routing. So just back traced to placement and found fanout issue. so raised this. |
@antonblanchard
Still having same fanout issue. Can you share snippet where to update as resolves fanout issue at your end? |
@vijayank88 can you be more specific when you talk about "fanout issue"? Do you mean you have slew and capacitance violations when measured after global placement, or do you mean that the SDC fanout constraint is not being obeyed? I see 0 slew and capacitance violations using your original test case, but I did have to convert your old odb by writing out a def on an old checkout of openroad and reading the def and writing the odb on a more recent one. Perhaps something critical in the odb was lost in the process. The version of OpenROAD you are using looks to be pretty ancient, can you please recreate on a recent check out? |
@antonblanchard |
I took your most recent zip, made the following change:
And I see it work as expected:
|
@antonblanchard |
@vijayank88 @louiic @QuantamHD all confused default_max_fanout with default_fanout_load. @louiic @vijayank88 it would never make any sense to set default_max_fanout to 1 in the liberty. |
@jjcherry56 What modification to the liberty file would you suggest? |
The only change required is fixing default_fanout_load to 1 |
I created google/gf180mcu-pdk#81 |
Fixes The-OpenROAD-Project/OpenROAD#2339 - [x] Tests pass - [x] Appropriate changes to README are included in PR
Can we validate that this is fixed with the upstream changes? |
@QuantamHD With latest PDK this issue got resolved. |
Testing
aes
design with GF180 PDK throughOpenLane
flow.Using
OpenROAD 4174c3ad802d2ac1d04d387d2c4b883903f6647e
resizer.log
Test case:
issue_reproducible.zip
The text was updated successfully, but these errors were encountered: