Skip to content

Commit d48c60f

Browse files
authored
Merge pull request #9083 from gadfort/rdl-control
pad: add DB property to enable/disable RDL routing to specific iterms
2 parents d052dae + 1aec1f6 commit d48c60f

File tree

8 files changed

+3486
-0
lines changed

8 files changed

+3486
-0
lines changed

src/pad/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,18 @@ rdl_route
410410
| `-allow45` | Specifies that 45 degree routing is permitted. |
411411
| `nets` | Nets to route. |
412412

413+
### Selectively routing terminals
414+
415+
If some of of the terminals in the design do not need to be RDL routed, this can be done by assigning `RDL_ROUTE 0` to a terminal.
416+
417+
```tcl
418+
# Assumes iterm is the pin to be not be routed
419+
set prop [odb::dbBoolProperty_create $iterm RDL_ROUTE 0]
420+
421+
# Change to route iterm
422+
$prop setValue 1
423+
```
424+
413425
## Useful Developer Commands
414426

415427
If you are a developer, you might find these useful. More details can be found in the [source file](./src/ICeWall.cpp) or the [swig file](./src/pad.i).

src/pad/src/RDLRouter.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1892,6 +1892,18 @@ RDLRouter::generateRoutingTargets(odb::dbNet* net) const
18921892
continue;
18931893
}
18941894

1895+
auto* prop = odb::dbBoolProperty::find(iterm, kRouteProperty);
1896+
if (prop && !prop->getValue()) {
1897+
debugPrint(logger_,
1898+
utl::PAD,
1899+
"Router",
1900+
2,
1901+
"Skipping termininal on {}: {}",
1902+
net->getName(),
1903+
iterm->getName());
1904+
continue;
1905+
}
1906+
18951907
odb::dbTechLayer* other_layer;
18961908
odb::dbTechVia* via;
18971909
if (isCoverTerm(iterm)) {

src/pad/src/RDLRouter.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,9 @@ class RDLRouter
246246
// Debugging
247247
RDLGui* gui_;
248248
odb::dbNet* debug_net_{nullptr};
249+
250+
// Consts
251+
static constexpr const char* kRouteProperty = "RDL_ROUTE";
249252
};
250253

251254
} // namespace pad

src/pad/test/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ COMPULSORY_TESTS = [
5555
"rdl_route_max_iterations",
5656
"rdl_route_ports",
5757
"rdl_route_single_target",
58+
"rdl_route_skip_iterm",
5859
"rdl_route_via",
5960
"skywater130_caravel",
6061
"skywater130_coyote_tc",

src/pad/test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ or_integration_tests(
5050
rdl_route_max_iterations
5151
rdl_route_ports
5252
rdl_route_single_target
53+
rdl_route_skip_iterm
5354
rdl_route_via
5455
skywater130_caravel
5556
skywater130_coyote_tc

src/pad/test/rdl_route_skip_iterm.defok

Lines changed: 3433 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[INFO ODB-0227] LEF file: Nangate45/Nangate45.lef, created 22 layers, 27 vias, 135 library cells
2+
[INFO ODB-0227] LEF file: Nangate45_io/dummy_pads.lef, created 29 library cells
3+
[INFO ODB-0128] Design: soc_bsg_black_parrot
4+
[INFO ODB-0130] Created 139 pins.
5+
[INFO ODB-0131] Created 1452 components and 8011 component-terminals.
6+
[INFO ODB-0132] Created 4 special nets and 4706 connections.
7+
[INFO ODB-0133] Created 354 nets and 627 connections.
8+
[INFO PAD-0005] Routing 1 nets
9+
[INFO PAD-0037] End of routing iteration 1: 100.0% complete
10+
No differences found.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Test for RDL router skipping with "RDL_ROUTE"
2+
source "helpers.tcl"
3+
read_lef Nangate45/Nangate45.lef
4+
read_lef Nangate45_io/dummy_pads.lef
5+
6+
read_def Nangate45_blackparrot/floorplan_flipchip.def
7+
8+
odb::dbBoolProperty_create [[ord::get_db_block] findITerm BUMP_2_4/PAD] RDL_ROUTE 1
9+
10+
rdl_route -layer metal10 -width 4 -spacing 4 "VDD"
11+
12+
set def_file [make_result_file "rdl_route_skip_iterm.def"]
13+
write_def $def_file
14+
diff_files $def_file "rdl_route_skip_iterm.defok"

0 commit comments

Comments
 (0)