mirror of https://github.com/KLayout/klayout.git
Fixing issue #2134 ('merged' on edge layers not working in DRC)
This commit is contained in:
parent
70ba27c8f2
commit
af6762b52d
|
|
@ -5079,6 +5079,7 @@ CODE
|
||||||
#
|
#
|
||||||
# This method works both on edge or polygon layers. Edge merging forms
|
# This method works both on edge or polygon layers. Edge merging forms
|
||||||
# single, continuous edges from coincident and connected individual edges.
|
# single, continuous edges from coincident and connected individual edges.
|
||||||
|
# The overlap count is only available on polygon layers.
|
||||||
#
|
#
|
||||||
# A version that modifies the input layer is \merge.
|
# A version that modifies the input layer is \merge.
|
||||||
#
|
#
|
||||||
|
|
@ -5106,7 +5107,13 @@ CODE
|
||||||
def merged(overlap_count = 1)
|
def merged(overlap_count = 1)
|
||||||
@engine._context("merged") do
|
@engine._context("merged") do
|
||||||
requires_edges_or_region
|
requires_edges_or_region
|
||||||
aa = [ @engine._prep_value(overlap_count) ]
|
oc = @engine._prep_value(overlap_count)
|
||||||
|
if self.data.is_a?(RBA::Edges)
|
||||||
|
oc == 1 || raise("'overlap_count' (merged) is only available on polygon layers")
|
||||||
|
aa = []
|
||||||
|
else
|
||||||
|
aa = [ oc ]
|
||||||
|
end
|
||||||
DRCLayer::new(@engine, @engine._tcmd(self.data, 0, self.data.class, :merged, *aa))
|
DRCLayer::new(@engine, @engine._tcmd(self.data, 0, self.data.class, :merged, *aa))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -5114,7 +5121,13 @@ CODE
|
||||||
def merge(overlap_count = 1)
|
def merge(overlap_count = 1)
|
||||||
@engine._context("merge") do
|
@engine._context("merge") do
|
||||||
requires_edges_or_region
|
requires_edges_or_region
|
||||||
aa = [ @engine._prep_value(overlap_count) ]
|
oc = @engine._prep_value(overlap_count)
|
||||||
|
if self.data.is_a?(RBA::Edges)
|
||||||
|
oc == 1 || raise("'overlap_count' (merged) is only available on polygon layers")
|
||||||
|
aa = []
|
||||||
|
else
|
||||||
|
aa = [ oc ]
|
||||||
|
end
|
||||||
if @engine.is_tiled?
|
if @engine.is_tiled?
|
||||||
# in tiled mode, no modifying versions are available
|
# in tiled mode, no modifying versions are available
|
||||||
self.data = @engine._tcmd(self.data, 0, self.data.class, :merged, *aa)
|
self.data = @engine._tcmd(self.data, 0, self.data.class, :merged, *aa)
|
||||||
|
|
|
||||||
|
|
@ -2044,3 +2044,14 @@ TEST(144d_combined_antennas)
|
||||||
run_test (_this, "144", true);
|
run_test (_this, "144", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// issue 2134
|
||||||
|
TEST(145_edges_merge)
|
||||||
|
{
|
||||||
|
run_test (_this, "145", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(145d_edges_merge)
|
||||||
|
{
|
||||||
|
run_test (_this, "145", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
|
||||||
|
source $drc_test_source
|
||||||
|
target $drc_test_target
|
||||||
|
|
||||||
|
if $drc_test_deep
|
||||||
|
deep
|
||||||
|
end
|
||||||
|
|
||||||
|
l1 = input(1, 0)
|
||||||
|
l2 = input(2, 0)
|
||||||
|
l3 = input(3, 0)
|
||||||
|
|
||||||
|
l1.output(1, 0)
|
||||||
|
l2.output(2, 0)
|
||||||
|
l3.output(3, 0)
|
||||||
|
|
||||||
|
l1.raw.edges.merged.output(100, 0)
|
||||||
|
l2.raw.edges.merged.output(101, 0)
|
||||||
|
l3e = l3.raw.edges
|
||||||
|
l3e.merge
|
||||||
|
l3e.output(102, 0)
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue