diff --git a/src/plugins/streamers/lefdef/db_plugin/dbDEFImporter.cc b/src/plugins/streamers/lefdef/db_plugin/dbDEFImporter.cc index 057402473..ea8fd7f76 100644 --- a/src/plugins/streamers/lefdef/db_plugin/dbDEFImporter.cc +++ b/src/plugins/streamers/lefdef/db_plugin/dbDEFImporter.cc @@ -999,15 +999,17 @@ DEFImporter::read_vias (db::Layout & /*layout*/, db::Cell & /*design*/, double s if (m_lef_importer.is_routing_layer (ln)) { - if (routing_layers.size () == 0) { - geo_based_vg->set_maskshift_layer (0, ln); - } else if (routing_layers.size () == 1) { - geo_based_vg->set_maskshift_layer (2, ln); - } - if (seen_layers.find (ln) == seen_layers.end ()) { + + if (routing_layers.size () == 0) { + geo_based_vg->set_maskshift_layer (0, ln); + } else if (routing_layers.size () == 1) { + geo_based_vg->set_maskshift_layer (2, ln); + } + seen_layers.insert (ln); routing_layers.push_back (ln); + } } else if (m_lef_importer.is_cut_layer (ln)) { diff --git a/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc b/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc index 08e3d1ea8..96086bc95 100644 --- a/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc +++ b/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc @@ -279,7 +279,7 @@ GeometryBasedLayoutGenerator::mask_for (const std::string &ln, unsigned int m, c if (m == 0 || ! nm) { m = mm; - } else if (m > 0) { + } else if (mm > 0) { m = (m + mm - 2) % nm->number_of_masks (ln) + 1; } diff --git a/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.h b/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.h index 4b9ca747d..94e34b3ca 100644 --- a/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.h +++ b/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.h @@ -942,7 +942,9 @@ public: void set_maskshift_layer (unsigned int l, const std::string &s) { - m_maskshift_layers.resize (l + 1, std::string ()); + if (m_maskshift_layers.size () <= size_t (l)) { + m_maskshift_layers.resize (l + 1, std::string ()); + } m_maskshift_layers[l] = s; }