Skip to content

Commit e613a36

Browse files
authored
Merge pull request #7396 from andyfox-rushc/split_load_hier_may14
Hier fix in split load
2 parents fa92de9 + 371ea8a commit e613a36

2 files changed

Lines changed: 12 additions & 11 deletions

File tree

src/rsz/src/Rebuffer.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -996,8 +996,9 @@ int BufferMove::rebufferTopDown(const BufferedNetPtr& choice,
996996
// add the modnet to the new output
997997
buffer_op_iterm->disconnect();
998998

999+
// hierarchy fix: simultaneously connect flat and hieararchical net
1000+
// to force reassociation
9991001
db_network_->connectPin(buffer_op_pin, (Net*) net2, (Net*) mod_net_in);
1000-
// buffer_op_iterm->connect(mod_net_in);
10011002
}
10021003

10031004
const int buffer_count = rebufferTopDown(
@@ -1110,7 +1111,6 @@ int BufferMove::rebufferTopDown(const BufferedNetPtr& choice,
11101111
} else if (db_mod_net) { // input hierarchical net
11111112
db_network_->connectPin(
11121113
const_cast<Pin*>(load_pin), (Net*) db_net, (Net*) db_mod_net);
1113-
11141114
} else { // flat case
11151115
load_iterm->connect(db_net);
11161116
}

src/rsz/src/SplitLoadMove.cc

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -197,11 +197,8 @@ bool SplitLoadMove::doMove(const Path* drvr_path,
197197
Vertex* load_vertex = fanout_slack.first;
198198
Pin* load_pin = load_vertex->pin();
199199

200-
odb::dbITerm* load_iterm;
201-
odb::dbBTerm* load_bterm;
202-
odb::dbModITerm* load_moditerm;
203-
204-
db_network_->staToDb(load_pin, load_iterm, load_bterm, load_moditerm);
200+
odb::dbITerm* load_iterm = nullptr;
201+
load_iterm = db_network_->flatPin(load_pin);
205202

206203
// Leave ports connected to original net so verilog port names are
207204
// preserved.
@@ -235,10 +232,14 @@ bool SplitLoadMove::doMove(const Path* drvr_path,
235232
unique_connection_name.c_str());
236233
}
237234
} else {
238-
odb::dbITerm* iterm;
239-
iterm = db_network_->flatPin(load_pin);
240-
if (iterm && db_mod_load_net) {
241-
iterm->connect(db_mod_load_net);
235+
if (load_iterm && db_mod_load_net) {
236+
// For hierarchical case, we simultaneously connect the
237+
// hierarchical net and the modnet to make sure they
238+
// get reassociated. (so all modnet pins refer to flat net).
239+
load_iterm->disconnect();
240+
db_network_->connectPin(
241+
load_pin, (Net*) out_net, (Net*) db_mod_load_net);
242+
// iterm->connect(db_mod_load_net);
242243
}
243244
}
244245
}

0 commit comments

Comments
 (0)