Skip to content

Commit e115c43

Browse files
committed
Merge remote-tracking branch 'origin' into ant_use_pin_on_dsu_graph
Signed-off-by: luis201420 <[email protected]>
2 parents df58ed4 + 529f6ee commit e115c43

20 files changed

+808
-39
lines changed

src/cts/src/TritonCTS.cpp

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1238,9 +1238,20 @@ bool TritonCTS::separateMacroRegSinks(
12381238
}
12391239

12401240
if (iterm->isInputSignal() && inst->isPlaced()) {
1241+
// Cells with insertion delay, macros, clock gaters and inverters that
1242+
// drive macros are put in the macro sinks.
12411243
odb::dbMTerm* mterm = iterm->getMTerm();
1242-
// Treat clock gaters like macro sink
1243-
if (hasInsertionDelay(inst, mterm) || !isSink(iterm) || inst->isBlock()) {
1244+
1245+
bool nonSinkMacro = !isSink(iterm);
1246+
sta::Cell* masterCell = network_->dbToSta(mterm->getMaster());
1247+
sta::LibertyCell* libertyCell = network_->libertyCell(masterCell);
1248+
if (libertyCell && libertyCell->isInverter()) {
1249+
odb::dbITerm* invertedTerm
1250+
= inst->getFirstOutput()->getNet()->get1stSignalInput(false);
1251+
nonSinkMacro &= invertedTerm->getInst()->isBlock();
1252+
}
1253+
1254+
if (hasInsertionDelay(inst, mterm) || nonSinkMacro || inst->isBlock()) {
12441255
macroSinks.emplace_back(inst, mterm);
12451256
} else {
12461257
registerSinks.emplace_back(inst, mterm);

src/cts/test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ or_integration_tests(
2727
find_clock_pad
2828
hier_insertion_delay
2929
insertion_delay
30+
inverters
3031
lvt_lib
3132
max_cap
3233
no_clocks

0 commit comments

Comments
 (0)