Skip to content

Commit ea14f56

Browse files
committed
dbSta cleanup
1 parent 88d698a commit ea14f56

File tree

1 file changed

+40
-45
lines changed

1 file changed

+40
-45
lines changed

src/dbSta/src/dbNetwork.cc

Lines changed: 40 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ 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,
@@ -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
////////////////////////////////////////////////////////////////
@@ -267,8 +261,8 @@ class DbNetPinIterator : public NetPinIterator
267261
private:
268262
const dbNetwork *network_;
269263
dbSet<dbITerm>::iterator iitr_;
270-
dbSet<dbITerm>::iterator iitr__end;
271-
dbITerm *term_;
264+
dbSet<dbITerm>::iterator iitr_end_;
265+
Pin *next_;
272266
};
273267

274268
DbNetPinIterator::DbNetPinIterator(const Net *net,
@@ -277,35 +271,30 @@ DbNetPinIterator::DbNetPinIterator(const Net *net,
277271
{
278272
dbNet *dnet = reinterpret_cast<dbNet*>(const_cast<Net*>(net));
279273
iitr_ = dnet->getITerms().begin();
280-
iitr__end = dnet->getITerms().end();
281-
term_ = nullptr;
274+
iitr_end_ = dnet->getITerms().end();
275+
next_ = nullptr;
282276
}
283277

284278
bool
285279
DbNetPinIterator::hasNext()
286280
{
287-
if (iitr_ != iitr__end) {
281+
while (iitr_ != iitr_end_) {
288282
dbITerm *iterm = *iitr_;
289-
while (iterm->getSigType() == dbSigType::POWER
290-
|| iterm->getSigType() == dbSigType::GROUND) {
283+
if (!(iterm->getSigType() == dbSigType::POWER
284+
|| iterm->getSigType() == dbSigType::GROUND)) {
285+
next_ = reinterpret_cast<Pin*>(*iitr_);
291286
++iitr_;
292-
if (iitr_ == iitr__end) break;
293-
iterm = *iitr_;
287+
return true;
294288
}
289+
iitr_++;
295290
}
296-
if (iitr_ != iitr__end) {
297-
term_ = *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
////////////////////////////////////////////////////////////////
@@ -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

@@ -1089,18 +1078,24 @@ dbNetwork::staToDb(const Pin *pin,
10891078
dbITerm *&iterm,
10901079
dbBTerm *&bterm) const
10911080
{
1092-
dbObject *obj = reinterpret_cast<dbObject*>(const_cast<Pin*>(pin));
1093-
dbObjectType type = obj->getObjectType();
1094-
if (type == dbITermObj) {
1095-
iterm = static_cast<dbITerm*>(obj);
1096-
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");
10971094
}
1098-
else if (type == dbBTermObj) {
1095+
else {
10991096
iterm = nullptr;
1100-
bterm = static_cast<dbBTerm*>(obj);
1097+
bterm = nullptr;
11011098
}
1102-
else
1103-
internalError("pin is not ITerm or BTerm");
11041099
}
11051100

11061101
dbBTerm *

0 commit comments

Comments
 (0)