Skip to content
Open
16 changes: 16 additions & 0 deletions src/rsz/src/Resizer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3331,6 +3331,22 @@ sta::Instance* Resizer::createNewTieCellForLoadPin(const sta::Pin* load_pin,
new_tie_loc,
odb::dbNameUniquifyType::IF_NEEDED_WITH_UNDERSCORE);

// If the load pin's instance is not placed, the computed location is
// meaningless; mark the new tie cell as unplaced
if (!db_network_->isPlaced(load_pin)) {
dbInst* new_tie_db_inst = db_network_->staToDb(new_tie_inst);
new_tie_db_inst->setPlacementStatus(odb::dbPlacementStatus::UNPLACED);
}
debugPrint(logger_,
RSZ,
"repair_tie_fanout",
1,
"Created tie instance {} for load pin {} at location ({}, {})",
network_->name(new_tie_inst),
sdc_network_->pathName(load_pin),
dbuToMeters(new_tie_loc.getX()),
dbuToMeters(new_tie_loc.getY()));

// If the load pin is not in the top module, move the new tie instance
sta::Instance* load_inst = network_->instance(load_pin);
if (!network_->isTopInstance(load_inst)) {
Expand Down
4 changes: 2 additions & 2 deletions src/rsz/test/repair_tie10_hier.ok
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ Net gcd/ALU_16_0_16_0_16_unused_CO[14:0]_X_HAN_CARLSON/BI
Number of pins: 2

Driver pins
_395__1/H output (TIEHIx1_ASAP7_75t_R) (0, 0)
_395__1/H output (TIEHIx1_ASAP7_75t_R)

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

Driver pins
_395__2/H output (TIEHIx1_ASAP7_75t_R) (0, 0)
_395__2/H output (TIEHIx1_ASAP7_75t_R)

Load pins
_395_/_153_/B input (FAx1_ASAP7_75t_R) 1.80-2.18
Expand Down
6 changes: 3 additions & 3 deletions src/rsz/test/repair_tie11_hier.defok
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ UNITS DISTANCE MICRONS 1000 ;
COMPONENTS 8 ;
- alu0/hier2/load1 BUFx2_ASAP7_75t_R ;
- alu0/load2 BUFx2_ASAP7_75t_R ;
- alu0_1 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + PLACED ( 0 0 ) N ;
- alu0_1 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + UNPLACED ;
- alu1/hier2/load1 BUFx2_ASAP7_75t_R ;
- alu1/load2 BUFx2_ASAP7_75t_R ;
- alu1_2 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + PLACED ( 0 0 ) N ;
- alu1_2 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + UNPLACED ;
- load0 BUFx2_ASAP7_75t_R ;
- load0_3 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + PLACED ( 36 135 ) N ;
- load0_3 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + UNPLACED ;
END COMPONENTS
PINS 1 ;
- top_in + NET top_in + DIRECTION INPUT + USE SIGNAL ;
Expand Down
6 changes: 3 additions & 3 deletions src/rsz/test/repair_tie12_hier.defok
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ UNITS DISTANCE MICRONS 1000 ;
COMPONENTS 8 ;
- alu0/hier2/load1 BUFx2_ASAP7_75t_R ;
- alu0/load2 BUFx2_ASAP7_75t_R ;
- alu0_1 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + PLACED ( 0 0 ) N ;
- alu0_1 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + UNPLACED ;
- hier3/alu1/hier2/load1 BUFx2_ASAP7_75t_R ;
- hier3/alu1/load2 BUFx2_ASAP7_75t_R ;
- hier3/alu1_2 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + PLACED ( 0 0 ) N ;
- hier3/alu1_2 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + UNPLACED ;
- load0 BUFx2_ASAP7_75t_R ;
- load0_3 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + PLACED ( 36 135 ) N ;
- load0_3 TIEHIx1_ASAP7_75t_R + SOURCE TIMING + UNPLACED ;
END COMPONENTS
PINS 1 ;
- top_in + NET top_in + DIRECTION INPUT + USE SIGNAL ;
Expand Down
2 changes: 1 addition & 1 deletion src/rsz/test/repair_tie9.defok
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ DIEAREA ( 0 0 ) ( 40000 40000 ) ;
COMPONENTS 4 ;
- t1 sky130_fd_sc_hd__conb_1 ;
- u0 sky130_fd_sc_hd__buf_4 ;
- u0_1 sky130_fd_sc_hd__conb_1 + SOURCE TIMING + PLACED ( 280 1195 ) N ;
- u0_1 sky130_fd_sc_hd__conb_1 + SOURCE TIMING + UNPLACED ;
- u1 sky130_fd_sc_hd__buf_4 ;
END COMPONENTS
NETS 2 ;
Expand Down
Loading