diff --git a/src/drc/drc/built-in-macros/_drc_complex_ops.rb b/src/drc/drc/built-in-macros/_drc_complex_ops.rb index ce8eb9640..fcb737383 100644 --- a/src/drc/drc/built-in-macros/_drc_complex_ops.rb +++ b/src/drc/drc/built-in-macros/_drc_complex_ops.rb @@ -269,7 +269,7 @@ CODE # The plain function is equivalent to "primary.bbox_min". def bbox_min - DRCOpNodeBBoxParameterFilter::new(@engine, RBA::CompoundRegionOperationNode::BoxMinDim, self) + DRCOpNodeBBoxParameterFilter::new(@engine, RBA::CompoundRegionOperationNode::ParameterType::BoxMinDim, self) end # %DRC% @@ -284,7 +284,7 @@ CODE # The plain function is equivalent to "primary.bbox_max". def bbox_max - DRCOpNodeBBoxParameterFilter::new(@engine, RBA::CompoundRegionOperationNode::BoxMaxDim, self) + DRCOpNodeBBoxParameterFilter::new(@engine, RBA::CompoundRegionOperationNode::ParameterType::BoxMaxDim, self) end # %DRC% @@ -302,7 +302,7 @@ CODE # The plain function is equivalent to "primary.bbox_width". def bbox_width - DRCOpNodeBBoxParameterFilter::new(@engine, RBA::CompoundRegionOperationNode::BoxWidth, self) + DRCOpNodeBBoxParameterFilter::new(@engine, RBA::CompoundRegionOperationNode::ParameterType::BoxWidth, self) end # %DRC% @@ -320,7 +320,7 @@ CODE # The plain function is equivalent to "primary.bbox_height". def bbox_height - DRCOpNodeBBoxParameterFilter::new(@engine, RBA::CompoundRegionOperationNode::BoxHeight, self) + DRCOpNodeBBoxParameterFilter::new(@engine, RBA::CompoundRegionOperationNode::ParameterType::BoxHeight, self) end # %DRC% @@ -1537,21 +1537,21 @@ class DRCOpNodeBBoxParameterFilter < DRCOpNodeWithCompare attr_accessor :parameter attr_accessor :inverse - def initialize(engine, parameter, input, description) + def initialize(engine, parameter, input) super(engine) self.parameter = parameter self.input = input self.inverse = false - self.description = description + self.description = parameter.to_s end def do_create_node(cache) - args = [ self.input.create_node(cache), self.inverse ] + args = [ self.input.create_node(cache), self.parameter, self.inverse ] args << (self.gt ? @engine._make_value(self.gt) + 1 : (self.ge ? @engine._make_value(self.ge) : 0)) if self.lt || self.le args << (self.lt ? @engine._make_value(self.lt) : @engine._make_value(self.le) + 1) end - RBA::CompoundRegionOperationNode::new_perimeter_filter(*args) + RBA::CompoundRegionOperationNode::new_bbox_filter(*args) end def inverted diff --git a/src/drc/unit_tests/drcGenericTests.cc b/src/drc/unit_tests/drcGenericTests.cc index cef4927dc..afdec0972 100644 --- a/src/drc/unit_tests/drcGenericTests.cc +++ b/src/drc/unit_tests/drcGenericTests.cc @@ -158,3 +158,13 @@ TEST(9d) { run_test (_this, "9", true); } + +TEST(10) +{ + run_test (_this, "10", false); +} + +TEST(10d) +{ + run_test (_this, "10", true); +} diff --git a/testdata/drc/drcGenericTests_10.drc b/testdata/drc/drcGenericTests_10.drc new file mode 100644 index 000000000..3cd607cf0 --- /dev/null +++ b/testdata/drc/drcGenericTests_10.drc @@ -0,0 +1,24 @@ + +source $drc_test_source +target $drc_test_target + +if $drc_test_deep + deep + threads(0) # easier to debug +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) + +# bbox_predicates + +l1.drc(bbox_min > 2.0).output(100, 0) +l1.drc(bbox_max <= 2.0).output(101, 0) +l1.drc(bbox_width > 3.0).output(102, 0) +l1.drc(bbox_height > 11.0).output(103, 0) + diff --git a/testdata/drc/drcGenericTests_10.gds b/testdata/drc/drcGenericTests_10.gds new file mode 100644 index 000000000..b55983b6b Binary files /dev/null and b/testdata/drc/drcGenericTests_10.gds differ diff --git a/testdata/drc/drcGenericTests_5.drc b/testdata/drc/drcGenericTests_5.drc index 0e4cae5e7..33216870a 100644 --- a/testdata/drc/drcGenericTests_5.drc +++ b/testdata/drc/drcGenericTests_5.drc @@ -39,3 +39,6 @@ l1.drc(! rectangles).output(141, 0) l1.drc(if_all(! rectangles, area < 8.0)).output(150, 0) l1.drc(if_any(rectangles, area > 8.0)).output(151, 0) +l1.drc(if_any(corners.count > 4)).output(160, 0) +l1.drc(if_any(corners.count == 4)).output(161, 0) + diff --git a/testdata/drc/drcGenericTests_au5.gds b/testdata/drc/drcGenericTests_au5.gds index bab8736eb..c904d68d3 100644 Binary files a/testdata/drc/drcGenericTests_au5.gds and b/testdata/drc/drcGenericTests_au5.gds differ diff --git a/testdata/drc/drcGenericTests_au5d.gds b/testdata/drc/drcGenericTests_au5d.gds index fa60a6bc5..cd162191c 100644 Binary files a/testdata/drc/drcGenericTests_au5d.gds and b/testdata/drc/drcGenericTests_au5d.gds differ