Skip to content

Commit af6762b

Browse files
author
Matthias Koefferlein
committed
Fixing issue #2134 ('merged' on edge layers not working in DRC)
1 parent 70ba27c commit af6762b

File tree

6 files changed

+48
-2
lines changed

6 files changed

+48
-2
lines changed

src/drc/drc/built-in-macros/_drc_layer.rb

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5079,6 +5079,7 @@ def #{f}(*args)
50795079
#
50805080
# This method works both on edge or polygon layers. Edge merging forms
50815081
# single, continuous edges from coincident and connected individual edges.
5082+
# The overlap count is only available on polygon layers.
50825083
#
50835084
# A version that modifies the input layer is \merge.
50845085
#
@@ -5106,15 +5107,27 @@ def #{f}(*args)
51065107
def merged(overlap_count = 1)
51075108
@engine._context("merged") do
51085109
requires_edges_or_region
5109-
aa = [ @engine._prep_value(overlap_count) ]
5110+
oc = @engine._prep_value(overlap_count)
5111+
if self.data.is_a?(RBA::Edges)
5112+
oc == 1 || raise("'overlap_count' (merged) is only available on polygon layers")
5113+
aa = []
5114+
else
5115+
aa = [ oc ]
5116+
end
51105117
DRCLayer::new(@engine, @engine._tcmd(self.data, 0, self.data.class, :merged, *aa))
51115118
end
51125119
end
51135120

51145121
def merge(overlap_count = 1)
51155122
@engine._context("merge") do
51165123
requires_edges_or_region
5117-
aa = [ @engine._prep_value(overlap_count) ]
5124+
oc = @engine._prep_value(overlap_count)
5125+
if self.data.is_a?(RBA::Edges)
5126+
oc == 1 || raise("'overlap_count' (merged) is only available on polygon layers")
5127+
aa = []
5128+
else
5129+
aa = [ oc ]
5130+
end
51185131
if @engine.is_tiled?
51195132
# in tiled mode, no modifying versions are available
51205133
self.data = @engine._tcmd(self.data, 0, self.data.class, :merged, *aa)

src/drc/unit_tests/drcSimpleTests.cc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2044,3 +2044,14 @@ TEST(144d_combined_antennas)
20442044
run_test (_this, "144", true);
20452045
}
20462046

2047+
// issue 2134
2048+
TEST(145_edges_merge)
2049+
{
2050+
run_test (_this, "145", false);
2051+
}
2052+
2053+
TEST(145d_edges_merge)
2054+
{
2055+
run_test (_this, "145", true);
2056+
}
2057+
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
source $drc_test_source
3+
target $drc_test_target
4+
5+
if $drc_test_deep
6+
deep
7+
end
8+
9+
l1 = input(1, 0)
10+
l2 = input(2, 0)
11+
l3 = input(3, 0)
12+
13+
l1.output(1, 0)
14+
l2.output(2, 0)
15+
l3.output(3, 0)
16+
17+
l1.raw.edges.merged.output(100, 0)
18+
l2.raw.edges.merged.output(101, 0)
19+
l3e = l3.raw.edges
20+
l3e.merge
21+
l3e.output(102, 0)
22+
842 Bytes
Binary file not shown.
3.21 KB
Binary file not shown.
2.04 KB
Binary file not shown.

0 commit comments

Comments
 (0)