From b30a9278d693badcf0ad933ac6f3d2ade3df7a78 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Wed, 6 Mar 2019 07:41:44 +0100 Subject: [PATCH] WIP: updated test cases. --- src/db/db/dbRecursiveShapeIterator.h | 8 +++++++ src/db/db/dbRegion.cc | 8 +++---- src/db/db/gsiDeclDbRecursiveShapeIterator.cc | 2 +- src/drc/drc/built-in-macros/drc.lym | 6 ++++- src/drc/unit_tests/drcSimpleTests.cc | 2 +- testdata/drc/drcSimpleTests_8.drc | 24 +++++++++---------- testdata/drc/drcSimpleTests_au2.oas | Bin 1849 -> 1869 bytes testdata/drc/drcSimpleTests_au4.oas | Bin 1110 -> 1369 bytes testdata/drc/drcSimpleTests_au8.oas | Bin 0 -> 656 bytes 9 files changed, 31 insertions(+), 19 deletions(-) create mode 100644 testdata/drc/drcSimpleTests_au8.oas diff --git a/src/db/db/dbRecursiveShapeIterator.h b/src/db/db/dbRecursiveShapeIterator.h index 90a0102ec..376b978d6 100644 --- a/src/db/db/dbRecursiveShapeIterator.h +++ b/src/db/db/dbRecursiveShapeIterator.h @@ -474,6 +474,14 @@ public: } } + /** + * @brief Gets the shape selection flags + */ + unsigned int shape_flags () const + { + return m_shape_flags; + } + /** * @brief Changes the layer to be traversed * diff --git a/src/db/db/dbRegion.cc b/src/db/db/dbRegion.cc index 94234ea91..ae5ca987e 100644 --- a/src/db/db/dbRegion.cc +++ b/src/db/db/dbRegion.cc @@ -591,7 +591,7 @@ Region::texts_as_dots (const std::string &pat, bool pattern) const std::pair si = begin_iter (); if (! dr) { // some optimization - si.first.shape_flags (db::ShapeIterator::Texts); + si.first.shape_flags (si.first.shape_flags () & db::ShapeIterator::Texts); } std::auto_ptr res (new db::FlatEdges ()); @@ -610,7 +610,7 @@ Region::texts_as_dots (const std::string &pat, bool pattern, db::DeepShapeStore std::pair si = begin_iter (); if (! dr) { // some optimization - si.first.shape_flags (db::ShapeIterator::Texts); + si.first.shape_flags (si.first.shape_flags () & db::ShapeIterator::Texts); } if (! si.first.layout ()) { @@ -644,7 +644,7 @@ Region::texts_as_boxes (const std::string &pat, bool pattern, db::Coord enl) con std::pair si = begin_iter (); if (! dr) { // some optimization - si.first.shape_flags (db::ShapeIterator::Texts); + si.first.shape_flags (si.first.shape_flags () & db::ShapeIterator::Texts); } std::auto_ptr res (new db::FlatRegion ()); @@ -663,7 +663,7 @@ Region::texts_as_boxes (const std::string &pat, bool pattern, db::Coord enl, db: std::pair si = begin_iter (); if (! dr) { // some optimization - si.first.shape_flags (db::ShapeIterator::Texts); + si.first.shape_flags (si.first.shape_flags () & db::ShapeIterator::Texts); } if (! si.first.layout ()) { diff --git a/src/db/db/gsiDeclDbRecursiveShapeIterator.cc b/src/db/db/gsiDeclDbRecursiveShapeIterator.cc index 5f232a871..d57da88da 100644 --- a/src/db/db/gsiDeclDbRecursiveShapeIterator.cc +++ b/src/db/db/gsiDeclDbRecursiveShapeIterator.cc @@ -409,7 +409,7 @@ Class decl_RecursiveShapeIterator ("db", "RecursiveS "\n" "This method has been introduced in version 0.23.\n" ) + - gsi::method ("shape_flags=", &db::RecursiveShapeIterator::shape_flags, + gsi::method ("shape_flags=", (void (db::RecursiveShapeIterator::*)(unsigned int)) &db::RecursiveShapeIterator::shape_flags, "@brief Specifies the shape selection flags\n" "@args flags\n" "\n" diff --git a/src/drc/drc/built-in-macros/drc.lym b/src/drc/drc/built-in-macros/drc.lym index d5044ec66..e74188e6e 100644 --- a/src/drc/drc/built-in-macros/drc.lym +++ b/src/drc/drc/built-in-macros/drc.lym @@ -3539,7 +3539,7 @@ CODE def polygons(*args) layers = parse_input_layers(*args) - DRCLayer::new(@engine, @engine._cmd(@engine, :_input, @layout_var, @cell.cell_index, layers, @sel, @box, @clip, @overlapping, RBA::Shapes::SBoxes | RBA::Shapes::SPaths | RBA::Shapes::SPolygons)) + DRCLayer::new(@engine, @engine._cmd(@engine, :_input, @layout_var, @cell.cell_index, layers, @sel, @box, @clip, @overlapping, RBA::Shapes::SBoxes | RBA::Shapes::SPaths | RBA::Shapes::SPolygons | RBA::Shapes::SEdgePairs)) end # %DRC% @@ -5235,6 +5235,10 @@ CODE sf = layout.dbu / self.dbu if @deep @dss ||= RBA::DeepShapeStore::new + # TODO: align with LayoutToNetlist by using a "master" L2N + # object which keeps the DSS. + @dss.text_property_name = "LABEL" + @dss.text_enlargement = 1 r = RBA::Region::new(iter, @dss, RBA::ICplxTrans::new(sf.to_f)) else r = RBA::Region::new(iter, RBA::ICplxTrans::new(sf.to_f)) diff --git a/src/drc/unit_tests/drcSimpleTests.cc b/src/drc/unit_tests/drcSimpleTests.cc index 87e8590ae..4d8c6b11d 100644 --- a/src/drc/unit_tests/drcSimpleTests.cc +++ b/src/drc/unit_tests/drcSimpleTests.cc @@ -302,7 +302,7 @@ TEST(7_AntennaWithDiodes) db::compare_layouts (_this, layout, au, db::NoNormalization); } -TEST(8_FlatTextsAndPolygons) +TEST(8_TextsAndPolygons) { std::string rs = tl::testsrc (); rs += "/testdata/drc/drcSimpleTests_8.drc"; diff --git a/testdata/drc/drcSimpleTests_8.drc b/testdata/drc/drcSimpleTests_8.drc index cafec7b3f..faab090a9 100644 --- a/testdata/drc/drcSimpleTests_8.drc +++ b/testdata/drc/drcSimpleTests_8.drc @@ -10,12 +10,12 @@ flat_labels = labels(1, 0) flat_all = input(1, 0) flat_poly = polygons(1, 0) -flat_texts_from_labels1 = flat_labels.texts("XYZ", false) -flat_texts_from_labels2 = flat_labels.texts("*", true) -flat_texts_from_all1 = flat_all.texts("XYZ", false) -flat_texts_from_all2 = flat_all.texts("*", true) -flat_texts_from_poly1 = flat_poly.texts("XYZ", false) -flat_texts_from_poly2 = flat_poly.texts("*", true) +flat_texts_from_labels1 = flat_labels.texts(text("XYZ")) +flat_texts_from_labels2 = flat_labels.texts("*") +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")) +flat_texts_from_poly2 = flat_poly.texts("*") flat_labels.output(100, 0) flat_all.output(101, 0) @@ -35,12 +35,12 @@ deep_labels = labels(1, 0) deep_all = input(1, 0) deep_poly = polygons(1, 0) -deep_texts_from_labels1 = deep_labels.texts("XYZ", false) -deep_texts_from_labels2 = deep_labels.texts("*", true) -deep_texts_from_all1 = deep_all.texts("XYZ", false) -deep_texts_from_all2 = deep_all.texts("*", true) -deep_texts_from_poly1 = deep_poly.texts("XYZ", false) -deep_texts_from_poly2 = deep_poly.texts("*", true) +deep_texts_from_labels1 = deep_labels.texts(text("XYZ")) +deep_texts_from_labels2 = deep_labels.texts("*") +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")) +deep_texts_from_poly2 = deep_poly.texts("*") deep_labels.output(200, 0) deep_all.output(201, 0) diff --git a/testdata/drc/drcSimpleTests_au2.oas b/testdata/drc/drcSimpleTests_au2.oas index 7f15c2f3de6501626b2e3d5a808b4505d7b47e5e..787eddb7abd4fcfd974d3c28eb8de982f48b8902 100644 GIT binary patch delta 853 zcmb7=PiWIn9LMuZUeecp39c{G7PjgNQWQp45Ly^D^*Whe22-y+?6})96iU&<>M1ol z^fJf<#iC+^7sUz-URvm|_0-Hi%*kXs>`+iKH{WYfhX<#J7kHoV_xJt&UY^UFvau8t z`Fx(9Ga_85EX9kF>i}F=@e+{*emx%1xxVTp)F~dMjZjzl9@rjnLY8Dts2RYP)I&Yw zB12%Oqtu8uM>(nQIMkGW(KVLv)dQiOgG4 zjW{`?@16EpQtM)WlIU&R5X%~c%fhqc9i=}>BYGXh$vHVSYbIfVugsbTtSN0=*p04D zk@<%BRk(Nl=`?=@H19R$L;!be&u34JCOL3IWoyltf!2 z(8WZ*+v>b_p(fRcI$TzWrMaN4f?b0Ew!~`mgFVasO@)htgh~_2#f$U zW0Yjy{gdnc5w7Ae?86bZp=%o>SV@o5gB+cjPfqQ%HCizb#kO#>^8xyA^j9YjH~&c!|D+?uSj`6@A^uzgBVo y*>bq#1S=r!4(_2=%u6Q74NGc*i^^IM3U~Ok0pfldYKJ6_H}ldr^RndQIqnDQZUmSB delta 859 zcma)(&1(}u7{=$_o!xA{Hl)nPrqV{+OF<~xfRLcX9K1zZJP5T4Uh)UzW_l<|sE5Q; z*7T4|VJ#{K6*u%^F@>&zB#>g_DI2TQluC0DtXMFfobjs`8tG-2_nF`OJnzhG$g6Vx zrs_t@IY1b{NMwWQ*sEp8_*YeuY~g!ujW;7om;+q&8uqTuuveiQ)@mnH;<~Hp`R3Rf zFkQM>9yKE*QI{%0E=rP%j(BrcnL0R~)?*-DbSSP@Eu zcD5>lg{^5~@ePj|p~B3w6MGZdlrs6nh6CF|5!&7r?ladJWNX_?mBI~}E*P-nsR;3X z{{96rQ@7_z~PpZ>ymHju{m#+>LY@8pya=HDcW!JUC8 zWWoPjRaDGB3fz{9!F=qgomHmmG0{`8kIS&&S59HRlPCprk(MOc#t+;D{$<1${_x)@ ybj*~aLIzm?QRh37E>^+9xu_H3cepbS(rRJ$*kpeD?-BYVa)ry{cOjilBlH88&<*GS diff --git a/testdata/drc/drcSimpleTests_au4.oas b/testdata/drc/drcSimpleTests_au4.oas index aa37d1e7d0d7f0e1416d743cbccea8e70ca92b79..7a7a8d6b0d11f0dc30601322f9f3c14735a07442 100644 GIT binary patch delta 383 zcmcb{ag%F8A2%zLqazS&u`)VM?2{K3u4ZCnxX8ayUO0pCr?PMX!$;ALYk3*9f#Tc@ z549h}3KuYTsteaJJaB0+Vi2xjYVf{c#vq)-2;x;RbgCZ+-@J>_g|YrGI}7up;+bqG z7?-6SmpT?IYQw_Z$lk-eK&F|!m$}bwlM;id1q<_Rwgb$IWM;A*WZo_QE&!yc8K~$% z@kHic=4EbBMIe0-96|cpJYQLg+WrHYO+Z;aP#w^C(p_NtpRnOXm@SIUdrXrPnLkf1 KVCG_CU;qFh%XP{C delta 119 zcmcb~b&X>}-^7{n8&C5xZf0h3VT}CG&cghtcqQ8j#$_p|rH+M)+ORM;vrl1uP&|=& zD)Tb8bxI7PCM?X2K%oUP&FoW|`|KD*Em)XWvmIbwB(sw3AoF(dcL5*~kdg{ T&n%fHC$fB-T)@K4#J~Umh)yPB diff --git a/testdata/drc/drcSimpleTests_au8.oas b/testdata/drc/drcSimpleTests_au8.oas new file mode 100644 index 0000000000000000000000000000000000000000..869056430012c16bbd644d832c12c03c2209b5dc GIT binary patch literal 656 zcmY!lcJ=kt^>+;R4CduxWH!_@V0gjKfDB|rrGn#q9V6m{J>C6WUE)3cLR{TlgW|(I zT|zuKSY&u*Akv|J*c8Z!as|hS_y@#0yZZR>Fauf4jE>BVPRt-CD|19-6f1LRSU4|( za5cjTMh4BdEF#q>85w@?U*kO~@K;b+@g$=N<0(dwo0k}wwBNIcG+t&DX}ki&R~dO3 z1wS$T)qlw(Sg?j^1B-AqBhY}gVy#SIO}8&IGBB+dYi9y0WfJ_ra8aW{L+}G*3dpJy zhP7G~nT2g$Fxhf5Xv}6R60Tr8DcZ^;Qk}|hjrRxtNsEobA~hga?BqQQbX+AvDqI5t zOl@Tv7NsJ0^O)9aO=jk1