Skip to content

Commit 951c995

Browse files
author
osamahammad21
committed
odb: _dbUnfoldedRegion::effective_side_ bits
Signed-off-by: osamahammad21 <osama@precisioninno.com>
1 parent bc7f988 commit 951c995

3 files changed

Lines changed: 22 additions & 8 deletions

File tree

src/odb/src/codeGenerator/schema/chip/dbUnfoldedRegion.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"name": "effective_side_",
2626
"type": "uint32_t",
2727
"default": 0,
28+
"bits": 2,
2829
"flags": ["private"]
2930
},
3031
{

src/odb/src/db/dbUnfoldedRegion.cpp

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "dbUnfoldedRegion.h"
66

77
#include <cstdint>
8+
#include <cstring>
89

910
#include "dbChipRegion.h"
1011
#include "dbChipRegionInst.h"
@@ -24,10 +25,10 @@ template class dbTable<_dbUnfoldedRegion>;
2425
bool _dbUnfoldedRegion::operator==(const _dbUnfoldedRegion& rhs) const
2526
{
2627
// NOLINTBEGIN(readability-simplify-boolean-expr)
27-
if (chip_region_inst_ != rhs.chip_region_inst_) {
28+
if (flags_.effective_side_ != rhs.flags_.effective_side_) {
2829
return false;
2930
}
30-
if (effective_side_ != rhs.effective_side_) {
31+
if (chip_region_inst_ != rhs.chip_region_inst_) {
3132
return false;
3233
}
3334
if (parent_chip_ != rhs.parent_chip_) {
@@ -51,13 +52,16 @@ bool _dbUnfoldedRegion::operator<(const _dbUnfoldedRegion& rhs) const
5152

5253
_dbUnfoldedRegion::_dbUnfoldedRegion(_dbDatabase* db)
5354
{
54-
effective_side_ = 0;
55+
flags_ = {};
5556
}
5657

5758
dbIStream& operator>>(dbIStream& stream, _dbUnfoldedRegion& obj)
5859
{
60+
uint32_t flags_bit_field;
61+
stream >> flags_bit_field;
62+
static_assert(sizeof(obj.flags_) == sizeof(flags_bit_field));
63+
std::memcpy(&obj.flags_, &flags_bit_field, sizeof(flags_bit_field));
5964
stream >> obj.chip_region_inst_;
60-
stream >> obj.effective_side_;
6165
stream >> obj.parent_chip_;
6266
stream >> obj.chip_next_;
6367
stream >> obj.bump_;
@@ -66,8 +70,11 @@ dbIStream& operator>>(dbIStream& stream, _dbUnfoldedRegion& obj)
6670

6771
dbOStream& operator<<(dbOStream& stream, const _dbUnfoldedRegion& obj)
6872
{
73+
uint32_t flags_bit_field;
74+
static_assert(sizeof(obj.flags_) == sizeof(flags_bit_field));
75+
std::memcpy(&flags_bit_field, &obj.flags_, sizeof(obj.flags_));
76+
stream << flags_bit_field;
6977
stream << obj.chip_region_inst_;
70-
stream << obj.effective_side_;
7178
stream << obj.parent_chip_;
7279
stream << obj.chip_next_;
7380
stream << obj.bump_;
@@ -124,13 +131,13 @@ Cuboid dbUnfoldedRegion::getCuboid() const
124131
dbUnfoldedRegion::EffectiveSide dbUnfoldedRegion::getEffectiveSide() const
125132
{
126133
_dbUnfoldedRegion* obj = (_dbUnfoldedRegion*) this;
127-
return static_cast<EffectiveSide>(obj->effective_side_);
134+
return static_cast<EffectiveSide>(obj->flags_.effective_side_);
128135
}
129136

130137
void dbUnfoldedRegion::setEffectiveSide(EffectiveSide side)
131138
{
132139
_dbUnfoldedRegion* obj = (_dbUnfoldedRegion*) this;
133-
obj->effective_side_ = static_cast<uint32_t>(side);
140+
obj->flags_.effective_side_ = static_cast<uint32_t>(side);
134141
}
135142

136143
bool dbUnfoldedRegion::isTop() const

src/odb/src/db/dbUnfoldedRegion.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ class _dbChipRegionInst;
1717
class _dbUnfoldedChip;
1818
class _dbUnfoldedBump;
1919

20+
struct dbUnfoldedRegionFlags
21+
{
22+
uint32_t effective_side_ : 2 = 0;
23+
uint32_t spare_bits : 30;
24+
};
25+
2026
class _dbUnfoldedRegion : public _dbObject
2127
{
2228
public:
@@ -30,8 +36,8 @@ class _dbUnfoldedRegion : public _dbObject
3036
bool operator<(const _dbUnfoldedRegion& rhs) const;
3137
void collectMemInfo(MemInfo& info);
3238

39+
dbUnfoldedRegionFlags flags_;
3340
dbId<_dbChipRegionInst> chip_region_inst_;
34-
uint32_t effective_side_;
3541
dbId<_dbUnfoldedChip> parent_chip_;
3642
dbId<_dbUnfoldedRegion> chip_next_;
3743
dbId<_dbUnfoldedBump> bump_;

0 commit comments

Comments
 (0)