Skip to content

Commit 72f47ed

Browse files
Merge pull request #10588 from osamahammad21/odb-new-unfolded-structuree
ODB: replace struct UnfoldedModel with dbObject-backed unfolded model
2 parents 606571b + 1a85b0f commit 72f47ed

35 files changed

Lines changed: 2317 additions & 730 deletions

src/odb/include/odb/db.h

Lines changed: 111 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,11 @@ class dbTechLayerTwoWiresForbiddenSpcRule;
178178
class dbTechLayerVoltageSpacing;
179179
class dbTechLayerWidthTableRule;
180180
class dbTechLayerWrongDirSpacingRule;
181+
class dbUnfoldedChipBumpInst;
182+
class dbUnfoldedChipConn;
183+
class dbUnfoldedChipInst;
184+
class dbUnfoldedChipNet;
185+
class dbUnfoldedChipRegionInst;
181186
// Generator Code End ClassDeclarations
182187

183188
// Extraction Objects
@@ -186,8 +191,6 @@ class dbExtControl;
186191
// Custom iterators
187192
class dbModuleBusPortModBTermItr;
188193

189-
class UnfoldedModel;
190-
191194
///////////////////////////////////////////////////////////////////////////////
192195
///
193196
/// A box is the element used to represent layout shapes.
@@ -7620,6 +7623,16 @@ class dbDatabase : public dbObject
76207623

76217624
dbSet<dbChipNet> getChipNets() const;
76227625

7626+
dbSet<dbUnfoldedChipInst> getUnfoldedChipInsts() const;
7627+
7628+
dbSet<dbUnfoldedChipRegionInst> getUnfoldedChipRegionInsts() const;
7629+
7630+
dbSet<dbUnfoldedChipBumpInst> getUnfoldedChipBumpInsts() const;
7631+
7632+
dbSet<dbUnfoldedChipConn> getUnfoldedChipConns() const;
7633+
7634+
dbSet<dbUnfoldedChipNet> getUnfoldedChipNets() const;
7635+
76237636
// User Code Begin dbDatabase
76247637

76257638
void setHierarchy(bool value);
@@ -7670,7 +7683,6 @@ class dbDatabase : public dbObject
76707683

76717684
void constructUnfoldedModel();
76727685

7673-
UnfoldedModel* getUnfoldedModel() const;
76747686
////////////////////////
76757687
/// DEPRECATED
76767688
////////////////////////
@@ -7800,6 +7812,12 @@ class dbDatabase : public dbObject
78007812
/// Translate a database-id back to a pointer.
78017813
///
78027814
static dbDatabase* getDatabase(uint32_t oid);
7815+
7816+
///
7817+
/// Find an unfolded chip by its full path name (slash-joined chip-inst
7818+
/// names). Returns nullptr if no match.
7819+
///
7820+
dbUnfoldedChipInst* findUnfoldedChip(const std::string& path) const;
78037821
// User Code End dbDatabase
78047822
};
78057823

@@ -11392,6 +11410,96 @@ class dbTechLayerWrongDirSpacingRule : public dbObject
1139211410
// User Code End dbTechLayerWrongDirSpacingRule
1139311411
};
1139411412

11413+
class dbUnfoldedChipBumpInst : public dbObject
11414+
{
11415+
public:
11416+
dbChipBumpInst* getChipBumpInst() const;
11417+
11418+
dbUnfoldedChipRegionInst* getParentRegion() const;
11419+
11420+
// User Code Begin dbUnfoldedChipBumpInst
11421+
Point3D getGlobalPosition() const;
11422+
// User Code End dbUnfoldedChipBumpInst
11423+
};
11424+
11425+
class dbUnfoldedChipConn : public dbObject
11426+
{
11427+
public:
11428+
dbChipConn* getChipConn() const;
11429+
11430+
dbUnfoldedChipRegionInst* getTopRegion() const;
11431+
11432+
dbUnfoldedChipRegionInst* getBottomRegion() const;
11433+
};
11434+
11435+
class dbUnfoldedChipInst : public dbObject
11436+
{
11437+
public:
11438+
const std::string& getName() const;
11439+
11440+
dbTransform getTransform() const;
11441+
11442+
// User Code Begin dbUnfoldedChipInst
11443+
Cuboid getCuboid() const;
11444+
11445+
dbSet<dbUnfoldedChipRegionInst> getRegions() const;
11446+
11447+
///
11448+
/// Return the chip-instance path that uniquely identifies this unfolded
11449+
/// chip in the folded hierarchy (top-most chip inst first, leaf last).
11450+
///
11451+
std::vector<dbChipInst*> getChipInstPath() const;
11452+
11453+
///
11454+
/// Find the unfolded region within this chip whose source region instance
11455+
/// matches `source`. Returns nullptr if no match.
11456+
///
11457+
dbUnfoldedChipRegionInst* findRegion(dbChipRegionInst* source) const;
11458+
// User Code End dbUnfoldedChipInst
11459+
};
11460+
11461+
class dbUnfoldedChipNet : public dbObject
11462+
{
11463+
public:
11464+
dbChipNet* getChipNet() const;
11465+
11466+
// User Code Begin dbUnfoldedChipNet
11467+
std::vector<dbUnfoldedChipBumpInst*> getConnectedBumps() const;
11468+
// User Code End dbUnfoldedChipNet
11469+
};
11470+
11471+
class dbUnfoldedChipRegionInst : public dbObject
11472+
{
11473+
public:
11474+
enum class EffectiveSide
11475+
{
11476+
TOP,
11477+
BOTTOM,
11478+
INTERNAL,
11479+
INTERNAL_EXT
11480+
};
11481+
11482+
dbChipRegionInst* getChipRegionInst() const;
11483+
11484+
dbUnfoldedChipInst* getParentChip() const;
11485+
11486+
// User Code Begin dbUnfoldedChipRegionInst
11487+
Cuboid getCuboid() const;
11488+
11489+
EffectiveSide getEffectiveSide() const;
11490+
void setEffectiveSide(EffectiveSide side);
11491+
11492+
bool isTop() const;
11493+
bool isBottom() const;
11494+
bool isInternal() const;
11495+
bool isInternalExt() const;
11496+
11497+
int getSurfaceZ() const;
11498+
11499+
dbSet<dbUnfoldedChipBumpInst> getBumps() const;
11500+
// User Code End dbUnfoldedChipRegionInst
11501+
};
11502+
1139511503
// Generator Code End ClassDefinition
1139611504
///
1139711505
/// dbProperty - Boolean property.

src/odb/include/odb/dbCompare.inc

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -819,6 +819,46 @@ struct less<odb::dbTechLayerWrongDirSpacingRule*>
819819
= delete;
820820
};
821821

822+
template <>
823+
struct less<odb::dbUnfoldedChipBumpInst*>
824+
{
825+
bool operator()(const odb::dbUnfoldedChipBumpInst* lhs,
826+
const odb::dbUnfoldedChipBumpInst* rhs) const
827+
= delete;
828+
};
829+
830+
template <>
831+
struct less<odb::dbUnfoldedChipConn*>
832+
{
833+
bool operator()(const odb::dbUnfoldedChipConn* lhs,
834+
const odb::dbUnfoldedChipConn* rhs) const
835+
= delete;
836+
};
837+
838+
template <>
839+
struct less<odb::dbUnfoldedChipInst*>
840+
{
841+
bool operator()(const odb::dbUnfoldedChipInst* lhs,
842+
const odb::dbUnfoldedChipInst* rhs) const
843+
= delete;
844+
};
845+
846+
template <>
847+
struct less<odb::dbUnfoldedChipNet*>
848+
{
849+
bool operator()(const odb::dbUnfoldedChipNet* lhs,
850+
const odb::dbUnfoldedChipNet* rhs) const
851+
= delete;
852+
};
853+
854+
template <>
855+
struct less<odb::dbUnfoldedChipRegionInst*>
856+
{
857+
bool operator()(const odb::dbUnfoldedChipRegionInst* lhs,
858+
const odb::dbUnfoldedChipRegionInst* rhs) const
859+
= delete;
860+
};
861+
822862
// Generator Code End Less
823863

824864
} // namespace std

src/odb/include/odb/dbObject.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ enum dbObjectType
127127
dbTechLayerVoltageSpacingObj,
128128
dbTechLayerWidthTableRuleObj,
129129
dbTechLayerWrongDirSpacingRuleObj,
130+
dbUnfoldedChipBumpInstObj,
131+
dbUnfoldedChipConnObj,
132+
dbUnfoldedChipInstObj,
133+
dbUnfoldedChipNetObj,
134+
dbUnfoldedChipRegionInstObj,
130135
// Generator Code End DbObjectType
131136

132137
// Lib Objects

src/odb/include/odb/unfoldedModel.h

Lines changed: 0 additions & 157 deletions
This file was deleted.

src/odb/src/3dblox/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ cc_library(
2626
"//src/odb/src/lefout",
2727
"//src/sta:opensta_lib",
2828
"//src/utl",
29+
"@spdlog",
2930
"@yaml-cpp",
3031
],
3132
)

0 commit comments

Comments
 (0)