diff --git a/src/plugins/streamers/lefdef/db_plugin/dbDEFImporter.cc b/src/plugins/streamers/lefdef/db_plugin/dbDEFImporter.cc index 6ef63978f..ea5de1c3f 100644 --- a/src/plugins/streamers/lefdef/db_plugin/dbDEFImporter.cc +++ b/src/plugins/streamers/lefdef/db_plugin/dbDEFImporter.cc @@ -773,17 +773,19 @@ DEFImporter::read_nets (db::Layout &layout, db::Cell &design, double scale, bool } else { bool prefixed = false; + bool can_have_rect_or_polygon = true; if ((was_shield = test ("SHIELD")) == true || test ("NOSHIELD") || test ("ROUTED") || test ("FIXED") || test ("COVER")) { if (was_shield) { take (); } prefixed = true; + can_have_rect_or_polygon = test ("+"); } bool any = false; - if (test ("POLYGON")) { + if (can_have_rect_or_polygon && test ("POLYGON")) { std::string ln = get (); @@ -801,7 +803,7 @@ DEFImporter::read_nets (db::Layout &layout, db::Cell &design, double scale, bool any = true; - } else if (test ("RECT")) { + } else if (can_have_rect_or_polygon && test ("RECT")) { std::string ln = get (); diff --git a/testdata/lefdef/specialnets_geo/test.def b/testdata/lefdef/specialnets_geo/test.def index 0686c4fec..b9b3e39c8 100644 --- a/testdata/lefdef/specialnets_geo/test.def +++ b/testdata/lefdef/specialnets_geo/test.def @@ -16,9 +16,9 @@ VIAS 1 ; END VIAS SPECIALNETS 1 ; - dummy - + ROUTED RECT M2 ( 350 0 ) ( 200 100 ) + + ROUTED + RECT M2 ( 350 0 ) ( 200 100 ) + POLYGON M1 ( 300 0 ) ( 300 50 ) ( 350 50 ) ( 400 100 ) ( 400 0 ) - + ROUTED POLYGON M2 ( 300 150 ) ( 300 200 ) ( 350 200 ) ( 400 250 ) ( 400 150 ) + + ROUTED + POLYGON M2 ( 300 150 ) ( 300 200 ) ( 350 200 ) ( 400 250 ) ( 400 150 ) + RECT M1 ( 0 0 ) ( 100 200 ) + ROUTED M1 30 ( 0 0 15 ) ( 100 0 0 ) VIA1_dummy ( 100 100 10 ) + ROUTED M2 50 + SHAPE RING + STYLE 1 ( 0 100 ) ( 100 200 ) ( 200 200 )