diff --git a/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc b/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc index 669ed3baa..56b5fcf3a 100644 --- a/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc +++ b/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFImporter.cc @@ -730,6 +730,8 @@ LEFDEFReaderState::read_map_file (const std::string &path, db::Layout &layout) std::string w1, w2; int layer = 0, datatype = 0; + size_t max_purpose_str = 10; + bool purpose_abbreviated = false; if (ex.try_read_word (w1) && ex.try_read_word (w2, "._$,/:") && ex.try_read (layer) && ex.try_read (datatype)) { @@ -798,18 +800,32 @@ LEFDEFReaderState::read_map_file (const std::string &path, db::Layout &layout) translated_purposes.insert (std::make_pair (i->second, mask)); - if (! purpose_str.empty ()) { - purpose_str += "/"; + if (! purpose_abbreviated) { + + if (! purpose_str.empty ()) { + purpose_str += "/"; + } + + if (purpose_str.size () > max_purpose_str) { + + purpose_abbreviated = true; + purpose_str += "..."; + + } else { + + purpose_str += i->first; + + if (mask > 0) { + purpose_str += ":"; + purpose_str += tl::to_string (mask); + } + + } + } - purpose_str += i->first; } - if (mask > 0) { - purpose_str += ":"; - purpose_str += tl::to_string (mask); - } - } std::string final_name = w1 + "." + purpose_str; diff --git a/src/plugins/streamers/oasis/db_plugin/dbOASISWriter.cc b/src/plugins/streamers/oasis/db_plugin/dbOASISWriter.cc index 7791b9e98..a3e5b8c21 100644 --- a/src/plugins/streamers/oasis/db_plugin/dbOASISWriter.cc +++ b/src/plugins/streamers/oasis/db_plugin/dbOASISWriter.cc @@ -2754,7 +2754,7 @@ OASISWriter::write (const db::Path &path, db::properties_id_type prop_id, const if (hw * 2 != w) { std::string msg = tl::to_string (tr ("Paths with odd width cannot be written to OASIS files (cell ")) + mp_layout->cell_name (mp_cell->cell_index ()) + tl::to_string (tr (", position ")) + tl::to_string (start.x ()) + ", " + tl::to_string (start.y ()) + " DBU)"; if (m_options.permissive) { - tl::warn << msg << " - " << tl::to_string (tr ("path diameter is rounded")); + tl::warn << msg << " - " << tl::sprintf (tl::to_string (tr ("path width is rounded from %d to %d DBU")), w, hw * 2); } else { throw tl::Exception (msg); } diff --git a/testdata/lefdef/mapfile/au.oas.gz b/testdata/lefdef/mapfile/au.oas.gz index 629c7144b..d0ee614ae 100644 Binary files a/testdata/lefdef/mapfile/au.oas.gz and b/testdata/lefdef/mapfile/au.oas.gz differ