mirror of https://github.com/KLayout/klayout.git
WIP: more tests enabled for deep mode
This commit is contained in:
parent
1bb04c711c
commit
493024734d
|
|
@ -105,6 +105,7 @@ void
|
|||
CompoundRegionOperationNode::compute_local (db::Layout *layout, const shape_interactions<db::Polygon, db::Polygon> &interactions, std::vector<std::unordered_set<db::PolygonRef> > &results, size_t max_vertex_count, double area_ratio) const
|
||||
{
|
||||
std::vector<std::unordered_set<db::Polygon> > intermediate;
|
||||
intermediate.push_back (std::unordered_set<db::Polygon> ());
|
||||
implement_compute_local (layout, interactions, intermediate, max_vertex_count, area_ratio);
|
||||
translate (layout, intermediate, results);
|
||||
}
|
||||
|
|
@ -113,6 +114,7 @@ void
|
|||
CompoundRegionOperationNode::compute_local (db::Layout *layout, const shape_interactions<db::PolygonRef, db::PolygonRef> &interactions, std::vector<std::unordered_set<db::Polygon> > &results, size_t max_vertex_count, double area_ratio) const
|
||||
{
|
||||
std::vector<std::unordered_set<db::PolygonRef> > intermediate;
|
||||
intermediate.push_back (std::unordered_set<db::PolygonRef> ());
|
||||
implement_compute_local (layout, interactions, intermediate, max_vertex_count, area_ratio);
|
||||
translate (layout, intermediate, results);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -543,7 +543,7 @@ public:
|
|||
|
||||
std::string generated_description () const
|
||||
{
|
||||
return std::string ("interact") + compound_region_generic_operation_node<db::Polygon, db::Polygon, db::Polygon>::description ();
|
||||
return std::string ("interact") + compound_region_generic_operation_node<db::Polygon, db::Polygon, db::Polygon>::generated_description ();
|
||||
}
|
||||
|
||||
virtual void do_compute_local (db::Layout *layout, const shape_interactions<db::Polygon, db::Polygon> &interactions, std::vector<std::unordered_set<db::Polygon> > &results, size_t max_vertex_count, double area_ratio) const
|
||||
|
|
@ -572,7 +572,7 @@ public:
|
|||
|
||||
std::string generated_description () const
|
||||
{
|
||||
return std::string ("interact") + compound_region_generic_operation_node<db::Polygon, db::Edge, db::Polygon>::description ();
|
||||
return std::string ("interact") + compound_region_generic_operation_node<db::Polygon, db::Edge, db::Polygon>::generated_description ();
|
||||
}
|
||||
|
||||
virtual void do_compute_local (db::Layout *layout, const shape_interactions<db::Polygon, db::Polygon> &interactions, std::vector<std::unordered_set<db::Polygon> > &results, size_t max_vertex_count, double area_ratio) const
|
||||
|
|
@ -607,7 +607,7 @@ public:
|
|||
|
||||
std::string generated_description () const
|
||||
{
|
||||
return std::string ("pull") + compound_region_generic_operation_node<db::Polygon, db::Polygon, db::Polygon>::description ();
|
||||
return std::string ("pull") + compound_region_generic_operation_node<db::Polygon, db::Polygon, db::Polygon>::generated_description ();
|
||||
}
|
||||
|
||||
virtual void do_compute_local (db::Layout *layout, const shape_interactions<db::Polygon, db::Polygon> &interactions, std::vector<std::unordered_set<db::Polygon> > &results, size_t max_vertex_count, double area_ratio) const
|
||||
|
|
@ -636,7 +636,7 @@ public:
|
|||
|
||||
std::string generated_description () const
|
||||
{
|
||||
return std::string ("pull") + compound_region_generic_operation_node<db::Polygon, db::Edge, db::Edge>::description ();
|
||||
return std::string ("pull") + compound_region_generic_operation_node<db::Polygon, db::Edge, db::Edge>::generated_description ();
|
||||
}
|
||||
|
||||
virtual void do_compute_local (db::Layout *layout, const shape_interactions<db::Polygon, db::Polygon> &interactions, std::vector<std::unordered_set<db::Edge> > &results, size_t max_vertex_count, double area_ratio) const
|
||||
|
|
@ -887,7 +887,7 @@ public:
|
|||
|
||||
virtual std::string description () const
|
||||
{
|
||||
return std::string ("sized") + CompoundRegionProcessingOperationNode::description ();
|
||||
return std::string ("sized") + CompoundRegionProcessingOperationNode::generated_description ();
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ static std::string make_au (const std::string &num, bool deep)
|
|||
}
|
||||
}
|
||||
|
||||
TEST(1_Basic)
|
||||
void run_test1 (tl::TestBase *_this, bool deep)
|
||||
{
|
||||
db::Layout ly;
|
||||
{
|
||||
|
|
@ -72,11 +72,11 @@ TEST(1_Basic)
|
|||
|
||||
db::CompoundRegionCheckOperationNode width_check (db::WidthRelation, false /*==same polygon*/, 1050, check_options);
|
||||
|
||||
unsigned int l1 = ly.get_layer (db::LayerProperties (1, 0));
|
||||
db::Region r (db::RecursiveShapeIterator (ly, ly.cell (*ly.begin_top_down ()), l1));
|
||||
db::DeepShapeStore dss;
|
||||
|
||||
unsigned int l2 = ly.get_layer (db::LayerProperties (2, 0));
|
||||
db::Region r2 (db::RecursiveShapeIterator (ly, ly.cell (*ly.begin_top_down ()), l2));
|
||||
db::Region r, r2;
|
||||
prep_layer (ly, 1, r, dss, deep);
|
||||
prep_layer (ly, 2, r2, dss, deep);
|
||||
|
||||
db::EdgePairs res = r.cop_to_edge_pairs (width_check);
|
||||
|
||||
|
|
@ -100,10 +100,20 @@ TEST(1_Basic)
|
|||
res.insert_into (&ly, *ly.begin_top_down (), l1002);
|
||||
|
||||
CHECKPOINT();
|
||||
db::compare_layouts (_this, ly, tl::testsrc () + "/testdata/drc/compound_au1.gds");
|
||||
db::compare_layouts (_this, ly, make_au ("1", deep));
|
||||
}
|
||||
|
||||
TEST(2_ChainedOperations)
|
||||
TEST(1_Basic)
|
||||
{
|
||||
run_test1 (_this, false);
|
||||
}
|
||||
|
||||
TEST(1d_Basic)
|
||||
{
|
||||
run_test1 (_this, true);
|
||||
}
|
||||
|
||||
void run_test2 (tl::TestBase *_this, bool deep)
|
||||
{
|
||||
db::Layout ly;
|
||||
{
|
||||
|
|
@ -117,11 +127,11 @@ TEST(2_ChainedOperations)
|
|||
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));
|
||||
db::DeepShapeStore dss;
|
||||
|
||||
unsigned int l2 = ly.get_layer (db::LayerProperties (2, 0));
|
||||
db::Region r2 (db::RecursiveShapeIterator (ly, ly.cell (*ly.begin_top_down ()), l2));
|
||||
db::Region r, r2;
|
||||
prep_layer (ly, 1, r, dss, deep);
|
||||
prep_layer (ly, 2, r2, dss, deep);
|
||||
|
||||
db::CompoundRegionCheckOperationNode *width_check = new db::CompoundRegionCheckOperationNode (db::WidthRelation, false /*==same polygon*/, 1050, check_options);
|
||||
|
||||
|
|
@ -144,10 +154,20 @@ TEST(2_ChainedOperations)
|
|||
eres.insert_into (&ly, *ly.begin_top_down (), l1002);
|
||||
|
||||
CHECKPOINT();
|
||||
db::compare_layouts (_this, ly, tl::testsrc () + "/testdata/drc/compound_au2.gds");
|
||||
db::compare_layouts (_this, ly, make_au ("2", deep));
|
||||
}
|
||||
|
||||
TEST(3_BooleanOperations)
|
||||
TEST(2_ChainedOperations)
|
||||
{
|
||||
run_test2 (_this, false);
|
||||
}
|
||||
|
||||
TEST(2d_ChainedOperations)
|
||||
{
|
||||
run_test2 (_this, true);
|
||||
}
|
||||
|
||||
void run_test3 (tl::TestBase *_this, bool deep)
|
||||
{
|
||||
db::Layout ly;
|
||||
{
|
||||
|
|
@ -158,11 +178,11 @@ TEST(3_BooleanOperations)
|
|||
reader.read (ly);
|
||||
}
|
||||
|
||||
unsigned int l1 = ly.get_layer (db::LayerProperties (1, 0));
|
||||
db::Region r (db::RecursiveShapeIterator (ly, ly.cell (*ly.begin_top_down ()), l1));
|
||||
db::DeepShapeStore dss;
|
||||
|
||||
unsigned int l2 = ly.get_layer (db::LayerProperties (2, 0));
|
||||
db::Region r2 (db::RecursiveShapeIterator (ly, ly.cell (*ly.begin_top_down ()), l2));
|
||||
db::Region r, r2;
|
||||
prep_layer (ly, 1, r, dss, deep);
|
||||
prep_layer (ly, 2, r2, dss, deep);
|
||||
|
||||
db::CompoundRegionOperationPrimaryNode *primary = new db::CompoundRegionOperationPrimaryNode ();
|
||||
db::CompoundRegionOperationSecondaryNode *secondary = new db::CompoundRegionOperationSecondaryNode (&r2);
|
||||
|
|
@ -181,10 +201,20 @@ TEST(3_BooleanOperations)
|
|||
res.insert_into (&ly, *ly.begin_top_down (), l1001);
|
||||
|
||||
CHECKPOINT();
|
||||
db::compare_layouts (_this, ly, tl::testsrc () + "/testdata/drc/compound_au3.gds");
|
||||
db::compare_layouts (_this, ly, make_au ("3", deep));
|
||||
}
|
||||
|
||||
TEST(4_SizeOperation)
|
||||
TEST(3_BooleanOperations)
|
||||
{
|
||||
run_test3 (_this, false);
|
||||
}
|
||||
|
||||
TEST(3d_BooleanOperations)
|
||||
{
|
||||
run_test3 (_this, true);
|
||||
}
|
||||
|
||||
void run_test4 (tl::TestBase *_this, bool deep)
|
||||
{
|
||||
db::Layout ly;
|
||||
{
|
||||
|
|
@ -195,11 +225,11 @@ TEST(4_SizeOperation)
|
|||
reader.read (ly);
|
||||
}
|
||||
|
||||
unsigned int l1 = ly.get_layer (db::LayerProperties (1, 0));
|
||||
db::Region r (db::RecursiveShapeIterator (ly, ly.cell (*ly.begin_top_down ()), l1));
|
||||
db::DeepShapeStore dss;
|
||||
|
||||
unsigned int l2 = ly.get_layer (db::LayerProperties (2, 0));
|
||||
db::Region r2 (db::RecursiveShapeIterator (ly, ly.cell (*ly.begin_top_down ()), l2));
|
||||
db::Region r, r2;
|
||||
prep_layer (ly, 1, r, dss, deep);
|
||||
prep_layer (ly, 2, r2, dss, deep);
|
||||
|
||||
db::CompoundRegionOperationPrimaryNode *primary = new db::CompoundRegionOperationPrimaryNode ();
|
||||
db::CompoundRegionSizeOperationNode geo_size (250, 250, 2, primary);
|
||||
|
|
@ -218,10 +248,20 @@ TEST(4_SizeOperation)
|
|||
res.insert_into (&ly, *ly.begin_top_down (), l1001);
|
||||
|
||||
CHECKPOINT();
|
||||
db::compare_layouts (_this, ly, tl::testsrc () + "/testdata/drc/compound_au4.gds");
|
||||
db::compare_layouts (_this, ly, make_au ("4", deep));
|
||||
}
|
||||
|
||||
TEST(5_InteractOperation)
|
||||
TEST(4_SizeOperation)
|
||||
{
|
||||
run_test4 (_this, false);
|
||||
}
|
||||
|
||||
TEST(4d_SizeOperation)
|
||||
{
|
||||
run_test4 (_this, true);
|
||||
}
|
||||
|
||||
void run_test5 (tl::TestBase *_this, bool deep)
|
||||
{
|
||||
db::Layout ly;
|
||||
{
|
||||
|
|
@ -235,11 +275,11 @@ TEST(5_InteractOperation)
|
|||
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));
|
||||
db::DeepShapeStore dss;
|
||||
|
||||
unsigned int l2 = ly.get_layer (db::LayerProperties (2, 0));
|
||||
db::Region r2 (db::RecursiveShapeIterator (ly, ly.cell (*ly.begin_top_down ()), l2));
|
||||
db::Region r, r2;
|
||||
prep_layer (ly, 1, r, dss, deep);
|
||||
prep_layer (ly, 2, r2, dss, deep);
|
||||
|
||||
db::CompoundRegionOperationPrimaryNode *primary = new db::CompoundRegionOperationPrimaryNode ();
|
||||
db::CompoundRegionOperationSecondaryNode *secondary = new db::CompoundRegionOperationSecondaryNode (&r2);
|
||||
|
|
@ -251,10 +291,20 @@ TEST(5_InteractOperation)
|
|||
res.insert_into (&ly, *ly.begin_top_down (), l1000);
|
||||
|
||||
CHECKPOINT();
|
||||
db::compare_layouts (_this, ly, tl::testsrc () + "/testdata/drc/compound_au5.gds");
|
||||
db::compare_layouts (_this, ly, make_au ("5", deep));
|
||||
}
|
||||
|
||||
TEST(6_InteractWithEdgeOperation)
|
||||
TEST(5_InteractOperation)
|
||||
{
|
||||
run_test5 (_this, false);
|
||||
}
|
||||
|
||||
TEST(5d_InteractOperation)
|
||||
{
|
||||
run_test5 (_this, true);
|
||||
}
|
||||
|
||||
void run_test6 (tl::TestBase *_this, bool deep)
|
||||
{
|
||||
db::Layout ly;
|
||||
{
|
||||
|
|
@ -268,11 +318,11 @@ TEST(6_InteractWithEdgeOperation)
|
|||
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));
|
||||
db::DeepShapeStore dss;
|
||||
|
||||
unsigned int l2 = ly.get_layer (db::LayerProperties (2, 0));
|
||||
db::Region r2 (db::RecursiveShapeIterator (ly, ly.cell (*ly.begin_top_down ()), l2));
|
||||
db::Region r, r2;
|
||||
prep_layer (ly, 1, r, dss, deep);
|
||||
prep_layer (ly, 2, r2, dss, deep);
|
||||
|
||||
db::CompoundRegionOperationPrimaryNode *primary = new db::CompoundRegionOperationPrimaryNode ();
|
||||
db::CompoundRegionOperationSecondaryNode *secondary = new db::CompoundRegionOperationSecondaryNode (&r2);
|
||||
|
|
@ -286,10 +336,20 @@ TEST(6_InteractWithEdgeOperation)
|
|||
res.insert_into (&ly, *ly.begin_top_down (), l1000);
|
||||
|
||||
CHECKPOINT();
|
||||
db::compare_layouts (_this, ly, tl::testsrc () + "/testdata/drc/compound_au6.gds");
|
||||
db::compare_layouts (_this, ly, make_au ("6", deep));
|
||||
}
|
||||
|
||||
TEST(7_PullOperation)
|
||||
TEST(6_InteractWithEdgeOperation)
|
||||
{
|
||||
run_test6 (_this, false);
|
||||
}
|
||||
|
||||
TEST(6d_InteractWithEdgeOperation)
|
||||
{
|
||||
run_test6 (_this, true);
|
||||
}
|
||||
|
||||
void run_test7 (tl::TestBase *_this, bool deep)
|
||||
{
|
||||
db::Layout ly;
|
||||
{
|
||||
|
|
@ -303,11 +363,11 @@ TEST(7_PullOperation)
|
|||
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));
|
||||
db::DeepShapeStore dss;
|
||||
|
||||
unsigned int l2 = ly.get_layer (db::LayerProperties (2, 0));
|
||||
db::Region r2 (db::RecursiveShapeIterator (ly, ly.cell (*ly.begin_top_down ()), l2));
|
||||
db::Region r, r2;
|
||||
prep_layer (ly, 1, r, dss, deep);
|
||||
prep_layer (ly, 2, r2, dss, deep);
|
||||
|
||||
db::CompoundRegionOperationPrimaryNode *primary = new db::CompoundRegionOperationPrimaryNode ();
|
||||
db::CompoundRegionOperationSecondaryNode *secondary = new db::CompoundRegionOperationSecondaryNode (&r2);
|
||||
|
|
@ -320,10 +380,20 @@ TEST(7_PullOperation)
|
|||
res.insert_into (&ly, *ly.begin_top_down (), l1000);
|
||||
|
||||
CHECKPOINT();
|
||||
db::compare_layouts (_this, ly, tl::testsrc () + "/testdata/drc/compound_au7.gds");
|
||||
db::compare_layouts (_this, ly, make_au ("7", deep));
|
||||
}
|
||||
|
||||
TEST(8_PullWithEdgeOperation)
|
||||
TEST(7_PullOperation)
|
||||
{
|
||||
run_test7 (_this, false);
|
||||
}
|
||||
|
||||
TEST(7d_PullOperation)
|
||||
{
|
||||
run_test7 (_this, true);
|
||||
}
|
||||
|
||||
void run_test8 (tl::TestBase *_this, bool deep)
|
||||
{
|
||||
db::Layout ly;
|
||||
{
|
||||
|
|
@ -337,11 +407,11 @@ TEST(8_PullWithEdgeOperation)
|
|||
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));
|
||||
db::DeepShapeStore dss;
|
||||
|
||||
unsigned int l2 = ly.get_layer (db::LayerProperties (2, 0));
|
||||
db::Region r2 (db::RecursiveShapeIterator (ly, ly.cell (*ly.begin_top_down ()), l2));
|
||||
db::Region r, r2;
|
||||
prep_layer (ly, 1, r, dss, deep);
|
||||
prep_layer (ly, 2, r2, dss, deep);
|
||||
|
||||
db::CompoundRegionOperationPrimaryNode *primary = new db::CompoundRegionOperationPrimaryNode ();
|
||||
db::CompoundRegionOperationSecondaryNode *secondary = new db::CompoundRegionOperationSecondaryNode (&r2);
|
||||
|
|
@ -355,10 +425,20 @@ TEST(8_PullWithEdgeOperation)
|
|||
res.insert_into (&ly, *ly.begin_top_down (), l1000);
|
||||
|
||||
CHECKPOINT();
|
||||
db::compare_layouts (_this, ly, tl::testsrc () + "/testdata/drc/compound_au8.gds");
|
||||
db::compare_layouts (_this, ly, make_au ("8", deep));
|
||||
}
|
||||
|
||||
TEST(9_LogicalSelectOperation)
|
||||
TEST(8_PullWithEdgeOperation)
|
||||
{
|
||||
run_test8 (_this, false);
|
||||
}
|
||||
|
||||
TEST(8d_PullWithEdgeOperation)
|
||||
{
|
||||
run_test8 (_this, true);
|
||||
}
|
||||
|
||||
void run_test9 (tl::TestBase *_this, bool deep)
|
||||
{
|
||||
db::Layout ly;
|
||||
{
|
||||
|
|
@ -372,11 +452,11 @@ TEST(9_LogicalSelectOperation)
|
|||
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));
|
||||
db::DeepShapeStore dss;
|
||||
|
||||
unsigned int l2 = ly.get_layer (db::LayerProperties (2, 0));
|
||||
db::Region r2 (db::RecursiveShapeIterator (ly, ly.cell (*ly.begin_top_down ()), l2));
|
||||
db::Region r, r2;
|
||||
prep_layer (ly, 1, r, dss, deep);
|
||||
prep_layer (ly, 2, r2, dss, deep);
|
||||
|
||||
// the if/then ladder is:
|
||||
//
|
||||
|
|
@ -411,7 +491,17 @@ TEST(9_LogicalSelectOperation)
|
|||
res.insert_into (&ly, *ly.begin_top_down (), l1000);
|
||||
|
||||
CHECKPOINT();
|
||||
db::compare_layouts (_this, ly, tl::testsrc () + "/testdata/drc/compound_au9.gds");
|
||||
db::compare_layouts (_this, ly, make_au ("9", deep));
|
||||
}
|
||||
|
||||
TEST(9_LogicalSelectOperation)
|
||||
{
|
||||
run_test9 (_this, false);
|
||||
}
|
||||
|
||||
TEST(9d_EdgeFilterOperation)
|
||||
{
|
||||
run_test9 (_this, true);
|
||||
}
|
||||
|
||||
void run_test10 (tl::TestBase *_this, bool deep)
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue