Skip to content

Commit d9a9219

Browse files
authored
Merge pull request #10752 from AcKoucher/odb-remove-per-corner-block
odb: remove unused per-corner child-block for parasitics code
2 parents 6ef56c9 + 4b8097d commit d9a9219

7 files changed

Lines changed: 8 additions & 108 deletions

File tree

src/odb/include/odb/db.h

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,11 +1026,6 @@ class dbBlock : public dbObject
10261026
///
10271027
int getCornerCount();
10281028

1029-
///
1030-
/// having independent extraction corners ?
1031-
///
1032-
bool extCornersAreIndependent();
1033-
10341029
///
10351030
/// Get the number of corners kept n this block
10361031
///
@@ -1069,29 +1064,11 @@ class dbBlock : public dbObject
10691064
void setCornerCount(int cornerCnt, int extDbCnt, const char* name_list);
10701065
void setCornerCount(int cnt);
10711066

1072-
///
1073-
/// Set the number of corners kept in this block
1074-
///
1075-
void setCornersPerBlock(int cornersPerBlock);
1076-
10771067
///
10781068
/// Initialize the parasitics value tables
10791069
///
10801070
void initParasiticsValueTables();
10811071

1082-
///
1083-
/// create child block for one extraction corner
1084-
///
1085-
dbBlock* createExtCornerBlock(uint32_t corner);
1086-
///
1087-
/// find child block for one extraction corner
1088-
///
1089-
dbBlock* findExtCornerBlock(uint32_t corner);
1090-
///
1091-
/// get extraction data block for one extraction corner
1092-
///
1093-
dbBlock* getExtCornerBlock(uint32_t corner);
1094-
10951072
///
10961073
/// Get the track-grids of this block.
10971074
///

src/odb/include/odb/dbExtControl.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ class dbExtControl : public dbObject
1616
{
1717
public:
1818
// PERSISTANT-MEMBERS
19-
bool _independentExtCorners;
2019
bool _foreign;
2120
bool _wireStamped;
2221
bool _rsegCoord;

src/odb/src/db/dbBlock.cpp

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -2756,12 +2756,6 @@ int dbBlock::getCornersPerBlock()
27562756
return block->corners_per_block_;
27572757
}
27582758

2759-
bool dbBlock::extCornersAreIndependent()
2760-
{
2761-
bool independent = getExtControl()->_independentExtCorners;
2762-
return independent;
2763-
}
2764-
27652759
int dbBlock::getExtDbCount()
27662760
{
27672761
_dbBlock* block = (_dbBlock*) this;
@@ -2834,13 +2828,6 @@ void dbBlock::initParasiticsValueTables()
28342828
block->c_val_tbl_->push_back(0.0);
28352829
}
28362830

2837-
void dbBlock::setCornersPerBlock(int cornersPerBlock)
2838-
{
2839-
initParasiticsValueTables();
2840-
_dbBlock* block = (_dbBlock*) this;
2841-
block->corners_per_block_ = cornersPerBlock;
2842-
}
2843-
28442831
void dbBlock::setCornerCount(int cornersStoredCnt,
28452832
int extDbCnt,
28462833
const char* name_list)
@@ -2883,54 +2870,6 @@ void dbBlock::setCornerCount(int cornersStoredCnt,
28832870
block->corner_name_list_ = strdup((char*) name_list);
28842871
}
28852872
}
2886-
dbBlock* dbBlock::getExtCornerBlock(uint32_t corner)
2887-
{
2888-
dbBlock* block = findExtCornerBlock(corner);
2889-
if (!block) {
2890-
block = this;
2891-
}
2892-
return block;
2893-
}
2894-
2895-
dbBlock* dbBlock::findExtCornerBlock(uint32_t corner)
2896-
{
2897-
char cornerName[64];
2898-
sprintf(cornerName, "extCornerBlock__%d", corner);
2899-
return findChild(cornerName);
2900-
}
2901-
2902-
dbBlock* dbBlock::createExtCornerBlock(uint32_t corner)
2903-
{
2904-
char cornerName[64];
2905-
sprintf(cornerName, "extCornerBlock__%d", corner);
2906-
dbBlock* extBlk = dbBlock::create(this, cornerName, '/');
2907-
assert(extBlk);
2908-
char name[64];
2909-
for (dbNet* net : getNets()) {
2910-
sprintf(name, "%d", net->getId());
2911-
dbNet* xnet = dbNet::create(extBlk, name, true);
2912-
if (xnet == nullptr) {
2913-
getImpl()->getLogger()->error(
2914-
utl::ODB, 8, "Cannot duplicate net {}", net->getConstName());
2915-
}
2916-
if (xnet->getId() != net->getId()) {
2917-
getImpl()->getLogger()->warn(utl::ODB,
2918-
9,
2919-
"id mismatch ({},{}) for net {}",
2920-
xnet->getId(),
2921-
net->getId(),
2922-
net->getConstName());
2923-
}
2924-
dbSigType ty = net->getSigType();
2925-
if (ty.isSupply()) {
2926-
xnet->setSpecial();
2927-
}
2928-
2929-
xnet->setSigType(ty);
2930-
}
2931-
extBlk->setCornersPerBlock(1);
2932-
return extBlk;
2933-
}
29342873

29352874
char* dbBlock::getCornerNameList()
29362875
{
@@ -3149,15 +3088,6 @@ void dbBlock::destroyCornerParasitics(std::vector<dbNet*>& nets)
31493088
void dbBlock::destroyParasitics(std::vector<dbNet*>& nets)
31503089
{
31513090
destroyCornerParasitics(nets);
3152-
if (!extCornersAreIndependent()) {
3153-
return;
3154-
}
3155-
int numcorners = getCornerCount();
3156-
dbBlock* extBlock;
3157-
for (int corner = 1; corner < numcorners; corner++) {
3158-
extBlock = findExtCornerBlock(corner);
3159-
extBlock->destroyCornerParasitics(nets);
3160-
}
31613091
}
31623092

31633093
void dbBlock::getCcHaloNets(std::vector<dbNet*>& changedNets,

src/odb/src/db/dbDatabase.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,10 @@ namespace odb {
5050
inline constexpr uint32_t kSchemaMajor = 0; // Not used...
5151
inline constexpr uint32_t kSchemaInitial = 57;
5252

53-
inline constexpr uint32_t kSchemaMinor = 133; // Current revision number
53+
inline constexpr uint32_t kSchemaMinor = 134; // Current revision number
54+
55+
// Revision where the per-corner child-block feature for parasitics was removed
56+
inline constexpr uint32_t kSchemaRemovePerCornerBlock = 134;
5457

5558
// Revision where the corner data (corner count + corner/factor lists) was
5659
// removed from dbExtControl

src/odb/src/db/dbExtControl.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ namespace odb {
1010

1111
dbExtControl::dbExtControl()
1212
{
13-
_independentExtCorners = false;
1413
_wireStamped = false;
1514
_foreign = false;
1615
_rsegCoord = false;
@@ -39,7 +38,6 @@ dbOStream& operator<<(dbOStream& stream, const dbExtControl& extControl)
3938
if (!extControl._extracted) {
4039
return stream;
4140
}
42-
stream << extControl._independentExtCorners;
4341
stream << extControl._wireStamped;
4442
stream << extControl._foreign;
4543
stream << extControl._rsegCoord;
@@ -72,7 +70,10 @@ dbIStream& operator>>(dbIStream& stream, dbExtControl& extControl)
7270

7371
_dbDatabase* db = stream.getDatabase();
7472

75-
stream >> extControl._independentExtCorners;
73+
if (!db->isSchema(kSchemaRemovePerCornerBlock)) {
74+
bool obsolete_independent_ext_corners;
75+
stream >> obsolete_independent_ext_corners;
76+
}
7677
stream >> extControl._wireStamped;
7778
stream >> extControl._foreign;
7879
stream >> extControl._rsegCoord;

src/odb/test/test_block.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ def setUp(self):
2020
self.parentBlock = odb.dbBlock_create(self.db.getChip(), "Parent")
2121
self.block = helper.create2LevelBlock(self.db, self.lib, self.parentBlock)
2222
self.block.setCornerCount(4)
23-
self.extcornerblock = self.block.createExtCornerBlock(1)
2423
odb.dbTechNonDefaultRule_create(self.block, "non_default_1")
2524
self.parentRegion = odb.dbRegion_create(self.block, "parentRegion")
2625

@@ -43,11 +42,6 @@ def test_find(self):
4342
self.assertEqual(self.block.findITerm("i1,o").getInst().getName(), "i1")
4443
self.assertEqual(self.block.findITerm("i1,o").getMTerm().getName(), "o")
4544
self.assertIsNone(self.block.findITerm("i1\\o"))
46-
# extcornerblock
47-
self.assertEqual(
48-
self.block.findExtCornerBlock(1).getName(), "extCornerBlock__1"
49-
)
50-
self.assertIsNone(self.block.findExtCornerBlock(0))
5145
# nondefaultrule
5246
self.assertEqual(
5347
self.block.findNonDefaultRule("non_default_1").getName(), "non_default_1"

src/odb/test/test_block.tcl

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ proc setUp { } {
2222
set parentBlock [odb::dbBlock_create [$db getChip] "Parent"]
2323
set block [create2LevelBlock $db $lib $parentBlock]
2424
$block setCornerCount 4
25-
set extcornerblock [$block createExtCornerBlock 1]
2625
odb::dbTechNonDefaultRule_create $block "non_default_1"
2726
set parentRegion [odb::dbRegion_create $block "parentRegion"]
2827
return [list $db $lib $block $parentBlock]
@@ -52,9 +51,6 @@ proc test_find { } {
5251
assertStringEq [[$iterm getInst] getName] "i1"
5352
assertStringEq [[$iterm getMTerm] getName] "o"
5453
assertObjIsNull [$block findITerm "i1\o"]
55-
# extcornerblock
56-
assertStringEq [[$block findExtCornerBlock 1] getName] "extCornerBlock__1"
57-
assertObjIsNull [$block findExtCornerBlock 0]
5854
# nondefaultrule
5955
assertStringEq [[$block findNonDefaultRule "non_default_1"] getName] "non_default_1"
6056
assertObjIsNull [$block findNonDefaultRule "non_default_2"]

0 commit comments

Comments
 (0)