diff --git a/src/db/db/dbHierNetworkProcessor.cc b/src/db/db/dbHierNetworkProcessor.cc index 7af394f59..721d17aac 100644 --- a/src/db/db/dbHierNetworkProcessor.cc +++ b/src/db/db/dbHierNetworkProcessor.cc @@ -2286,8 +2286,8 @@ template class DB_PUBLIC hier_clusters; // recursive_cluster_shape_iterator implementation template -recursive_cluster_shape_iterator::recursive_cluster_shape_iterator (const hier_clusters &hc, unsigned int layer, db::cell_index_type ci, typename local_cluster::id_type id) - : mp_hc (&hc), m_layer (layer), m_id (id) +recursive_cluster_shape_iterator::recursive_cluster_shape_iterator (const hier_clusters &hc, unsigned int layer, db::cell_index_type ci, typename local_cluster::id_type id, const CircuitCallback *callback) + : mp_hc (&hc), m_layer (layer), m_id (id), mp_callback (callback) { if (id == 0) { return; @@ -2352,7 +2352,12 @@ void recursive_cluster_shape_iterator::next_conn () if (m_conn_iter_stack.back ().first != m_conn_iter_stack.back ().second) { const ClusterInstance &cli = *m_conn_iter_stack.back ().first; - down (cli.inst_cell_index (), cli.id (), cli.inst_trans ()); + if (mp_callback && ! mp_callback->new_cell (cli.inst_cell_index ())) { + // skip this cell + ++m_conn_iter_stack.back ().first; + } else { + down (cli.inst_cell_index (), cli.id (), cli.inst_trans ()); + } } else { diff --git a/src/db/db/dbHierNetworkProcessor.h b/src/db/db/dbHierNetworkProcessor.h index a29dfcce3..923c57e78 100644 --- a/src/db/db/dbHierNetworkProcessor.h +++ b/src/db/db/dbHierNetworkProcessor.h @@ -1038,6 +1038,25 @@ private: int m_base_verbosity; }; +/** + * @brief A callback function for the recursive cluster shape and cluster iterator selecting cells/circuits + * + * Reimplement the "new_circuit" method to receive a callback on a new cell or circuit. + */ +class DB_PUBLIC CircuitCallback +{ +public: + CircuitCallback () { } + + /** + * @brief This method is called whenever a circuit is entered when descending. + * Return false to skip this circuit and all of it's children. This method is called before the + * new cell is entered. + * @param new_ci The cell index of the cell to enter + */ + virtual bool new_cell (db::cell_index_type /*new_ci*/) const { return true; } +}; + /** * @brief A recursive shape iterator for the shapes of a cluster * @@ -1057,7 +1076,7 @@ public: /** * @brief Constructor */ - recursive_cluster_shape_iterator (const hier_clusters &hc, unsigned int layer, db::cell_index_type ci, typename local_cluster::id_type id); + recursive_cluster_shape_iterator (const hier_clusters &hc, unsigned int layer, db::cell_index_type ci, typename local_cluster::id_type id, const CircuitCallback *callback = 0); /** * @brief Returns a value indicating whether there are any more shapes @@ -1138,6 +1157,7 @@ private: typename db::local_cluster::shape_iterator m_shape_iter; unsigned int m_layer; typename db::local_cluster::id_type m_id; + const CircuitCallback *mp_callback; void next_conn (); void up (); diff --git a/src/db/db/dbLayoutToNetlistWriter.cc b/src/db/db/dbLayoutToNetlistWriter.cc index fad0c3a9f..62c9d6116 100644 --- a/src/db/db/dbLayoutToNetlistWriter.cc +++ b/src/db/db/dbLayoutToNetlistWriter.cc @@ -57,7 +57,7 @@ static const std::string indent2 (" "); template std_writer_impl::std_writer_impl (tl::OutputStream &stream, double dbu, const std::string &progress_description) - : mp_stream (&stream), m_dbu (dbu), + : mp_stream (&stream), m_dbu (dbu), mp_netlist (0), m_progress (progress_description.empty () ? tl::to_string (tr ("Writing L2N database")) : progress_description, 10000) { m_progress.set_format (tl::to_string (tr ("%.0f MB"))); @@ -76,17 +76,51 @@ static std::string name_for_layer (const db::LayoutToNetlist *l2n, unsigned int template void std_writer_impl::write (const db::LayoutToNetlist *l2n) { - write (l2n->netlist (), l2n, false, 0); + try { + + mp_netlist = l2n->netlist (); + mp_l2n = l2n; + + write (false, 0); + + mp_netlist = 0; + mp_l2n = 0; + + } catch (...) { + mp_netlist = 0; + mp_l2n = 0; + throw; + } } template -void std_writer_impl::write (const db::Netlist *nl, const db::LayoutToNetlist *l2n, bool nested, std::map > *net2id_per_circuit) +void std_writer_impl::write (const db::Netlist *netlist, const db::LayoutToNetlist *l2n, bool nested, std::map > *net2id_per_circuit) +{ + try { + + mp_netlist = netlist; + mp_l2n = l2n; + + write (nested, net2id_per_circuit); + + mp_netlist = 0; + mp_l2n = 0; + + } catch (...) { + mp_netlist = 0; + mp_l2n = 0; + throw; + } +} + +template +void std_writer_impl::write (bool nested, std::map > *net2id_per_circuit) { bool any = false; const int version = 0; - const db::Layout *ly = l2n ? l2n->internal_layout () : 0; + const db::Layout *ly = mp_l2n ? mp_l2n->internal_layout () : 0; const std::string indent (nested ? indent1 : ""); if (! nested) { @@ -97,11 +131,11 @@ void std_writer_impl::write (const db::Netlist *nl, const db::LayoutToNetl *mp_stream << indent << Keys::version_key << "(" << version << ")" << endl; } if (ly) { - *mp_stream << indent << Keys::top_key << "(" << tl::to_word_or_quoted_string (ly->cell_name (l2n->internal_top_cell ()->cell_index ())) << ")" << endl; + *mp_stream << indent << Keys::top_key << "(" << tl::to_word_or_quoted_string (ly->cell_name (mp_l2n->internal_top_cell ()->cell_index ())) << ")" << endl; *mp_stream << indent << Keys::unit_key << "(" << m_dbu << ")" << endl; } - if (l2n) { + if (mp_l2n) { if (! Keys::is_short ()) { *mp_stream << endl << indent << "# Layer section" << endl; @@ -111,8 +145,8 @@ void std_writer_impl::write (const db::Netlist *nl, const db::LayoutToNetl if (! Keys::is_short ()) { *mp_stream << endl << indent << "# Mask layers" << endl; } - for (db::Connectivity::layer_iterator l = l2n->connectivity ().begin_layers (); l != l2n->connectivity ().end_layers (); ++l) { - *mp_stream << indent << Keys::layer_key << "(" << name_for_layer (l2n, *l); + for (db::Connectivity::layer_iterator l = mp_l2n->connectivity ().begin_layers (); l != mp_l2n->connectivity ().end_layers (); ++l) { + *mp_stream << indent << Keys::layer_key << "(" << name_for_layer (mp_l2n, *l); db::LayerProperties lp = ly->get_properties (*l); if (! lp.is_null ()) { *mp_stream << " " << tl::to_word_or_quoted_string (lp.to_string ()); @@ -124,14 +158,14 @@ void std_writer_impl::write (const db::Netlist *nl, const db::LayoutToNetl if (! Keys::is_short ()) { *mp_stream << endl << indent << "# Mask layer connectivity" << endl; } - for (db::Connectivity::layer_iterator l = l2n->connectivity ().begin_layers (); l != l2n->connectivity ().end_layers (); ++l) { + for (db::Connectivity::layer_iterator l = mp_l2n->connectivity ().begin_layers (); l != mp_l2n->connectivity ().end_layers (); ++l) { - db::Connectivity::layer_iterator ce = l2n->connectivity ().end_connected (*l); - db::Connectivity::layer_iterator cb = l2n->connectivity ().begin_connected (*l); + db::Connectivity::layer_iterator ce = mp_l2n->connectivity ().end_connected (*l); + db::Connectivity::layer_iterator cb = mp_l2n->connectivity ().begin_connected (*l); if (cb != ce) { - *mp_stream << indent << Keys::connect_key << "(" << name_for_layer (l2n, *l); - for (db::Connectivity::layer_iterator c = l2n->connectivity ().begin_connected (*l); c != ce; ++c) { - *mp_stream << " " << name_for_layer (l2n, *c); + *mp_stream << indent << Keys::connect_key << "(" << name_for_layer (mp_l2n, *l); + for (db::Connectivity::layer_iterator c = mp_l2n->connectivity ().begin_connected (*l); c != ce; ++c) { + *mp_stream << " " << name_for_layer (mp_l2n, *c); } *mp_stream << ")" << endl; m_progress.set (mp_stream->pos ()); @@ -140,10 +174,10 @@ void std_writer_impl::write (const db::Netlist *nl, const db::LayoutToNetl } any = false; - for (db::Connectivity::layer_iterator l = l2n->connectivity ().begin_layers (); l != l2n->connectivity ().end_layers (); ++l) { + for (db::Connectivity::layer_iterator l = mp_l2n->connectivity ().begin_layers (); l != mp_l2n->connectivity ().end_layers (); ++l) { - db::Connectivity::global_nets_iterator ge = l2n->connectivity ().end_global_connections (*l); - db::Connectivity::global_nets_iterator gb = l2n->connectivity ().begin_global_connections (*l); + db::Connectivity::global_nets_iterator ge = mp_l2n->connectivity ().end_global_connections (*l); + db::Connectivity::global_nets_iterator gb = mp_l2n->connectivity ().begin_global_connections (*l); if (gb != ge) { if (! any) { if (! Keys::is_short ()) { @@ -151,9 +185,9 @@ void std_writer_impl::write (const db::Netlist *nl, const db::LayoutToNetl } any = true; } - *mp_stream << indent << Keys::global_key << "(" << name_for_layer (l2n, *l); + *mp_stream << indent << Keys::global_key << "(" << name_for_layer (mp_l2n, *l); for (db::Connectivity::global_nets_iterator g = gb; g != ge; ++g) { - *mp_stream << " " << tl::to_word_or_quoted_string (l2n->connectivity ().global_net_name (*g)); + *mp_stream << " " << tl::to_word_or_quoted_string (mp_l2n->connectivity ().global_net_name (*g)); } *mp_stream << ")" << endl; m_progress.set (mp_stream->pos ()); @@ -163,9 +197,9 @@ void std_writer_impl::write (const db::Netlist *nl, const db::LayoutToNetl } - if (nl->begin_device_classes () != nl->end_device_classes () && ! Keys::is_short ()) { + if (mp_netlist->begin_device_classes () != mp_netlist->end_device_classes () && ! Keys::is_short ()) { *mp_stream << endl << indent << "# Device class section" << endl; - for (db::Netlist::const_device_class_iterator c = nl->begin_device_classes (); c != nl->end_device_classes (); ++c) { + for (db::Netlist::const_device_class_iterator c = mp_netlist->begin_device_classes (); c != mp_netlist->end_device_classes (); ++c) { db::DeviceClassTemplateBase *temp = db::DeviceClassTemplateBase::is_a (c.operator-> ()); if (temp) { *mp_stream << indent << Keys::class_key << "(" << tl::to_word_or_quoted_string (c->name ()) << " " << tl::to_word_or_quoted_string (temp->name ()) << ")" << endl; @@ -174,14 +208,14 @@ void std_writer_impl::write (const db::Netlist *nl, const db::LayoutToNetl } } - if (nl->begin_device_abstracts () != nl->end_device_abstracts () && ! Keys::is_short ()) { + if (mp_netlist->begin_device_abstracts () != mp_netlist->end_device_abstracts () && ! Keys::is_short ()) { *mp_stream << endl << indent << "# Device abstracts section" << endl; *mp_stream << indent << "# Device abstracts list the pin shapes of the devices." << endl; } - for (db::Netlist::const_abstract_model_iterator m = nl->begin_device_abstracts (); m != nl->end_device_abstracts (); ++m) { + for (db::Netlist::const_abstract_model_iterator m = mp_netlist->begin_device_abstracts (); m != mp_netlist->end_device_abstracts (); ++m) { if (m->device_class ()) { *mp_stream << indent << Keys::device_key << "(" << tl::to_word_or_quoted_string (m->name ()) << " " << tl::to_word_or_quoted_string (m->device_class ()->name ()) << endl; - write (l2n, *m, indent); + write (*m, indent); *mp_stream << indent << ")" << endl; m_progress.set (mp_stream->pos ()); } @@ -191,10 +225,10 @@ void std_writer_impl::write (const db::Netlist *nl, const db::LayoutToNetl *mp_stream << endl << indent << "# Circuit section" << endl; *mp_stream << indent << "# Circuits are the hierarchical building blocks of the netlist." << endl; } - for (db::Netlist::const_bottom_up_circuit_iterator i = nl->begin_bottom_up (); i != nl->end_bottom_up (); ++i) { + for (db::Netlist::const_bottom_up_circuit_iterator i = mp_netlist->begin_bottom_up (); i != mp_netlist->end_bottom_up (); ++i) { const db::Circuit *x = i.operator-> (); *mp_stream << indent << Keys::circuit_key << "(" << tl::to_word_or_quoted_string (x->name ()) << endl; - write (nl, l2n, *x, indent, net2id_per_circuit); + write (*x, indent, net2id_per_circuit); *mp_stream << indent << ")" << endl; m_progress.set (mp_stream->pos ()); } @@ -243,7 +277,7 @@ void write_points (tl::OutputStream &stream, const T &poly, const Tr &tr, db::Po } template -void std_writer_impl::write (const db::Netlist *netlist, const db::LayoutToNetlist *l2n, const db::Circuit &circuit, const std::string &indent, std::map > *net2id_per_circuit) +void std_writer_impl::write (const db::Circuit &circuit, const std::string &indent, std::map > *net2id_per_circuit) { if (circuit.boundary ().vertices () > 0) { @@ -298,14 +332,14 @@ void std_writer_impl::write (const db::Netlist *netlist, const db::LayoutT if (circuit.begin_nets () != circuit.end_nets ()) { if (! Keys::is_short ()) { - if (l2n) { + if (mp_l2n) { *mp_stream << endl << indent << indent1 << "# Nets with their geometries" << endl; } else { *mp_stream << endl << indent << indent1 << "# Nets" << endl; } } for (db::Circuit::const_net_iterator n = circuit.begin_nets (); n != circuit.end_nets (); ++n) { - write (netlist, l2n, *n, (*net2id) [n.operator-> ()], indent); + write (*n, (*net2id) [n.operator-> ()], indent); m_progress.set (mp_stream->pos ()); } } @@ -336,7 +370,7 @@ void std_writer_impl::write (const db::Netlist *netlist, const db::LayoutT *mp_stream << endl << indent << indent1 << "# Devices and their connections" << endl; } for (db::Circuit::const_device_iterator d = circuit.begin_devices (); d != circuit.end_devices (); ++d) { - write (l2n, *d, *net2id, indent); + write (*d, *net2id, indent); m_progress.set (mp_stream->pos ()); } } @@ -346,7 +380,7 @@ void std_writer_impl::write (const db::Netlist *netlist, const db::LayoutT *mp_stream << endl << indent << indent1 << "# Subcircuits and their connections" << endl; } for (db::Circuit::const_subcircuit_iterator x = circuit.begin_subcircuits (); x != circuit.end_subcircuits (); ++x) { - write (l2n, *x, *net2id, indent); + write (*x, *net2id, indent); m_progress.set (mp_stream->pos ()); } } @@ -393,15 +427,21 @@ void std_writer_impl::write (const db::PolygonRef *s, const db::ICplxTrans } template -void std_writer_impl::write (const db::Netlist *netlist, const db::LayoutToNetlist *l2n, const db::Net &net, unsigned int id, const std::string &indent) +bool std_writer_impl::new_cell (cell_index_type ci) const { - const db::hier_clusters &clusters = l2n->net_clusters (); + return ! (mp_netlist->circuit_by_cell_index (ci) || mp_netlist->device_abstract_by_cell_index (ci)); +} + +template +void std_writer_impl::write (const db::Net &net, unsigned int id, const std::string &indent) +{ + const db::hier_clusters &clusters = mp_l2n->net_clusters (); const db::Circuit *circuit = net.circuit (); - const db::Connectivity &conn = l2n->connectivity (); + const db::Connectivity &conn = mp_l2n->connectivity (); bool any = false; - if (l2n) { + if (mp_l2n) { reset_geometry_ref (); @@ -410,13 +450,13 @@ void std_writer_impl::write (const db::Netlist *netlist, const db::LayoutT db::cell_index_type cci = circuit->cell_index (); db::cell_index_type prev_ci = cci; - for (db::recursive_cluster_shape_iterator si (clusters, *l, cci, net.cluster_id ()); ! si.at_end (); ) { + for (db::recursive_cluster_shape_iterator si (clusters, *l, cci, net.cluster_id (), this); ! si.at_end (); ) { // NOTE: we don't recursive into circuits which will later be output. However, as circuits may // vanish in "purge" but the clusters will still be there we need to recursive into clusters from // unknown cells. db::cell_index_type ci = si.cell_index (); - if (ci != prev_ci && ci != cci && (netlist->circuit_by_cell_index (ci) || netlist->device_abstract_by_cell_index (ci))) { + if (ci != prev_ci && ci != cci && (mp_netlist->circuit_by_cell_index (ci) || mp_netlist->device_abstract_by_cell_index (ci))) { si.skip_cell (); @@ -439,7 +479,7 @@ void std_writer_impl::write (const db::Netlist *netlist, const db::LayoutT } *mp_stream << indent << indent2; - write (si.operator-> (), si.trans (), name_for_layer (l2n, *l), true); + write (si.operator-> (), si.trans (), name_for_layer (mp_l2n, *l), true); *mp_stream << endl; m_progress.set (mp_stream->pos ()); @@ -477,7 +517,7 @@ void std_writer_impl::write (const db::Netlist *netlist, const db::LayoutT } template -void std_writer_impl::write (const db::LayoutToNetlist *l2n, const db::SubCircuit &subcircuit, std::map &net2id, const std::string &indent) +void std_writer_impl::write (const db::SubCircuit &subcircuit, std::map &net2id, const std::string &indent) { *mp_stream << indent << indent1 << Keys::circuit_key << "(" << tl::to_string (subcircuit.id ()); *mp_stream << " " << tl::to_word_or_quoted_string (subcircuit.circuit_ref ()->name ()); @@ -486,7 +526,7 @@ void std_writer_impl::write (const db::LayoutToNetlist *l2n, const db::Sub *mp_stream << " " << Keys::name_key << "(" << tl::to_word_or_quoted_string (subcircuit.name ()) << ")"; } - if (l2n) { + if (mp_l2n) { *mp_stream << " "; write (subcircuit.trans ()); } @@ -526,12 +566,12 @@ void std_writer_impl::write (const db::LayoutToNetlist *l2n, const db::Sub } template -void std_writer_impl::write (const db::LayoutToNetlist *l2n, const db::DeviceAbstract &device_abstract, const std::string &indent) +void std_writer_impl::write (const db::DeviceAbstract &device_abstract, const std::string &indent) { const std::vector &td = device_abstract.device_class ()->terminal_definitions (); - const db::hier_clusters &clusters = l2n->net_clusters (); - const db::Connectivity &conn = l2n->connectivity (); + const db::hier_clusters &clusters = mp_l2n->net_clusters (); + const db::Connectivity &conn = mp_l2n->connectivity (); for (std::vector::const_iterator t = td.begin (); t != td.end (); ++t) { @@ -551,7 +591,7 @@ void std_writer_impl::write (const db::LayoutToNetlist *l2n, const db::Dev for (db::local_cluster::shape_iterator s = lc.begin (*l); ! s.at_end (); ++s) { *mp_stream << indent << indent2; - write (s.operator-> (), db::ICplxTrans (), name_for_layer (l2n, *l), true); + write (s.operator-> (), db::ICplxTrans (), name_for_layer (mp_l2n, *l), true); *mp_stream << endl; m_progress.set (mp_stream->pos ()); @@ -598,7 +638,7 @@ void std_writer_impl::write (const db::DCplxTrans &tr) } template -void std_writer_impl::write (const db::LayoutToNetlist * /*l2n*/, const db::Device &device, std::map &net2id, const std::string &indent) +void std_writer_impl::write (const db::Device &device, std::map &net2id, const std::string &indent) { tl_assert (device.device_class () != 0); const std::vector &td = device.device_class ()->terminal_definitions (); diff --git a/src/db/db/dbLayoutToNetlistWriter.h b/src/db/db/dbLayoutToNetlistWriter.h index 4e259bc7d..c2bf1bad1 100644 --- a/src/db/db/dbLayoutToNetlistWriter.h +++ b/src/db/db/dbLayoutToNetlistWriter.h @@ -27,6 +27,7 @@ #include "dbPoint.h" #include "dbTrans.h" #include "dbPolygon.h" +#include "dbHierNetworkProcessor.h" #include "tlStream.h" #include "tlProgress.h" @@ -46,23 +47,15 @@ namespace l2n_std_format template class std_writer_impl + : private db::CircuitCallback { public: std_writer_impl (tl::OutputStream &stream, double dbu, const std::string &progress_description = std::string ()); void write (const db::LayoutToNetlist *l2n); + void write (const db::Netlist *netlist, const db::LayoutToNetlist *l2n, bool nested, std::map > *net2id_per_circuit); protected: - void write (const db::Netlist *netlist, const db::LayoutToNetlist *l2n, bool nested, std::map > *net2id_per_circuit); - void write (const db::Netlist *netlist, const db::LayoutToNetlist *l2n, const db::Circuit &circuit, const std::string &indent, std::map > *net2id_per_circuit); - void write (const db::Netlist *netlist, const db::LayoutToNetlist *l2n, const db::Net &net, unsigned int id, const std::string &indent); - void write (const db::LayoutToNetlist *l2n, const db::SubCircuit &subcircuit, std::map &net2id, const std::string &indent); - void write (const db::LayoutToNetlist *l2n, const db::Device &device, std::map &net2id, const std::string &indent); - void write (const db::LayoutToNetlist *l2n, const db::DeviceAbstract &device_abstract, const std::string &indent); - void write (const db::PolygonRef *s, const db::ICplxTrans &tr, const std::string &lname, bool relative); - void write (const db::DCplxTrans &trans); - void reset_geometry_ref (); - tl::OutputStream &stream () { return *mp_stream; @@ -72,7 +65,22 @@ private: tl::OutputStream *mp_stream; db::Point m_ref; double m_dbu; + const db::Netlist *mp_netlist; + const db::LayoutToNetlist *mp_l2n; tl::AbsoluteProgress m_progress; + + void write (bool nested, std::map > *net2id_per_circuit); + void write (const db::Circuit &circuit, const std::string &indent, std::map > *net2id_per_circuit); + void write (const db::Net &net, unsigned int id, const std::string &indent); + void write (const db::SubCircuit &subcircuit, std::map &net2id, const std::string &indent); + void write (const db::Device &device, std::map &net2id, const std::string &indent); + void write (const db::DeviceAbstract &device_abstract, const std::string &indent); + void write (const db::PolygonRef *s, const db::ICplxTrans &tr, const std::string &lname, bool relative); + void write (const db::DCplxTrans &trans); + void reset_geometry_ref (); + + // implementation of CircuitCallback + bool new_cell (cell_index_type ci) const; }; } diff --git a/src/db/unit_tests/dbLayoutToNetlistReaderTests.cc b/src/db/unit_tests/dbLayoutToNetlistReaderTests.cc index cc3c0fb90..b17f83219 100644 --- a/src/db/unit_tests/dbLayoutToNetlistReaderTests.cc +++ b/src/db/unit_tests/dbLayoutToNetlistReaderTests.cc @@ -101,7 +101,7 @@ TEST(1_ReaderBasic) std::vector nets; nets.push_back (l2n.netlist ()->circuit_by_name ("RINGO")->net_by_name ("VSS")); - nets.push_back (l2n.netlist ()->circuit_by_name ("RINGO")->net_by_name ("VDD")); + nets.push_back (l2n.netlist ()->circuit_by_name ("RINGO")->net_by_name ("FB")); db::CellMapping cm = l2n.cell_mapping_into (ly2, top2, nets); diff --git a/testdata/algo/l2n_reader_au_1.gds b/testdata/algo/l2n_reader_au_1.gds index 2b85b42ac..5f2f481e3 100644 Binary files a/testdata/algo/l2n_reader_au_1.gds and b/testdata/algo/l2n_reader_au_1.gds differ diff --git a/testdata/algo/l2n_reader_au_1b.gds b/testdata/algo/l2n_reader_au_1b.gds index 103fdb19a..800cdab11 100644 Binary files a/testdata/algo/l2n_reader_au_1b.gds and b/testdata/algo/l2n_reader_au_1b.gds differ diff --git a/testdata/algo/l2n_reader_au_1c.gds b/testdata/algo/l2n_reader_au_1c.gds index 4ade45111..ab906b784 100644 Binary files a/testdata/algo/l2n_reader_au_1c.gds and b/testdata/algo/l2n_reader_au_1c.gds differ diff --git a/testdata/algo/l2n_reader_au_1d.gds b/testdata/algo/l2n_reader_au_1d.gds index 8946b1e3d..479945ac0 100644 Binary files a/testdata/algo/l2n_reader_au_1d.gds and b/testdata/algo/l2n_reader_au_1d.gds differ diff --git a/testdata/algo/l2n_reader_au_1e.gds b/testdata/algo/l2n_reader_au_1e.gds index e917635e7..511833822 100644 Binary files a/testdata/algo/l2n_reader_au_1e.gds and b/testdata/algo/l2n_reader_au_1e.gds differ diff --git a/testdata/algo/l2n_reader_au_1f.gds b/testdata/algo/l2n_reader_au_1f.gds index 937a9bda3..6b73b8a5c 100644 Binary files a/testdata/algo/l2n_reader_au_1f.gds and b/testdata/algo/l2n_reader_au_1f.gds differ diff --git a/testdata/algo/l2n_writer_au.txt b/testdata/algo/l2n_writer_au.txt index 3d97644d3..b56ff4d5f 100644 --- a/testdata/algo/l2n_writer_au.txt +++ b/testdata/algo/l2n_writer_au.txt @@ -217,259 +217,41 @@ circuit(RINGO # Nets with their geometries net(1 name(FB) - rect(diff_cont (22850 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(metal1 (-24770 1310) (360 360)) + rect(metal1 (-1700 1620) (360 360)) rect(via1 (-305 -305) (250 250)) rect(via1 (24230 -250) (250 250)) rect(metal2 (-24805 -325) (24880 400)) rect(metal2_lbl (-23161 -201) (2 2)) ) net(2 name(OSC) - rect(diff_cont (24450 2890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(via1 (-235 1765) (250 250)) + rect(via1 (24435 1675) (250 250)) rect(metal2 (-325 -325) (400 400)) rect(metal2_lbl (-201 -201) (2 2)) ) net(3 name(VSS) - rect(diff_cont (2530 -310) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (5060 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (2420 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (2420 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (2420 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (2420 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (2420 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (2420 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (2420 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(metal1 (-21410 -290) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (4920 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (2280 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (2280 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (2280 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (2280 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (2280 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (2280 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (2280 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal2_lbl (-23941 -381) (2 2)) + rect(metal2_lbl (-1 -1) (2 2)) ) net(4 name(VDD) - rect(diff_cont (2530 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (5060 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (2420 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (2420 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (2420 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (2420 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (2420 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (2420 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (2420 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(metal1 (-21410 -290) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (4920 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (2280 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (2280 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (2280 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (2280 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (2280 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (2280 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (2280 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal2_lbl (-23941 -381) (2 2)) - ) - net(5 - rect(diff_cont (20210 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(6 - rect(diff_cont (17570 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(7 - rect(diff_cont (14930 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(8 - rect(diff_cont (12290 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(9 - rect(diff_cont (9650 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(10 - rect(diff_cont (7010 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(11 - rect(diff_cont (4370 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(12 - rect(diff_cont (1730 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(13 - rect(diff_cont (-910 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(14 - rect(diff_cont (690 2890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - ) - net(15 - rect(diff_cont (21810 2890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - ) - net(16 - rect(diff_cont (19170 2890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - ) - net(17 - rect(diff_cont (16530 2890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - ) - net(18 - rect(diff_cont (13890 2890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - ) - net(19 - rect(diff_cont (11250 2890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - ) - net(20 - rect(diff_cont (8610 2890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - ) - net(21 - rect(diff_cont (5970 2890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - ) - net(22 - rect(diff_cont (3330 2890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) + rect(metal2_lbl (-1 2799) (2 2)) ) + net(5) + net(6) + net(7) + net(8) + net(9) + net(10) + net(11) + net(12) + net(13) + net(14) + net(15) + net(16) + net(17) + net(18) + net(19) + net(20) + net(21) + net(22) # Outgoing pins and their connections to nets pin(1 name(FB)) diff --git a/testdata/algo/l2n_writer_au_2b.txt b/testdata/algo/l2n_writer_au_2b.txt index c232887a5..ac5c60d66 100644 --- a/testdata/algo/l2n_writer_au_2b.txt +++ b/testdata/algo/l2n_writer_au_2b.txt @@ -257,59 +257,13 @@ circuit(INV2PAIR # Nets with their geometries net(1 name(BULK)) - net(2 - rect(diff_cont (3430 3290) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(3 - rect(diff_cont (790 3290) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(4 - rect(diff_cont (4230 3290) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(metal1 (2350 -290) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - ) - net(5 - rect(diff_cont (4230 490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(metal1 (2350 -290) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - ) - net(6 - rect(diff_cont (2390 3690) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - ) + net(2) + net(3) + net(4) + net(5) + net(6) net(7) - net(8 - rect(diff_cont (5030 3690) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - ) + net(8) net(9) # Outgoing pins and their connections to nets @@ -349,67 +303,19 @@ circuit(RINGO # Nets with their geometries net(1 name(FB) - rect(diff_cont (22850 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(metal1 (-24770 1310) (360 360)) + rect(metal1 (-1700 1620) (360 360)) rect(via1 (-305 -305) (250 250)) rect(via1 (24230 -250) (250 250)) rect(metal2 (-24805 -325) (24880 400)) rect(metal2_lbl (-23161 -201) (2 2)) ) net(2 name(OSC) - rect(diff_cont (24450 2890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(via1 (-235 1765) (250 250)) + rect(via1 (24435 1675) (250 250)) rect(metal2 (-325 -325) (400 400)) rect(metal2_lbl (-201 -201) (2 2)) ) net(3 name(VDD) - rect(diff_cont (7810 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (12980 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (7700 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (7700 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(metal1 (-21410 390) (360 1120)) + rect(metal1 (-180 3100) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) @@ -419,70 +325,10 @@ circuit(RINGO rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) - rect(metal1 (-16200 -1800) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (12840 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (7560 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (7560 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal2_lbl (-21301 -381) (2 2)) + rect(metal2_lbl (-23941 -1421) (2 2)) ) net(4 name(VSS) - rect(diff_cont (7810 -310) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (12980 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (7700 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (7700 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 -220) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -220) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(metal1 (-21410 -1330) (360 1120)) + rect(metal1 (-180 -1420) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) @@ -492,76 +338,16 @@ circuit(RINGO rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) - rect(metal1 (-16200 -80) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (12840 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (7560 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (7560 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal1 (-3000 -760) (360 760)) - rect(metal1 (-360 -760) (360 760)) - rect(metal2_lbl (-21301 -381) (2 2)) - ) - net(5 - rect(diff_cont (17570 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(6 - rect(diff_cont (12290 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(7 - rect(diff_cont (7010 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(8 - rect(diff_cont (1730 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(9 - rect(diff_cont (3330 2890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - ) - net(10 - rect(diff_cont (19170 2890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - ) - net(11 - rect(diff_cont (13890 2890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - ) - net(12 - rect(diff_cont (8610 2890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -2620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) + rect(metal2_lbl (-23941 299) (2 2)) ) + net(5) + net(6) + net(7) + net(8) + net(9) + net(10) + net(11) + net(12) # Outgoing pins and their connections to nets pin(1 name(FB)) diff --git a/testdata/algo/l2n_writer_au_2s.txt b/testdata/algo/l2n_writer_au_2s.txt index c12295b2d..e06f526ba 100644 --- a/testdata/algo/l2n_writer_au_2s.txt +++ b/testdata/algo/l2n_writer_au_2s.txt @@ -225,59 +225,13 @@ X(INV2 X(INV2PAIR R((0 -840) (5740 6220)) N(1 I(BULK)) - N(2 - R(diff_cont (3430 3290) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(3 - R(diff_cont (790 3290) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(4 - R(diff_cont (4230 3290) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(metal1 (2350 -290) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - ) - N(5 - R(diff_cont (4230 490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(metal1 (2350 -290) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - ) - N(6 - R(diff_cont (2390 3690) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) + N(2) + N(3) + N(4) + N(5) + N(6) N(7) - N(8 - R(diff_cont (5030 3690) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) + N(8) N(9) P(1 I(BULK)) P(2) @@ -308,67 +262,19 @@ X(INV2PAIR X(RINGO R((-1720 -1640) (26880 6220)) N(1 I(FB) - R(diff_cont (22850 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(metal1 (-24770 1310) (360 360)) + R(metal1 (-1700 1620) (360 360)) R(via1 (-305 -305) (250 250)) R(via1 (24230 -250) (250 250)) R(metal2 (-24805 -325) (24880 400)) R(metal2_lbl (-23161 -201) (2 2)) ) N(2 I(OSC) - R(diff_cont (24450 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(via1 (-235 1765) (250 250)) + R(via1 (24435 1675) (250 250)) R(metal2 (-325 -325) (400 400)) R(metal2_lbl (-201 -201) (2 2)) ) N(3 I(VDD) - R(diff_cont (7810 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (12980 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (7700 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (7700 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(metal1 (-21410 390) (360 1120)) + R(metal1 (-180 3100) (360 1120)) R(metal1 (2280 -1120) (360 1120)) R(metal1 (2280 -1120) (360 1120)) R(metal1 (2280 -1120) (360 1120)) @@ -378,70 +284,10 @@ X(RINGO R(metal1 (2280 -1120) (360 1120)) R(metal1 (2280 -1120) (360 1120)) R(metal1 (2280 -1120) (360 1120)) - R(metal1 (-16200 -1800) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (12840 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (7560 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (7560 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal2_lbl (-21301 -381) (2 2)) + R(metal2_lbl (-23941 -1421) (2 2)) ) N(4 I(VSS) - R(diff_cont (7810 -310) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (12980 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (7700 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (7700 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(metal1 (-21410 -1330) (360 1120)) + R(metal1 (-180 -1420) (360 1120)) R(metal1 (2280 -1120) (360 1120)) R(metal1 (2280 -1120) (360 1120)) R(metal1 (2280 -1120) (360 1120)) @@ -451,76 +297,16 @@ X(RINGO R(metal1 (2280 -1120) (360 1120)) R(metal1 (2280 -1120) (360 1120)) R(metal1 (2280 -1120) (360 1120)) - R(metal1 (-16200 -80) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (12840 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (7560 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (7560 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal2_lbl (-21301 -381) (2 2)) - ) - N(5 - R(diff_cont (17570 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(6 - R(diff_cont (12290 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(7 - R(diff_cont (7010 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(8 - R(diff_cont (1730 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(9 - R(diff_cont (3330 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(10 - R(diff_cont (19170 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(11 - R(diff_cont (13890 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(12 - R(diff_cont (8610 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) + R(metal2_lbl (-23941 299) (2 2)) ) + N(5) + N(6) + N(7) + N(8) + N(9) + N(10) + N(11) + N(12) P(1 I(FB)) P(2 I(OSC)) P(3 I(VDD)) diff --git a/testdata/algo/l2n_writer_au_p.oas b/testdata/algo/l2n_writer_au_p.oas index 4db585331..24c2e239c 100644 Binary files a/testdata/algo/l2n_writer_au_p.oas and b/testdata/algo/l2n_writer_au_p.oas differ diff --git a/testdata/algo/l2n_writer_au_p.txt b/testdata/algo/l2n_writer_au_p.txt index 8a847e9ec..46d72db2a 100644 --- a/testdata/algo/l2n_writer_au_p.txt +++ b/testdata/algo/l2n_writer_au_p.txt @@ -196,259 +196,41 @@ X(RINGO F(#17 #142) F('a_"non_quoted"_string' '1s') F('a_float' ##10.5) - R(diff_cont (22850 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(metal1 (-24770 1310) (360 360)) + R(metal1 (-1700 1620) (360 360)) R(via1 (-305 -305) (250 250)) R(via1 (24230 -250) (250 250)) R(metal2 (-24805 -325) (24880 400)) R(metal2_lbl (-23161 -201) (2 2)) ) N(2 I(OSC) - R(diff_cont (24450 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(via1 (-235 1765) (250 250)) + R(via1 (24435 1675) (250 250)) R(metal2 (-325 -325) (400 400)) R(metal2_lbl (-201 -201) (2 2)) ) N(3 I(VSS) - R(diff_cont (2530 -310) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (5060 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(metal1 (-21410 -290) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (4920 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal2_lbl (-23941 -381) (2 2)) + R(metal2_lbl (-1 -1) (2 2)) ) N(4 I(VDD) - R(diff_cont (2530 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (5060 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(metal1 (-21410 -290) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (4920 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal2_lbl (-23941 -381) (2 2)) - ) - N(5 - R(diff_cont (20210 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(6 - R(diff_cont (17570 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(7 - R(diff_cont (14930 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(8 - R(diff_cont (12290 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(9 - R(diff_cont (9650 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(10 - R(diff_cont (7010 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(11 - R(diff_cont (4370 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(12 - R(diff_cont (1730 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(13 - R(diff_cont (-910 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(14 - R(diff_cont (690 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(15 - R(diff_cont (21810 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(16 - R(diff_cont (19170 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(17 - R(diff_cont (16530 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(18 - R(diff_cont (13890 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(19 - R(diff_cont (11250 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(20 - R(diff_cont (8610 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(21 - R(diff_cont (5970 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(22 - R(diff_cont (3330 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) + R(metal2_lbl (-1 2799) (2 2)) ) + N(5) + N(6) + N(7) + N(8) + N(9) + N(10) + N(11) + N(12) + N(13) + N(14) + N(15) + N(16) + N(17) + N(18) + N(19) + N(20) + N(21) + N(22) P(1 I(FB)) P(2 I(OSC)) P(3 I(VSS)) diff --git a/testdata/algo/l2n_writer_au_s.txt b/testdata/algo/l2n_writer_au_s.txt index 5d9d02240..fe2768a0d 100644 --- a/testdata/algo/l2n_writer_au_s.txt +++ b/testdata/algo/l2n_writer_au_s.txt @@ -187,259 +187,41 @@ X(INV2 X(RINGO R((-1720 -800) (26880 4600)) N(1 I(FB) - R(diff_cont (22850 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(metal1 (-24770 1310) (360 360)) + R(metal1 (-1700 1620) (360 360)) R(via1 (-305 -305) (250 250)) R(via1 (24230 -250) (250 250)) R(metal2 (-24805 -325) (24880 400)) R(metal2_lbl (-23161 -201) (2 2)) ) N(2 I(OSC) - R(diff_cont (24450 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(via1 (-235 1765) (250 250)) + R(via1 (24435 1675) (250 250)) R(metal2 (-325 -325) (400 400)) R(metal2_lbl (-201 -201) (2 2)) ) N(3 I(VSS) - R(diff_cont (2530 -310) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (5060 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(metal1 (-21410 -290) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (4920 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal2_lbl (-23941 -381) (2 2)) + R(metal2_lbl (-1 -1) (2 2)) ) N(4 I(VDD) - R(diff_cont (2530 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-2860 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (5060 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (2420 -220) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -220) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(metal1 (-21410 -290) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (-3000 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (4920 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal1 (2280 -760) (360 760)) - R(metal1 (-360 -760) (360 760)) - R(metal2_lbl (-23941 -381) (2 2)) - ) - N(5 - R(diff_cont (20210 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(6 - R(diff_cont (17570 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(7 - R(diff_cont (14930 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(8 - R(diff_cont (12290 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(9 - R(diff_cont (9650 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(10 - R(diff_cont (7010 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(11 - R(diff_cont (4370 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(12 - R(diff_cont (1730 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(13 - R(diff_cont (-910 2490) (220 220)) - R(diff_cont (-220 180) (220 220)) - R(diff_cont (-220 -3420) (220 220)) - R(diff_cont (-220 180) (220 220)) - ) - N(14 - R(diff_cont (690 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(15 - R(diff_cont (21810 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(16 - R(diff_cont (19170 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(17 - R(diff_cont (16530 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(18 - R(diff_cont (13890 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(19 - R(diff_cont (11250 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(20 - R(diff_cont (8610 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(21 - R(diff_cont (5970 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) - ) - N(22 - R(diff_cont (3330 2890) (220 220)) - R(diff_cont (-220 -620) (220 220)) - R(diff_cont (-220 -2620) (220 220)) - R(diff_cont (-220 -620) (220 220)) + R(metal2_lbl (-1 2799) (2 2)) ) + N(5) + N(6) + N(7) + N(8) + N(9) + N(10) + N(11) + N(12) + N(13) + N(14) + N(15) + N(16) + N(17) + N(18) + N(19) + N(20) + N(21) + N(22) P(1 I(FB)) P(2 I(OSC)) P(3 I(VSS)) diff --git a/testdata/algo/lvs_test1_au.lvsdb.1 b/testdata/algo/lvs_test1_au.lvsdb.1 index add09797d..a16b88d6d 100644 --- a/testdata/algo/lvs_test1_au.lvsdb.1 +++ b/testdata/algo/lvs_test1_au.lvsdb.1 @@ -267,87 +267,11 @@ layout( # Nets with their geometries net(1 name(BULK)) - net(2 - rect(diff_cont (4230 3290) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(metal1 (2350 -1490) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - ) - net(3 - rect(diff_cont (4230 890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(metal1 (2350 -290) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - ) - net(4 - rect(diff_cont (790 890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) + net(2) + net(3) + net(4) net(5) - net(6 - rect(diff_cont (3430 890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) + net(6) net(7) # Outgoing pins and their connections to nets @@ -385,131 +309,19 @@ layout( # Nets with their geometries net(1 name(FB) - rect(diff_cont (20210 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(metal1 (-22130 -2290) (360 360)) + rect(metal1 (-1700 1620) (360 360)) rect(via1 (-305 -305) (250 250)) rect(via1 (23190 -250) (250 250)) rect(metal2 (-23765 -325) (23840 400)) rect(metal2_lbl (-22121 -201) (2 2)) ) net(2 name(OSC) - rect(diff_cont (22850 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(via1 (1365 -2235) (250 250)) + rect(via1 (24435 1675) (250 250)) rect(metal2 (-325 -325) (400 400)) rect(metal2_lbl (-201 -201) (2 2)) ) net(3 name(VDD) - rect(diff_cont (7810 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (12980 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (7700 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (7700 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(metal1 (-21410 -10) (360 1120)) + rect(metal1 (-180 3900) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) @@ -519,110 +331,10 @@ layout( rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) - rect(metal1 (-16200 -2600) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (12840 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal2_lbl (-21301 -1181) (2 2)) + rect(metal2_lbl (-23941 -2221) (2 2)) ) net(4 name(VSS) - rect(diff_cont (7810 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (12980 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (7700 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (7700 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(metal1 (-21410 -1330) (360 1120)) + rect(metal1 (-180 -2220) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) @@ -632,172 +344,16 @@ layout( rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) - rect(metal1 (-16200 -80) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (12840 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal2_lbl (-21301 -381) (2 2)) - ) - net(5 - rect(diff_cont (14930 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(6 - rect(diff_cont (9650 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(7 - rect(diff_cont (4370 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(8 - rect(diff_cont (-910 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(9 - rect(diff_cont (1730 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(10 - rect(diff_cont (17570 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(11 - rect(diff_cont (12290 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(12 - rect(diff_cont (7010 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) + rect(metal2_lbl (-23941 1099) (2 2)) ) + net(5) + net(6) + net(7) + net(8) + net(9) + net(10) + net(11) + net(12) # Outgoing pins and their connections to nets pin(1 name(FB)) diff --git a/testdata/algo/lvs_test1b_au.lvsdb.1 b/testdata/algo/lvs_test1b_au.lvsdb.1 index 460cae8e7..83dedd5e2 100644 --- a/testdata/algo/lvs_test1b_au.lvsdb.1 +++ b/testdata/algo/lvs_test1b_au.lvsdb.1 @@ -267,87 +267,11 @@ layout( # Nets with their geometries net(1 name(BULK)) - net(2 - rect(diff_cont (4230 3290) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(metal1 (2350 -1490) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - ) - net(3 - rect(diff_cont (4230 890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(metal1 (2350 -290) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - ) - net(4 - rect(diff_cont (790 890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) + net(2) + net(3) + net(4) net(5) - net(6 - rect(diff_cont (3430 890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) + net(6) net(7) # Outgoing pins and their connections to nets @@ -385,131 +309,19 @@ layout( # Nets with their geometries net(1 name(FB) - rect(diff_cont (20210 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(metal1 (-22130 -2290) (360 360)) + rect(metal1 (-1700 1620) (360 360)) rect(via1 (-305 -305) (250 250)) rect(via1 (23190 -250) (250 250)) rect(metal2 (-23765 -325) (23840 400)) rect(metal2_lbl (-22121 -201) (2 2)) ) net(2 name(OSC) - rect(diff_cont (22850 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(via1 (1365 -2235) (250 250)) + rect(via1 (24435 1675) (250 250)) rect(metal2 (-325 -325) (400 400)) rect(metal2_lbl (-201 -201) (2 2)) ) net(3 name(VDD) - rect(diff_cont (7810 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (12980 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (7700 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (7700 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(metal1 (-21410 -10) (360 1120)) + rect(metal1 (-180 3900) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) @@ -519,110 +331,10 @@ layout( rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) - rect(metal1 (-16200 -2600) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (12840 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal2_lbl (-21301 -1181) (2 2)) + rect(metal2_lbl (-23941 -2221) (2 2)) ) net(4 name(VSS) - rect(diff_cont (7810 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (12980 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (7700 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (7700 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(metal1 (-21410 -1330) (360 1120)) + rect(metal1 (-180 -2220) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) @@ -632,172 +344,16 @@ layout( rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) - rect(metal1 (-16200 -80) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (12840 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal2_lbl (-21301 -381) (2 2)) - ) - net(5 - rect(diff_cont (14930 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(6 - rect(diff_cont (9650 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(7 - rect(diff_cont (4370 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(8 - rect(diff_cont (-910 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(9 - rect(diff_cont (1730 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(10 - rect(diff_cont (17570 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(11 - rect(diff_cont (12290 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(12 - rect(diff_cont (7010 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) + rect(metal2_lbl (-23941 1099) (2 2)) ) + net(5) + net(6) + net(7) + net(8) + net(9) + net(10) + net(11) + net(12) # Outgoing pins and their connections to nets pin(1 name(FB)) diff --git a/testdata/algo/lvs_test2_au.lvsdb.1 b/testdata/algo/lvs_test2_au.lvsdb.1 index 7c95c540f..017e27c7e 100644 --- a/testdata/algo/lvs_test2_au.lvsdb.1 +++ b/testdata/algo/lvs_test2_au.lvsdb.1 @@ -267,87 +267,11 @@ layout( # Nets with their geometries net(1 name(BULK)) - net(2 - rect(diff_cont (4230 3290) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(metal1 (2350 -1490) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - ) - net(3 - rect(diff_cont (4230 890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(metal1 (2350 -290) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - ) - net(4 - rect(diff_cont (790 890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) + net(2) + net(3) + net(4) net(5) - net(6 - rect(diff_cont (3430 890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) + net(6) net(7) # Outgoing pins and their connections to nets @@ -385,131 +309,19 @@ layout( # Nets with their geometries net(1 name(FB) - rect(diff_cont (20210 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(metal1 (-22130 -2290) (360 360)) + rect(metal1 (-1700 1620) (360 360)) rect(via1 (-305 -305) (250 250)) rect(via1 (23190 -250) (250 250)) rect(metal2 (-23765 -325) (23840 400)) rect(metal2_lbl (-22121 -201) (2 2)) ) net(2 name(OSC) - rect(diff_cont (22850 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(via1 (1365 -2235) (250 250)) + rect(via1 (24435 1675) (250 250)) rect(metal2 (-325 -325) (400 400)) rect(metal2_lbl (-201 -201) (2 2)) ) net(3 name(VDD) - rect(diff_cont (7810 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (12980 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (7700 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (7700 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(metal1 (-21410 -10) (360 1120)) + rect(metal1 (-180 3900) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) @@ -519,110 +331,10 @@ layout( rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) - rect(metal1 (-16200 -2600) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (12840 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal2_lbl (-21301 -1181) (2 2)) + rect(metal2_lbl (-23941 -2221) (2 2)) ) net(4 name(VSS) - rect(diff_cont (7810 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (12980 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (7700 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (7700 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(metal1 (-21410 -1330) (360 1120)) + rect(metal1 (-180 -2220) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) @@ -632,172 +344,16 @@ layout( rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) - rect(metal1 (-16200 -80) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (12840 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal2_lbl (-21301 -381) (2 2)) - ) - net(5 - rect(diff_cont (14930 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(6 - rect(diff_cont (9650 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(7 - rect(diff_cont (4370 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(8 - rect(diff_cont (-910 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(9 - rect(diff_cont (1730 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(10 - rect(diff_cont (17570 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(11 - rect(diff_cont (12290 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(12 - rect(diff_cont (7010 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) + rect(metal2_lbl (-23941 1099) (2 2)) ) + net(5) + net(6) + net(7) + net(8) + net(9) + net(10) + net(11) + net(12) # Outgoing pins and their connections to nets pin(1 name(FB)) diff --git a/testdata/algo/lvs_test2b_au.lvsdb.1 b/testdata/algo/lvs_test2b_au.lvsdb.1 index 4fe56ed6c..4040bfa7e 100644 --- a/testdata/algo/lvs_test2b_au.lvsdb.1 +++ b/testdata/algo/lvs_test2b_au.lvsdb.1 @@ -267,87 +267,11 @@ layout( # Nets with their geometries net(1 name(BULK)) - net(2 - rect(diff_cont (4230 3290) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(metal1 (2350 -1490) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - ) - net(3 - rect(diff_cont (4230 890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(metal1 (2350 -290) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - ) - net(4 - rect(diff_cont (790 890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) + net(2) + net(3) + net(4) net(5) - net(6 - rect(diff_cont (3430 890) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) + net(6) net(7) # Outgoing pins and their connections to nets @@ -385,131 +309,19 @@ layout( # Nets with their geometries net(1 name(FB) - rect(diff_cont (20210 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(metal1 (-22130 -2290) (360 360)) + rect(metal1 (-1700 1620) (360 360)) rect(via1 (-305 -305) (250 250)) rect(via1 (23190 -250) (250 250)) rect(metal2 (-23765 -325) (23840 400)) rect(metal2_lbl (-22121 -201) (2 2)) ) net(2 name(OSC) - rect(diff_cont (22850 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(via1 (1365 -2235) (250 250)) + rect(via1 (24435 1675) (250 250)) rect(metal2 (-325 -325) (400 400)) rect(metal2_lbl (-201 -201) (2 2)) ) net(3 name(VDD) - rect(diff_cont (7810 2490) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (12980 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (7700 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (7700 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-2860 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -1420) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(metal1 (-21410 -10) (360 1120)) + rect(metal1 (-180 3900) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) @@ -519,110 +331,10 @@ layout( rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) - rect(metal1 (-16200 -2600) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (12840 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal2_lbl (-21301 -1181) (2 2)) + rect(metal2_lbl (-23941 -2221) (2 2)) ) net(4 name(VSS) - rect(diff_cont (7810 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (12980 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (7700 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (7700 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-2860 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 980) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(metal1 (-21410 -1330) (360 1120)) + rect(metal1 (-180 -2220) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) @@ -632,172 +344,16 @@ layout( rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) rect(metal1 (2280 -1120) (360 1120)) - rect(metal1 (-16200 -80) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (12840 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (7560 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal1 (-3000 -1560) (360 1560)) - rect(metal1 (-360 -1560) (360 1560)) - rect(metal2_lbl (-21301 -381) (2 2)) - ) - net(5 - rect(diff_cont (14930 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(6 - rect(diff_cont (9650 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(7 - rect(diff_cont (4370 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(8 - rect(diff_cont (-910 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(9 - rect(diff_cont (1730 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(10 - rect(diff_cont (17570 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(11 - rect(diff_cont (12290 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - ) - net(12 - rect(diff_cont (7010 90) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (1380 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 -3820) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-220 -620) (220 220)) - rect(diff_cont (-1820 3380) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) - rect(diff_cont (-220 180) (220 220)) + rect(metal2_lbl (-23941 1099) (2 2)) ) + net(5) + net(6) + net(7) + net(8) + net(9) + net(10) + net(11) + net(12) # Outgoing pins and their connections to nets pin(1 name(FB)) diff --git a/testdata/algo/meander.gds.gz b/testdata/algo/meander.gds.gz new file mode 100644 index 000000000..473c9f930 Binary files /dev/null and b/testdata/algo/meander.gds.gz differ diff --git a/testdata/lvs/floating.lvsdb b/testdata/lvs/floating.lvsdb index abb305d27..8dddf3ead 100644 --- a/testdata/lvs/floating.lvsdb +++ b/testdata/lvs/floating.lvsdb @@ -170,32 +170,22 @@ layout( # Nets with their geometries net(1 name('A<1>') - rect(l8 (510 3010) (180 180)) - rect(l11 (-91 -91) (2 2)) + rect(l11 (599 3099) (2 2)) ) net(2 name('A<2>') - rect(l8 (2310 3010) (180 180)) - rect(l11 (-91 -91) (2 2)) + rect(l11 (2399 3099) (2 2)) ) net(3 name('B<2>') rect(l11 (2999 3999) (2 2)) - rect(l2 (-226 1049) (425 1500)) - rect(l6 (-425 -4890) (425 950)) ) net(4 name('B<1>') rect(l11 (1199 3999) (2 2)) - rect(l2 (-226 1049) (425 1500)) - rect(l6 (-425 -4890) (425 950)) ) net(5 name(VDD) rect(l11 (1799 7199) (2 2)) - rect(l2 (299 -2151) (425 1500)) - rect(l2 (-2225 -1500) (425 1500)) ) net(6 name(VSS) rect(l11 (1799 799) (2 2)) - rect(l6 (299 859) (425 950)) - rect(l6 (-2225 -950) (425 950)) ) # Outgoing pins and their connections to nets @@ -227,33 +217,17 @@ layout( # Nets with their geometries net(1 - rect(l8 (4110 3010) (180 180)) - rect(l11 (-1190 -240) (950 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (3100 2950) (950 300)) ) net(2 name(A) - rect(l8 (510 3010) (180 180)) - rect(l11 (-91 -91) (2 2)) + rect(l11 (599 3099) (2 2)) ) net(3 name(C) - rect(l8 (2310 3010) (180 180)) - rect(l11 (-91 -91) (2 2)) - ) - net(4 name(SUBSTRATE) - rect(l6 (3900 1660) (425 950)) - rect(l6 (-2225 -950) (425 950)) - rect(l6 (-2225 -950) (425 950)) - ) - net(5 - rect(l2 (4575 5050) (425 1500)) - rect(l6 (-425 -4890) (425 950)) - ) - net(6 - rect(l2 (3900 5050) (425 1500)) - rect(l2 (-2225 -1500) (425 1500)) - rect(l2 (-2225 -1500) (425 1500)) + rect(l11 (2399 3099) (2 2)) ) + net(4 name(SUBSTRATE)) + net(5) + net(6) # Outgoing pins and their connections to nets pin(2 name(A)) diff --git a/testdata/lvs/invchain_cheat.lvsdb b/testdata/lvs/invchain_cheat.lvsdb index 5b854ca93..a661487b5 100644 --- a/testdata/lvs/invchain_cheat.lvsdb +++ b/testdata/lvs/invchain_cheat.lvsdb @@ -116,36 +116,12 @@ J( ) X(INV2 R((0 0) (5500 4600)) - N(1 - R(l6 (1790 490) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-220 2180) (220 220)) - R(l6 (-220 180) (220 220)) - ) - N(2 - R(l6 (3490 490) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-220 2180) (220 220)) - R(l6 (-220 180) (220 220)) - ) + N(1) + N(2) N(3) N(4) - N(5 - R(l6 (990 3290) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (3080 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l8 (-3590 -690) (360 760)) - R(l8 (2940 -760) (360 760)) - ) - N(6 - R(l6 (990 490) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (3080 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l8 (-3590 -690) (360 760)) - R(l8 (2940 -760) (360 760)) - ) + N(5) + N(6) P(1) P(2) P(3) @@ -177,48 +153,16 @@ J( R(l11 (4829 1889) (2 2)) ) N(4 I('4') - R(l6 (990 490) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-220 2180) (220 220)) - R(l6 (-220 180) (220 220)) - R(l12 (-121 -1941) (2 2)) + R(l12 (1089 1969) (2 2)) ) N(5 I('6') - R(l6 (2590 490) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-220 2180) (220 220)) - R(l6 (-220 180) (220 220)) - R(l12 (-131 -1971) (2 2)) + R(l12 (2679 1939) (2 2)) ) N(6 I('8') - R(l6 (4290 490) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-220 2180) (220 220)) - R(l6 (-220 180) (220 220)) - R(l12 (-101 -1991) (2 2)) - ) - N(7 - R(l6 (1790 3290) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-220 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (3080 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l8 (-3590 -690) (360 760)) - R(l8 (-360 -760) (360 760)) - R(l8 (2940 -760) (360 760)) - ) - N(8 - R(l6 (1790 490) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-220 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (3080 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l8 (-3590 -690) (360 760)) - R(l8 (-360 -760) (360 760)) - R(l8 (2940 -760) (360 760)) + R(l12 (4409 1919) (2 2)) ) + N(7) + N(8) P(1 I('3')) P(2 I('5')) P(3 I('7')) @@ -254,99 +198,39 @@ J( ) N(2 R(l3 (445 805) (480 550)) - R(l6 (-1435 -1665) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-220 2180) (220 220)) - R(l6 (-220 180) (220 220)) - R(l7 (780 -2120) (220 220)) + R(l7 (-435 -365) (220 220)) R(l8 (-1065 -285) (1105 350)) ) N(3 R(l3 (1345 925) (1945 350)) - R(l6 (-2200 -1585) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-220 2180) (220 220)) - R(l6 (-220 180) (220 220)) - R(l7 (95 -2120) (220 220)) + R(l7 (-1885 -285) (220 220)) R(l8 (-295 -370) (440 520)) ) N(4 R(l3 (3745 805) (480 550)) - R(l6 (-1435 -1665) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-220 2180) (220 220)) - R(l6 (-220 180) (220 220)) - R(l7 (780 -2120) (220 220)) + R(l7 (-435 -365) (220 220)) R(l8 (-1065 -285) (1105 350)) ) N(5 R(l3 (4645 925) (1945 350)) - R(l6 (-2200 -1585) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-220 2180) (220 220)) - R(l6 (-220 180) (220 220)) - R(l7 (95 -2120) (220 220)) + R(l7 (-1885 -285) (220 220)) R(l8 (-295 -370) (440 520)) ) N(6 R(l3 (7045 805) (480 550)) - R(l6 (-1435 -1665) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-220 2180) (220 220)) - R(l6 (-220 180) (220 220)) - R(l7 (780 -2120) (220 220)) + R(l7 (-435 -365) (220 220)) R(l8 (-1065 -285) (1105 350)) ) N(7 I(OUT) - R(l6 (7690 -310) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-220 2180) (220 220)) - R(l6 (-220 180) (220 220)) - R(l12 (-121 -2011) (2 2)) + R(l12 (7789 1099) (2 2)) ) N(8 I(VSS) - R(l6 (6890 -310) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-3520 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (3080 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-6820 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-220 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (3080 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l8 (3010 -690) (360 760)) - R(l8 (-3660 -760) (360 760)) - R(l8 (2940 -760) (360 760)) - R(l8 (-6960 -760) (360 760)) - R(l8 (-360 -760) (360 760)) - R(l8 (2940 -760) (360 760)) - R(l13 (2719 -381) (2 2)) + R(l13 (6599 -1) (2 2)) R(l13 (-3302 -2) (2 2)) R(l13 (-3302 -2) (2 2)) ) N(9 I(VDD) - R(l6 (6890 2490) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-3520 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (3080 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-6820 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (-220 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l6 (3080 -620) (220 220)) - R(l6 (-220 180) (220 220)) - R(l8 (3010 -690) (360 760)) - R(l8 (-3660 -760) (360 760)) - R(l8 (2940 -760) (360 760)) - R(l8 (-6960 -760) (360 760)) - R(l8 (-360 -760) (360 760)) - R(l8 (2940 -760) (360 760)) - R(l13 (-581 -381) (2 2)) + R(l13 (3299 2799) (2 2)) R(l13 (3298 -2) (2 2)) R(l13 (-6602 -2) (2 2)) ) diff --git a/testdata/lvs/ringo_layout_var.lvsdb.1 b/testdata/lvs/ringo_layout_var.lvsdb.1 index 35a52028c..167b0044a 100644 --- a/testdata/lvs/ringo_layout_var.lvsdb.1 +++ b/testdata/lvs/ringo_layout_var.lvsdb.1 @@ -449,70 +449,37 @@ layout( # Nets with their geometries net(1 - rect(l8 (4710 3010) (180 180)) - rect(l11 (-850 -240) (610 300)) - rect(l2 (-2550 1800) (425 1500)) - rect(l2 (950 -1500) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (4040 2950) (610 300)) ) net(2 - rect(l8 (6510 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (5550 2950) (900 300)) ) net(3 - rect(l8 (8310 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (7350 2950) (900 300)) ) net(4 - rect(l8 (10110 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (9150 2950) (900 300)) ) net(5 - rect(l8 (11910 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (10950 2950) (900 300)) ) net(6 - rect(l8 (13710 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (12750 2950) (900 300)) ) net(7 - rect(l8 (15510 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (14550 2950) (900 300)) ) net(8 - rect(l8 (17310 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (16350 2950) (900 300)) ) net(9 - rect(l8 (19110 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (18150 2950) (900 300)) ) net(10 - rect(l8 (20910 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (19950 2950) (900 300)) ) net(11 name(FB) - rect(l8 (22710 3010) (180 180)) - rect(l8 (-19700 720) (180 180)) - rect(l11 (18380 -1140) (900 300)) + rect(l11 (21750 2950) (900 300)) rect(l11 (-19530 590) (320 320)) rect(l11 (17820 -320) (320 320)) rect(l12 (-18400 -260) (200 200)) @@ -521,8 +488,6 @@ layout( rect(l13 (-17921 -201) (2 2)) rect(l13 (-221 -201) (400 400)) rect(l13 (17740 -400) (400 400)) - rect(l2 (-245 850) (425 1500)) - rect(l6 (-425 -4890) (425 950)) ) net(12 name(VDD) rect(l3 (500 4500) (1400 3500)) @@ -544,20 +509,7 @@ layout( rect(l11 (-750 -1450) (300 1400)) rect(l11 (-101 -351) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l2 (-23025 -2550) (425 1500)) - rect(l2 (-400 -1500) (425 1500)) - rect(l2 (1275 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (3175 -1500) (425 1500)) - rect(l2 (-2225 -1500) (425 1500)) - rect(l9 (-20175 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(13 name(OUT) @@ -565,12 +517,9 @@ layout( rect(l12 (-260 -260) (200 200)) rect(l13 (-101 -101) (2 2)) rect(l13 (-201 -201) (400 400)) - rect(l2 (-625 850) (425 1500)) - rect(l6 (-425 -4890) (425 950)) ) net(14 name(ENABLE) - rect(l8 (2510 3010) (180 180)) - rect(l11 (-250 -250) (320 320)) + rect(l11 (2440 2940) (320 320)) rect(l12 (-260 -260) (200 200)) rect(l13 (-101 -101) (2 2)) rect(l13 (-201 -201) (400 400)) @@ -591,19 +540,7 @@ layout( rect(l11 (-750 -1450) (1200 800)) rect(l11 (-551 -401) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l6 (-23700 460) (425 950)) - rect(l6 (1975 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (3175 -950) (425 950)) - rect(l6 (-2225 -950) (425 950)) - rect(l10 (-20175 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_layout_var.lvsdb.2 b/testdata/lvs/ringo_layout_var.lvsdb.2 deleted file mode 100644 index f7ed4588d..000000000 --- a/testdata/lvs/ringo_layout_var.lvsdb.2 +++ /dev/null @@ -1,1076 +0,0 @@ -#%lvsdb-klayout - -# Layout -layout( - top(RINGO) - unit(0.001) - - # Layer section - # This section lists the mask layers (drawing or derived) and their connections. - - # Mask layers - layer(l3 '1/0') - layer(l4 '5/0') - layer(l8 '8/0') - layer(l11 '9/0') - layer(l12 '10/0') - layer(l13 '11/0') - layer(l7) - layer(l2) - layer(l9) - layer(l6) - layer(l10) - - # Mask layer connectivity - connect(l3 l3 l9) - connect(l4 l4 l8) - connect(l8 l4 l8 l11 l2 l9 l6 l10) - connect(l11 l8 l11 l12) - connect(l12 l11 l12 l13) - connect(l13 l12 l13) - connect(l7 l7) - connect(l2 l8 l2) - connect(l9 l3 l8 l9) - connect(l6 l8 l6) - connect(l10 l8 l10) - - # Global nets and connectivity - global(l7 SUBSTRATE) - global(l10 SUBSTRATE) - - # Device class section - class(PMOS MOS4) - class(NMOS MOS4) - - # Device abstracts section - # Device abstracts list the pin shapes of the devices. - device(D$PMOS PMOS - terminal(S - rect(l2 (-550 -750) (425 1500)) - ) - terminal(G - rect(l4 (-125 -750) (250 1500)) - ) - terminal(D - rect(l2 (125 -750) (450 1500)) - ) - terminal(B - rect(l3 (-125 -750) (250 1500)) - ) - ) - device(D$PMOS$1 PMOS - terminal(S - rect(l2 (-575 -750) (450 1500)) - ) - terminal(G - rect(l4 (-125 -750) (250 1500)) - ) - terminal(D - rect(l2 (125 -750) (425 1500)) - ) - terminal(B - rect(l3 (-125 -750) (250 1500)) - ) - ) - device(D$PMOS$2 PMOS - terminal(S - rect(l2 (-550 -750) (425 1500)) - ) - terminal(G - rect(l4 (-125 -750) (250 1500)) - ) - terminal(D - rect(l2 (125 -750) (425 1500)) - ) - terminal(B - rect(l3 (-125 -750) (250 1500)) - ) - ) - device(D$NMOS NMOS - terminal(S - rect(l6 (-550 -475) (425 950)) - ) - terminal(G - rect(l4 (-125 -475) (250 950)) - ) - terminal(D - rect(l6 (125 -475) (450 950)) - ) - terminal(B - rect(l7 (-125 -475) (250 950)) - ) - ) - device(D$NMOS$1 NMOS - terminal(S - rect(l6 (-575 -475) (450 950)) - ) - terminal(G - rect(l4 (-125 -475) (250 950)) - ) - terminal(D - rect(l6 (125 -475) (425 950)) - ) - terminal(B - rect(l7 (-125 -475) (250 950)) - ) - ) - device(D$NMOS$2 NMOS - terminal(S - rect(l6 (-550 -475) (425 950)) - ) - terminal(G - rect(l4 (-125 -475) (250 950)) - ) - terminal(D - rect(l6 (125 -475) (425 950)) - ) - terminal(B - rect(l7 (-125 -475) (250 950)) - ) - ) - - # Circuit section - # Circuits are the hierarchical building blocks of the netlist. - circuit(ND2X1 - - # Circuit boundary - rect((-100 400) (2600 7600)) - - # Nets with their geometries - net(1 name(VDD) - rect(l8 (1110 5160) (180 180)) - rect(l8 (-180 920) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l11 (-240 -790) (300 1700)) - rect(l11 (-1350 0) (2400 800)) - rect(l11 (-1151 -401) (2 2)) - rect(l2 (-276 -2151) (425 1500)) - rect(l2 (-400 -1500) (425 1500)) - ) - net(2 name(OUT) - rect(l8 (1810 1770) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l8 (-1580 3760) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l8 (1220 920) (180 180)) - rect(l8 (-180 -1280) (180 180)) - rect(l8 (-180 370) (180 180)) - polygon(l11 (-240 -4180) (0 1390) (490 0) (0 -300) (-190 0) (0 -1090)) - rect(l11 (-110 1390) (300 1400)) - polygon(l11 (-1890 0) (0 600) (300 0) (0 -300) (1590 0) (0 -300)) - rect(l11 (-141 -501) (2 2)) - rect(l11 (-1751 1099) (300 1400)) - rect(l11 (1100 -1700) (300 300)) - rect(l11 (-300 0) (300 1400)) - rect(l2 (-375 -1450) (425 1500)) - rect(l2 (-1800 -1500) (425 1500)) - rect(l6 (950 -4890) (425 950)) - ) - net(3 name(VSS) - rect(l8 (410 1770) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l11 (-240 -1300) (300 1360)) - rect(l11 (-650 -2160) (2400 800)) - rect(l11 (-1151 -401) (2 2)) - rect(l6 (-951 859) (425 950)) - ) - net(4 - rect(l3 (-100 4500) (2600 3500)) - ) - net(5 name(B) - rect(l4 (1425 2860) (250 1940)) - rect(l4 (-345 -950) (300 300)) - rect(l4 (-205 650) (250 2000)) - rect(l4 (-250 -2000) (250 2000)) - rect(l4 (-250 -5390) (250 1450)) - rect(l8 (-285 1050) (180 180)) - rect(l11 (-71 -91) (2 2)) - rect(l11 (-171 -151) (300 300)) - ) - net(6 name(A) - rect(l4 (725 2860) (250 1940)) - rect(l4 (-325 -1850) (300 300)) - rect(l4 (-225 1550) (250 2000)) - rect(l4 (-250 -2000) (250 2000)) - rect(l4 (-250 -5390) (250 1450)) - rect(l8 (-265 150) (180 180)) - rect(l11 (-91 -91) (2 2)) - rect(l11 (-151 -151) (300 300)) - ) - net(7 name(SUBSTRATE)) - net(8 - rect(l6 (975 1660) (425 950)) - rect(l6 (-400 -950) (425 950)) - ) - - # Outgoing pins and their connections to nets - pin(1 name(VDD)) - pin(2 name(OUT)) - pin(3 name(VSS)) - pin(4) - pin(5 name(B)) - pin(6 name(A)) - pin(7 name(SUBSTRATE)) - - # Devices and their connections - device(1 D$PMOS - location(850 5800) - param(L 0.25) - param(W 1.5) - param(AS 0.6375) - param(AD 0.3375) - param(PS 3.85) - param(PD 1.95) - terminal(S 2) - terminal(G 6) - terminal(D 1) - terminal(B 4) - ) - device(2 D$PMOS$1 - location(1550 5800) - param(L 0.25) - param(W 1.5) - param(AS 0.3375) - param(AD 0.6375) - param(PS 1.95) - param(PD 3.85) - terminal(S 1) - terminal(G 5) - terminal(D 2) - terminal(B 4) - ) - device(3 D$NMOS - location(850 2135) - param(L 0.25) - param(W 0.95) - param(AS 0.40375) - param(AD 0.21375) - param(PS 2.75) - param(PD 1.4) - terminal(S 3) - terminal(G 6) - terminal(D 8) - terminal(B 7) - ) - device(4 D$NMOS$1 - location(1550 2135) - param(L 0.25) - param(W 0.95) - param(AS 0.21375) - param(AD 0.40375) - param(PS 1.4) - param(PD 2.75) - terminal(S 8) - terminal(G 5) - terminal(D 2) - terminal(B 7) - ) - - ) - circuit(INVX1 - - # Circuit boundary - rect((-100 400) (2000 7600)) - - # Nets with their geometries - net(1 name(VDD) - rect(l8 (410 6260) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l11 (-240 -240) (300 1400)) - rect(l11 (-650 300) (1800 800)) - rect(l11 (-1450 -1100) (300 300)) - rect(l11 (299 399) (2 2)) - rect(l2 (-651 -2151) (425 1500)) - ) - net(2 name(OUT) - rect(l8 (1110 5160) (180 180)) - rect(l8 (-180 920) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l8 (-180 -4120) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l11 (-240 -790) (300 4790)) - rect(l11 (-151 -2501) (2 2)) - rect(l2 (-226 1049) (425 1500)) - rect(l6 (-425 -4890) (425 950)) - ) - net(3 name(VSS) - rect(l8 (410 1770) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l11 (-240 -1300) (300 1360)) - rect(l11 (-650 -2160) (1800 800)) - rect(l11 (-851 -401) (2 2)) - rect(l6 (-651 859) (425 950)) - ) - net(4 - rect(l3 (-100 4500) (2000 3500)) - ) - net(5 name(IN) - rect(l4 (725 2860) (250 1940)) - rect(l4 (-525 -1850) (300 300)) - rect(l4 (-25 1550) (250 2000)) - rect(l4 (-250 -2000) (250 2000)) - rect(l4 (-250 -5390) (250 1450)) - rect(l8 (-465 150) (180 180)) - rect(l11 (-91 -91) (2 2)) - rect(l11 (-151 -151) (300 300)) - ) - net(6 name(SUBSTRATE)) - - # Outgoing pins and their connections to nets - pin(1 name(VDD)) - pin(2 name(OUT)) - pin(3 name(VSS)) - pin(4) - pin(5 name(IN)) - pin(6 name(SUBSTRATE)) - - # Devices and their connections - device(1 D$PMOS$2 - location(850 5800) - param(L 0.25) - param(W 1.5) - param(AS 0.6375) - param(AD 0.6375) - param(PS 3.85) - param(PD 3.85) - terminal(S 1) - terminal(G 5) - terminal(D 2) - terminal(B 4) - ) - device(2 D$NMOS$2 - location(850 2135) - param(L 0.25) - param(W 0.95) - param(AS 0.40375) - param(AD 0.40375) - param(PS 2.75) - param(PD 2.75) - terminal(S 3) - terminal(G 5) - terminal(D 2) - terminal(B 6) - ) - - ) - circuit(INVX1B - - # Circuit boundary - rect((-100 400) (2000 7600)) - - # Nets with their geometries - net(1 name(VDD) - rect(l8 (410 6260) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l11 (-240 -240) (300 1400)) - rect(l11 (-650 300) (1800 800)) - rect(l11 (-1450 -1100) (300 300)) - rect(l11 (299 399) (2 2)) - rect(l2 (-651 -2151) (425 1500)) - ) - net(2 name(OUT) - rect(l8 (1110 5160) (180 180)) - rect(l8 (-180 920) (180 180)) - rect(l8 (-180 -730) (180 180)) - rect(l8 (-180 -4120) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l11 (-240 -790) (300 4790)) - rect(l11 (-151 -2501) (2 2)) - rect(l2 (-226 1049) (425 1500)) - rect(l6 (-425 -4890) (425 950)) - ) - net(3 name(VSS) - rect(l8 (410 1770) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l11 (-240 -1300) (300 1360)) - rect(l11 (-650 -2160) (1800 800)) - rect(l11 (-851 -401) (2 2)) - rect(l6 (-651 859) (425 950)) - ) - net(4 - rect(l3 (-100 4500) (2000 3500)) - ) - net(5 name(IN) - rect(l4 (725 2860) (250 1940)) - rect(l4 (-525 -1850) (300 300)) - rect(l4 (-25 1550) (250 2000)) - rect(l4 (-250 -2000) (250 2000)) - rect(l4 (-250 -5390) (250 1450)) - rect(l8 (-465 150) (180 180)) - rect(l11 (-91 -91) (2 2)) - rect(l11 (-151 -151) (300 300)) - ) - net(6 name(SUBSTRATE)) - - # Outgoing pins and their connections to nets - pin(1 name(VDD)) - pin(2 name(OUT)) - pin(3 name(VSS)) - pin(4) - pin(5 name(IN)) - pin(6 name(SUBSTRATE)) - - # Devices and their connections - device(1 D$PMOS$2 - location(850 5800) - param(L 0.25) - param(W 1.5) - param(AS 0.6375) - param(AD 0.6375) - param(PS 3.85) - param(PD 3.85) - terminal(S 1) - terminal(G 5) - terminal(D 2) - terminal(B 4) - ) - device(2 D$NMOS$2 - location(850 2135) - param(L 0.25) - param(W 0.95) - param(AS 0.40375) - param(AD 0.40375) - param(PS 2.75) - param(PD 2.75) - terminal(S 3) - terminal(G 5) - terminal(D 2) - terminal(B 6) - ) - - ) - circuit(RINGO - - # Circuit boundary - rect((0 350) (25800 7650)) - - # Nets with their geometries - net(1 - rect(l8 (4710 3010) (180 180)) - rect(l11 (-850 -240) (610 300)) - rect(l2 (-1175 1800) (425 1500)) - rect(l2 (-1800 -1500) (425 1500)) - rect(l6 (950 -4890) (425 950)) - ) - net(2 - rect(l8 (6510 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) - ) - net(3 - rect(l8 (8310 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) - ) - net(4 - rect(l8 (10110 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) - ) - net(5 - rect(l8 (11910 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) - ) - net(6 - rect(l8 (13710 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) - ) - net(7 - rect(l8 (15510 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) - ) - net(8 - rect(l8 (17310 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) - ) - net(9 - rect(l8 (19110 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) - ) - net(10 - rect(l8 (20910 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) - ) - net(11 name(FB) - rect(l8 (22710 3010) (180 180)) - rect(l8 (-19700 720) (180 180)) - rect(l11 (18380 -1140) (900 300)) - rect(l11 (-19530 590) (320 320)) - rect(l11 (17820 -320) (320 320)) - rect(l12 (-18400 -260) (200 200)) - rect(l12 (17940 -200) (200 200)) - rect(l13 (-18040 -300) (17740 400)) - rect(l13 (-17921 -201) (2 2)) - rect(l13 (-221 -201) (400 400)) - rect(l13 (17740 -400) (400 400)) - rect(l2 (-245 850) (425 1500)) - rect(l6 (-425 -4890) (425 950)) - ) - net(12 name(VDD) - rect(l3 (500 4500) (1400 3500)) - rect(l3 (-1900 -3500) (600 3500)) - rect(l3 (23300 -3500) (1400 3500)) - rect(l3 (-100 -3500) (600 3500)) - rect(l8 (-24690 -1240) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l8 (-180 -1280) (180 180)) - rect(l8 (23220 370) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l8 (-180 -1280) (180 180)) - rect(l11 (-21741 859) (2 2)) - rect(l11 (-2351 -451) (1200 800)) - rect(l11 (-750 -1450) (300 1400)) - rect(l11 (-101 -351) (2 2)) - rect(l11 (-1251 -401) (600 800)) - rect(l11 (23400 -800) (1200 800)) - rect(l11 (-750 -1450) (300 1400)) - rect(l11 (-101 -351) (2 2)) - rect(l11 (549 -401) (600 800)) - rect(l2 (-23025 -2550) (425 1500)) - rect(l2 (-400 -1500) (425 1500)) - rect(l2 (1275 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (3175 -1500) (425 1500)) - rect(l2 (-2225 -1500) (425 1500)) - rect(l9 (-20175 -450) (500 1500)) - rect(l9 (22900 -1500) (500 1500)) - ) - net(13 name(OUT) - rect(l11 (23440 3840) (320 320)) - rect(l12 (-260 -260) (200 200)) - rect(l13 (-101 -101) (2 2)) - rect(l13 (-201 -201) (400 400)) - rect(l2 (-625 850) (425 1500)) - rect(l6 (-425 -4890) (425 950)) - ) - net(14 name(ENABLE) - rect(l8 (2510 3010) (180 180)) - rect(l11 (-250 -250) (320 320)) - rect(l12 (-260 -260) (200 200)) - rect(l13 (-101 -101) (2 2)) - rect(l13 (-201 -201) (400 400)) - ) - net(15 name(VSS) - rect(l8 (1110 1610) (180 180)) - rect(l8 (-180 -1280) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l8 (23220 370) (180 180)) - rect(l8 (-180 -1280) (180 180)) - rect(l8 (-180 370) (180 180)) - rect(l11 (-21741 -391) (2 2)) - rect(l11 (-1901 -401) (300 1400)) - rect(l11 (-750 -1450) (1200 800)) - rect(l11 (-551 -401) (2 2)) - rect(l11 (-1251 -401) (600 800)) - rect(l11 (23850 -750) (300 1400)) - rect(l11 (-750 -1450) (1200 800)) - rect(l11 (-551 -401) (2 2)) - rect(l11 (549 -401) (600 800)) - rect(l6 (-23700 460) (425 950)) - rect(l6 (1975 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (3175 -950) (425 950)) - rect(l6 (-2225 -950) (425 950)) - rect(l10 (-20175 -2210) (500 1500)) - rect(l10 (22900 -1500) (500 1500)) - ) - - # Outgoing pins and their connections to nets - pin(11 name(FB)) - pin(12 name(VDD)) - pin(13 name(OUT)) - pin(14 name(ENABLE)) - pin(15 name(VSS)) - - # Subcircuits and their connections - circuit(1 ND2X1 location(1800 0) - pin(0 12) - pin(1 1) - pin(2 15) - pin(3 12) - pin(4 11) - pin(5 14) - pin(6 15) - ) - circuit(2 INVX1B location(4200 0) - pin(0 12) - pin(1 2) - pin(2 15) - pin(3 12) - pin(4 1) - pin(5 15) - ) - circuit(3 INVX1 location(6000 0) - pin(0 12) - pin(1 3) - pin(2 15) - pin(3 12) - pin(4 2) - pin(5 15) - ) - circuit(4 INVX1B location(7800 0) - pin(0 12) - pin(1 4) - pin(2 15) - pin(3 12) - pin(4 3) - pin(5 15) - ) - circuit(5 INVX1 location(9600 0) - pin(0 12) - pin(1 5) - pin(2 15) - pin(3 12) - pin(4 4) - pin(5 15) - ) - circuit(6 INVX1B location(11400 0) - pin(0 12) - pin(1 6) - pin(2 15) - pin(3 12) - pin(4 5) - pin(5 15) - ) - circuit(7 INVX1 location(13200 0) - pin(0 12) - pin(1 7) - pin(2 15) - pin(3 12) - pin(4 6) - pin(5 15) - ) - circuit(8 INVX1 location(15000 0) - pin(0 12) - pin(1 8) - pin(2 15) - pin(3 12) - pin(4 7) - pin(5 15) - ) - circuit(9 INVX1 location(16800 0) - pin(0 12) - pin(1 9) - pin(2 15) - pin(3 12) - pin(4 8) - pin(5 15) - ) - circuit(10 INVX1 location(18600 0) - pin(0 12) - pin(1 10) - pin(2 15) - pin(3 12) - pin(4 9) - pin(5 15) - ) - circuit(11 INVX1 location(20400 0) - pin(0 12) - pin(1 11) - pin(2 15) - pin(3 12) - pin(4 10) - pin(5 15) - ) - circuit(12 INVX1 location(22200 0) - pin(0 12) - pin(1 13) - pin(2 15) - pin(3 12) - pin(4 11) - pin(5 15) - ) - - ) -) - -# Reference netlist -reference( - - # Device class section - class(PMOS MOS4) - class(NMOS MOS4) - - # Circuit section - # Circuits are the hierarchical building blocks of the netlist. - circuit(ND2X1 - - # Nets - net(1 name(VDD)) - net(2 name(OUT)) - net(3 name(VSS)) - net(4 name(NWELL)) - net(5 name(B)) - net(6 name(A)) - net(7 name(BULK)) - net(8 name('1')) - - # Outgoing pins and their connections to nets - pin(1 name(VDD)) - pin(2 name(OUT)) - pin(3 name(VSS)) - pin(4 name(NWELL)) - pin(5 name(B)) - pin(6 name(A)) - pin(7 name(BULK)) - - # Devices and their connections - device(1 PMOS - name($1) - param(L 0.25) - param(W 1.5) - param(AS 0) - param(AD 0) - param(PS 0) - param(PD 0) - terminal(S 2) - terminal(G 6) - terminal(D 1) - terminal(B 4) - ) - device(2 PMOS - name($2) - param(L 0.25) - param(W 1.5) - param(AS 0) - param(AD 0) - param(PS 0) - param(PD 0) - terminal(S 1) - terminal(G 5) - terminal(D 2) - terminal(B 4) - ) - device(3 NMOS - name($3) - param(L 0.25) - param(W 0.95) - param(AS 0) - param(AD 0) - param(PS 0) - param(PD 0) - terminal(S 3) - terminal(G 6) - terminal(D 8) - terminal(B 7) - ) - device(4 NMOS - name($4) - param(L 0.25) - param(W 0.95) - param(AS 0) - param(AD 0) - param(PS 0) - param(PD 0) - terminal(S 8) - terminal(G 5) - terminal(D 2) - terminal(B 7) - ) - - ) - circuit(INVX1 - - # Nets - net(1 name(VDD)) - net(2 name(OUT)) - net(3 name(VSS)) - net(4 name(NWELL)) - net(5 name(IN)) - net(6 name(BULK)) - - # Outgoing pins and their connections to nets - pin(1 name(VDD)) - pin(2 name(OUT)) - pin(3 name(VSS)) - pin(4 name(NWELL)) - pin(5 name(IN)) - pin(6 name(BULK)) - - # Devices and their connections - device(1 PMOS - name($1) - param(L 0.25) - param(W 1.5) - param(AS 0) - param(AD 0) - param(PS 0) - param(PD 0) - terminal(S 1) - terminal(G 5) - terminal(D 2) - terminal(B 4) - ) - device(2 NMOS - name($2) - param(L 0.25) - param(W 0.95) - param(AS 0) - param(AD 0) - param(PS 0) - param(PD 0) - terminal(S 3) - terminal(G 5) - terminal(D 2) - terminal(B 6) - ) - - ) - circuit(RINGO - - # Nets - net(1 name(VSS)) - net(2 name(VDD)) - net(3 name(FB)) - net(4 name(ENABLE)) - net(5 name(OUT)) - net(6 name('1')) - net(7 name('2')) - net(8 name('3')) - net(9 name('4')) - net(10 name('5')) - net(11 name('6')) - net(12 name('7')) - net(13 name('8')) - net(14 name('9')) - net(15 name('10')) - - # Outgoing pins and their connections to nets - pin(1 name(VSS)) - pin(2 name(VDD)) - pin(3 name(FB)) - pin(4 name(ENABLE)) - pin(5 name(OUT)) - - # Subcircuits and their connections - circuit(1 ND2X1 name($1) - pin(0 2) - pin(1 6) - pin(2 1) - pin(3 2) - pin(4 3) - pin(5 4) - pin(6 1) - ) - circuit(2 INVX1 name($2) - pin(0 2) - pin(1 7) - pin(2 1) - pin(3 2) - pin(4 6) - pin(5 1) - ) - circuit(3 INVX1 name($3) - pin(0 2) - pin(1 8) - pin(2 1) - pin(3 2) - pin(4 7) - pin(5 1) - ) - circuit(4 INVX1 name($4) - pin(0 2) - pin(1 9) - pin(2 1) - pin(3 2) - pin(4 8) - pin(5 1) - ) - circuit(5 INVX1 name($5) - pin(0 2) - pin(1 10) - pin(2 1) - pin(3 2) - pin(4 9) - pin(5 1) - ) - circuit(6 INVX1 name($6) - pin(0 2) - pin(1 11) - pin(2 1) - pin(3 2) - pin(4 10) - pin(5 1) - ) - circuit(7 INVX1 name($7) - pin(0 2) - pin(1 12) - pin(2 1) - pin(3 2) - pin(4 11) - pin(5 1) - ) - circuit(8 INVX1 name($8) - pin(0 2) - pin(1 13) - pin(2 1) - pin(3 2) - pin(4 12) - pin(5 1) - ) - circuit(9 INVX1 name($9) - pin(0 2) - pin(1 14) - pin(2 1) - pin(3 2) - pin(4 13) - pin(5 1) - ) - circuit(10 INVX1 name($10) - pin(0 2) - pin(1 15) - pin(2 1) - pin(3 2) - pin(4 14) - pin(5 1) - ) - circuit(11 INVX1 name($11) - pin(0 2) - pin(1 3) - pin(2 1) - pin(3 2) - pin(4 15) - pin(5 1) - ) - circuit(12 INVX1 name($12) - pin(0 2) - pin(1 5) - pin(2 1) - pin(3 2) - pin(4 3) - pin(5 1) - ) - - ) -) - -# Cross reference -xref( - circuit(INVX1 INVX1 match - xref( - net(4 4 match) - net(5 5 match) - net(2 2 match) - net(6 6 match) - net(1 1 match) - net(3 3 match) - pin(3 3 match) - pin(4 4 match) - pin(1 1 match) - pin(5 5 match) - pin(0 0 match) - pin(2 2 match) - device(2 2 match) - device(1 1 match) - ) - ) - circuit(INVX1B INVX1 match - xref( - net(4 4 match) - net(5 5 match) - net(2 2 match) - net(6 6 match) - net(1 1 match) - net(3 3 match) - pin(3 3 match) - pin(4 4 match) - pin(1 1 match) - pin(5 5 match) - pin(0 0 match) - pin(2 2 match) - device(2 2 match) - device(1 1 match) - ) - ) - circuit(ND2X1 ND2X1 match - xref( - net(8 8 match) - net(4 4 match) - net(6 6 match) - net(5 5 match) - net(2 2 match) - net(7 7 match) - net(1 1 match) - net(3 3 match) - pin(3 3 match) - pin(5 5 match) - pin(4 4 match) - pin(1 1 match) - pin(6 6 match) - pin(0 0 match) - pin(2 2 match) - device(3 3 match) - device(4 4 match) - device(1 1 match) - device(2 2 match) - ) - ) - circuit(RINGO RINGO match - xref( - net(1 6 match) - net(10 15 match) - net(2 7 match) - net(3 8 match) - net(4 9 match) - net(5 10 match) - net(6 11 match) - net(7 12 match) - net(8 13 match) - net(9 14 match) - net(14 4 match) - net(11 3 match) - net(13 5 match) - net(12 2 match) - net(15 1 match) - pin(3 3 match) - pin(0 2 match) - pin(2 4 match) - pin(1 1 match) - pin(4 0 match) - circuit(3 3 match) - circuit(5 5 match) - circuit(7 7 match) - circuit(8 8 match) - circuit(9 9 match) - circuit(10 10 match) - circuit(11 11 match) - circuit(12 12 match) - circuit(2 2 match) - circuit(4 4 match) - circuit(6 6 match) - circuit(1 1 match) - ) - ) -)