From 953bee4790665a16658f5841c65a9c36f28f8d5c Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sat, 26 Dec 2020 17:17:43 +0100 Subject: [PATCH] WIP: more tests, debugging --- src/db/unit_tests/dbCompoundOperationTests.cc | 66 ++++++++++++++++++ testdata/drc/compound_10.gds | Bin 0 -> 566 bytes testdata/drc/compound_au10.gds | Bin 0 -> 1014 bytes 3 files changed, 66 insertions(+) create mode 100644 testdata/drc/compound_10.gds create mode 100644 testdata/drc/compound_au10.gds diff --git a/src/db/unit_tests/dbCompoundOperationTests.cc b/src/db/unit_tests/dbCompoundOperationTests.cc index fb767d044..ca9bca1b6 100644 --- a/src/db/unit_tests/dbCompoundOperationTests.cc +++ b/src/db/unit_tests/dbCompoundOperationTests.cc @@ -394,3 +394,69 @@ TEST(9_LogicalSelectOperation) db::compare_layouts (_this, ly, tl::testsrc () + "/testdata/drc/compound_au9.gds"); } +TEST(10_LogicalSelectOperation) +{ + db::Layout ly; + { + std::string fn (tl::testsrc ()); + fn += "/testdata/drc/compound_10.gds"; + tl::InputStream stream (fn); + db::Reader reader (stream); + reader.read (ly); + } + + db::RegionCheckOptions check_options; + check_options.metrics = db::Projection; + + unsigned int l1 = ly.get_layer (db::LayerProperties (1, 0)); + db::Region r (db::RecursiveShapeIterator (ly, ly.cell (*ly.begin_top_down ()), l1)); + + unsigned int l2 = ly.get_layer (db::LayerProperties (2, 0)); + db::Region r2 (db::RecursiveShapeIterator (ly, ly.cell (*ly.begin_top_down ()), l2)); + + db::CompoundRegionOperationPrimaryNode *primary = new db::CompoundRegionOperationPrimaryNode (); + + db::CompoundRegionFilterOperationNode *condition1 = new db::CompoundRegionFilterOperationNode (new db::RegionAreaFilter (0, 10000000, true), primary, true); + db::CompoundRegionFilterOperationNode *condition1r = new db::CompoundRegionFilterOperationNode (new db::RegionAreaFilter (0, 10000000, false), primary, true); + + db::CompoundRegionFilterOperationNode *condition2 = new db::CompoundRegionFilterOperationNode (new db::RectangleFilter (false), primary, true); + + std::vector inputs; + inputs.push_back (condition1r); + inputs.push_back (condition2); + + db::CompoundRegionLogicalBoolOperationNode and_node (db::CompoundRegionLogicalBoolOperationNode::And, false, inputs); + db::CompoundRegionLogicalBoolOperationNode not_and_node (db::CompoundRegionLogicalBoolOperationNode::And, true, inputs); + + inputs.clear (); + inputs.push_back (condition1); + inputs.push_back (condition2); + + db::CompoundRegionLogicalBoolOperationNode or_node (db::CompoundRegionLogicalBoolOperationNode::Or, false, inputs); + db::CompoundRegionLogicalBoolOperationNode not_or_node (db::CompoundRegionLogicalBoolOperationNode::Or, true, inputs); + + db::Region res; + res = r.cop_to_region (and_node); + + unsigned int l1000 = ly.get_layer (db::LayerProperties (1000, 0)); + res.insert_into (&ly, *ly.begin_top_down (), l1000); + + res = r.cop_to_region (not_and_node); + + unsigned int l1001 = ly.get_layer (db::LayerProperties (1001, 0)); + res.insert_into (&ly, *ly.begin_top_down (), l1001); + + res = r.cop_to_region (or_node); + + unsigned int l1002 = ly.get_layer (db::LayerProperties (1002, 0)); + res.insert_into (&ly, *ly.begin_top_down (), l1002); + + res = r.cop_to_region (not_or_node); + + unsigned int l1003 = ly.get_layer (db::LayerProperties (1003, 0)); + res.insert_into (&ly, *ly.begin_top_down (), l1003); + + CHECKPOINT(); + db::compare_layouts (_this, ly, tl::testsrc () + "/testdata/drc/compound_au10.gds"); +} + diff --git a/testdata/drc/compound_10.gds b/testdata/drc/compound_10.gds new file mode 100644 index 0000000000000000000000000000000000000000..534f8b3563ddce9c53bc3c94634a099f374976e6 GIT binary patch literal 566 zcmaixu}T9$5Qe|(-R+&4m{Uw6DQyHn!9s)}B&1Lj40457`5-B6d?;nxVPtW%PG3We#^}MJO9k0QRKDVp`o2z;6rGd!e8scfmm5IpvF*tU{A|HE2FD2c*cv{w~ zy=P|;%&iwQ1Ch53+IdCe(Z-$EZ@uzo8NI;L6BI0F*v>1uxS`)qO)oNgDD-7dt;dQk LZfN!9FT#*7gpP9& literal 0 HcmV?d00001 diff --git a/testdata/drc/compound_au10.gds b/testdata/drc/compound_au10.gds new file mode 100644 index 0000000000000000000000000000000000000000..407668e59480b35b43d8090b0fdb75aa3d733c3c GIT binary patch literal 1014 zcmb_bu};G<6ujDr6CkB2q6_MT7?EH@NC>Hj0R$2i%7B>okd7>T14}j-_<()@V(tep zb|_`35JT00hwWDr6A%oohg{_6^Se9SP!Qq*&5DTnNU(-FQmp&`h=n>mJ^)r_xZk?j zIeEGp?H+cw^4rS{&F~MNQtj4xh9Cx1RiFa3EC6h#Qh&YC=m2s6IP^+E9S9=)*C#t` z>vfAjyuv*buZP{^XN_ohjbCa+lMSoD)=JvT$2qel`m^uv&BmL~j{T%L~*R?Yz@E%8*PZz%}y2}$SvCIA2c literal 0 HcmV?d00001