Skip to content

Commit 90b7e4a

Browse files
authored
Merge pull request #8935 from The-OpenROAD-Project-staging/odb-fix-region-rm
odb: Fix group removal in region destroy
2 parents 7546f1e + cba37d5 commit 90b7e4a

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

src/odb/src/db/dbRegion.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -350,10 +350,8 @@ void dbRegion::destroy(dbRegion* region_)
350350
dbSet<dbGroup>::iterator gitr;
351351

352352
for (gitr = groups.begin(); gitr != groups.end(); gitr = groups.begin()) {
353-
_dbGroup* _group = (_dbGroup*) *gitr;
354-
_group->region_ = 0;
355-
_group->region_next_ = 0;
356-
_group->region_prev_ = 0;
353+
dbGroup* group = *gitr;
354+
region_->removeGroup(group);
357355
}
358356

359357
dbProperty::destroyProperties(region);

src/odb/test/test_group.tcl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,21 @@ proc test_destroy { } {
7979
tearDown $db
8080
}
8181

82+
proc test_region_w_groups_destroy { } {
83+
lassign [createSimpleDB] db lib
84+
set block [create1LevelBlock $db $lib [$db getChip]]
85+
86+
# create region
87+
set foo_region [odb::dbRegion_create $block foo_region]
88+
# and a group
89+
set foo_group [odb::dbGroup_create $foo_region foo_group]
90+
# destroy region while it has group
91+
odb::dbRegion_destroy $foo_region
92+
tearDown $db
93+
}
94+
8295
test_default
8396
test_destroy
97+
test_region_w_groups_destroy
8498
puts "pass"
8599
exit 0

0 commit comments

Comments
 (0)