Skip to content

Commit 07427ed

Browse files
authored
Merge pull request #10074 from gudeh/rsz-fix-tie-placement
2 parents 83426fa + 5cee43d commit 07427ed

5 files changed

Lines changed: 25 additions & 9 deletions

File tree

src/rsz/src/Resizer.cc

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3330,6 +3330,22 @@ sta::Instance* Resizer::createNewTieCellForLoadPin(const sta::Pin* load_pin,
33303330
new_tie_loc,
33313331
odb::dbNameUniquifyType::IF_NEEDED_WITH_UNDERSCORE);
33323332

3333+
// If the load pin's instance is not placed, the computed location is
3334+
// meaningless; mark the new tie cell as unplaced
3335+
if (!db_network_->isPlaced(load_pin)) {
3336+
dbInst* new_tie_db_inst = db_network_->staToDb(new_tie_inst);
3337+
new_tie_db_inst->setPlacementStatus(odb::dbPlacementStatus::UNPLACED);
3338+
}
3339+
debugPrint(logger_,
3340+
RSZ,
3341+
"repair_tie_fanout",
3342+
1,
3343+
"Created tie instance {} for load pin {} at location ({}, {})",
3344+
network_->name(new_tie_inst),
3345+
sdc_network_->pathName(load_pin),
3346+
dbuToMeters(new_tie_loc.getX()),
3347+
dbuToMeters(new_tie_loc.getY()));
3348+
33333349
// If the load pin is not in the top module, move the new tie instance
33343350
sta::Instance* load_inst = network_->instance(load_pin);
33353351
if (!network_->isTopInstance(load_inst)) {

src/rsz/test/repair_tie10_hier.ok

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ Net gcd/ALU_16_0_16_0_16_unused_CO[14:0]_X_HAN_CARLSON/BI
6060
Number of pins: 2
6161

6262
Driver pins
63-
_395__1/H output (TIEHIx1_ASAP7_75t_R) (0, 0)
63+
_395__1/H output (TIEHIx1_ASAP7_75t_R)
6464

6565
Load pins
6666
_395_/_087_/A input (BUFx2_ASAP7_75t_R) 0.44-0.58
@@ -77,7 +77,7 @@ Net gcd/ALU_16_0_16_0_16_unused_CO[14:0]_X_HAN_CARLSON/CI
7777
Number of pins: 2
7878

7979
Driver pins
80-
_395__2/H output (TIEHIx1_ASAP7_75t_R) (0, 0)
80+
_395__2/H output (TIEHIx1_ASAP7_75t_R)
8181

8282
Load pins
8383
_395_/_153_/B input (FAx1_ASAP7_75t_R) 1.80-2.18

src/rsz/test/repair_tie11_hier.defok

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ UNITS DISTANCE MICRONS 1000 ;
66
COMPONENTS 8 ;
77
- alu0/hier2/load1 BUFx2_ASAP7_75t_R ;
88
- alu0/load2 BUFx2_ASAP7_75t_R ;
9-
- alu0_1 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + PLACED ( 0 0 ) N ;
9+
- alu0_1 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + UNPLACED ;
1010
- alu1/hier2/load1 BUFx2_ASAP7_75t_R ;
1111
- alu1/load2 BUFx2_ASAP7_75t_R ;
12-
- alu1_2 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + PLACED ( 0 0 ) N ;
12+
- alu1_2 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + UNPLACED ;
1313
- load0 BUFx2_ASAP7_75t_R ;
14-
- load0_3 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + PLACED ( 36 135 ) N ;
14+
- load0_3 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + UNPLACED ;
1515
END COMPONENTS
1616
PINS 1 ;
1717
- top_in + NET top_in + DIRECTION INPUT + USE SIGNAL ;

src/rsz/test/repair_tie12_hier.defok

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ UNITS DISTANCE MICRONS 1000 ;
66
COMPONENTS 8 ;
77
- alu0/hier2/load1 BUFx2_ASAP7_75t_R ;
88
- alu0/load2 BUFx2_ASAP7_75t_R ;
9-
- alu0_1 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + PLACED ( 0 0 ) N ;
9+
- alu0_1 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + UNPLACED ;
1010
- hier3/alu1/hier2/load1 BUFx2_ASAP7_75t_R ;
1111
- hier3/alu1/load2 BUFx2_ASAP7_75t_R ;
12-
- hier3/alu1_2 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + PLACED ( 0 0 ) N ;
12+
- hier3/alu1_2 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + UNPLACED ;
1313
- load0 BUFx2_ASAP7_75t_R ;
14-
- load0_3 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + PLACED ( 36 135 ) N ;
14+
- load0_3 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + UNPLACED ;
1515
END COMPONENTS
1616
PINS 1 ;
1717
- top_in + NET top_in + DIRECTION INPUT + USE SIGNAL ;

src/rsz/test/repair_tie9.defok

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ DIEAREA ( 0 0 ) ( 40000 40000 ) ;
77
COMPONENTS 4 ;
88
- t1 sky130_fd_sc_hd__conb_1 ;
99
- u0 sky130_fd_sc_hd__buf_4 ;
10-
- u0_1 sky130_fd_sc_hd__conb_1 + SOURCE TIMING + PLACED ( 280 1195 ) N ;
10+
- u0_1 sky130_fd_sc_hd__conb_1 + SOURCE TIMING + UNPLACED ;
1111
- u1 sky130_fd_sc_hd__buf_4 ;
1212
END COMPONENTS
1313
NETS 2 ;

0 commit comments

Comments
 (0)