Skip to content

Commit 03d9aa3

Browse files
authored
Merge pull request #2683 from jjcherry56/OR2677
dbSta OR2677 ODB is clueless about tristates
2 parents 26e7f32 + 6aa15ec commit 03d9aa3

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

src/dbSta/src/dbNetwork.cc

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -671,19 +671,24 @@ dbNetwork::port(const Pin* pin) const
671671
PortDirection*
672672
dbNetwork::direction(const Pin* pin) const
673673
{
674-
dbITerm* iterm;
675-
dbBTerm* bterm;
676-
staToDb(pin, iterm, bterm);
677-
if (iterm) {
678-
PortDirection* dir = dbToSta(iterm->getSigType(), iterm->getIoType());
679-
return dir;
680-
}
681-
else if (bterm) {
682-
PortDirection* dir = dbToSta(bterm->getSigType(), bterm->getIoType());
683-
return dir;
674+
// ODB does not undestand tristates so look to liberty before ODB for port direction.
675+
LibertyPort *lib_port = libertyPort(pin);
676+
if (lib_port)
677+
return lib_port->direction();
678+
else {
679+
dbITerm* iterm;
680+
dbBTerm* bterm;
681+
staToDb(pin, iterm, bterm);
682+
if (iterm) {
683+
PortDirection* dir = dbToSta(iterm->getSigType(), iterm->getIoType());
684+
return dir;
685+
}
686+
else if (bterm) {
687+
PortDirection* dir = dbToSta(bterm->getSigType(), bterm->getIoType());
688+
return dir;
689+
}
684690
}
685-
else
686-
return nullptr;
691+
return PortDirection::unknown();
687692
}
688693

689694
VertexId

0 commit comments

Comments
 (0)