Merge pull request #2418 from KLayout/bugfix/issue-2416

Fixing bug #2416 (two-layer DRC check without merged first input prod…
This commit is contained in:
Matthias Köfferlein 2026-08-14 17:59:24 +02:00 committed by GitHub
commit 5ff3bb4c4b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 48 additions and 2 deletions

View File

@ -1237,7 +1237,12 @@ AsIfFlatRegion::run_check (db::edge_relation_type rel, bool different_polygons,
different_polygons = true; different_polygons = true;
} }
bool needs_merged_primary = (! other && different_polygons) || options.needs_merged (); // in some cases we need merged primary polygons:
// 1.) isolated check (same layer, but different polygons)
// 2.) options need merged edges (projection limits, rectangle filter, opposite filter)
// 3.) prop_ne constraint - in that case, merge must not be applied internally after properties have been separated
bool needs_merged_primary = (! other && different_polygons) || options.needs_merged () || pc_always_different (options.prop_constraint);
bool primary_is_merged = is_merged (); bool primary_is_merged = is_merged ();
db::RegionIterator polygons; db::RegionIterator polygons;

View File

@ -2405,7 +2405,12 @@ DeepRegion::run_check (db::edge_relation_type rel, bool different_polygons, cons
// primary input // primary input
bool needs_merged_primary = (! other_deep && different_polygons) || options.needs_merged (); // in some cases we need merged primary polygons:
// 1.) isolated check (same layer, but different polygons)
// 2.) options need merged edges (projection limits, rectangle filter, opposite filter)
// 3.) prop_ne constraint - in that case, merge must not be applied internally after properties have been separated
bool needs_merged_primary = (! other_deep && different_polygons) || options.needs_merged () || pc_always_different (options.prop_constraint);
bool primary_is_merged = false; bool primary_is_merged = false;
db::DeepLayer polygons; db::DeepLayer polygons;

View File

@ -2143,3 +2143,14 @@ TEST(151d_edges_from_region_with_properties)
{ {
run_test (_this, "151", true); run_test (_this, "151", true);
} }
// issue #2416
TEST(152_sep_with_props)
{
run_test (_this, "152", false);
}
TEST(152d_sep_with_props)
{
run_test (_this, "152", true);
}

25
testdata/drc/drcSimpleTests_152.drc vendored Normal file
View File

@ -0,0 +1,25 @@
source $drc_test_source
target $drc_test_target
if $drc_test_deep
deep
end
deep
l1 = input(1, 0, enable_props)
l1.output(1, 0)
l2 = input(2, 0, enable_props)
l2.output(2, 0)
l1.sep(l2, 1.um, props_ne).output(100, 0)
l1.sep(l2, 1.um, props_eq).output(101, 0)
l1.sep(l2, 1.um).output(102, 0)
l2.sep(l1, 1.um, props_ne).output(110, 0)
l2.sep(l1, 1.um, props_eq).output(111, 0)
l2.sep(l1, 1.um).output(112, 0)
l1.space(1.um, props_ne).output(120, 0)
l1.space(1.um, props_eq).output(121, 0)
l1.space(1.um).output(122, 0)

BIN
testdata/drc/drcSimpleTests_152.gds vendored Normal file

Binary file not shown.

BIN
testdata/drc/drcSimpleTests_au152.gds vendored Normal file

Binary file not shown.

BIN
testdata/drc/drcSimpleTests_au152d.gds vendored Normal file

Binary file not shown.