Skip to content

Commit 7e22379

Browse files
authored
Merge pull request #277 from The-OpenROAD-Project/dbsta_cleanup
Dbsta cleanup
2 parents 691fc07 + ea14f56 commit 7e22379

File tree

1 file changed

+54
-58
lines changed

1 file changed

+54
-58
lines changed

src/dbSta/src/dbNetwork.cc

Lines changed: 54 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -194,11 +194,11 @@ class DbInstancePinIterator : public InstancePinIterator
194194
dbSet<dbITerm>::iterator iitr_end_;
195195
dbSet<dbBTerm>::iterator bitr_;
196196
dbSet<dbBTerm>::iterator bitr_end_;
197-
Pin *pin_;
197+
Pin *next_;
198198
};
199199

200200
DbInstancePinIterator::DbInstancePinIterator(const Instance *inst,
201-
const dbNetwork *network) :
201+
const dbNetwork *network) :
202202
network_(network)
203203
{
204204
top_ = (inst == network->topInstance());
@@ -222,36 +222,30 @@ DbInstancePinIterator::hasNext()
222222
return false;
223223
else {
224224
dbBTerm *bterm = *bitr_;
225+
next_ = network_->dbToSta(bterm);
225226
bitr_++;
226-
pin_ = network_->dbToSta(bterm);
227227
return true;
228228
}
229229
}
230-
if (iitr_ == iitr_end_)
231-
return false;
232230
else {
233-
dbITerm *iterm = *iitr_;
234-
while (iterm->getSigType() == dbSigType::POWER
235-
|| iterm->getSigType() == dbSigType::GROUND) {
236-
iitr_++;
237-
if (iitr_ == iitr_end_)
238-
return false;
239-
iterm = *iitr_;
240-
}
241-
if (iitr_ == iitr_end_)
242-
return false;
243-
else {
244-
pin_ = network_->dbToSta(iterm);
231+
while (iitr_ != iitr_end_) {
232+
dbITerm *iterm = *iitr_;
233+
if (!(iterm->getSigType() == dbSigType::POWER
234+
|| iterm->getSigType() == dbSigType::GROUND)) {
235+
next_ = network_->dbToSta(*iitr_);
236+
++iitr_;
237+
return true;
238+
}
245239
iitr_++;
246-
return true;
247240
}
241+
return false;
248242
}
249243
}
250244

251245
Pin *
252246
DbInstancePinIterator::next()
253247
{
254-
return pin_;
248+
return next_;
255249
}
256250

257251
////////////////////////////////////////////////////////////////
@@ -266,46 +260,41 @@ class DbNetPinIterator : public NetPinIterator
266260

267261
private:
268262
const dbNetwork *network_;
269-
dbSet<dbITerm>::iterator _iitr;
270-
dbSet<dbITerm>::iterator _iitr_end;
271-
void *_term;
263+
dbSet<dbITerm>::iterator iitr_;
264+
dbSet<dbITerm>::iterator iitr_end_;
265+
Pin *next_;
272266
};
273267

274268
DbNetPinIterator::DbNetPinIterator(const Net *net,
275269
const dbNetwork *network) :
276270
network_(network)
277271
{
278272
dbNet *dnet = reinterpret_cast<dbNet*>(const_cast<Net*>(net));
279-
_iitr = dnet->getITerms().begin();
280-
_iitr_end = dnet->getITerms().end();
281-
_term = NULL;
273+
iitr_ = dnet->getITerms().begin();
274+
iitr_end_ = dnet->getITerms().end();
275+
next_ = nullptr;
282276
}
283277

284278
bool
285279
DbNetPinIterator::hasNext()
286280
{
287-
if (_iitr != _iitr_end) {
288-
dbITerm *iterm = *_iitr;
289-
while (iterm->getSigType() == dbSigType::POWER
290-
|| iterm->getSigType() == dbSigType::GROUND) {
291-
++_iitr;
292-
if (_iitr == _iitr_end) break;
293-
iterm = *_iitr;
281+
while (iitr_ != iitr_end_) {
282+
dbITerm *iterm = *iitr_;
283+
if (!(iterm->getSigType() == dbSigType::POWER
284+
|| iterm->getSigType() == dbSigType::GROUND)) {
285+
next_ = reinterpret_cast<Pin*>(*iitr_);
286+
++iitr_;
287+
return true;
294288
}
289+
iitr_++;
295290
}
296-
if (_iitr != _iitr_end) {
297-
_term = (void*)(*_iitr);
298-
++_iitr;
299-
return true;
300-
}
301-
else
302-
return false;
291+
return false;
303292
}
304293

305294
Pin *
306295
DbNetPinIterator::next()
307296
{
308-
return (Pin*)_term;
297+
return next_;
309298
}
310299

311300
////////////////////////////////////////////////////////////////
@@ -314,7 +303,7 @@ class DbNetTermIterator : public NetTermIterator
314303
{
315304
public:
316305
DbNetTermIterator(const Net *net,
317-
const dbNetwork *network);
306+
const dbNetwork *network);
318307
bool hasNext();
319308
Term *next();
320309

@@ -325,7 +314,7 @@ class DbNetTermIterator : public NetTermIterator
325314
};
326315

327316
DbNetTermIterator::DbNetTermIterator(const Net *net,
328-
const dbNetwork *network) :
317+
const dbNetwork *network) :
329318
network_(network)
330319
{
331320
dbNet *dnet = network_->staToDb(net);
@@ -467,7 +456,7 @@ dbNetwork::findPin(const Instance *instance,
467456
else {
468457
dbInst *dinst = staToDb(instance);
469458
dbITerm *iterm = dinst->findITerm(port_name);
470-
return reinterpret_cast<Pin*>(iterm);
459+
return dbToSta(iterm);
471460
}
472461
}
473462

@@ -481,7 +470,7 @@ dbNetwork::findPin(const Instance *instance,
481470

482471
Net *
483472
dbNetwork::findNet(const Instance *instance,
484-
const char *net_name) const
473+
const char *net_name) const
485474
{
486475
if (instance == top_instance_) {
487476
dbNet *dnet = block_->findNet(net_name);
@@ -684,8 +673,8 @@ dbNetwork::termIterator(const Net *net) const
684673
// override ConcreteNetwork::visitConnectedPins
685674
void
686675
dbNetwork::visitConnectedPins(const Net *net,
687-
PinVisitor &visitor,
688-
ConstNetSet &visited_nets) const
676+
PinVisitor &visitor,
677+
ConstNetSet &visited_nets) const
689678
{
690679
Network::visitConnectedPins(net, visitor, visited_nets);
691680
}
@@ -737,7 +726,8 @@ DbConstantPinIterator::hasNext()
737726
}
738727

739728
void
740-
DbConstantPinIterator::next(Pin *&pin, LogicValue &value)
729+
DbConstantPinIterator::next(Pin *&pin,
730+
LogicValue &value)
741731
{
742732
value = LogicValue::zero;
743733
pin = nullptr;
@@ -759,8 +749,8 @@ dbNetwork::isLinked() const
759749

760750
bool
761751
dbNetwork::linkNetwork(const char *,
762-
bool ,
763-
Report *)
752+
bool ,
753+
Report *)
764754
{
765755
// Not called.
766756
return true;
@@ -1088,18 +1078,24 @@ dbNetwork::staToDb(const Pin *pin,
10881078
dbITerm *&iterm,
10891079
dbBTerm *&bterm) const
10901080
{
1091-
dbObject *obj = reinterpret_cast<dbObject*>(const_cast<Pin*>(pin));
1092-
dbObjectType type = obj->getObjectType();
1093-
if (type == dbITermObj) {
1094-
iterm = static_cast<dbITerm*>(obj);
1095-
bterm = nullptr;
1081+
if (pin) {
1082+
dbObject *obj = reinterpret_cast<dbObject*>(const_cast<Pin*>(pin));
1083+
dbObjectType type = obj->getObjectType();
1084+
if (type == dbITermObj) {
1085+
iterm = static_cast<dbITerm*>(obj);
1086+
bterm = nullptr;
1087+
}
1088+
else if (type == dbBTermObj) {
1089+
iterm = nullptr;
1090+
bterm = static_cast<dbBTerm*>(obj);
1091+
}
1092+
else
1093+
internalError("pin is not ITerm or BTerm");
10961094
}
1097-
else if (type == dbBTermObj) {
1095+
else {
10981096
iterm = nullptr;
1099-
bterm = static_cast<dbBTerm*>(obj);
1097+
bterm = nullptr;
11001098
}
1101-
else
1102-
internalError("pin is not ITerm or BTerm");
11031099
}
11041100

11051101
dbBTerm *

0 commit comments

Comments
 (0)