Skip to content

Commit 89f869f

Browse files
committed
grt/odb: add db callback for access point update
Signed-off-by: Eder Monteiro <[email protected]>
1 parent 383c9b0 commit 89f869f

File tree

4 files changed

+15
-0
lines changed

4 files changed

+15
-0
lines changed

src/grt/include/grt/GlobalRouter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,7 @@ class GRouteDbCbk : public odb::dbBlockCallBackObj
541541

542542
void inDbITermPreDisconnect(odb::dbITerm* iterm) override;
543543
void inDbITermPostConnect(odb::dbITerm* iterm) override;
544+
void inDbITermPostSetAccessPoints(odb::dbITerm* iterm) override;
544545

545546
void inDbBTermPostConnect(odb::dbBTerm* bterm) override;
546547
void inDbBTermPreDisconnect(odb::dbBTerm* bterm) override;

src/grt/src/GlobalRouter.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5199,6 +5199,14 @@ void GRouteDbCbk::inDbITermPostConnect(odb::dbITerm* iterm)
51995199
}
52005200
}
52015201

5202+
void GRouteDbCbk::inDbITermPostSetAccessPoints(odb::dbITerm* iterm)
5203+
{
5204+
odb::dbNet* net = iterm->getNet();
5205+
if (net != nullptr && !net->isSpecial()) {
5206+
grouter_->addDirtyNet(iterm->getNet());
5207+
}
5208+
}
5209+
52025210
void GRouteDbCbk::inDbBTermPostConnect(odb::dbBTerm* bterm)
52035211
{
52045212
// missing net pin update

src/odb/include/odb/dbBlockCallBackObj.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ class dbBlockCallBackObj
8383
virtual void inDbITermPostDisconnect(dbITerm*, dbNet*) {}
8484
virtual void inDbITermPreConnect(dbITerm*, dbNet*) {}
8585
virtual void inDbITermPostConnect(dbITerm*) {}
86+
virtual void inDbITermPostSetAccessPoints(dbITerm* iterm) {}
8687
// dbITerm End
8788

8889
// dbModITerm Start

src/odb/src/db/dbITerm.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,11 @@ void dbITerm::setAccessPoint(dbMPin* pin, dbAccessPoint* ap)
792792
} else {
793793
iterm->aps_[pin->getImpl()->getOID()] = dbId<_dbAccessPoint>();
794794
}
795+
796+
_dbBlock* block = (_dbBlock*) iterm->getOwner();
797+
for (auto callback : block->_callbacks) {
798+
callback->inDbITermPostSetAccessPoints(this);
799+
}
795800
}
796801

797802
std::map<dbMPin*, std::vector<dbAccessPoint*>> dbITerm::getAccessPoints() const

0 commit comments

Comments
 (0)