From 5795ec8b07ea94529a341aa5ef712d3bf7e12153 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Wed, 20 May 2020 23:56:35 +0200 Subject: [PATCH] Fixed DRC texts methods, added tests. --- src/drc/drc/built-in-macros/_drc_layer.rb | 18 ++++++++++++------ testdata/drc/drcSimpleTests_8.drc | 22 +++++++++++++++++++--- testdata/drc/drcSimpleTests_au8.gds | Bin 2792 -> 3976 bytes testdata/drc/texts.gds | Bin 586 -> 624 bytes 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/drc/drc/built-in-macros/_drc_layer.rb b/src/drc/drc/built-in-macros/_drc_layer.rb index 211fc45fa..bebaa7dae 100644 --- a/src/drc/drc/built-in-macros/_drc_layer.rb +++ b/src/drc/drc/built-in-macros/_drc_layer.rb @@ -669,20 +669,22 @@ CODE if @data.is_a?(RBA::Texts) if as_pattern - DRCLayer::new(@engine, @engine._tcmd(@data, 0, RBA::Texts, :with_match, pattern, invert)) + result = @engine._tcmd(@data, 0, RBA::Texts, :with_match, pattern, invert) else - DRCLayer::new(@engine, @engine._tcmd(@data, 0, RBA::Texts, :with_text, pattern, invert)) + result = @engine._tcmd(@data, 0, RBA::Texts, :with_text, pattern, invert) end if as_dots - DRCLayer::new(@engine, @engine._tcmd(@data, 0, RBA::Region, :edges)) + return DRCLayer::new(@engine, @engine._tcmd(result, 0, RBA::Region, :edges)) elsif as_dots == false - DRCLayer::new(@engine, @engine._tcmd(@data, 0, RBA::Region, :polygons)) + return DRCLayer::new(@engine, @engine._tcmd(result, 0, RBA::Region, :polygons)) + else + return DRCLayer::new(@engine, result) end else if as_dots - DRCLayer::new(@engine, @engine._tcmd(@data, 0, RBA::Region, :texts_dots, pattern, as_pattern)) + return DRCLayer::new(@engine, @engine._tcmd(@data, 0, RBA::Region, :texts_dots, pattern, as_pattern)) else - DRCLayer::new(@engine, @engine._tcmd(@data, 0, RBA::Region, :texts, pattern, as_pattern)) + return DRCLayer::new(@engine, @engine._tcmd(@data, 0, RBA::Region, :texts, pattern, as_pattern)) end end @@ -3080,6 +3082,10 @@ CODE @data.is_a?(RBA::Region) || @data.is_a?(RBA::Texts) || raise("#{f}: Requires a polygon or text layer") end + def requires_texts(f) + @data.is_a?(RBA::Texts) || raise("#{f}: Requires a text layer") + end + def requires_edge_pairs(f) @data.is_a?(RBA::EdgePairs) || raise("#{f}: Requires a edge pair layer") end diff --git a/testdata/drc/drcSimpleTests_8.drc b/testdata/drc/drcSimpleTests_8.drc index faab090a9..9e24350e0 100644 --- a/testdata/drc/drcSimpleTests_8.drc +++ b/testdata/drc/drcSimpleTests_8.drc @@ -1,17 +1,21 @@ -# Hierarchical antenna check +# Text handling - mixed mode and pure texts source($drc_test_source, "TOP") target($drc_test_target) # Flat mode -flat_labels = labels(1, 0) +flat_labels = input(1, 1) # mixed mode, labels only +flat_texts = labels(1, 0) # text objects flat_all = input(1, 0) flat_poly = polygons(1, 0) flat_texts_from_labels1 = flat_labels.texts(text("XYZ")) flat_texts_from_labels2 = flat_labels.texts("*") +flat_texts_from_texts1 = flat_texts.texts(text("XYZ")) +flat_texts_from_texts2 = flat_texts.texts("*") +flat_texts_from_texts3 = flat_texts.texts_not("U*") flat_texts_from_all1 = flat_all.texts(text("XYZ")) flat_texts_from_all2 = flat_all.texts("*") flat_texts_from_poly1 = flat_poly.texts(text("XYZ")) @@ -20,23 +24,31 @@ flat_texts_from_poly2 = flat_poly.texts("*") flat_labels.output(100, 0) flat_all.output(101, 0) flat_poly.output(102, 0) +flat_texts.output(103, 0) flat_texts_from_labels1.output(110, 0) flat_texts_from_labels2.output(111, 0) flat_texts_from_all1.output(112, 0) flat_texts_from_all2.output(113, 0) flat_texts_from_poly1.output(114, 0) flat_texts_from_poly2.output(115, 0) +flat_texts_from_texts1.output(116, 0) +flat_texts_from_texts2.output(117, 0) +flat_texts_from_texts3.output(118, 0) # Deep mode deep -deep_labels = labels(1, 0) +deep_labels = input(1, 1) # mixed mode, labels only +deep_texts = labels(1, 1) # text objects deep_all = input(1, 0) deep_poly = polygons(1, 0) deep_texts_from_labels1 = deep_labels.texts(text("XYZ")) deep_texts_from_labels2 = deep_labels.texts("*") +deep_texts_from_texts1 = deep_texts.texts(text("XYZ")) +deep_texts_from_texts2 = deep_texts.texts("*") +deep_texts_from_texts3 = deep_texts.texts_not("U*") deep_texts_from_all1 = deep_all.texts(text("XYZ")) deep_texts_from_all2 = deep_all.texts("*") deep_texts_from_poly1 = deep_poly.texts(text("XYZ")) @@ -45,10 +57,14 @@ deep_texts_from_poly2 = deep_poly.texts("*") deep_labels.output(200, 0) deep_all.output(201, 0) deep_poly.output(202, 0) +deep_texts.output(203, 0) deep_texts_from_labels1.output(210, 0) deep_texts_from_labels2.output(211, 0) deep_texts_from_all1.output(212, 0) deep_texts_from_all2.output(213, 0) deep_texts_from_poly1.output(214, 0) deep_texts_from_poly2.output(215, 0) +deep_texts_from_texts1.output(216, 0) +deep_texts_from_texts2.output(217, 0) +deep_texts_from_texts3.output(218, 0) diff --git a/testdata/drc/drcSimpleTests_au8.gds b/testdata/drc/drcSimpleTests_au8.gds index 86825b3c5a1030dd0e2d5e566d939dd96107e245..92a97ed8a93b95339c9a4e25665948f8c61f77ba 100644 GIT binary patch delta 371 zcmaDM+94msz{bGD6u}_F$i)7Hft5joL7YL4K^mFOz`?}kXR)Qf5P}TCT1zX*f){bw}5Opb_RT= zP7Yw22h)0b@;RmjFwRXNhmhvYJ^En!SHjhl sfMrW2gJes9vKBDSrC`maVChn@G*AQ~T?UpY151>FB-ntyVqswb0D9&}s{jB1 delta 189 zcmeB>e<2#hz{bGD6u}_F$i)7bfti7mL5M+(K>?Y~z`?}k8zWt(eQt}${L4=vr&au>S2S_78>9BgbM{sC|!oF@Ndl$mVIBn|*E2O<9e literal 586 zcmZQzV_;&6V31*CVt>rQ%)rVZ288U$Yz7V{HXlzX1_lvkRy)T|bMIrzKUli#&|fe+ zDuh9X6}LV%Ha15F1{Mwm1~y(M21W)pJ|+eR1|0$B|NnpA0pcbQ&Aeld`KHgQIvE7_zNfovXWRtL2-Fks*Tnfw3E|Ns9^F>pw-MMOpc^@8-X zGZ1nm&~GeUK$C?)?uDD|C;+qp1bAdv9l#6_TYwozPGewTlz^Cyu1|*531~4GfL-*3 z3Fs;x(tYwP3#hLSNz!NwNi9{~3Y&{xFx#R%+Ha7dy1MVb{?82tbL^#%h2 LP(3V!Sy&hVda72<