diff --git a/src/db/db/dbLayoutToNetlistFormatDefs.cc b/src/db/db/dbLayoutToNetlistFormatDefs.cc index 572fdccb8..3a00f45e0 100644 --- a/src/db/db/dbLayoutToNetlistFormatDefs.cc +++ b/src/db/db/dbLayoutToNetlistFormatDefs.cc @@ -36,6 +36,7 @@ namespace l2n_std_format template<> DB_PUBLIC const std::string keys::global_key ("global"); template<> DB_PUBLIC const std::string keys::circuit_key ("circuit"); template<> DB_PUBLIC const std::string keys::net_key ("net"); + template<> DB_PUBLIC const std::string keys::name_key ("name"); template<> DB_PUBLIC const std::string keys::device_key ("device"); template<> DB_PUBLIC const std::string keys::polygon_key ("polygon"); template<> DB_PUBLIC const std::string keys::rect_key ("rect"); @@ -57,6 +58,7 @@ namespace l2n_std_format template<> DB_PUBLIC const std::string keys::global_key ("G"); template<> DB_PUBLIC const std::string keys::circuit_key ("X"); template<> DB_PUBLIC const std::string keys::net_key ("N"); + template<> DB_PUBLIC const std::string keys::name_key ("I"); template<> DB_PUBLIC const std::string keys::device_key ("D"); template<> DB_PUBLIC const std::string keys::polygon_key ("Q"); template<> DB_PUBLIC const std::string keys::rect_key ("R"); diff --git a/src/db/db/dbLayoutToNetlistFormatDefs.h b/src/db/db/dbLayoutToNetlistFormatDefs.h index 663ca16c5..8bb38dbec 100644 --- a/src/db/db/dbLayoutToNetlistFormatDefs.h +++ b/src/db/db/dbLayoutToNetlistFormatDefs.h @@ -63,7 +63,7 @@ namespace db * * [circuit-def]: * - * net( [geometry-def]) + * net( [net-name]? [geometry-def]*) * - net geometry [short key: N] * A net declaration shall be there also if no geometry * is present. The ID is a numerical shortcut for the net. @@ -72,6 +72,9 @@ namespace db * - device with connections [short key: D] * circuit( [circuit-def]) - subcircuit with connections [short key: X] * + * [net-name]: + * name() - specify net name [short key: + * * [geometry-def]: * * polygon( ...) - defines a polygon [short key: Q] @@ -81,7 +84,7 @@ namespace db * * [device-abstract-def]: * - * terminal( [geometry-def]) + * terminal( [geometry-def]*) * - specifies the terminal geometry [short key: T] * * [device-def]: @@ -116,6 +119,7 @@ namespace l2n_std_format static const std::string global_key; static const std::string circuit_key; static const std::string net_key; + static const std::string name_key; static const std::string device_key; static const std::string subcircuit_key; static const std::string polygon_key; diff --git a/src/db/db/dbLayoutToNetlistReader.cc b/src/db/db/dbLayoutToNetlistReader.cc index 687c33a12..851549d31 100644 --- a/src/db/db/dbLayoutToNetlistReader.cc +++ b/src/db/db/dbLayoutToNetlistReader.cc @@ -394,10 +394,14 @@ LayoutToNetlistStandardReader::read_net (db::LayoutToNetlist *l2n, db::Circuit * { Brace br (this); - std::string name; - read_word_or_quoted (name); - unsigned int id = (unsigned int) read_int (); + std::string name; + + if (test (skeys::name_key) || test (lkeys::name_key)) { + Brace br_name (this); + read_word_or_quoted (name); + br_name.done (); + } db::Net *net = new db::Net (); net->set_name (name); diff --git a/src/db/db/dbLayoutToNetlistWriter.cc b/src/db/db/dbLayoutToNetlistWriter.cc index 2be9f008b..9508c2fb8 100644 --- a/src/db/db/dbLayoutToNetlistWriter.cc +++ b/src/db/db/dbLayoutToNetlistWriter.cc @@ -309,7 +309,11 @@ void std_writer_impl::write (const db::LayoutToNetlist *l2n, const db::Net } else { if (! any) { - *mp_stream << indent1 << Keys::net_key << "(" << tl::to_word_or_quoted_string (net.expanded_name ()) << " " << id << endl; + *mp_stream << indent1 << Keys::net_key << "(" << id; + if (! net.name ().empty ()) { + *mp_stream << " " << Keys::name_key << "(" << tl::to_word_or_quoted_string (net.name ()) << ")"; + } + *mp_stream << endl; any = true; } @@ -330,7 +334,13 @@ void std_writer_impl::write (const db::LayoutToNetlist *l2n, const db::Net if (any) { *mp_stream << indent1 << ")" << endl; } else { - *mp_stream << indent1 << Keys::net_key << "(" << tl::to_word_or_quoted_string (net.expanded_name ()) << " " << id << ")" << endl; + + *mp_stream << indent1 << Keys::net_key << "(" << id; + if (! net.name ().empty ()) { + *mp_stream << " " << Keys::name_key << "(" << tl::to_word_or_quoted_string (net.name ()) << ")"; + } + *mp_stream << ")" << endl; + } } diff --git a/src/db/db/dbNetlistDeviceExtractorClasses.cc b/src/db/db/dbNetlistDeviceExtractorClasses.cc index a93c13ed6..91a22c45e 100644 --- a/src/db/db/dbNetlistDeviceExtractorClasses.cc +++ b/src/db/db/dbNetlistDeviceExtractorClasses.cc @@ -72,7 +72,10 @@ void NetlistDeviceExtractorMOS3Transistor::extract_devices (const std::vector