Skip to content

Commit 83cb662

Browse files
committed
odb: fix wrong usage of non-existent dbChipBumpInst
Signed-off-by: osamahammad21 <[email protected]>
1 parent 9690c31 commit 83cb662

File tree

2 files changed

+26
-8
lines changed

2 files changed

+26
-8
lines changed

src/odb/src/db/dbChipNet.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,21 @@ void dbChipNet::addBumpInst(dbChipBumpInst* bump_inst,
117117
const std::vector<dbChipInst*>& path)
118118
{
119119
_dbChipNet* obj = (_dbChipNet*) this;
120-
120+
if (bump_inst == nullptr) {
121+
obj->getLogger()->error(utl::ODB,
122+
479,
123+
"Cannot add nullptr bump inst to chip {} net {}",
124+
obj->name_);
125+
}
121126
std::vector<dbId<_dbChipInst>> path_ids;
122127
path_ids.reserve(path.size());
123128
for (const auto& inst : path) {
129+
if (inst == nullptr) {
130+
obj->getLogger()->error(utl::ODB,
131+
480,
132+
"Invalid inst in path for bump inst in net {}",
133+
obj->name_);
134+
}
124135
path_ids.emplace_back(inst->getImpl()->getOID());
125136
}
126137

src/odb/test/cpp/TestChips.cpp

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ struct F_CHIP_HIERARCHY
6060
= createMaster1X1(lib2, "io_master", 100, 100, "in", "out");
6161
dbInst* io_cell = dbInst::create(io_chip->getBlock(), io_master, "io_bump");
6262
io_bump = dbChipBump::create(io_chip_region_r1, io_cell);
63+
io_master = createMaster1X1(lib1, "io_master", 100, 100, "in", "out");
64+
io_cell = dbInst::create(memory_chip->getBlock(), io_master, "io_bump");
65+
dbChipBump::create(memory_chip_region_r1, io_cell);
6366
}
6467
void createChipInsts()
6568
{
@@ -333,7 +336,7 @@ BOOST_FIXTURE_TEST_CASE(test_chip_bumps, F_CHIP_HIERARCHY)
333336
BOOST_TEST(io_chip_region_r1->getChipBumps().size() == 1);
334337
BOOST_TEST(*io_chip_region_r1->getChipBumps().begin() == io_bump);
335338

336-
BOOST_TEST(db->getChipBumpInsts().size() == 1);
339+
BOOST_TEST(db->getChipBumpInsts().size() == 2);
337340

338341
BOOST_TEST(io_inst->getRegions().size() == 1);
339342
auto io_inst_region_r1 = *io_inst->getRegions().begin();
@@ -351,19 +354,23 @@ BOOST_FIXTURE_TEST_CASE(test_chip_bumps, F_CHIP_HIERARCHY)
351354
BOOST_TEST(system_chip->getChipNets().size() == 1);
352355
BOOST_TEST(db->getChipNets().size() == 1);
353356
chip_net->addBumpInst(io_inst_region_r1_bump_inst, {io_inst});
357+
dbChipRegionInst* memory_inst_region_r1 = nullptr;
358+
for (auto region : memory_inst->getRegions()) {
359+
if (region->getChipRegion() == memory_chip_region_r1) {
360+
memory_inst_region_r1 = region;
361+
break;
362+
}
363+
}
364+
BOOST_TEST(memory_inst_region_r1->getChipBumpInsts().size() == 1);
354365
auto memory_inst_region_r1_bump_inst
355-
= (*(*memory_inst->getRegions().begin())->getChipBumpInsts().begin());
366+
= (*memory_inst_region_r1->getChipBumpInsts().begin());
356367
chip_net->addBumpInst(memory_inst_region_r1_bump_inst, {memory_inst});
357368
BOOST_TEST(chip_net->getNumBumpInsts() == 2);
358369
std::vector<dbChipInst*> path;
359370
BOOST_TEST(chip_net->getBumpInst(0, path) == io_inst_region_r1_bump_inst);
360371
BOOST_TEST(path.size() == 1);
361372
BOOST_TEST(path[0] == io_inst);
362-
363-
dbMaster* io_master
364-
= createMaster1X1(lib1, "io_master", 100, 100, "in", "out");
365-
dbInst* io_cell
366-
= dbInst::create(memory_chip->getBlock(), io_master, "io_bump");
373+
dbInst* io_cell = memory_chip->getBlock()->findInst("io_bump");
367374
try {
368375
dbChipBump::create(io_chip_region_r1, io_cell);
369376
BOOST_TEST(false);

0 commit comments

Comments
 (0)