Skip to content

Commit c3e843d

Browse files
committed
Merge remote-tracking branch 'origin/master' into web-lockup
2 parents 148971d + 8df74aa commit c3e843d

22 files changed

Lines changed: 4557 additions & 66 deletions

src/pad/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,7 @@ rdl_route
392392
[-spacing spacing]
393393
[-turn_penalty penalty]
394394
[-allow45]
395+
[-fixed]
395396
[-max_iterations max_iterations]
396397
nets
397398
```
@@ -408,6 +409,7 @@ rdl_route
408409
| `-turn_penalty` | Scaling factor to apply to discurage turning to allow for straighter routes. The default value is `2.0`, and the allowed values are floats. |
409410
| `-max_iterations` | Maximum number of router iterations. The default value is `10`. |
410411
| `-allow45` | Specifies that 45 degree routing is permitted. |
412+
| `-fixed` | When specified, routes will be marked as fixed. |
411413
| `nets` | Nets to route. |
412414

413415
### Selectively routing terminals

src/pad/include/pad/ICeWall.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ class ICeWall
9999
int width = 0,
100100
int spacing = 0,
101101
bool allow45 = false,
102+
bool fixed = false,
102103
float turn_penalty = 2.0,
103104
int max_iterations = 10);
104105
void routeRDLDebugGUI(bool enable);

src/pad/src/ICeWall.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1444,6 +1444,7 @@ void ICeWall::routeRDL(odb::dbTechLayer* layer,
14441444
int width,
14451445
int spacing,
14461446
bool allow45,
1447+
bool fixed,
14471448
float turn_penalty,
14481449
int max_iterations)
14491450
{
@@ -1460,6 +1461,7 @@ void ICeWall::routeRDL(odb::dbTechLayer* layer,
14601461
width,
14611462
spacing,
14621463
allow45,
1464+
fixed,
14631465
turn_penalty,
14641466
max_iterations);
14651467
router_->setRDLDebugNet(rdl_net_debug_);

src/pad/src/RDLRouter.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ RDLRouter::RDLRouter(
157157
int width,
158158
int spacing,
159159
bool allow45,
160+
bool fixed,
160161
float turn_penalty,
161162
int max_iterations)
162163
: logger_(logger),
@@ -167,6 +168,7 @@ RDLRouter::RDLRouter(
167168
width_(width),
168169
spacing_(spacing),
169170
allow45_(allow45),
171+
fixed_(fixed),
170172
turn_penalty_(turn_penalty),
171173
max_router_iterations_(max_iterations),
172174
routing_map_(routing_map),
@@ -1729,7 +1731,8 @@ void RDLRouter::writeToDb(odb::dbNet* net,
17291731
return;
17301732
}
17311733

1732-
odb::dbSWire* swire = odb::dbSWire::create(net, odb::dbWireType::ROUTED);
1734+
odb::dbSWire* swire = odb::dbSWire::create(
1735+
net, fixed_ ? odb::dbWireType::FIXED : odb::dbWireType::ROUTED);
17331736
for (const odb::Rect& stub : stubs) {
17341737
odb::dbSBox::create(swire,
17351738
layer_,

src/pad/src/RDLRouter.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ class RDLRouter
133133
int width,
134134
int spacing,
135135
bool allow45,
136+
bool fixed,
136137
float turn_penalty,
137138
int max_iterations);
138139
~RDLRouter();
@@ -247,6 +248,7 @@ class RDLRouter
247248
int width_;
248249
int spacing_;
249250
bool allow45_;
251+
bool fixed_;
250252
float turn_penalty_;
251253
int max_router_iterations_;
252254

src/pad/src/pad.i

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,11 @@ void route_rdl(odb::dbTechLayer* layer,
138138
odb::dbTechVia* pad_via,
139139
const std::vector<odb::dbNet*>& nets,
140140
int width = 0, int spacing = 0, bool allow45 = false,
141+
bool fixed = false,
141142
float penalty = 2.0,
142143
int max_iterations = 10)
143144
{
144-
ord::getICeWall()->routeRDL(layer, bump_via, pad_via, nets, width, spacing, allow45, penalty, max_iterations);
145+
ord::getICeWall()->routeRDL(layer, bump_via, pad_via, nets, width, spacing, allow45, fixed, penalty, max_iterations);
145146
}
146147

147148
void route_rdl_gui(bool enable)

src/pad/src/pad.tcl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,12 +398,13 @@ sta::define_cmd_args "rdl_route" {-layer layer \
398398
[-turn_penalty penalty] \
399399
[-allow45] \
400400
[-max_iterations iterations] \
401+
[-fixed] \
401402
nets}
402403

403404
proc rdl_route { args } {
404405
sta::parse_key_args "rdl_route" args \
405406
keys {-layer -width -spacing -bump_via -pad_via -turn_penalty -max_iterations} \
406-
flags {-allow45}
407+
flags {-allow45 -fixed}
407408

408409
if { [llength $args] == 1 } {
409410
set args [lindex $args 0]
@@ -471,6 +472,7 @@ proc rdl_route { args } {
471472
$nets \
472473
$width $spacing \
473474
[info exists flags(-allow45)] \
475+
[info exists flags(-fixed)] \
474476
$penalty \
475477
$max_iterations
476478
}

src/pad/test/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ COMPULSORY_TESTS = [
5353
"rdl_route_bump_to_bump_only",
5454
"rdl_route_bump_via",
5555
"rdl_route_failed",
56+
"rdl_route_fixed",
5657
"rdl_route_invalid",
5758
"rdl_route_keep_existing",
5859
"rdl_route_max_iterations",

src/pad/test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ or_integration_tests(
4646
rdl_route_bump_to_bump_only
4747
rdl_route_bump_via
4848
rdl_route_failed
49+
rdl_route_fixed
4950
rdl_route_invalid
5051
rdl_route_keep_existing
5152
rdl_route_max_iterations

0 commit comments

Comments
 (0)