Skip to content

Commit 7dd5365

Browse files
authored
Merge pull request #8958 from eder-matheus/grt_negative_adjustments
grt: allow negative adjustments for capacity increase
2 parents 07289a5 + 266aeb4 commit 7dd5365

File tree

8 files changed

+357
-5
lines changed

8 files changed

+357
-5
lines changed

src/grt/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,9 @@ also set resource adjustment for a layer range, e.g.: `set_global_routing_layer_
114114
Metal4-Metal8 0.3` reduces the routing resources of routing layers `Metal4`,
115115
`Metal5`, `Metal6`, `Metal7` and `Metal8` by 30%.
116116

117+
Negative adjustment values can be used to increase the capacity of a given metal layer. For example,
118+
`set_global_routing_layer_adjustment Metal5 -0.5` will increase the total capacity of `Metal5` by 50%.
119+
117120
```tcl
118121
set_global_routing_layer_adjustment layer adjustment
119122
```

src/grt/src/GlobalRouter.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1618,6 +1618,7 @@ void GlobalRouter::computeUserLayerAdjustments(int max_routing_layer)
16181618
odb::dbTechLayer* tech_layer = db_->getTech()->findRoutingLayer(layer);
16191619
float adjustment = tech_layer->getLayerAdjustment();
16201620
if (adjustment != 0) {
1621+
const bool is_reduce = adjustment > 0;
16211622
if (horizontal_capacities_[layer - 1] != 0) {
16221623
int new_cap = hor_capacities[layer - 1] * (1 - adjustment);
16231624
grid_->setHorizontalCapacity(new_cap, layer - 1);
@@ -1632,7 +1633,7 @@ void GlobalRouter::computeUserLayerAdjustments(int max_routing_layer)
16321633
? std::max(new_h_capacity, 1)
16331634
: new_h_capacity;
16341635
fastroute_->addAdjustment(
1635-
x - 1, y - 1, x, y - 1, layer, new_h_capacity, true);
1636+
x - 1, y - 1, x, y - 1, layer, new_h_capacity, is_reduce);
16361637
}
16371638
}
16381639
}
@@ -1651,7 +1652,7 @@ void GlobalRouter::computeUserLayerAdjustments(int max_routing_layer)
16511652
? std::max(new_v_capacity, 1)
16521653
: new_v_capacity;
16531654
fastroute_->addAdjustment(
1654-
x - 1, y - 1, x - 1, y, layer, new_v_capacity, true);
1655+
x - 1, y - 1, x - 1, y, layer, new_v_capacity, is_reduce);
16551656
}
16561657
}
16571658
}

src/grt/src/GlobalRouter.tcl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,21 @@ proc set_global_routing_layer_adjustment { args } {
1212
lassign $args layer adj
1313

1414
if { $layer == "*" } {
15-
sta::check_positive_float "adjustment" $adj
15+
sta::check_float "adjustment" $adj
1616
grt::set_capacity_adjustment $adj
1717
} elseif { [regexp -all {([^-]+)-([^ ]+)} $layer] } {
1818
lassign [grt::parse_layer_range "set_global_routing_layer_adjustment" \
1919
$layer] first_layer last_layer
2020
for { set l $first_layer } { $l <= $last_layer } { incr l } {
2121
grt::check_routing_layer $l
22-
sta::check_positive_float "adjustment" $adj
22+
sta::check_float "adjustment" $adj
2323

2424
grt::add_layer_adjustment $l $adj
2525
}
2626
} else {
2727
set layer_idx [grt::parse_layer_name $layer]
2828
grt::check_routing_layer $layer_idx
29-
sta::check_positive_float "adjustment" $adj
29+
sta::check_float "adjustment" $adj
3030

3131
grt::add_layer_adjustment $layer_idx $adj
3232
}

src/grt/test/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ TESTS = [
2828
"gcd",
2929
"gcd_cugr",
3030
"gcd_flute",
31+
"increase_capacity1",
3132
"inst_pin_out_of_die",
3233
"invalid_pin_placement",
3334
"invalid_routing_layer",

src/grt/test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ or_integration_tests(
2626
gcd
2727
gcd_cugr
2828
gcd_flute
29+
increase_capacity1
2930
inst_pin_out_of_die
3031
invalid_pin_placement
3132
invalid_routing_layer
Lines changed: 266 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,266 @@
1+
clk
2+
(
3+
0 201600 7200 208800 met3
4+
0 151200 7200 208800 met4
5+
0 151200 7200 158400 met3
6+
0 151200 136800 158400 met3
7+
129600 151200 136800 158400 met2
8+
129600 151200 136800 158400 met1
9+
129600 151200 136800 158400 li1
10+
)
11+
clknet_0_clk
12+
(
13+
136800 151200 144000 158400 li1
14+
136800 151200 144000 158400 met1
15+
136800 151200 144000 158400 met2
16+
136800 151200 151200 158400 met3
17+
144000 151200 151200 158400 li1
18+
144000 151200 151200 158400 met1
19+
144000 151200 151200 158400 met2
20+
144000 151200 151200 158400 met3
21+
144000 144000 151200 158400 met4
22+
144000 144000 151200 151200 met3
23+
144000 144000 151200 151200 met2
24+
144000 144000 151200 151200 met1
25+
144000 144000 151200 151200 li1
26+
108000 151200 144000 158400 met3
27+
108000 151200 115200 158400 li1
28+
108000 151200 115200 158400 met1
29+
108000 151200 115200 158400 met2
30+
108000 151200 115200 158400 met3
31+
108000 122400 115200 158400 met4
32+
108000 122400 115200 129600 met3
33+
108000 122400 115200 129600 met2
34+
108000 122400 115200 129600 met1
35+
108000 122400 115200 129600 li1
36+
)
37+
clknet_2_0__leaf_clk
38+
(
39+
93600 108000 100800 115200 li1
40+
93600 108000 108000 115200 met1
41+
108000 122400 115200 129600 li1
42+
108000 122400 115200 129600 met1
43+
108000 115200 115200 129600 met2
44+
108000 115200 115200 122400 met1
45+
108000 144000 129600 151200 met1
46+
122400 144000 129600 151200 li1
47+
64800 108000 72000 115200 li1
48+
64800 108000 100800 115200 met1
49+
108000 115200 129600 122400 met1
50+
122400 115200 129600 122400 li1
51+
100800 108000 108000 115200 met1
52+
100800 93600 108000 115200 met2
53+
100800 93600 108000 100800 met1
54+
100800 93600 108000 100800 li1
55+
93600 151200 100800 158400 li1
56+
93600 151200 115200 158400 met1
57+
108000 151200 115200 158400 met1
58+
108000 144000 115200 158400 met2
59+
108000 144000 115200 151200 met1
60+
108000 122400 115200 151200 met2
61+
108000 108000 122400 115200 met1
62+
115200 108000 122400 115200 li1
63+
100800 108000 115200 115200 met1
64+
108000 108000 115200 122400 met2
65+
108000 108000 115200 115200 met1
66+
)
67+
clknet_2_1__leaf_clk
68+
(
69+
108000 158400 115200 165600 li1
70+
108000 158400 115200 165600 met1
71+
108000 158400 115200 180000 met2
72+
108000 172800 115200 180000 met1
73+
108000 172800 115200 180000 li1
74+
108000 187200 115200 194400 met1
75+
108000 187200 115200 208800 met2
76+
108000 201600 115200 208800 met1
77+
108000 201600 115200 208800 li1
78+
108000 187200 122400 194400 met1
79+
115200 187200 122400 194400 li1
80+
93600 172800 100800 180000 li1
81+
93600 172800 115200 180000 met1
82+
108000 151200 115200 158400 li1
83+
108000 151200 115200 158400 met1
84+
108000 151200 115200 165600 met2
85+
93600 201600 100800 208800 li1
86+
93600 201600 115200 208800 met1
87+
100800 187200 108000 194400 li1
88+
100800 187200 115200 194400 met1
89+
79200 151200 86400 158400 li1
90+
79200 151200 115200 158400 met1
91+
108000 172800 115200 194400 met2
92+
)
93+
clknet_2_2__leaf_clk
94+
(
95+
187200 115200 201600 122400 met1
96+
194400 115200 201600 122400 li1
97+
136800 129600 151200 136800 met1
98+
136800 129600 144000 136800 li1
99+
129600 144000 136800 151200 li1
100+
129600 144000 151200 151200 met1
101+
144000 122400 151200 129600 met1
102+
144000 122400 151200 136800 met2
103+
144000 129600 151200 136800 met1
104+
144000 100800 165600 108000 met1
105+
158400 100800 165600 108000 li1
106+
187200 115200 194400 122400 met1
107+
187200 115200 194400 144000 met2
108+
187200 136800 194400 144000 met1
109+
187200 136800 194400 144000 li1
110+
136800 115200 151200 122400 met1
111+
136800 115200 144000 122400 li1
112+
144000 115200 151200 122400 met1
113+
144000 115200 151200 129600 met2
114+
158400 100800 194400 108000 met1
115+
187200 100800 194400 108000 met1
116+
187200 100800 194400 115200 met2
117+
187200 108000 194400 115200 met1
118+
187200 108000 194400 115200 li1
119+
187200 108000 194400 122400 met2
120+
144000 100800 151200 122400 met2
121+
144000 100800 151200 108000 met1
122+
144000 100800 151200 108000 li1
123+
144000 122400 158400 129600 met1
124+
151200 122400 158400 129600 li1
125+
144000 129600 151200 151200 met2
126+
144000 144000 151200 151200 met1
127+
144000 144000 151200 151200 li1
128+
)
129+
clknet_2_3__leaf_clk
130+
(
131+
144000 187200 158400 194400 met1
132+
151200 187200 158400 194400 met1
133+
151200 172800 158400 194400 met2
134+
151200 172800 158400 180000 met1
135+
151200 172800 158400 180000 li1
136+
136800 194400 144000 201600 met1
137+
136800 194400 144000 208800 met2
138+
136800 201600 144000 208800 met1
139+
136800 201600 144000 208800 li1
140+
122400 194400 129600 201600 li1
141+
122400 194400 144000 201600 met1
142+
158400 151200 165600 158400 li1
143+
158400 151200 201600 158400 met1
144+
194400 151200 201600 158400 met1
145+
194400 151200 201600 172800 met2
146+
194400 165600 201600 172800 met1
147+
194400 165600 201600 172800 li1
148+
151200 151200 158400 158400 met1
149+
151200 151200 158400 180000 met2
150+
158400 194400 165600 201600 li1
151+
158400 194400 165600 201600 met1
152+
158400 194400 165600 216000 met2
153+
158400 208800 165600 216000 met1
154+
158400 208800 165600 216000 li1
155+
144000 194400 165600 201600 met1
156+
136800 158400 144000 165600 li1
157+
136800 158400 151200 165600 met1
158+
144000 158400 151200 165600 met1
159+
144000 151200 151200 165600 met2
160+
144000 151200 151200 158400 met1
161+
144000 151200 151200 158400 li1
162+
151200 151200 165600 158400 met1
163+
165600 194400 194400 201600 met1
164+
187200 194400 194400 201600 met1
165+
187200 194400 194400 208800 met2
166+
187200 201600 194400 208800 met1
167+
187200 201600 194400 208800 li1
168+
165600 194400 172800 201600 met1
169+
165600 187200 172800 201600 met2
170+
165600 187200 172800 194400 met1
171+
165600 187200 172800 194400 li1
172+
158400 194400 172800 201600 met1
173+
144000 151200 158400 158400 met1
174+
144000 187200 151200 194400 li1
175+
144000 187200 151200 194400 met1
176+
144000 187200 151200 201600 met2
177+
144000 194400 151200 201600 met1
178+
136800 194400 151200 201600 met1
179+
)
180+
net55
181+
(
182+
136800 194400 144000 201600 li1
183+
136800 194400 144000 201600 met1
184+
136800 187200 144000 201600 met2
185+
136800 187200 144000 194400 met1
186+
136800 187200 144000 194400 li1
187+
122400 194400 129600 201600 li1
188+
122400 194400 144000 201600 met1
189+
115200 194400 122400 201600 li1
190+
115200 194400 129600 201600 met1
191+
108000 194400 122400 201600 met1
192+
108000 180000 115200 187200 li1
193+
108000 180000 115200 187200 met1
194+
108000 180000 115200 201600 met2
195+
108000 194400 115200 201600 met1
196+
108000 194400 115200 201600 li1
197+
108000 158400 115200 165600 li1
198+
108000 158400 115200 165600 met1
199+
108000 158400 115200 187200 met2
200+
108000 136800 115200 144000 li1
201+
108000 136800 115200 144000 met1
202+
108000 136800 115200 165600 met2
203+
100800 136800 108000 144000 li1
204+
100800 136800 115200 144000 met1
205+
)
206+
net56
207+
(
208+
108000 122400 136800 129600 met1
209+
129600 122400 136800 129600 li1
210+
108000 136800 115200 144000 met1
211+
108000 122400 115200 144000 met2
212+
108000 122400 115200 129600 met1
213+
108000 122400 115200 129600 li1
214+
)
215+
net57
216+
(
217+
108000 158400 136800 165600 met1
218+
129600 158400 136800 165600 li1
219+
)
220+
net58
221+
(
222+
108000 180000 115200 187200 met1
223+
108000 172800 115200 187200 met2
224+
108000 172800 115200 180000 met1
225+
108000 172800 115200 180000 li1
226+
)
227+
net59
228+
(
229+
108000 194400 115200 201600 li1
230+
108000 194400 115200 201600 met1
231+
108000 194400 115200 201600 met1
232+
108000 194400 115200 201600 met2
233+
)
234+
net60
235+
(
236+
115200 194400 122400 201600 met1
237+
115200 194400 122400 208800 met2
238+
115200 201600 122400 208800 met1
239+
115200 201600 122400 208800 li1
240+
)
241+
net61
242+
(
243+
122400 194400 129600 201600 met1
244+
122400 187200 129600 201600 met2
245+
122400 187200 129600 194400 met1
246+
122400 187200 129600 194400 li1
247+
)
248+
net62
249+
(
250+
129600 187200 136800 194400 li1
251+
129600 187200 144000 194400 met1
252+
136800 187200 144000 194400 met1
253+
136800 187200 144000 201600 met2
254+
136800 194400 144000 201600 met1
255+
136800 194400 144000 201600 li1
256+
)
257+
net63
258+
(
259+
129600 194400 136800 201600 li1
260+
129600 194400 136800 201600 met1
261+
129600 194400 136800 208800 met2
262+
129600 201600 136800 208800 met1
263+
129600 201600 136800 208800 li1
264+
129600 187200 136800 194400 met1
265+
129600 187200 136800 201600 met2
266+
)

src/grt/test/increase_capacity1.ok

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
[INFO ODB-0227] LEF file: sky130hs/sky130hs.tlef, created 13 layers, 25 vias
2+
[INFO ODB-0227] LEF file: sky130hs/sky130hs_std_cell.lef, created 390 library cells
3+
[INFO ODB-0128] Design: gcd
4+
[INFO ODB-0130] Created 1 pins.
5+
[INFO ODB-0131] Created 170 components and 1258 component-terminals.
6+
[INFO ODB-0133] Created 15 nets and 72 connections.
7+
[INFO GRT-0020] Min routing layer: met1
8+
[INFO GRT-0021] Max routing layer: met5
9+
[INFO GRT-0022] Global adjustment: -50%
10+
[INFO GRT-0023] Grid origin: (0, 0)
11+
[INFO GRT-0088] Layer li1 Track-Pitch = 0.4800 line-2-Via Pitch: 0.3400
12+
[INFO GRT-0088] Layer met1 Track-Pitch = 0.3700 line-2-Via Pitch: 0.3400
13+
[INFO GRT-0088] Layer met2 Track-Pitch = 0.4800 line-2-Via Pitch: 0.3500
14+
[INFO GRT-0088] Layer met3 Track-Pitch = 0.7400 line-2-Via Pitch: 0.6150
15+
[INFO GRT-0088] Layer met4 Track-Pitch = 0.9600 line-2-Via Pitch: 1.0400
16+
[INFO GRT-0088] Layer met5 Track-Pitch = 3.3300 line-2-Via Pitch: 3.1100
17+
[INFO GRT-0003] Macros: 0
18+
[INFO GRT-0004] Blockages: 13
19+
[INFO GRT-0019] Found 6 clock nets.
20+
[INFO GRT-0001] Minimum degree: 2
21+
[INFO GRT-0002] Maximum degree: 12
22+
23+
[INFO GRT-0053] Routing resources analysis:
24+
Routing Original Derated Resource
25+
Layer Direction Resources Resources Reduction (%)
26+
---------------------------------------------------------------
27+
li1 Vertical 0 0 0.00%
28+
met1 Horizontal 28120 4280 84.78%
29+
met2 Vertical 22154 5772 73.95%
30+
met3 Horizontal 13338 18796 -40.92%
31+
met4 Vertical 8968 13098 -46.05%
32+
met5 Horizontal 2964 4329 -46.05%
33+
---------------------------------------------------------------
34+
35+
[INFO GRT-0197] Via related to pin nodes: 154
36+
[INFO GRT-0198] Via related Steiner nodes: 10
37+
[INFO GRT-0199] Via filling finished.
38+
[INFO GRT-0111] Final number of vias: 205
39+
[INFO GRT-0112] Final usage 3D: 772
40+
41+
[INFO GRT-0096] Final congestion report:
42+
Layer Resource Demand Usage (%) Max H / Max V / Total Overflow
43+
---------------------------------------------------------------------------------------
44+
li1 0 0 0.00% 0 / 0 / 0
45+
met1 4280 65 1.52% 0 / 0 / 0
46+
met2 5772 57 0.99% 0 / 0 / 0
47+
met3 18796 23 0.12% 0 / 0 / 0
48+
met4 13098 12 0.09% 0 / 0 / 0
49+
met5 4329 0 0.00% 0 / 0 / 0
50+
---------------------------------------------------------------------------------------
51+
Total 46275 157 0.34% 0 / 0 / 0
52+
53+
[INFO GRT-0018] Total wirelength: 1692 um
54+
[INFO GRT-0014] Routed nets: 15
55+
No differences found.

0 commit comments

Comments
 (0)