diff --git a/src/db/db/dbHierNetworkProcessor.cc b/src/db/db/dbHierNetworkProcessor.cc index e0f1a447b..155e76e92 100644 --- a/src/db/db/dbHierNetworkProcessor.cc +++ b/src/db/db/dbHierNetworkProcessor.cc @@ -1203,12 +1203,11 @@ private: box_type bb2 = (*mp_cbc) (i2.cell_index ()); - db::ICplxTrans t2i = t2 * i2.complex_trans (); const db::Cell &cell2 = mp_layout->cell (i2.cell_index ()); box_type b2 = i2.cell_inst ().bbox (*mp_cbc).transformed (t2); - if (! b1.touches (b2) || ! c1.interacts (cell2, t2i, *mp_conn)) { + if (! b1.touches (b2)) { return; } @@ -1222,7 +1221,7 @@ private: db::ICplxTrans tt2 = t2 * i2.complex_trans (*ii2); box_type ib2 = bb2.transformed (tt2); - if (b1.touches (ib2)) { + if (b1.touches (ib2) && c1.interacts (cell2, tt2, *mp_conn)) { pp2.back () = db::InstElement (i2, ii2); add_single_pair (c1, i2.cell_index (), pp2, tt2); diff --git a/src/db/unit_tests/dbHierNetworkProcessorTests.cc b/src/db/unit_tests/dbHierNetworkProcessorTests.cc index c376f26f1..a16a73294 100644 --- a/src/db/unit_tests/dbHierNetworkProcessorTests.cc +++ b/src/db/unit_tests/dbHierNetworkProcessorTests.cc @@ -1027,3 +1027,9 @@ TEST(114_HierClusters) run_hc_test_with_backannotation (_this, "hc_test_l14.gds", "hc_test_au14b.gds"); } +TEST(115_HierClusters) +{ + run_hc_test (_this, "hc_test_l15.gds", "hc_test_au15.gds"); + run_hc_test_with_backannotation (_this, "hc_test_l15.gds", "hc_test_au15b.gds"); +} + diff --git a/testdata/algo/hc_test_au15.gds b/testdata/algo/hc_test_au15.gds new file mode 100644 index 000000000..15cd28050 Binary files /dev/null and b/testdata/algo/hc_test_au15.gds differ diff --git a/testdata/algo/hc_test_au15b.gds b/testdata/algo/hc_test_au15b.gds new file mode 100644 index 000000000..bfde53a73 Binary files /dev/null and b/testdata/algo/hc_test_au15b.gds differ diff --git a/testdata/algo/hc_test_l15.gds b/testdata/algo/hc_test_l15.gds new file mode 100644 index 000000000..ff5f9ece9 Binary files /dev/null and b/testdata/algo/hc_test_l15.gds differ