diff --git a/src/plugins/streamers/lefdef/db_plugin/dbLEFImporter.cc b/src/plugins/streamers/lefdef/db_plugin/dbLEFImporter.cc index c5297c4ca..fde75516e 100644 --- a/src/plugins/streamers/lefdef/db_plugin/dbLEFImporter.cc +++ b/src/plugins/streamers/lefdef/db_plugin/dbLEFImporter.cc @@ -169,7 +169,7 @@ LEFImporter::read_geometries (db::Layout &layout, db::Cell &cell, LayerPurpose p if (test ("CLASS")) { // accept CLASS token for PORT definitions - while (! test (";")) { + while (! at_end () && ! test (";")) { take (); } @@ -183,7 +183,7 @@ LEFImporter::read_geometries (db::Layout &layout, db::Cell &cell, LayerPurpose p w = dw->second.first; } - while (! test (";")) { + while (! at_end () && ! test (";")) { take (); } @@ -418,7 +418,7 @@ LEFImporter::read_nondefaultrule (db::Layout & /*layout*/) test (";"); m_nondefault_widths[n][l] = std::make_pair (w, w); } else { - while (! test (";")) { + while (! at_end () && ! test (";")) { take (); } } @@ -528,7 +528,7 @@ LEFImporter::read_viadef_by_rule (RuleBasedViaGenerator *vg, ViaDesc &via_desc, } else { - while (! test (";")) { + while (! at_end () && ! test (";")) { take (); } @@ -561,7 +561,7 @@ LEFImporter::read_viadef_by_geometry (GeometryBasedViaGenerator *vg, ViaDesc &vi routing_layers.push_back (layer_name); } - while (! test (";")) { + while (! at_end () && ! test (";")) { take (); } @@ -611,6 +611,13 @@ LEFImporter::read_viadef_by_geometry (GeometryBasedViaGenerator *vg, ViaDesc &vi expect (";"); + } else if (test ("PROPERTY")) { + + // skip properties + while (! at_end () && ! test (";")) { + take (); + } + } else { // stop at unknown token break; @@ -726,7 +733,7 @@ LEFImporter::read_layer (Layout & /*layout*/) take (); } } - while (! test (";")) { + while (! at_end () && ! test (";")) { take (); } @@ -767,7 +774,7 @@ LEFImporter::read_layer (Layout & /*layout*/) } else { - while (! test (";")) { + while (! at_end () && ! test (";")) { take (); } @@ -886,7 +893,7 @@ LEFImporter::read_macro (Layout &layout) expect ("END"); } else { - while (! test (";")) { + while (! at_end () && ! test (";")) { take (); } } @@ -941,7 +948,7 @@ LEFImporter::read_macro (Layout &layout) expect (";"); } else { - while (! test (";")) { + while (! at_end () && ! test (";")) { take (); } } @@ -1047,7 +1054,7 @@ LEFImporter::do_read (db::Layout &layout) /* dbu_mic = */ get_double (); expect (";"); } else { - while (! test (";")) { + while (! at_end () && ! test (";")) { take (); } } @@ -1109,7 +1116,7 @@ LEFImporter::do_read (db::Layout &layout) read_macro (layout); } else { - while (! test (";")) { + while (! at_end () && ! test (";")) { take (); } } diff --git a/src/plugins/streamers/lefdef/unit_tests/dbLEFDEFImportTests.cc b/src/plugins/streamers/lefdef/unit_tests/dbLEFDEFImportTests.cc index efd68ffa1..50fcb5341 100644 --- a/src/plugins/streamers/lefdef/unit_tests/dbLEFDEFImportTests.cc +++ b/src/plugins/streamers/lefdef/unit_tests/dbLEFDEFImportTests.cc @@ -392,6 +392,6 @@ TEST(111_mapfile) TEST(112_via_properties) { - run_test (_this, "via_properties", "lef:in.lef", "au.oas.gz", default_options (), false); + run_test (_this, "via_properties", "lef:in.lef+def:in.def", "au.oas.gz", default_options (), false); } diff --git a/testdata/lefdef/via_properties/au.oas.gz b/testdata/lefdef/via_properties/au.oas.gz index d6551998c..e86ce559a 100644 Binary files a/testdata/lefdef/via_properties/au.oas.gz and b/testdata/lefdef/via_properties/au.oas.gz differ