diff --git a/src/db/db/dbCompoundOperation.cc b/src/db/db/dbCompoundOperation.cc index dc9953582..cd4ea75a9 100644 --- a/src/db/db/dbCompoundOperation.cc +++ b/src/db/db/dbCompoundOperation.cc @@ -1682,13 +1682,9 @@ CompoundRegionCheckOperationNode::computed_dist () const void CompoundRegionCheckOperationNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - // consider magnification variants - db::EdgeRelationFilter check = m_check; - check.set_distance (proc->dist_for_cell (cell, check.distance ())); - // TODO: needs a concept to deal with merged/non-merged inputs bool is_merged = true; - db::check_local_operation op (check, m_different_polygons, is_merged, m_has_other, m_is_other_merged, m_options); + db::check_local_operation op (m_check, m_different_polygons, is_merged, m_has_other, m_is_other_merged, m_options); tl_assert (results.size () == 1); if (results.front ().empty ()) { @@ -1704,13 +1700,9 @@ CompoundRegionCheckOperationNode::do_compute_local (CompoundRegionOperationCache void CompoundRegionCheckOperationNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - // consider magnification variants - db::EdgeRelationFilter check = m_check; - check.set_distance (proc->dist_for_cell (cell, check.distance ())); - // TODO: needs a concept to deal with merged/non-merged inputs bool is_merged = true; - db::check_local_operation op (check, m_different_polygons, is_merged, m_has_other, m_is_other_merged, m_options); + db::check_local_operation op (m_check, m_different_polygons, is_merged, m_has_other, m_is_other_merged, m_options); tl_assert (results.size () == 1); if (results.front ().empty ()) { diff --git a/src/drc/unit_tests/drcSimpleTests.cc b/src/drc/unit_tests/drcSimpleTests.cc index 2d6db90f1..40fcf0376 100644 --- a/src/drc/unit_tests/drcSimpleTests.cc +++ b/src/drc/unit_tests/drcSimpleTests.cc @@ -2113,3 +2113,13 @@ TEST(148_sparse_array_limit) run_test (_this, "148", true); } +// issue 2384 +TEST(149_compound_drc_with_mag) +{ + run_test (_this, "149", false); +} + +TEST(149d_compound_drc_with_mag) +{ + run_test (_this, "149", true); +} diff --git a/testdata/drc/drcSimpleTests_149.drc b/testdata/drc/drcSimpleTests_149.drc new file mode 100644 index 000000000..d08836713 --- /dev/null +++ b/testdata/drc/drcSimpleTests_149.drc @@ -0,0 +1,18 @@ +source $drc_test_source +target $drc_test_target + +if $drc_test_deep + deep +end + +deep + +metal2_drawn = polygons(36, 0) +metal2_slot = polygons(36, 3) + +metal2_drawn.output(36, 0) +metal2_slot.output(36, 3) + +violations_enclosed = metal2_slot.drc(enclosed(metal2_drawn) < 10.um) +violations_enclosed.output(100, 0) + diff --git a/testdata/drc/drcSimpleTests_149.gds b/testdata/drc/drcSimpleTests_149.gds new file mode 100644 index 000000000..a1d4e0d45 Binary files /dev/null and b/testdata/drc/drcSimpleTests_149.gds differ diff --git a/testdata/drc/drcSimpleTests_au149.gds b/testdata/drc/drcSimpleTests_au149.gds new file mode 100644 index 000000000..e376ef0bb Binary files /dev/null and b/testdata/drc/drcSimpleTests_au149.gds differ diff --git a/testdata/drc/drcSimpleTests_au149d.gds b/testdata/drc/drcSimpleTests_au149d.gds new file mode 100644 index 000000000..0bc742300 Binary files /dev/null and b/testdata/drc/drcSimpleTests_au149d.gds differ