Skip to content

Commit a3f4cff

Browse files
committed
rsz: Fixed incorrect (dbNet*)staToDb() call to dbModNet*.
Signed-off-by: Jaehyun Kim <[email protected]>
1 parent 690f523 commit a3f4cff

File tree

3 files changed

+42
-3
lines changed

3 files changed

+42
-3
lines changed

src/rsz/src/RepairDesign.cc

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,19 @@ void RepairDesign::repairDesign(double max_wire_length,
104104

105105
void RepairDesign::performEarlySizingRound(int& repaired_net_count)
106106
{
107+
debugPrint(logger_, RSZ, "early_sizing", 1, "Performing early sizing round.");
107108
// keep track of user annotations so we don't remove them
108109
std::set<std::pair<Vertex*, int>> slew_user_annotated;
109110

110111
// We need to override slews in order to get good required time estimates.
111112
for (int i = resizer_->level_drvr_vertices_.size() - 1; i >= 0; i--) {
112113
Vertex* drvr = resizer_->level_drvr_vertices_[i];
114+
debugPrint(logger_,
115+
RSZ,
116+
"early_sizing",
117+
2,
118+
"Annotating slew for driver {}",
119+
network_->pathName(drvr->pin()));
113120
for (auto rf : {RiseFall::rise(), RiseFall::fall()}) {
114121
if (!drvr->slewAnnotated(rf, min_) && !drvr->slewAnnotated(rf, max_)) {
115122
sta_->setAnnotatedSlew(drvr,
@@ -130,30 +137,58 @@ void RepairDesign::performEarlySizingRound(int& repaired_net_count)
130137
for (int i = resizer_->level_drvr_vertices_.size() - 1; i >= 0; i--) {
131138
Vertex* drvr = resizer_->level_drvr_vertices_[i];
132139
Pin* drvr_pin = drvr->pin();
140+
debugPrint(logger_,
141+
RSZ,
142+
"early_sizing",
143+
2,
144+
"Processing driver {}",
145+
network_->pathName(drvr_pin));
133146
// Always get the flat net for the top level port.
134147
Net* net = network_->isTopLevelPort(drvr_pin)
135148
? network_->net(network_->term(drvr_pin))
136149
: db_network_->dbToSta(db_network_->flatNet(drvr_pin));
137150
if (!net) {
138151
continue;
139152
}
140-
dbNet* net_db = db_network_->staToDb(net);
153+
154+
odb::dbNet* net_db = nullptr;
155+
odb::dbModNet* mod_net_db = nullptr;
156+
db_network_->staToDb(net, net_db, mod_net_db);
141157
search_->findRequireds(drvr->level() + 1);
142158

143-
if (net && !resizer_->dontTouch(net) && !net_db->isConnectedByAbutment()
159+
bool not_abut_connection = net_db && !net_db->isConnectedByAbutment();
160+
if (net && !resizer_->dontTouch(net) && not_abut_connection
144161
&& !sta_->isClock(drvr_pin)
145162
// Exclude tie hi/low cells and supply nets.
146163
&& !drvr->isConstant()) {
164+
debugPrint(logger_,
165+
RSZ,
166+
"early_sizing",
167+
2,
168+
" Net {} is eligible for repair.",
169+
network_->pathName(net));
147170
float fanout, max_fanout, fanout_slack;
148171
sta_->checkFanout(drvr_pin, max_, fanout, max_fanout, fanout_slack);
149172

150173
bool repaired_net = false;
151174

152175
if (performGainBuffering(net, drvr_pin, max_fanout)) {
176+
debugPrint(logger_,
177+
RSZ,
178+
"early_sizing",
179+
2,
180+
" Gain buffering applied to net {}.",
181+
network_->pathName(net));
153182
repaired_net = true;
154183
}
155184

156185
if (resizer_->resizeToCapRatio(drvr_pin, false)) {
186+
debugPrint(logger_,
187+
RSZ,
188+
"early_sizing",
189+
2,
190+
" Resized driver {}.",
191+
network_->pathName(drvr_pin));
157192
repaired_net = true;
158193
}
159194

@@ -172,6 +207,7 @@ void RepairDesign::performEarlySizingRound(int& repaired_net_count)
172207
}
173208
}
174209
}
210+
debugPrint(logger_, RSZ, "early_sizing", 1, "Early sizing round finished.");
175211

176212
resizer_->level_drvr_vertices_valid_ = false;
177213
resizer_->ensureLevelDrvrVertices();

src/rsz/src/Resizer.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2790,7 +2790,9 @@ void Resizer::setDontTouch(const Net* net, bool dont_touch)
27902790

27912791
bool Resizer::dontTouch(const Net* net)
27922792
{
2793-
dbNet* db_net = db_network_->staToDb(net);
2793+
odb::dbNet* db_net = nullptr;
2794+
odb::dbModNet* db_mod_net = nullptr;
2795+
db_network_->staToDb(net, db_net, db_mod_net);
27942796
if (db_net == nullptr) {
27952797
return false;
27962798
}

src/rsz/test/gain_buffering1_hier.tcl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ set_dont_use {sky130_fd_sc_hd__probe_*
2020
set_dont_touch _53_
2121

2222
report_checks -fields {fanout}
23+
#set_debug_level RSZ early_sizing 2
2324
repair_design -pre_placement
2425
report_checks -fields {fanout}
2526
set verilog_file [make_result_file gain_buffering1_hier_out.v]

0 commit comments

Comments
 (0)