diff --git a/src/db/db/dbHierNetworkProcessor.cc b/src/db/db/dbHierNetworkProcessor.cc index 1728f32d6..721d17aac 100644 --- a/src/db/db/dbHierNetworkProcessor.cc +++ b/src/db/db/dbHierNetworkProcessor.cc @@ -1154,13 +1154,12 @@ public: struct ClusterInstanceInteraction { - ClusterInstanceInteraction (size_t _cluster_id, size_t _other_cluster_id, const std::vector &_other_path) - : cluster_id (_cluster_id), other_cluster_id (_other_cluster_id), other_path (_other_path) + ClusterInstanceInteraction (size_t _cluster_id, const ClusterInstance &_other_ci) + : cluster_id (_cluster_id), other_ci (_other_ci) { } size_t cluster_id; - size_t other_cluster_id; - std::vector other_path; + ClusterInstance other_ci; }; /** @@ -1177,37 +1176,12 @@ public: */ void add (const db::Instance *i1, unsigned int /*p1*/, const db::Instance *i2, unsigned int /*p2*/) { - db::ICplxTrans t1 = i1->complex_trans (); - db::ICplxTrans t2 = i2->complex_trans (); - db::ICplxTrans t21 = t1.inverted () * t2; + db::ICplxTrans t; - InstanceToInstanceInteraction ii_key (i1->cell_index (), i2->cell_index (), t21); + std::list > ic; + consider_instance_pair (box_type::world (), *i1, t, db::CellInstArray::iterator (), *i2, t, db::CellInstArray::iterator (), ic); - instance_interaction_cache_type::iterator ii = mp_instance_interaction_cache->find (ii_key); - if (ii != mp_instance_interaction_cache->end ()) { - - db::ICplxTrans ic_trans = t1 * ii->second.first.inverted (); - connect_clusters (ii->second.second, &ic_trans, i1->prop_id (), i2->prop_id ()); - - } else { - - std::list > &ic = mp_instance_interaction_cache->insert (std::make_pair (ii_key, std::make_pair (t1, cluster_instance_pair_list_type ()))).first->second.second; - - std::vector p; - db::ICplxTrans t; - add_pair (box_type::world (), *i1, p, t, *i2, p, t, ic); - -#if 1 - // For debugging: ensures the instance properties are configured properly (important for cache consistency) - for (cluster_instance_pair_list_type::const_iterator i = ic.begin (); i != ic.end (); ++i) { - tl_assert (i->first.inst_prop_id () == i1->prop_id ()); - tl_assert (i->second.inst_prop_id () == i2->prop_id ()); - } -#endif - - connect_clusters (ic); - - } + connect_clusters (ic); } /** @@ -1215,7 +1189,7 @@ public: */ void finish (const db::Instance *i, unsigned int /*p1*/) { - add_single_inst (*i); + consider_single_inst (*i); } /** @@ -1223,9 +1197,12 @@ public: */ void add (const local_cluster *c1, unsigned int /*p1*/, const db::Instance *i2, unsigned int /*p2*/) { - std::vector p; + std::list ic; + db::ICplxTrans t; - add_pair (*c1, *i2, p, t); + consider_cluster_instance_pair (*c1, *i2, t, ic); + + m_ci_interactions.splice (m_ci_interactions.end (), ic, ic.begin (), ic.end ()); } /** @@ -1237,10 +1214,12 @@ public: void finish_cluster_to_instance_interactions () { for (typename std::list::const_iterator ii = m_ci_interactions.begin (); ii != m_ci_interactions.end (); ++ii) { + mp_tree->propagate_cluster_inst (*mp_layout, *mp_cell, ii->other_ci, mp_cell->cell_index (), false); + } - ClusterInstance other_key = make_path (ii->other_cluster_id, ii->other_path); + for (typename std::list::const_iterator ii = m_ci_interactions.begin (); ii != m_ci_interactions.end (); ++ii) { - id_type other = mp_cell_clusters->find_cluster_with_connection (other_key); + id_type other = mp_cell_clusters->find_cluster_with_connection (ii->other_ci); if (other > 0) { // we found a child cluster that connects two clusters on our own level: @@ -1249,7 +1228,7 @@ public: mark_to_join (other, ii->cluster_id); } else { - mp_cell_clusters->add_connection (ii->cluster_id, other_key); + mp_cell_clusters->add_connection (ii->cluster_id, ii->other_ci); } } @@ -1280,7 +1259,7 @@ private: : public InstanceToInstanceInteraction { InteractionKeyForClustersType (db::cell_index_type _ci1, db::cell_index_type _ci2, const db::ICplxTrans &_t21, const box_type &_box) - : InstanceToInstanceInteraction (_ci1, _ci2, _t21), box (_box) + : InstanceToInstanceInteraction (_ci1, 0, _ci2, 0, _t21), box (_box) { } bool operator== (const InteractionKeyForClustersType &other) const @@ -1317,16 +1296,25 @@ private: instance_interaction_cache_type *mp_instance_interaction_cache; /** - * @brief Handles the cluster interactions between two instances or instance arrays - * @param common The region under investigation (seen from the top level) - * @param i1 The index of the child cell 1 - * @param p1 The instantiation path to the child cell (not including i1) - * @param t1 The accumulated transformation of the path, not including i1 - * @param i2 The index of the child cell 2 - * @param p2 The instantiation path to the child cell (not including i2) - * @param t2 The accumulated transformation of the path, not including i2 + * @brief Investigate a pair of instances + * + * @param common The common box of both instances + * @param i1 The first instance to investigate + * @param t1 The parent instances' culmulated transformation + * @param i1element selects a specific instance from i1 (unless == db::CellInstArray::iterator()) + * @param i2 The second instance to investiage + * @param t2 The parent instances' culmulated transformation + * @param i2element selects a specific instance from i2 (unless == db::CellInstArray::iterator()) + * @param interacting_clusters_out Receives the cluster interaction descriptors + * + * "interacting_clusters_out" will be cluster interactions in the parent instance space of i1 and i2 respectively. + * Cluster ID will be valid in the parent cells containing i1 and i2 and the cluster instances property ID will be set to p1 and p2 + * respectively. */ - void add_pair (const box_type &common, const db::Instance &i1, const std::vector &p1, const db::ICplxTrans &t1, const db::Instance &i2, const std::vector &p2, const db::ICplxTrans &t2, std::list > &interacting_clusters) + void consider_instance_pair (const box_type &common, + const db::Instance &i1, const db::ICplxTrans &t1, const db::CellInstArray::iterator &i1element, + const db::Instance &i2, const db::ICplxTrans &t2, const db::CellInstArray::iterator &i2element, + std::list > &interacting_clusters) { if (is_breakout_cell (mp_breakout_cells, i1.cell_index ()) || is_breakout_cell (mp_breakout_cells, i2.cell_index ())) { return; @@ -1344,22 +1332,48 @@ private: return; } + db::ICplxTrans i1t = i1.complex_trans (); + db::ICplxTrans tt1 = t1 * i1t; + + db::ICplxTrans i2t = i2.complex_trans (); + db::ICplxTrans tt2 = t2 * i2t; + + db::ICplxTrans tt21 = tt1.inverted () * tt2; + InstanceToInstanceInteraction ii_key (i1.cell_index (), i1.cell_inst ().delegate (), i2.cell_index (), i2.cell_inst ().delegate (), tt21); + + instance_interaction_cache_type::iterator ii = mp_instance_interaction_cache->find (ii_key); + if (ii != mp_instance_interaction_cache->end ()) { + + // use cached interactions + interacting_clusters = ii->second; + for (std::list >::iterator i = interacting_clusters.begin (); i != interacting_clusters.end (); ++i) { + // translate the property IDs + i->first.set_inst_prop_id (i1.prop_id ()); + i->first.transform (i1t); + i->second.set_inst_prop_id (i2.prop_id ()); + i->second.transform (i2t); + } + + return; + + } + + // array interactions + db::ICplxTrans t1i = t1.inverted (); db::ICplxTrans t2i = t2.inverted (); - for (db::CellInstArray::iterator ii1 = i1.begin_touching (common_all.transformed (t1i), mp_layout); ! ii1.at_end (); ++ii1) { + // TODO: optimize for single inst? + for (db::CellInstArray::iterator ii1 = i1element.at_end () ? i1.begin_touching (common_all.transformed (t1i), mp_layout) : i1element; ! ii1.at_end (); ++ii1) { - db::ICplxTrans tt1 = t1 * i1.complex_trans (*ii1); + db::ICplxTrans i1t = i1.complex_trans (*ii1); + db::ICplxTrans tt1 = t1 * i1t; box_type ib1 = bb1.transformed (tt1); - std::vector pp1; - pp1.reserve (p1.size () + 1); - pp1.insert (pp1.end (), p1.begin (), p1.end ()); - pp1.push_back (ClusterInstElement (i1.cell_index (), i1.complex_trans (*ii1), i1.prop_id ())); + for (db::CellInstArray::iterator ii2 = i2element.at_end () ? i2.begin_touching (ib1.transformed (t2i), mp_layout) : i2element; ! ii2.at_end (); ++ii2) { - for (db::CellInstArray::iterator ii2 = i2.begin_touching (ib1.transformed (t2i), mp_layout); ! ii2.at_end (); ++ii2) { - - db::ICplxTrans tt2 = t2 * i2.complex_trans (*ii2); + db::ICplxTrans i2t = i2.complex_trans (*ii2); + db::ICplxTrans tt2 = t2 * i2t; if (i1.cell_index () == i2.cell_index () && tt1 == tt2) { // skip interactions between identical instances (duplicate instance removal) continue; @@ -1368,58 +1382,85 @@ private: box_type ib2 = bb2.transformed (tt2); box_type common12 = ib1 & ib2 & common; - if (! common12.empty ()) { - std::vector pp2; - pp2.reserve (p2.size () + 1); - pp2.insert (pp2.end (), p2.begin (), p2.end ()); - pp2.push_back (ClusterInstElement (i2.cell_index (), i2.complex_trans (*ii2), i2.prop_id ())); + const std::vector > &i2i_interactions = compute_instance_interactions (common12, i1.cell_index (), tt1, i2.cell_index (), tt2); - add_single_pair (common12, i1.cell_index (), pp1, tt1, i2.cell_index (), pp2, tt2, interacting_clusters); + for (std::vector >::const_iterator ii = i2i_interactions.begin (); ii != i2i_interactions.end (); ++ii) { + ClusterInstance k1 (ii->first, i1.cell_index (), i1t, i1.prop_id ()); + ClusterInstance k2 (ii->second, i2.cell_index (), i2t, i2.prop_id ()); + interacting_clusters.push_back (std::make_pair (k1, k2)); + } // dive into cell of ii2 const db::Cell &cell2 = mp_layout->cell (i2.cell_index ()); for (db::Cell::touching_iterator jj2 = cell2.begin_touching (common12.transformed (tt2.inverted ())); ! jj2.at_end (); ++jj2) { - add_pair (common12, i1, p1, t1, *jj2, pp2, tt2, interacting_clusters); + + std::list > ii_interactions; + consider_instance_pair (common12, i1, t1, ii1, *jj2, tt2, db::CellInstArray::iterator (), ii_interactions); + + for (std::list >::iterator i = ii_interactions.begin (); i != ii_interactions.end (); ++i) { + propagate_cluster_inst (i->second, i2.cell_index (), i2t, i2.prop_id ()); + } + interacting_clusters.splice (interacting_clusters.end (), ii_interactions, ii_interactions.begin (), ii_interactions.end ()); + } } + if (! i2element.at_end ()) { + break; + } + } box_type common1 = ib1 & b2 & common; - if (! common1.empty ()) { // dive into cell of ii1 const db::Cell &cell1 = mp_layout->cell (i1.cell_index ()); for (db::Cell::touching_iterator jj1 = cell1.begin_touching (common1.transformed (tt1.inverted ())); ! jj1.at_end (); ++jj1) { - add_pair (common1, *jj1, pp1, tt1, i2, p2, t2, interacting_clusters); + + std::list > ii_interactions; + consider_instance_pair (common1, *jj1, tt1, db::CellInstArray::iterator (), i2, t2, i2element, ii_interactions); + + for (std::list >::iterator i = ii_interactions.begin (); i != ii_interactions.end (); ++i) { + propagate_cluster_inst (i->first, i1.cell_index (), i1t, i1.prop_id ()); + } + interacting_clusters.splice (interacting_clusters.end (), ii_interactions, ii_interactions.begin (), ii_interactions.end ()); + } } + if (! i1element.at_end ()) { + break; + } + + } + + cluster_instance_pair_list_type &cached = (*mp_instance_interaction_cache) [ii_key]; + cached = interacting_clusters; + + // normalize transformations in cache + db::ICplxTrans i1ti = i1t.inverted (), i2ti = i2t.inverted (); + for (std::list >::iterator i = cached.begin (); i != cached.end (); ++i) { + i->first.transform (i1ti); + i->second.transform (i2ti); } } /** - * @brief Handles the cluster interactions between two specific instances - * @param common The region under investigation (seen from the top level) - * @param ci1 The cell index of the child cell 1 - * @param p1 The instantiation path to the child cell (last element is the instance to ci1) - * @param t1 The accumulated transformation of the path p1 - * @param ci2 The cell index of the child cell 2 - * @param p2 The instantiation path to the child cell (last element is the instance to ci2) - * @param t2 The accumulated transformation of the path p2 + * @brief Computes a list of interacting clusters for two instances */ - void add_single_pair (const box_type &common, - db::cell_index_type ci1, const std::vector &p1, const db::ICplxTrans &t1, - db::cell_index_type ci2, const std::vector &p2, const db::ICplxTrans &t2, - cluster_instance_pair_list_type &interacting_clusters) + const std::vector > & + compute_instance_interactions (const box_type &common, + db::cell_index_type ci1, const db::ICplxTrans &t1, + db::cell_index_type ci2, const db::ICplxTrans &t2) { if (is_breakout_cell (mp_breakout_cells, ci1) || is_breakout_cell (mp_breakout_cells, ci2)) { - return; + static const std::vector > empty; + return empty; } db::ICplxTrans t1i = t1.inverted (); @@ -1428,16 +1469,12 @@ private: box_type common2 = common.transformed (t2i); - // NOTE: make_path may disturb the iteration (because of modification), hence - // we first collect and then process the interactions. - const std::vector > *interactions; - InteractionKeyForClustersType ikey (ci1, ci2, t21, common2); typename std::map > >::const_iterator ici = m_interaction_cache_for_clusters.find (ikey); if (ici != m_interaction_cache_for_clusters.end ()) { - interactions = &ici->second; + return ici->second; } else { @@ -1446,7 +1483,7 @@ private: const db::local_clusters &cl1 = mp_tree->clusters_per_cell (ci1); const db::local_clusters &cl2 = mp_tree->clusters_per_cell (ci2); - std::vector > new_interactions; + std::vector > &new_interactions = m_interaction_cache_for_clusters [ikey]; db::ICplxTrans t12 = t2i * t1; for (typename db::local_clusters::touching_iterator i = cl1.begin_touching (common2.transformed (t21)); ! i.at_end (); ++i) { @@ -1467,18 +1504,7 @@ private: } - std::vector > &out = m_interaction_cache_for_clusters [ikey]; - out = new_interactions; - interactions = &out; - - } - - for (std::vector >::const_iterator ii = interactions->begin (); ii != interactions->end (); ++ii) { - - ClusterInstance k1 = make_path (ii->first, p1); - ClusterInstance k2 = make_path (ii->second, p2); - - interacting_clusters.push_back (std::make_pair (k1, k2)); + return new_interactions; } } @@ -1486,7 +1512,7 @@ private: /** * @brief Single instance treatment */ - void add_single_inst (const db::Instance &i) + void consider_single_inst (const db::Instance &i) { if (is_breakout_cell (mp_breakout_cells, i.cell_index ())) { return; @@ -1504,7 +1530,6 @@ private: pp.push_back (ClusterInstElement (i.cell_index (), i.complex_trans (*ii), i.prop_id ())); bool any = false; - bool first = true; for (db::CellInstArray::iterator ii2 = i.begin_touching (ib, mp_layout); ! ii2.at_end (); ++ii2) { @@ -1524,16 +1549,25 @@ private: cluster_instance_pair_list_type interacting_clusters; box_type common = (ib & ib2); - add_single_pair (common, i.cell_index (), pp, tt, i.cell_index (), pp2, tt2, interacting_clusters); + const std::vector > &i2i_interactions = compute_instance_interactions (common, i.cell_index (), tt, i.cell_index (), tt2); + for (std::vector >::const_iterator ii = i2i_interactions.begin (); ii != i2i_interactions.end (); ++ii) { + ClusterInstance k1 (ii->first, i.cell_index (), tt, i.prop_id ()); + ClusterInstance k2 (ii->second, i.cell_index (), tt2, i.prop_id ()); + interacting_clusters.push_back (std::make_pair (k1, k2)); + } - // dive into cell of ii2 - this is a self-interaction of a cell with parts of itself - // as these self-interactions are expected to be the same always (regular array), we can skip this test the next times. - if (first) { - for (db::Cell::touching_iterator jj2 = cell.begin_touching (common.transformed (tt2.inverted ())); ! jj2.at_end (); ++jj2) { - std::vector p; - db::ICplxTrans t; - add_pair (common, i, p, t, *jj2, pp2, tt2, interacting_clusters); + for (db::Cell::touching_iterator jj2 = cell.begin_touching (common.transformed (tt2.inverted ())); ! jj2.at_end (); ++jj2) { + + db::ICplxTrans t; + + std::list > ii_interactions; + consider_instance_pair (common, i, t, ii, *jj2, tt2, db::CellInstArray::iterator (), ii_interactions); + + for (std::list >::iterator ii = ii_interactions.begin (); ii != ii_interactions.end (); ++ii) { + propagate_cluster_inst (ii->second, i.cell_index (), tt2, i.prop_id ()); } + interacting_clusters.splice (interacting_clusters.end (), ii_interactions, ii_interactions.begin (), ii_interactions.end ()); + } connect_clusters (interacting_clusters); @@ -1544,8 +1578,6 @@ private: } - first = false; - // we don't expect more to happen on the next instance if (! any) { break; @@ -1558,46 +1590,55 @@ private: * @brief Handles a local clusters vs. the clusters of a specific child instance or instance array * @param c1 The local cluster * @param i2 The index of the child cell - * @param p2 The instantiation path to the child cell (not including i2) * @param t2 The accumulated transformation of the path, not including i2 + * @param interactions_out Delivers the interactions */ - void add_pair (const local_cluster &c1, const db::Instance &i2, const std::vector &p2, const db::ICplxTrans &t2) + void consider_cluster_instance_pair (const local_cluster &c1, const db::Instance &i2, const db::ICplxTrans &t2, std::list &interactions_out) { if (is_breakout_cell (mp_breakout_cells, i2.cell_index ())) { return; } - box_type b1 = c1.bbox (); - box_type bb2 = (*mp_cbc) (i2.cell_index ()); const db::Cell &cell2 = mp_layout->cell (i2.cell_index ()); + box_type b1 = c1.bbox (); box_type b2 = i2.cell_inst ().bbox (*mp_cbc).transformed (t2); if (! b1.touches (b2)) { return; } - std::vector pp2; - pp2.reserve (p2.size () + 1); - pp2.insert (pp2.end (), p2.begin (), p2.end ()); - pp2.push_back (ClusterInstElement ()); + std::vector > c2i_interactions; for (db::CellInstArray::iterator ii2 = i2.begin_touching ((b1 & b2).transformed (t2.inverted ()), mp_layout); ! ii2.at_end (); ++ii2) { - db::ICplxTrans tt2 = t2 * i2.complex_trans (*ii2); + db::ICplxTrans i2t = i2.complex_trans (*ii2); + db::ICplxTrans tt2 = t2 * i2t; box_type ib2 = bb2.transformed (tt2); if (b1.touches (ib2) && c1.interacts (cell2, tt2, *mp_conn)) { - pp2.back () = ClusterInstElement (i2.cell_index (), i2.complex_trans (*ii2), i2.prop_id ()); + c2i_interactions.clear (); + compute_cluster_instance_interactions (c1, i2.cell_index (), tt2, c2i_interactions); - add_single_pair (c1, i2.cell_index (), pp2, tt2); + for (std::vector >::const_iterator ii = c2i_interactions.begin (); ii != c2i_interactions.end (); ++ii) { + ClusterInstance k (ii->second, i2.cell_index (), i2t, i2.prop_id ()); + interactions_out.push_back (ClusterInstanceInteraction (ii->first, k)); + } // dive into cell of ii2 for (db::Cell::touching_iterator jj2 = cell2.begin_touching ((b1 & ib2).transformed (tt2.inverted ())); ! jj2.at_end (); ++jj2) { - add_pair (c1, *jj2, pp2, tt2); + + std::list ci_interactions; + consider_cluster_instance_pair (c1, *jj2, tt2, ci_interactions); + + for (typename std::list::iterator ii = ci_interactions.begin (); ii != ci_interactions.end (); ++ii) { + propagate_cluster_inst (ii->other_ci, i2.cell_index (), i2t, i2.prop_id ()); + } + interactions_out.splice (interactions_out.end (), ci_interactions, ci_interactions.begin (), ci_interactions.end ()); + } } @@ -1612,22 +1653,21 @@ private: * @param p2 The instantiation path to the child cell (last element is the instance to ci2) * @param t2 The accumulated transformation of the path */ - void add_single_pair (const local_cluster &c1, - db::cell_index_type ci2, const std::vector &p2, const db::ICplxTrans &t2) + void + compute_cluster_instance_interactions (const local_cluster &c1, + db::cell_index_type ci2, const db::ICplxTrans &t2, + std::vector > &interactions) { if (is_breakout_cell (mp_breakout_cells, ci2)) { return; } - // NOTE: make_path may disturb the iteration (because of modification), hence - // we first collect and then process the interactions. - const db::local_clusters &cl2 = mp_tree->clusters_per_cell (ci2); for (typename db::local_clusters::touching_iterator j = cl2.begin_touching (c1.bbox ().transformed (t2.inverted ())); ! j.at_end (); ++j) { if (c1.interacts (*j, t2, *mp_conn)) { - m_ci_interactions.push_back (ClusterInstanceInteraction (c1.id (), j->id (), p2)); + interactions.push_back (std::make_pair (c1.id (), j->id ())); } } @@ -1707,32 +1747,31 @@ private: } /** - * @brief Makes a valid path to a child cluster + * @brief Makes cluster connections from all parents of a cell into this cell and to the given cluster * - * Cluster connections can only cross one level of hierarchy. This method - * creates necessary dummy entries for the given path. + * After calling this method, the cluster instance in ci is guaranteed to have connections from all + * parent cells. One of these connections represents the instance ci. */ - ClusterInstance make_path (id_type id, const std::vector &path) const + void propagate_cluster_inst (ClusterInstance &ci, db::cell_index_type pci, const db::ICplxTrans &trans, db::properties_id_type prop_id) const { - return mp_tree->make_path (*mp_layout, *mp_cell, id, path); + size_t id_new = mp_tree->propagate_cluster_inst (*mp_layout, *mp_cell, ci, pci, true); + tl_assert (id_new != 0); + ci = db::ClusterInstance (id_new, pci, trans, prop_id); } /** * @brief Establishes connections between the cluster instances listed in the argument */ - void connect_clusters (const cluster_instance_pair_list_type &interacting_clusters, const db::ICplxTrans *ic_trans = 0, db::properties_id_type prop_id1 = 0, db::properties_id_type prop_id2 = 0) + void connect_clusters (const cluster_instance_pair_list_type &interacting_clusters) { for (cluster_instance_pair_list_type::const_iterator ic = interacting_clusters.begin (); ic != interacting_clusters.end (); ++ic) { - ClusterInstance k1 = ic->first; - ClusterInstance k2 = ic->second; + const ClusterInstance &k1 = ic->first; + const ClusterInstance &k2 = ic->second; - if (ic_trans) { - k1.transform (*ic_trans); - k1.set_inst_prop_id (prop_id1); - k2.transform (*ic_trans); - k2.set_inst_prop_id (prop_id2); - } + // Note: "with_self" is false as we're going to create a connected cluster anyway + mp_tree->propagate_cluster_inst (*mp_layout, *mp_cell, k1, mp_cell->cell_index (), false); + mp_tree->propagate_cluster_inst (*mp_layout, *mp_cell, k2, mp_cell->cell_index (), false); id_type x1 = mp_cell_clusters->find_cluster_with_connection (k1); id_type x2 = mp_cell_clusters->find_cluster_with_connection (k2); @@ -1794,131 +1833,72 @@ private: } template -ClusterInstance -hier_clusters::make_path (const db::Layout &layout, const db::Cell &cell, size_t id, const std::vector &path) +size_t +hier_clusters::propagate_cluster_inst (const db::Layout &layout, const db::Cell &cell, const ClusterInstance &ci, db::cell_index_type pci, bool with_self) { - std::vector::const_iterator p = path.end (); - tl_assert (p != path.begin ()); + connected_clusters &target_cc = clusters_per_cell (pci); + size_t parent_cluster = target_cc.find_cluster_with_connection (ci); - while (true) { + size_t id_new = 0; - --p; + if (parent_cluster > 0) { - ClusterInstance ci (id, p->inst_cell_index (), p->inst_trans (), p->inst_prop_id ()); - if (p == path.begin ()) { + // taken parent + id_new = parent_cluster; - // if we're attaching to a child which is root yet, we need to promote the - // cluster to the parent in all places - connected_clusters &child_cc = clusters_per_cell (p->inst_cell_index ()); - if (child_cc.is_root (id)) { + } else { - std::set > seen; // to avoid duplicate connections + size_t id = ci.id (); - const db::Cell &child_cell = layout.cell (p->inst_cell_index ()); - for (db::Cell::parent_inst_iterator pi = child_cell.begin_parent_insts (); ! pi.at_end (); ++pi) { + // if we're attaching to a child which is root yet, we need to promote the + // cluster to the parent in all places + connected_clusters &child_cc = clusters_per_cell (ci.inst_cell_index ()); + if (child_cc.is_root (id)) { - db::Instance child_inst = pi->child_inst (); + std::set > seen; // to avoid duplicate connections - connected_clusters &parent_cc = clusters_per_cell (pi->parent_cell_index ()); - for (db::CellInstArray::iterator pii = child_inst.begin (); ! pii.at_end (); ++pii) { + const db::Cell &child_cell = layout.cell (ci.inst_cell_index ()); + for (db::Cell::parent_inst_iterator pi = child_cell.begin_parent_insts (); ! pi.at_end (); ++pi) { - ClusterInstance ci2 (id, child_inst.cell_index (), child_inst.complex_trans (*pii), child_inst.prop_id ()); - if ((cell.cell_index () != pi->parent_cell_index () || ci != ci2) && seen.find (std::make_pair (pi->parent_cell_index (), ci2)) == seen.end ()) { + db::Instance child_inst = pi->child_inst (); - size_t id_dummy; + connected_clusters &parent_cc = clusters_per_cell (pi->parent_cell_index ()); + for (db::CellInstArray::iterator pii = child_inst.begin (); ! pii.at_end (); ++pii) { - const typename db::local_cluster::global_nets &gn = child_cc.cluster_by_id (id).get_global_nets (); - if (gn.empty ()) { - id_dummy = parent_cc.insert_dummy (); - } else { - local_cluster *lc = parent_cc.insert (); - lc->set_global_nets (gn); - id_dummy = lc->id (); - } + ClusterInstance ci2 (id, child_inst.cell_index (), child_inst.complex_trans (*pii), child_inst.prop_id ()); + if ((with_self || cell.cell_index () != pi->parent_cell_index () || ci != ci2) && seen.find (std::make_pair (pi->parent_cell_index (), ci2)) == seen.end ()) { - parent_cc.add_connection (id_dummy, ci2); - seen.insert (std::make_pair (pi->parent_cell_index (), ci2)); + size_t id_dummy; + const typename db::local_cluster::global_nets &gn = child_cc.cluster_by_id (id).get_global_nets (); + if (gn.empty ()) { + id_dummy = parent_cc.insert_dummy (); + } else { + local_cluster *lc = parent_cc.insert (); + lc->set_global_nets (gn); + id_dummy = lc->id (); + } + + parent_cc.add_connection (id_dummy, ci2); + seen.insert (std::make_pair (pi->parent_cell_index (), ci2)); + + if (pci == pi->parent_cell_index () && ci == ci2) { + id_new = id_dummy; } } } - child_cc.reset_root (id); - } - return ci; - - } - - db::cell_index_type pci = p [-1].inst_cell_index (); - connected_clusters &target_cc = clusters_per_cell (pci); - size_t parent_cluster = target_cc.find_cluster_with_connection (ci); - - if (parent_cluster > 0) { - - // taken parent - id = parent_cluster; - - } else { - - size_t id_new = 0; - - // if we're attaching to a child which is root yet, we need to promote the - // cluster to the parent in all places - connected_clusters &child_cc = clusters_per_cell (p->inst_cell_index ()); - if (child_cc.is_root (id)) { - - std::set > seen; // to avoid duplicate connections - - const db::Cell &child_cell = layout.cell (p->inst_cell_index ()); - for (db::Cell::parent_inst_iterator pi = child_cell.begin_parent_insts (); ! pi.at_end (); ++pi) { - - db::Instance child_inst = pi->child_inst (); - - connected_clusters &parent_cc = clusters_per_cell (pi->parent_cell_index ()); - for (db::CellInstArray::iterator pii = child_inst.begin (); ! pii.at_end (); ++pii) { - - ClusterInstance ci2 (id, child_inst.cell_index (), child_inst.complex_trans (*pii), child_inst.prop_id ()); - if (seen.find (std::make_pair (pi->parent_cell_index (), ci2)) == seen.end ()) { - - size_t id_dummy; - - const typename db::local_cluster::global_nets &gn = child_cc.cluster_by_id (id).get_global_nets (); - if (gn.empty ()) { - id_dummy = parent_cc.insert_dummy (); - } else { - local_cluster *lc = parent_cc.insert (); - lc->set_global_nets (gn); - id_dummy = lc->id (); - } - - parent_cc.add_connection (id_dummy, ci2); - seen.insert (std::make_pair (pi->parent_cell_index (), ci2)); - - if (pci == pi->parent_cell_index () && ci == ci2) { - id_new = id_dummy; - } - - } - - } - - } - - child_cc.reset_root (id); - - } - - // no parent -> create vertical connector - id = id_new; - tl_assert (id != 0); + child_cc.reset_root (id); } } + + return id_new; } template @@ -2213,27 +2193,26 @@ hier_clusters::build_hier_connections (cell_clusters_box_converter &cbc, c // NOTE: don't use the gc pointer - it may become invalid during make_path (will also do a local.insert) size_t gcid = gc->id (); - for (std::set::const_iterator ci = ge->second.begin (); ci != ge->second.end (); ++ci) { + for (std::set::const_iterator i = ge->second.begin (); i != ge->second.end (); ++i) { - if (! ci->has_instance ()) { + if (! i->has_instance ()) { - local.join_cluster_with (gcid, ci->id ()); - local.remove_cluster (ci->id ()); + local.join_cluster_with (gcid, i->id ()); + local.remove_cluster (i->id ()); } else { - std::vector p; - p.push_back (*ci); - ClusterInstance k = make_path (layout, cell, ci->id (), p); + // ensures the cluster is propagated so we can connect it with another + propagate_cluster_inst (layout, cell, *i, cell.cell_index (), false); - size_t other_id = local.find_cluster_with_connection (k); + size_t other_id = local.find_cluster_with_connection (*i); if (other_id == gcid) { // shouldn't happen, but duplicate instances may trigger this } else if (other_id) { local.join_cluster_with (gcid, other_id); local.remove_cluster (other_id); } else { - local.add_connection (gcid, k); + local.add_connection (gcid, *i); } } @@ -2307,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; @@ -2373,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 a47e93bd8..fda6e07e8 100644 --- a/src/db/db/dbHierNetworkProcessor.h +++ b/src/db/db/dbHierNetworkProcessor.h @@ -201,7 +201,7 @@ private: * of a given connectivity. The shapes will still be organised in layers. */ template -class DB_PUBLIC local_cluster +class DB_PUBLIC_TEMPLATE local_cluster { public: typedef size_t id_type; @@ -395,7 +395,7 @@ private: * @brief A box converter for the local_cluster class */ template -struct DB_PUBLIC local_cluster_box_convert +struct DB_PUBLIC_TEMPLATE local_cluster_box_convert { typedef typename local_cluster::box_type box_type; typedef typename db::simple_bbox_tag complexity; @@ -414,7 +414,7 @@ struct DB_PUBLIC local_cluster_box_convert * the clusters from a cell's shapes. */ template -class DB_PUBLIC local_clusters +class DB_PUBLIC_TEMPLATE local_clusters { public: typedef typename local_cluster::id_type id_type; @@ -734,18 +734,42 @@ private: typedef std::list > cluster_instance_pair_list_type; +inline bool equal_array_delegates (const db::ArrayBase *a, const db::ArrayBase *b) +{ + if ((a == 0) != (b == 0)) { + return false; + } else if (a) { + return ! db::array_base_ptr_cmp_f () (a, b) && ! db::array_base_ptr_cmp_f () (b, a); + } else { + return true; + } +} + +inline bool less_array_delegates (const db::ArrayBase *a, const db::ArrayBase *b) +{ + if ((a == 0) != (b == 0)) { + return (a == 0) < (b == 0); + } else if (a) { + return db::array_base_ptr_cmp_f () (a, b); + } else { + return false; + } +} + /** * @brief A helper struct to describe a pair of cell instances with a specific relative transformation */ struct InstanceToInstanceInteraction { - InstanceToInstanceInteraction (db::cell_index_type _ci1, db::cell_index_type _ci2, const db::ICplxTrans &_t21) - : ci1 (_ci1), ci2 (_ci2), t21 (_t21) + InstanceToInstanceInteraction (db::cell_index_type _ci1, const db::ArrayBase *_array1, db::cell_index_type _ci2, const db::ArrayBase *_array2, const db::ICplxTrans &_t21) + : ci1 (_ci1), ci2 (_ci2), array1 (_array1), array2 (_array2), t21 (_t21) { } bool operator== (const InstanceToInstanceInteraction &other) const { - return ci1 == other.ci1 && ci2 == other.ci2 && t21.equal (other.t21); + return ci1 == other.ci1 && ci2 == other.ci2 && t21.equal (other.t21) && + equal_array_delegates (array1, other.array1) && + equal_array_delegates (array2, other.array2); } bool operator< (const InstanceToInstanceInteraction &other) const @@ -759,14 +783,20 @@ struct InstanceToInstanceInteraction if (! t21.equal (other.t21)) { return t21.less (other.t21); } - return false; + if (less_array_delegates (array1, other.array1)) { + return true; + } else if (less_array_delegates (other.array1, array1)) { + return false; + } + return less_array_delegates (array2, other.array2); } db::cell_index_type ci1, ci2; + const db::ArrayBase *array1, *array2; db::ICplxTrans t21; }; -typedef std::map > instance_interaction_cache_type; +typedef std::map instance_interaction_cache_type; template class hier_clusters; template class connected_clusters; @@ -775,7 +805,7 @@ template class connected_clusters; * @brief An iterator delivering all clusters of a connected_clusters set */ template -class DB_PUBLIC connected_clusters_iterator +class DB_PUBLIC_TEMPLATE connected_clusters_iterator { public: typedef typename local_cluster::id_type value_type; @@ -823,7 +853,7 @@ private: * "half connected" clusters. */ template -class DB_PUBLIC connected_clusters +class DB_PUBLIC_TEMPLATE connected_clusters : public local_clusters { public: @@ -936,12 +966,12 @@ template class cell_clusters_box_converter; * Hierarchical clusters */ template -class DB_PUBLIC hier_clusters +class DB_PUBLIC_TEMPLATE hier_clusters : public tl::Object { public: typedef typename local_cluster::box_type box_type; - typedef std::map > instance_interaction_cache_type; + typedef std::map instance_interaction_cache_type; /** * @brief Creates an empty set of clusters @@ -989,12 +1019,12 @@ public: void clear (); /** - * @brief Makes a valid path to a child cluster + * @brief Ensures a cluster instance is connected from all parents of the instantiated cell * - * Cluster connections can only cross one level of hierarchy. This method - * creates necessary dummy entries for the given path. + * If "with_self" is true, the specified instance "ci" is included in the connections. Otherwise + * there is not connection made for this instance. */ - ClusterInstance make_path (const db::Layout &layout, const db::Cell &cell, size_t id, const std::vector &path); + size_t propagate_cluster_inst (const db::Layout &layout, const Cell &cell, const ClusterInstance &ci, db::cell_index_type parent_ci, bool with_self); private: void build_local_cluster (const db::Layout &layout, const db::Cell &cell, db::ShapeIterator::flags_type shape_flags, const db::Connectivity &conn, const tl::equivalence_clusters *attr_equivalence); @@ -1006,6 +1036,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 * @@ -1015,7 +1064,7 @@ private: * This iterator applies to one layer. */ template -class DB_PUBLIC recursive_cluster_shape_iterator +class DB_PUBLIC_TEMPLATE recursive_cluster_shape_iterator { public: typedef T value_type; @@ -1025,7 +1074,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 @@ -1106,6 +1155,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 (); @@ -1118,7 +1168,7 @@ private: * This iterator will deliver the child clusters of a specific cluster. */ template -class DB_PUBLIC recursive_cluster_iterator +class DB_PUBLIC_TEMPLATE recursive_cluster_iterator { public: /** diff --git a/src/db/db/dbLayoutToNetlistWriter.cc b/src/db/db/dbLayoutToNetlistWriter.cc index fad0c3a9f..19ce996e9 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,25 +197,25 @@ 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) { - 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; - m_progress.set (mp_stream->pos ()); - } + } + 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; + m_progress.set (mp_stream->pos ()); } } - 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/db/dbNetlistExtractor.cc b/src/db/db/dbNetlistExtractor.cc index 481dda8cb..44f1eac29 100644 --- a/src/db/db/dbNetlistExtractor.cc +++ b/src/db/db/dbNetlistExtractor.cc @@ -159,7 +159,9 @@ NetlistExtractor::extract_nets (const db::DeepShapeStore &dss, unsigned int layo // Make sure we create one subcircuit for each instance of cells which do have circuits // associated. for (db::Cell::const_iterator inst = cell.begin (); ! inst.at_end (); ++inst) { - make_subcircuit (circuit, inst->cell_index (), inst->complex_trans (), subcircuits, circuits); + for (db::CellInstArray::iterator ii = inst->begin (); ! ii.at_end (); ++ii) { + make_subcircuit (circuit, inst->cell_index (), inst->complex_trans (*ii), subcircuits, circuits); + } } } diff --git a/src/db/unit_tests/dbHierNetworkProcessorTests.cc b/src/db/unit_tests/dbHierNetworkProcessorTests.cc index 22575f670..07ca63197 100644 --- a/src/db/unit_tests/dbHierNetworkProcessorTests.cc +++ b/src/db/unit_tests/dbHierNetworkProcessorTests.cc @@ -1270,3 +1270,8 @@ TEST(117_HierClusters) run_hc_test_with_backannotation (_this, "hc_test_l17.gds", "hc_test_au17b.gds"); } +TEST(118_HierClustersMeanderArrays) +{ + run_hc_test (_this, "meander.gds.gz", "meander_au1.gds"); + run_hc_test_with_backannotation (_this, "meander.gds.gz", "meander_au2.gds"); +} 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/src/db/unit_tests/dbLayoutToNetlistTests.cc b/src/db/unit_tests/dbLayoutToNetlistTests.cc index 6b7f0fd8e..40964ec67 100644 --- a/src/db/unit_tests/dbLayoutToNetlistTests.cc +++ b/src/db/unit_tests/dbLayoutToNetlistTests.cc @@ -791,7 +791,7 @@ TEST(2_Probing) EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (5.3, 0.0))), "RINGO:VSS"); EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (2.6, 1.0))), "RINGO:$I18"); - EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (6.4, 1.0))), "INV2PAIR:$I5"); + EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (6.4, 1.0))), "INV2PAIR:$I3"); // doesn't do anything here, but we test that this does not destroy anything: l2n.netlist ()->combine_devices (); @@ -833,7 +833,7 @@ TEST(2_Probing) EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (5.3, 0.0))), "RINGO:VSS"); EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (2.6, 1.0))), "RINGO:$I18"); - EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (6.4, 1.0))), "INV2PAIR:$I5"); + EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (6.4, 1.0))), "INV2PAIR:$I3"); } TEST(3_GlobalNetConnections) @@ -1071,7 +1071,7 @@ TEST(3_GlobalNetConnections) EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (5.3, 0.0))), "RINGO:VSS"); EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (2.6, 1.0))), "RINGO:$I22"); - EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (6.4, 1.0))), "INV2PAIR:$I6"); + EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (6.4, 1.0))), "INV2PAIR:$I4"); // doesn't do anything here, but we test that this does not destroy anything: l2n.netlist ()->combine_devices (); @@ -1113,7 +1113,7 @@ TEST(3_GlobalNetConnections) EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (5.3, 0.0))), "RINGO:VSS"); EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (2.6, 1.0))), "RINGO:$I22"); - EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (6.4, 1.0))), "INV2PAIR:$I6"); + EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (6.4, 1.0))), "INV2PAIR:$I4"); } TEST(4_GlobalNetDeviceExtraction) @@ -1357,7 +1357,7 @@ TEST(4_GlobalNetDeviceExtraction) EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (5.3, 0.0))), "RINGO:VSS"); EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (2.6, 1.0))), "RINGO:$I22"); - EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (6.4, 1.0))), "INV2PAIR:$I6"); + EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (6.4, 1.0))), "INV2PAIR:$I4"); // doesn't do anything here, but we test that this does not destroy anything: l2n.netlist ()->combine_devices (); @@ -1399,7 +1399,7 @@ TEST(4_GlobalNetDeviceExtraction) EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (5.3, 0.0))), "RINGO:VSS"); EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (2.6, 1.0))), "RINGO:$I22"); - EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (6.4, 1.0))), "INV2PAIR:$I6"); + EXPECT_EQ (qnet_name (l2n.probe_net (*rmetal1, db::DPoint (6.4, 1.0))), "INV2PAIR:$I4"); } TEST(5_DeviceExtractionWithDeviceCombination) diff --git a/testdata/algo/device_extract_au1_rebuild_nr.gds b/testdata/algo/device_extract_au1_rebuild_nr.gds index 256f5daf9..3432e15c6 100644 Binary files a/testdata/algo/device_extract_au1_rebuild_nr.gds and b/testdata/algo/device_extract_au1_rebuild_nr.gds differ diff --git a/testdata/algo/device_extract_au1_rebuild_pf.gds b/testdata/algo/device_extract_au1_rebuild_pf.gds index 8cb5a621d..72911a17f 100644 Binary files a/testdata/algo/device_extract_au1_rebuild_pf.gds and b/testdata/algo/device_extract_au1_rebuild_pf.gds differ diff --git a/testdata/algo/device_extract_au1_rebuild_pr.gds b/testdata/algo/device_extract_au1_rebuild_pr.gds index 948e2a8c6..ef85fab2d 100644 Binary files a/testdata/algo/device_extract_au1_rebuild_pr.gds and b/testdata/algo/device_extract_au1_rebuild_pr.gds differ diff --git a/testdata/algo/device_extract_au1_with_rec_nets.gds b/testdata/algo/device_extract_au1_with_rec_nets.gds index b03ebd333..9768f35d5 100644 Binary files a/testdata/algo/device_extract_au1_with_rec_nets.gds and b/testdata/algo/device_extract_au1_with_rec_nets.gds differ diff --git a/testdata/algo/device_extract_au2_with_rec_nets.gds b/testdata/algo/device_extract_au2_with_rec_nets.gds index 231a70056..89fccd17a 100644 Binary files a/testdata/algo/device_extract_au2_with_rec_nets.gds and b/testdata/algo/device_extract_au2_with_rec_nets.gds differ diff --git a/testdata/algo/device_extract_au3_with_rec_nets.gds b/testdata/algo/device_extract_au3_with_rec_nets.gds index 77f48da85..b8ed2a041 100644 Binary files a/testdata/algo/device_extract_au3_with_rec_nets.gds and b/testdata/algo/device_extract_au3_with_rec_nets.gds differ diff --git a/testdata/algo/device_extract_au4_with_rec_nets.gds b/testdata/algo/device_extract_au4_with_rec_nets.gds index 69d52a849..95a6a3156 100644 Binary files a/testdata/algo/device_extract_au4_with_rec_nets.gds and b/testdata/algo/device_extract_au4_with_rec_nets.gds differ diff --git a/testdata/algo/device_extract_au5_flattened_circuits.gds b/testdata/algo/device_extract_au5_flattened_circuits.gds index bb997bf82..a0b32677e 100644 Binary files a/testdata/algo/device_extract_au5_flattened_circuits.gds and b/testdata/algo/device_extract_au5_flattened_circuits.gds differ diff --git a/testdata/algo/device_extract_au5_with_rec_nets.gds b/testdata/algo/device_extract_au5_with_rec_nets.gds index 6f30100c6..365498e93 100644 Binary files a/testdata/algo/device_extract_au5_with_rec_nets.gds and b/testdata/algo/device_extract_au5_with_rec_nets.gds differ 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_2.gds b/testdata/algo/l2n_writer_au_2.gds index 35478aff1..975f2f836 100644 Binary files a/testdata/algo/l2n_writer_au_2.gds and b/testdata/algo/l2n_writer_au_2.gds differ diff --git a/testdata/algo/l2n_writer_au_2b.txt b/testdata/algo/l2n_writer_au_2b.txt index 8709c5c46..ac5c60d66 100644 --- a/testdata/algo/l2n_writer_au_2b.txt +++ b/testdata/algo/l2n_writer_au_2b.txt @@ -257,66 +257,20 @@ 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 (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(5 - 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(6 - 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(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 pin(1 name(BULK)) pin(2) + pin(4) pin(5) - pin(6) pin(7) pin(8) pin(9) @@ -326,18 +280,18 @@ circuit(INV2PAIR pin(0 9) pin(1 7) pin(2 3) - pin(3 4) - pin(4 6) - pin(5 5) + pin(3 6) + pin(4 5) + pin(5 4) pin(6 1) ) circuit(2 INV2 location(4340 800) pin(0 9) - pin(1 4) + pin(1 6) pin(2 2) pin(3 8) - pin(4 6) - pin(5 5) + pin(4 5) + pin(5 4) pin(6 1) ) @@ -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 e90dd3e1d..fd1c17892 100644 --- a/testdata/algo/l2n_writer_au_2s.txt +++ b/testdata/algo/l2n_writer_au_2s.txt @@ -32,6 +32,8 @@ C(ptie diff_cont ptie) C(nsd diff_cont nsd) G(rbulk BULK) G(ptie BULK) +K(PMOS MOS4) +K(NMOS MOS4) D(D$PMOS PMOS T(S R(psd (-650 -475) (525 950)) @@ -225,64 +227,18 @@ 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 (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(5 - 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(6 - 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(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) + P(4) P(5) - P(6) P(7) P(8) P(9) @@ -290,85 +246,37 @@ X(INV2PAIR P(0 9) P(1 7) P(2 3) - P(3 4) - P(4 6) - P(5 5) + P(3 6) + P(4 5) + P(5 4) P(6 1) ) X(2 INV2 Y(4340 800) P(0 9) - P(1 4) + P(1 6) P(2 2) P(3 8) - P(4 6) - P(5 5) + P(4 5) + P(5 4) P(6 1) ) ) 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 +286,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 +299,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..aeefcf946 100644 --- a/testdata/algo/l2n_writer_au_p.txt +++ b/testdata/algo/l2n_writer_au_p.txt @@ -23,6 +23,8 @@ C(metal2 via1 metal2 metal2_lbl) C(metal2_lbl metal2) C(psd diff_cont psd) C(nsd diff_cont nsd) +K(PMOS MOS3) +K(NMOS MOS3) D(D$PMOS PMOS T(S R(psd (-650 -475) (525 950)) @@ -196,259 +198,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..fbe139f9b 100644 --- a/testdata/algo/l2n_writer_au_s.txt +++ b/testdata/algo/l2n_writer_au_s.txt @@ -23,6 +23,8 @@ C(metal2 via1 metal2 metal2_lbl) C(metal2_lbl metal2) C(psd diff_cont psd) C(nsd diff_cont nsd) +K(PMOS MOS3) +K(NMOS MOS3) D(D$PMOS PMOS T(S R(psd (-650 -475) (525 950)) @@ -187,259 +189,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 b32d9f40d..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 (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(3 - 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(4 - 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(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 @@ -363,17 +287,17 @@ layout( circuit(1 INV2 location(1700 800) pin(0 7) pin(1 5) - pin(2 2) - pin(3 4) - pin(4 3) + pin(2 4) + pin(3 3) + pin(4 2) pin(5 1) ) circuit(2 INV2 location(4340 800) pin(0 7) - pin(1 2) + pin(1 4) pin(2 6) - pin(3 4) - pin(4 3) + pin(3 3) + pin(4 2) pin(5 1) ) @@ -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)) @@ -808,45 +364,45 @@ layout( # Subcircuits and their connections circuit(1 INV2PAIR location(19420 -800) pin(0 4) - pin(1 1) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 1) pin(4 10) pin(5 2) pin(6 3) ) circuit(2 INV2PAIR location(-1700 -800) pin(0 4) - pin(1 8) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 8) pin(4 1) pin(5 9) pin(6 3) ) circuit(3 INV2PAIR location(3580 -800) pin(0 4) - pin(1 7) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 7) pin(4 9) pin(5 12) pin(6 3) ) circuit(4 INV2PAIR location(8860 -800) pin(0 4) - pin(1 6) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 6) pin(4 12) pin(5 11) pin(6 3) ) circuit(5 INV2PAIR location(14140 -800) pin(0 4) - pin(1 5) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 5) pin(4 11) pin(5 10) pin(6 3) @@ -1044,16 +600,16 @@ xref( ) circuit(INV2PAIR INV2PAIR match xref( - net(3 2 match) - net(4 3 match) - net(2 4 match) + net(2 2 match) + net(3 3 match) + net(4 4 match) net(5 5 match) net(6 6 match) net(7 7 match) net(1 1 match) - pin(2 1 match) - pin(3 2 match) - pin(1 3 match) + pin(1 1 match) + pin(2 2 match) + pin(3 3 match) pin(4 4 match) pin(5 5 match) pin(6 6 match) diff --git a/testdata/algo/lvs_test1_au.lvsdb.2 b/testdata/algo/lvs_test1_au.lvsdb.2 index bba5f19c4..42c2187d5 100644 --- a/testdata/algo/lvs_test1_au.lvsdb.2 +++ b/testdata/algo/lvs_test1_au.lvsdb.2 @@ -267,87 +267,11 @@ layout( # Nets with their geometries net(1 name(BULK)) - net(2 - 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(3 - 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(4 - 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(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 @@ -363,17 +287,17 @@ layout( circuit(1 INV2 location(1700 800) pin(0 7) pin(1 5) - pin(2 2) - pin(3 4) - pin(4 3) + pin(2 4) + pin(3 3) + pin(4 2) pin(5 1) ) circuit(2 INV2 location(4340 800) pin(0 7) - pin(1 2) + pin(1 4) pin(2 6) - pin(3 4) - pin(4 3) + pin(3 3) + pin(4 2) pin(5 1) ) @@ -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)) @@ -808,45 +364,45 @@ layout( # Subcircuits and their connections circuit(1 INV2PAIR location(19420 -800) pin(0 4) - pin(1 1) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 1) pin(4 10) pin(5 2) pin(6 3) ) circuit(2 INV2PAIR location(-1700 -800) pin(0 4) - pin(1 8) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 8) pin(4 1) pin(5 9) pin(6 3) ) circuit(3 INV2PAIR location(3580 -800) pin(0 4) - pin(1 7) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 7) pin(4 9) pin(5 12) pin(6 3) ) circuit(4 INV2PAIR location(8860 -800) pin(0 4) - pin(1 6) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 6) pin(4 12) pin(5 11) pin(6 3) ) circuit(5 INV2PAIR location(14140 -800) pin(0 4) - pin(1 5) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 5) pin(4 11) pin(5 10) pin(6 3) @@ -1044,16 +600,16 @@ xref( ) circuit(INV2PAIR INV2PAIR match xref( - net(3 2 match) - net(4 3 match) - net(2 4 match) + net(2 2 match) + net(3 3 match) + net(4 4 match) net(5 5 match) net(6 6 match) net(7 7 match) net(1 1 match) - pin(2 1 match) - pin(3 2 match) - pin(1 3 match) + pin(1 1 match) + pin(2 2 match) + pin(3 3 match) pin(4 4 match) pin(5 5 match) pin(6 6 match) diff --git a/testdata/algo/lvs_test1b_au.lvsdb.1 b/testdata/algo/lvs_test1b_au.lvsdb.1 index 556dcc6dd..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 (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(3 - 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(4 - 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(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 @@ -363,17 +287,17 @@ layout( circuit(1 INV2 location(1700 800) pin(0 7) pin(1 5) - pin(2 2) - pin(3 4) - pin(4 3) + pin(2 4) + pin(3 3) + pin(4 2) pin(5 1) ) circuit(2 INV2 location(4340 800) pin(0 7) - pin(1 2) + pin(1 4) pin(2 6) - pin(3 4) - pin(4 3) + pin(3 3) + pin(4 2) pin(5 1) ) @@ -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)) @@ -808,45 +364,45 @@ layout( # Subcircuits and their connections circuit(1 INV2PAIR location(19420 -800) pin(0 4) - pin(1 1) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 1) pin(4 10) pin(5 2) pin(6 3) ) circuit(2 INV2PAIR location(-1700 -800) pin(0 4) - pin(1 8) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 8) pin(4 1) pin(5 9) pin(6 3) ) circuit(3 INV2PAIR location(3580 -800) pin(0 4) - pin(1 7) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 7) pin(4 9) pin(5 12) pin(6 3) ) circuit(4 INV2PAIR location(8860 -800) pin(0 4) - pin(1 6) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 6) pin(4 12) pin(5 11) pin(6 3) ) circuit(5 INV2PAIR location(14140 -800) pin(0 4) - pin(1 5) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 5) pin(4 11) pin(5 10) pin(6 3) @@ -1044,16 +600,16 @@ xref( ) circuit(INV2PAIR INV2PAIR match xref( - net(3 2 match) - net(4 3 match) - net(2 4 match) + net(2 2 match) + net(3 3 match) + net(4 4 match) net(5 5 match) net(6 6 match) net(7 7 match) net(1 1 match) - pin(2 1 match) - pin(3 2 match) - pin(1 3 match) + pin(1 1 match) + pin(2 2 match) + pin(3 3 match) pin(4 4 match) pin(5 5 match) pin(6 6 match) diff --git a/testdata/algo/lvs_test1b_au.lvsdb.2 b/testdata/algo/lvs_test1b_au.lvsdb.2 index bef20e994..a8c999396 100644 --- a/testdata/algo/lvs_test1b_au.lvsdb.2 +++ b/testdata/algo/lvs_test1b_au.lvsdb.2 @@ -267,87 +267,11 @@ layout( # Nets with their geometries net(1 name(BULK)) - net(2 - 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(3 - 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(4 - 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(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 @@ -363,17 +287,17 @@ layout( circuit(1 INV2 location(1700 800) pin(0 7) pin(1 5) - pin(2 2) - pin(3 4) - pin(4 3) + pin(2 4) + pin(3 3) + pin(4 2) pin(5 1) ) circuit(2 INV2 location(4340 800) pin(0 7) - pin(1 2) + pin(1 4) pin(2 6) - pin(3 4) - pin(4 3) + pin(3 3) + pin(4 2) pin(5 1) ) @@ -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)) @@ -808,45 +364,45 @@ layout( # Subcircuits and their connections circuit(1 INV2PAIR location(19420 -800) pin(0 4) - pin(1 1) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 1) pin(4 10) pin(5 2) pin(6 3) ) circuit(2 INV2PAIR location(-1700 -800) pin(0 4) - pin(1 8) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 8) pin(4 1) pin(5 9) pin(6 3) ) circuit(3 INV2PAIR location(3580 -800) pin(0 4) - pin(1 7) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 7) pin(4 9) pin(5 12) pin(6 3) ) circuit(4 INV2PAIR location(8860 -800) pin(0 4) - pin(1 6) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 6) pin(4 12) pin(5 11) pin(6 3) ) circuit(5 INV2PAIR location(14140 -800) pin(0 4) - pin(1 5) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 5) pin(4 11) pin(5 10) pin(6 3) @@ -1044,16 +600,16 @@ xref( ) circuit(INV2PAIR INV2PAIR match xref( - net(3 2 match) - net(4 3 match) - net(2 4 match) + net(2 2 match) + net(3 3 match) + net(4 4 match) net(5 5 match) net(6 6 match) net(7 7 match) net(1 1 match) - pin(2 1 match) - pin(3 2 match) - pin(1 3 match) + pin(1 1 match) + pin(2 2 match) + pin(3 3 match) pin(4 4 match) pin(5 5 match) pin(6 6 match) diff --git a/testdata/algo/lvs_test2_au.lvsdb.1 b/testdata/algo/lvs_test2_au.lvsdb.1 index b78d22e71..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 (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(3 - 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(4 - 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(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 @@ -363,17 +287,17 @@ layout( circuit(1 INV2 location(1700 800) pin(0 7) pin(1 5) - pin(2 2) - pin(3 4) - pin(4 3) + pin(2 4) + pin(3 3) + pin(4 2) pin(5 1) ) circuit(2 INV2 location(4340 800) pin(0 7) - pin(1 2) + pin(1 4) pin(2 6) - pin(3 4) - pin(4 3) + pin(3 3) + pin(4 2) pin(5 1) ) @@ -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)) @@ -808,45 +364,45 @@ layout( # Subcircuits and their connections circuit(1 INV2PAIR location(19420 -800) pin(0 4) - pin(1 1) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 1) pin(4 10) pin(5 2) pin(6 3) ) circuit(2 INV2PAIR location(-1700 -800) pin(0 4) - pin(1 8) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 8) pin(4 1) pin(5 9) pin(6 3) ) circuit(3 INV2PAIR location(3580 -800) pin(0 4) - pin(1 7) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 7) pin(4 9) pin(5 12) pin(6 3) ) circuit(4 INV2PAIR location(8860 -800) pin(0 4) - pin(1 6) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 6) pin(4 12) pin(5 11) pin(6 3) ) circuit(5 INV2PAIR location(14140 -800) pin(0 4) - pin(1 5) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 5) pin(4 11) pin(5 10) pin(6 3) @@ -1070,17 +626,17 @@ xref( ) circuit(INV2PAIR INV2PAIR nomatch xref( - net(3 2 mismatch) - net(4 3 mismatch) + net(2 2 mismatch) + net(3 3 mismatch) net(5 4 match) - net(2 5 mismatch) + net(4 5 mismatch) net(6 6 match) net(7 7 mismatch) net(1 1 mismatch) - pin(2 1 match) - pin(3 2 match) + pin(1 1 match) + pin(2 2 match) pin(4 3 match) - pin(1 4 match) + pin(3 4 match) pin(5 5 match) pin(6 6 match) pin(0 0 match) diff --git a/testdata/algo/lvs_test2_au.lvsdb.2 b/testdata/algo/lvs_test2_au.lvsdb.2 index 7ceccdcd8..3719b24c1 100644 --- a/testdata/algo/lvs_test2_au.lvsdb.2 +++ b/testdata/algo/lvs_test2_au.lvsdb.2 @@ -267,87 +267,11 @@ layout( # Nets with their geometries net(1 name(BULK)) - net(2 - 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(3 - 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(4 - 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(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 @@ -363,17 +287,17 @@ layout( circuit(1 INV2 location(1700 800) pin(0 7) pin(1 5) - pin(2 2) - pin(3 4) - pin(4 3) + pin(2 4) + pin(3 3) + pin(4 2) pin(5 1) ) circuit(2 INV2 location(4340 800) pin(0 7) - pin(1 2) + pin(1 4) pin(2 6) - pin(3 4) - pin(4 3) + pin(3 3) + pin(4 2) pin(5 1) ) @@ -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)) @@ -808,45 +364,45 @@ layout( # Subcircuits and their connections circuit(1 INV2PAIR location(19420 -800) pin(0 4) - pin(1 1) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 1) pin(4 10) pin(5 2) pin(6 3) ) circuit(2 INV2PAIR location(-1700 -800) pin(0 4) - pin(1 8) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 8) pin(4 1) pin(5 9) pin(6 3) ) circuit(3 INV2PAIR location(3580 -800) pin(0 4) - pin(1 7) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 7) pin(4 9) pin(5 12) pin(6 3) ) circuit(4 INV2PAIR location(8860 -800) pin(0 4) - pin(1 6) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 6) pin(4 12) pin(5 11) pin(6 3) ) circuit(5 INV2PAIR location(14140 -800) pin(0 4) - pin(1 5) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 5) pin(4 11) pin(5 10) pin(6 3) @@ -1070,17 +626,17 @@ xref( ) circuit(INV2PAIR INV2PAIR nomatch xref( - net(3 2 mismatch) - net(4 3 mismatch) + net(2 2 mismatch) + net(3 3 mismatch) net(5 4 match) - net(2 5 mismatch) + net(4 5 mismatch) net(6 6 match) net(7 7 mismatch) net(1 1 mismatch) - pin(2 1 match) - pin(3 2 match) + pin(1 1 match) + pin(2 2 match) pin(4 3 match) - pin(1 4 match) + pin(3 4 match) pin(5 5 match) pin(6 6 match) pin(0 0 match) @@ -1120,7 +676,7 @@ xref( circuit(3 () mismatch) circuit(4 () mismatch) circuit(5 () mismatch) - circuit(1 1 mismatch) + circuit(1 1 match) ) ) ) diff --git a/testdata/algo/lvs_test2b_au.lvsdb.1 b/testdata/algo/lvs_test2b_au.lvsdb.1 index 74daf3f76..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 (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(3 - 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(4 - 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(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 @@ -363,17 +287,17 @@ layout( circuit(1 INV2 location(1700 800) pin(0 7) pin(1 5) - pin(2 2) - pin(3 4) - pin(4 3) + pin(2 4) + pin(3 3) + pin(4 2) pin(5 1) ) circuit(2 INV2 location(4340 800) pin(0 7) - pin(1 2) + pin(1 4) pin(2 6) - pin(3 4) - pin(4 3) + pin(3 3) + pin(4 2) pin(5 1) ) @@ -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)) @@ -808,45 +364,45 @@ layout( # Subcircuits and their connections circuit(1 INV2PAIR location(19420 -800) pin(0 4) - pin(1 1) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 1) pin(4 10) pin(5 2) pin(6 3) ) circuit(2 INV2PAIR location(-1700 -800) pin(0 4) - pin(1 8) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 8) pin(4 1) pin(5 9) pin(6 3) ) circuit(3 INV2PAIR location(3580 -800) pin(0 4) - pin(1 7) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 7) pin(4 9) pin(5 12) pin(6 3) ) circuit(4 INV2PAIR location(8860 -800) pin(0 4) - pin(1 6) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 6) pin(4 12) pin(5 11) pin(6 3) ) circuit(5 INV2PAIR location(14140 -800) pin(0 4) - pin(1 5) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 5) pin(4 11) pin(5 10) pin(6 3) @@ -1070,17 +626,17 @@ xref( ) circuit(INV2PAIR INV2PAIR nomatch xref( - net(3 2 mismatch) - net(4 3 mismatch) + net(2 2 mismatch) + net(3 3 mismatch) net(5 4 match) - net(2 5 mismatch) + net(4 5 mismatch) net(6 6 match) net(7 7 mismatch) net(1 1 mismatch) - pin(2 1 match) - pin(3 2 match) + pin(1 1 match) + pin(2 2 match) pin(4 3 match) - pin(1 4 match) + pin(3 4 match) pin(5 5 match) pin(6 6 match) pin(0 0 match) diff --git a/testdata/algo/lvs_test2b_au.lvsdb.2 b/testdata/algo/lvs_test2b_au.lvsdb.2 index 92aad1228..59b791eab 100644 --- a/testdata/algo/lvs_test2b_au.lvsdb.2 +++ b/testdata/algo/lvs_test2b_au.lvsdb.2 @@ -267,87 +267,11 @@ layout( # Nets with their geometries net(1 name(BULK)) - net(2 - 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(3 - 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(4 - 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(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 @@ -363,17 +287,17 @@ layout( circuit(1 INV2 location(1700 800) pin(0 7) pin(1 5) - pin(2 2) - pin(3 4) - pin(4 3) + pin(2 4) + pin(3 3) + pin(4 2) pin(5 1) ) circuit(2 INV2 location(4340 800) pin(0 7) - pin(1 2) + pin(1 4) pin(2 6) - pin(3 4) - pin(4 3) + pin(3 3) + pin(4 2) pin(5 1) ) @@ -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)) @@ -808,45 +364,45 @@ layout( # Subcircuits and their connections circuit(1 INV2PAIR location(19420 -800) pin(0 4) - pin(1 1) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 1) pin(4 10) pin(5 2) pin(6 3) ) circuit(2 INV2PAIR location(-1700 -800) pin(0 4) - pin(1 8) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 8) pin(4 1) pin(5 9) pin(6 3) ) circuit(3 INV2PAIR location(3580 -800) pin(0 4) - pin(1 7) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 7) pin(4 9) pin(5 12) pin(6 3) ) circuit(4 INV2PAIR location(8860 -800) pin(0 4) - pin(1 6) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 6) pin(4 12) pin(5 11) pin(6 3) ) circuit(5 INV2PAIR location(14140 -800) pin(0 4) - pin(1 5) - pin(2 3) - pin(3 4) + pin(1 3) + pin(2 4) + pin(3 5) pin(4 11) pin(5 10) pin(6 3) @@ -1070,17 +626,17 @@ xref( ) circuit(INV2PAIR INV2PAIR nomatch xref( - net(3 2 mismatch) - net(4 3 mismatch) + net(2 2 mismatch) + net(3 3 mismatch) net(5 4 match) - net(2 5 mismatch) + net(4 5 mismatch) net(6 6 match) net(7 7 mismatch) net(1 1 mismatch) - pin(2 1 match) - pin(3 2 match) + pin(1 1 match) + pin(2 2 match) pin(4 3 match) - pin(1 4 match) + pin(3 4 match) pin(5 5 match) pin(6 6 match) pin(0 0 match) @@ -1120,7 +676,7 @@ xref( circuit(3 () mismatch) circuit(4 () mismatch) circuit(5 () mismatch) - circuit(1 1 mismatch) + circuit(1 1 match) ) ) ) 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/algo/meander_au1.gds b/testdata/algo/meander_au1.gds new file mode 100644 index 000000000..b541cf80b Binary files /dev/null and b/testdata/algo/meander_au1.gds differ diff --git a/testdata/algo/meander_au2.gds b/testdata/algo/meander_au2.gds new file mode 100644 index 000000000..6c2d9f251 Binary files /dev/null and b/testdata/algo/meander_au2.gds 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/inv2.lvsdb b/testdata/lvs/inv2.lvsdb index 782d6282e..5f4e3fee5 100644 --- a/testdata/lvs/inv2.lvsdb +++ b/testdata/lvs/inv2.lvsdb @@ -30,6 +30,8 @@ J( C(l10 l8 l10) G(l7 SUBSTRATE) G(l10 SUBSTRATE) + K(PMOS MOS4) + K(NMOS MOS4) D(D$PMOS PMOS T(S R(l2 (-575 -750) (450 1500)) @@ -146,6 +148,8 @@ J( ) ) H( + K(PMOS MOS4) + K(NMOS MOS4) X(INVERTER_WITH_DIODES N(1 I(VSS)) N(2 I(IN)) diff --git a/testdata/lvs/invchain_cheat.lvsdb b/testdata/lvs/invchain_cheat.lvsdb index 5b854ca93..67ff6bc68 100644 --- a/testdata/lvs/invchain_cheat.lvsdb +++ b/testdata/lvs/invchain_cheat.lvsdb @@ -27,6 +27,8 @@ J( C(l2 l6 l2) C(l5 l6 l5) G(l14 SUBSTRATE) + K(PMOS MOS3) + K(NMOS MOS3) D(D$PMOS PMOS T(S R(l2 (-900 -475) (775 950)) @@ -116,36 +118,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 +155,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 +200,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)) ) @@ -381,6 +267,8 @@ J( ) ) H( + K(PMOS MOS3) + K(NMOS MOS3) X(INV N(1 I('1')) N(2 I('2')) diff --git a/testdata/lvs/ringo_device_subcircuits.lvsdb.1 b/testdata/lvs/ringo_device_subcircuits.lvsdb.1 index 46d09231c..d9f58648a 100644 --- a/testdata/lvs/ringo_device_subcircuits.lvsdb.1 +++ b/testdata/lvs/ringo_device_subcircuits.lvsdb.1 @@ -362,70 +362,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)) @@ -434,8 +401,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)) @@ -457,20 +422,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 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(13 name(OUT) @@ -478,12 +430,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)) @@ -504,19 +453,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 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l10 (-21975 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_device_subcircuits.lvsdb.2 b/testdata/lvs/ringo_device_subcircuits.lvsdb.2 index 5f01d5105..30f6382ed 100644 --- a/testdata/lvs/ringo_device_subcircuits.lvsdb.2 +++ b/testdata/lvs/ringo_device_subcircuits.lvsdb.2 @@ -362,70 +362,37 @@ layout( # 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)) + 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)) @@ -434,8 +401,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)) @@ -457,20 +422,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 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(13 name(OUT) @@ -478,12 +430,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)) @@ -504,19 +453,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 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l10 (-21975 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) 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 index f7ed4588d..d82b5247a 100644 --- a/testdata/lvs/ringo_layout_var.lvsdb.2 +++ b/testdata/lvs/ringo_layout_var.lvsdb.2 @@ -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 (-1175 1800) (425 1500)) - rect(l2 (-1800 -1500) (425 1500)) - rect(l6 (950 -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_mixed_hierarchy.lvsdb b/testdata/lvs/ringo_mixed_hierarchy.lvsdb index d71d08c6a..9a4c2d3ef 100644 --- a/testdata/lvs/ringo_mixed_hierarchy.lvsdb +++ b/testdata/lvs/ringo_mixed_hierarchy.lvsdb @@ -231,8 +231,7 @@ layout( rect(l4 (-250 -2000) (250 2000)) rect(l4 (-250 -5390) (250 1450)) rect(l8 (-285 1050) (180 180)) - rect(l8 (19340 -1080) (180 180)) - rect(l11 (-19760 660) (300 300)) + rect(l11 (-240 -240) (300 300)) rect(l11 (-131 -151) (2 2)) rect(l11 (18449 -1051) (900 300)) rect(l11 (-1390 590) (320 320)) @@ -243,8 +242,6 @@ layout( rect(l13 (-17921 -201) (2 2)) rect(l13 (17919 -201) (400 400)) rect(l13 (-18540 -400) (400 400)) - rect(l2 (17895 850) (425 1500)) - rect(l6 (-425 -4890) (425 950)) ) net(2 name('A,ENABLE') rect(l4 (2525 2860) (250 1940)) @@ -288,18 +285,7 @@ layout( rect(l11 (-101 -351) (2 2)) rect(l11 (549 -401) (600 800)) rect(l2 (-23025 -2550) (450 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 (-2275 -450) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(4 @@ -311,8 +297,7 @@ layout( rect(l8 (1220 920) (180 180)) rect(l8 (-180 -1280) (180 180)) rect(l8 (-180 370) (180 180)) - rect(l8 (920 -2880) (180 180)) - polygon(l11 (-1340 -1480) (0 1390) (490 0) (0 -300) (-190 0) (0 -1090)) + polygon(l11 (-240 -4180) (0 1390) (490 0) (0 -300) (-190 0) (0 -1090)) rect(l11 (-110 1390) (300 1400)) rect(l11 (0 -1550) (610 300)) polygon(l11 (-2500 1250) (0 600) (300 0) (0 -300) (1590 0) (0 -300)) @@ -324,66 +309,37 @@ layout( rect(l6 (-425 -4890) (425 950)) ) net(5 - 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(6 - 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(7 - 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(8 - 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(9 - 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(10 - 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(11 - 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(12 - 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(13 - 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(14 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(15 rect(l6 (2775 1660) (450 950)) @@ -410,18 +366,7 @@ layout( 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 (-1575 -2210) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_simple.lvsdb.1 b/testdata/lvs/ringo_simple.lvsdb.1 index a68dae475..b4494918c 100644 --- a/testdata/lvs/ringo_simple.lvsdb.1 +++ b/testdata/lvs/ringo_simple.lvsdb.1 @@ -362,70 +362,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)) @@ -434,8 +401,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)) @@ -457,20 +422,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 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(13 name(OUT) @@ -478,12 +430,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)) @@ -504,19 +453,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 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l10 (-21975 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_simple.lvsdb.2 b/testdata/lvs/ringo_simple.lvsdb.2 index 834cc43fe..b585c4ca4 100644 --- a/testdata/lvs/ringo_simple.lvsdb.2 +++ b/testdata/lvs/ringo_simple.lvsdb.2 @@ -362,70 +362,37 @@ layout( # 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)) + 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)) @@ -434,8 +401,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)) @@ -457,20 +422,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 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(13 name(OUT) @@ -478,12 +430,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)) @@ -504,19 +453,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 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l10 (-21975 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_simple_blackboxing.lvsdb b/testdata/lvs/ringo_simple_blackboxing.lvsdb index 0ab36f522..6089203e1 100644 --- a/testdata/lvs/ringo_simple_blackboxing.lvsdb +++ b/testdata/lvs/ringo_simple_blackboxing.lvsdb @@ -94,25 +94,19 @@ layout( # Nets with their geometries net(1 - rect(l8 (4710 3010) (180 180)) - rect(l11 (-850 -240) (610 300)) + rect(l11 (4040 2950) (610 300)) ) net(2 - rect(l8 (6510 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) + rect(l11 (5550 2950) (900 300)) ) net(3 - rect(l8 (19110 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) + rect(l11 (18150 2950) (900 300)) ) net(4 - rect(l8 (20910 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) + rect(l11 (19950 2950) (900 300)) ) net(5 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)) @@ -152,8 +146,7 @@ layout( rect(l13 (-201 -201) (400 400)) ) net(8 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)) @@ -178,28 +171,22 @@ layout( rect(l10 (22900 -1500) (500 1500)) ) net(10 - rect(l8 (8310 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) + rect(l11 (7350 2950) (900 300)) ) net(11 - rect(l8 (17310 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) + rect(l11 (16350 2950) (900 300)) ) net(12 - rect(l8 (10110 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) + rect(l11 (9150 2950) (900 300)) ) net(13 - rect(l8 (11910 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) + rect(l11 (10950 2950) (900 300)) ) net(14 - rect(l8 (13710 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) + rect(l11 (12750 2950) (900 300)) ) net(15 - rect(l8 (15510 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) + rect(l11 (14550 2950) (900 300)) ) # Outgoing pins and their connections to nets diff --git a/testdata/lvs/ringo_simple_device_scaling.lvsdb.1 b/testdata/lvs/ringo_simple_device_scaling.lvsdb.1 index d4ba4694d..fb98c1325 100644 --- a/testdata/lvs/ringo_simple_device_scaling.lvsdb.1 +++ b/testdata/lvs/ringo_simple_device_scaling.lvsdb.1 @@ -362,70 +362,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)) @@ -434,8 +401,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)) @@ -457,20 +422,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 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(13 name(OUT) @@ -478,12 +430,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)) @@ -504,19 +453,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 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l10 (-21975 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_simple_device_scaling.lvsdb.2 b/testdata/lvs/ringo_simple_device_scaling.lvsdb.2 index 354c9386a..c9d7da964 100644 --- a/testdata/lvs/ringo_simple_device_scaling.lvsdb.2 +++ b/testdata/lvs/ringo_simple_device_scaling.lvsdb.2 @@ -362,70 +362,37 @@ layout( # 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)) + 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)) @@ -434,8 +401,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)) @@ -457,20 +422,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 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(13 name(OUT) @@ -478,12 +430,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)) @@ -504,19 +453,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 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l10 (-21975 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_simple_dmos.lvsdb.1 b/testdata/lvs/ringo_simple_dmos.lvsdb.1 index 9e3146d88..47ac96fa8 100644 --- a/testdata/lvs/ringo_simple_dmos.lvsdb.1 +++ b/testdata/lvs/ringo_simple_dmos.lvsdb.1 @@ -366,49 +366,37 @@ layout( # Nets with their geometries net(1 - rect(l10 (4710 3010) (180 180)) - rect(l13 (-850 -240) (610 300)) + rect(l13 (4040 2950) (610 300)) ) net(2 - rect(l10 (6510 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (5550 2950) (900 300)) ) net(3 - rect(l10 (8310 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (7350 2950) (900 300)) ) net(4 - rect(l10 (10110 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (9150 2950) (900 300)) ) net(5 - rect(l10 (11910 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (10950 2950) (900 300)) ) net(6 - rect(l10 (13710 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (12750 2950) (900 300)) ) net(7 - rect(l10 (15510 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (14550 2950) (900 300)) ) net(8 - rect(l10 (17310 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (16350 2950) (900 300)) ) net(9 - rect(l10 (19110 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (18150 2950) (900 300)) ) net(10 - rect(l10 (20910 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (19950 2950) (900 300)) ) net(11 name(FB) - rect(l10 (22710 3010) (180 180)) - rect(l10 (-19700 720) (180 180)) - rect(l13 (18380 -1140) (900 300)) + rect(l13 (21750 2950) (900 300)) rect(l13 (-19530 590) (320 320)) rect(l13 (17820 -320) (320 320)) rect(l14 (-18400 -260) (200 200)) @@ -448,8 +436,7 @@ layout( rect(l15 (-201 -201) (400 400)) ) net(14 name(ENABLE) - rect(l10 (2510 3010) (180 180)) - rect(l13 (-250 -250) (320 320)) + rect(l13 (2440 2940) (320 320)) rect(l14 (-260 -260) (200 200)) rect(l15 (-101 -101) (2 2)) rect(l15 (-201 -201) (400 400)) diff --git a/testdata/lvs/ringo_simple_dmos.lvsdb.2 b/testdata/lvs/ringo_simple_dmos.lvsdb.2 index 4256ead4a..45fc263a5 100644 --- a/testdata/lvs/ringo_simple_dmos.lvsdb.2 +++ b/testdata/lvs/ringo_simple_dmos.lvsdb.2 @@ -366,49 +366,37 @@ layout( # Nets with their geometries net(1 - rect(l10 (4710 3010) (180 180)) - rect(l13 (-850 -240) (610 300)) + rect(l13 (4040 2950) (610 300)) ) net(2 - rect(l10 (6510 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (5550 2950) (900 300)) ) net(3 - rect(l10 (8310 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (7350 2950) (900 300)) ) net(4 - rect(l10 (10110 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (9150 2950) (900 300)) ) net(5 - rect(l10 (11910 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (10950 2950) (900 300)) ) net(6 - rect(l10 (13710 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (12750 2950) (900 300)) ) net(7 - rect(l10 (15510 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (14550 2950) (900 300)) ) net(8 - rect(l10 (17310 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (16350 2950) (900 300)) ) net(9 - rect(l10 (19110 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (18150 2950) (900 300)) ) net(10 - rect(l10 (20910 3010) (180 180)) - rect(l13 (-1140 -240) (900 300)) + rect(l13 (19950 2950) (900 300)) ) net(11 name(FB) - rect(l10 (22710 3010) (180 180)) - rect(l10 (-19700 720) (180 180)) - rect(l13 (18380 -1140) (900 300)) + rect(l13 (21750 2950) (900 300)) rect(l13 (-19530 590) (320 320)) rect(l13 (17820 -320) (320 320)) rect(l14 (-18400 -260) (200 200)) @@ -448,8 +436,7 @@ layout( rect(l15 (-201 -201) (400 400)) ) net(14 name(ENABLE) - rect(l10 (2510 3010) (180 180)) - rect(l13 (-250 -250) (320 320)) + rect(l13 (2440 2940) (320 320)) rect(l14 (-260 -260) (200 200)) rect(l15 (-101 -101) (2 2)) rect(l15 (-201 -201) (400 400)) diff --git a/testdata/lvs/ringo_simple_dummy_device.lvsdb.1 b/testdata/lvs/ringo_simple_dummy_device.lvsdb.1 index ee46022fe..f5c5cb5a0 100644 --- a/testdata/lvs/ringo_simple_dummy_device.lvsdb.1 +++ b/testdata/lvs/ringo_simple_dummy_device.lvsdb.1 @@ -369,70 +369,37 @@ layout( rect(l11 (-240 -240) (300 300)) ) net(2 - 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(3 - 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(4 - 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(5 - 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(6 - 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(7 - 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(8 - 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(9 - 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(10 - 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(11 - 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(12 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)) @@ -441,8 +408,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(13 name(VDD) rect(l3 (500 4500) (1400 3500)) @@ -470,20 +435,7 @@ layout( rect(l11 (0 -800) (600 800)) rect(l11 (0 -800) (600 800)) rect(l11 (0 -800) (600 800)) - rect(l2 (-24825 -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 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) + rect(l9 (-26650 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(14 name(OUT) @@ -491,12 +443,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(15 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)) @@ -526,19 +475,7 @@ layout( rect(l11 (0 -800) (600 800)) rect(l11 (0 -800) (600 800)) rect(l11 (0 -800) (600 800)) - rect(l6 (-25500 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 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (2975 -1010) (425 950)) + rect(l6 (-1700 400) (425 950)) rect(l6 (250 -950) (425 950)) rect(l10 (-26050 -2150) (500 1500)) rect(l10 (22900 -1500) (500 1500)) diff --git a/testdata/lvs/ringo_simple_dummy_device.lvsdb.2 b/testdata/lvs/ringo_simple_dummy_device.lvsdb.2 index 3c0b06564..2833efc33 100644 --- a/testdata/lvs/ringo_simple_dummy_device.lvsdb.2 +++ b/testdata/lvs/ringo_simple_dummy_device.lvsdb.2 @@ -163,9 +163,9 @@ layout( rect(l11 (-1751 1099) (300 1400)) rect(l11 (1100 -1700) (300 300)) rect(l11 (-300 0) (300 1400)) - rect(l2 (-1750 -1450) (425 1500)) - rect(l2 (950 -1500) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + 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)) @@ -369,70 +369,37 @@ layout( rect(l11 (-240 -240) (300 300)) ) net(2 - 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(3 - 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(4 - 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(5 - 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(6 - 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(7 - 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(8 - 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(9 - 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(10 - 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(11 - 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(12 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)) @@ -441,8 +408,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(13 name(VDD) rect(l3 (500 4500) (1400 3500)) @@ -470,20 +435,7 @@ layout( rect(l11 (0 -800) (600 800)) rect(l11 (0 -800) (600 800)) rect(l11 (0 -800) (600 800)) - rect(l2 (-24825 -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 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) + rect(l9 (-26650 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(14 name(OUT) @@ -491,12 +443,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(15 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)) @@ -526,19 +475,7 @@ layout( rect(l11 (0 -800) (600 800)) rect(l11 (0 -800) (600 800)) rect(l11 (0 -800) (600 800)) - rect(l6 (-25500 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 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (3650 -1010) (425 950)) + rect(l6 (-1025 400) (425 950)) rect(l6 (-1100 -950) (425 950)) rect(l10 (-25375 -2150) (500 1500)) rect(l10 (22900 -1500) (500 1500)) diff --git a/testdata/lvs/ringo_simple_dummy_device.lvsdb.3 b/testdata/lvs/ringo_simple_dummy_device.lvsdb.3 index f4780ff2d..8fc3eac47 100644 --- a/testdata/lvs/ringo_simple_dummy_device.lvsdb.3 +++ b/testdata/lvs/ringo_simple_dummy_device.lvsdb.3 @@ -163,9 +163,9 @@ layout( 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)) + rect(l2 (-1750 -1450) (425 1500)) + rect(l2 (950 -1500) (425 1500)) + rect(l6 (-425 -4890) (425 950)) ) net(3 name(VSS) rect(l8 (410 1770) (180 180)) @@ -369,70 +369,37 @@ layout( rect(l11 (-240 -240) (300 300)) ) net(2 - 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)) + rect(l11 (4040 2950) (610 300)) ) net(3 - 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(4 - 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(5 - 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(6 - 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(7 - 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(8 - 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(9 - 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(10 - 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(11 - 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(12 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)) @@ -441,8 +408,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(13 name(VDD) rect(l3 (500 4500) (1400 3500)) @@ -470,20 +435,7 @@ layout( rect(l11 (0 -800) (600 800)) rect(l11 (0 -800) (600 800)) rect(l11 (0 -800) (600 800)) - rect(l2 (-24825 -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 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) + rect(l9 (-26650 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(14 name(OUT) @@ -491,12 +443,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(15 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)) @@ -526,19 +475,7 @@ layout( rect(l11 (0 -800) (600 800)) rect(l11 (0 -800) (600 800)) rect(l11 (0 -800) (600 800)) - rect(l6 (-25500 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 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (3650 -1010) (425 950)) + rect(l6 (-1025 400) (425 950)) rect(l6 (-1100 -950) (425 950)) rect(l10 (-25375 -2150) (500 1500)) rect(l10 (22900 -1500) (500 1500)) diff --git a/testdata/lvs/ringo_simple_implicit_connections.lvsdb.1 b/testdata/lvs/ringo_simple_implicit_connections.lvsdb.1 index 2760c734e..ff9b41108 100644 --- a/testdata/lvs/ringo_simple_implicit_connections.lvsdb.1 +++ b/testdata/lvs/ringo_simple_implicit_connections.lvsdb.1 @@ -362,70 +362,37 @@ layout( # Nets with their geometries net(1 - rect(l8 (5210 3010) (180 180)) - rect(l11 (-1350 -240) (1160 300)) - rect(l2 (-3100 1800) (425 1500)) - rect(l2 (950 -1500) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (4040 2950) (1160 300)) ) net(2 - rect(l8 (7010 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (6050 2950) (900 300)) ) net(3 - rect(l8 (8810 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (7850 2950) (900 300)) ) net(4 - rect(l8 (10610 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (9650 2950) (900 300)) ) net(5 - rect(l8 (12410 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (11450 2950) (900 300)) ) net(6 - rect(l8 (14210 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (13250 2950) (900 300)) ) net(7 - rect(l8 (16010 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (15050 2950) (900 300)) ) net(8 - rect(l8 (17810 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (16850 2950) (900 300)) ) net(9 - rect(l8 (19610 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (18650 2950) (900 300)) ) net(10 - rect(l8 (21410 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (20450 2950) (900 300)) ) net(11 name(FB) - rect(l8 (25210 3010) (180 180)) - rect(l8 (-22200 720) (180 180)) - rect(l11 (18880 -1140) (2900 300)) + rect(l11 (22250 2950) (2900 300)) rect(l11 (-21980 590) (320 320)) rect(l11 (18570 -320) (320 320)) rect(l12 (-19150 -260) (200 200)) @@ -434,8 +401,6 @@ layout( rect(l13 (-19071 -201) (2 2)) rect(l13 (-171 -201) (400 400)) rect(l13 (18490 -400) (400 400)) - rect(l2 (-545 850) (425 1500)) - rect(l6 (-425 -4890) (425 950)) ) net(12 name(VDD) rect(l3 (22600 4500) (1400 3500)) @@ -466,20 +431,7 @@ layout( rect(l11 (-750 -1450) (300 1400)) rect(l11 (-101 -351) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l2 (-23300 -2550) (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 (1375 -1500) (425 1500)) - rect(l2 (-18850 -1500) (425 1500)) - rect(l2 (-400 -1500) (425 1500)) - rect(l2 (21775 -1500) (425 1500)) - rect(l9 (-2375 -450) (500 1500)) + rect(l9 (-5250 -1500) (500 1500)) rect(l9 (-22600 -1500) (500 1500)) rect(l9 (25400 -1500) (500 1500)) ) @@ -488,12 +440,9 @@ layout( rect(l12 (-260 -260) (200 200)) rect(l13 (-151 -101) (2 2)) rect(l13 (-151 -201) (400 400)) - rect(l2 (-675 850) (425 1500)) - rect(l6 (-425 -4890) (425 950)) ) net(14 name(ENABLE) - rect(l8 (2510 3010) (180 180)) - rect(l11 (-200 -250) (320 320)) + rect(l11 (2490 2940) (320 320)) rect(l12 (-260 -260) (200 200)) rect(l13 (-151 -101) (2 2)) rect(l13 (-151 -201) (400 400)) @@ -522,19 +471,7 @@ layout( rect(l11 (-750 -1450) (1200 800)) rect(l11 (-551 -401) (2 2)) rect(l11 (-1251 -401) (600 800)) - rect(l6 (24400 460) (425 950)) - rect(l6 (-20425 -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 (1375 -950) (425 950)) - rect(l6 (-19525 -950) (425 950)) - rect(l10 (24325 -2210) (500 1500)) + rect(l10 (26250 -800) (500 1500)) rect(l10 (-4300 -1500) (500 1500)) rect(l10 (-22600 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_simple_implicit_connections.lvsdb.2 b/testdata/lvs/ringo_simple_implicit_connections.lvsdb.2 index 4a0b7e13e..0363a34ef 100644 --- a/testdata/lvs/ringo_simple_implicit_connections.lvsdb.2 +++ b/testdata/lvs/ringo_simple_implicit_connections.lvsdb.2 @@ -362,70 +362,37 @@ layout( # Nets with their geometries net(1 - rect(l8 (5210 3010) (180 180)) - rect(l11 (-1350 -240) (1160 300)) - rect(l2 (-1725 1800) (425 1500)) - rect(l2 (-1800 -1500) (425 1500)) - rect(l6 (950 -4890) (425 950)) + rect(l11 (4040 2950) (1160 300)) ) net(2 - rect(l8 (7010 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (6050 2950) (900 300)) ) net(3 - rect(l8 (8810 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (7850 2950) (900 300)) ) net(4 - rect(l8 (10610 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (9650 2950) (900 300)) ) net(5 - rect(l8 (12410 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (11450 2950) (900 300)) ) net(6 - rect(l8 (14210 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (13250 2950) (900 300)) ) net(7 - rect(l8 (16010 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (15050 2950) (900 300)) ) net(8 - rect(l8 (17810 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (16850 2950) (900 300)) ) net(9 - rect(l8 (19610 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (18650 2950) (900 300)) ) net(10 - rect(l8 (21410 3010) (180 180)) - rect(l11 (-1140 -240) (900 300)) - rect(l2 (-1275 1800) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + rect(l11 (20450 2950) (900 300)) ) net(11 name(FB) - rect(l8 (25210 3010) (180 180)) - rect(l8 (-22200 720) (180 180)) - rect(l11 (18880 -1140) (2900 300)) + rect(l11 (22250 2950) (2900 300)) rect(l11 (-21980 590) (320 320)) rect(l11 (18570 -320) (320 320)) rect(l12 (-19150 -260) (200 200)) @@ -434,8 +401,6 @@ layout( rect(l13 (-19071 -201) (2 2)) rect(l13 (-171 -201) (400 400)) rect(l13 (18490 -400) (400 400)) - rect(l2 (-545 850) (425 1500)) - rect(l6 (-425 -4890) (425 950)) ) net(12 name(VDD) rect(l3 (22600 4500) (1400 3500)) @@ -466,20 +431,7 @@ layout( rect(l11 (-750 -1450) (300 1400)) rect(l11 (-101 -351) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l2 (-23300 -2550) (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 (1375 -1500) (425 1500)) - rect(l2 (-18850 -1500) (425 1500)) - rect(l2 (-400 -1500) (425 1500)) - rect(l2 (21775 -1500) (425 1500)) - rect(l9 (-2375 -450) (500 1500)) + rect(l9 (-5250 -1500) (500 1500)) rect(l9 (-22600 -1500) (500 1500)) rect(l9 (25400 -1500) (500 1500)) ) @@ -488,12 +440,9 @@ layout( rect(l12 (-260 -260) (200 200)) rect(l13 (-151 -101) (2 2)) rect(l13 (-151 -201) (400 400)) - rect(l2 (-675 850) (425 1500)) - rect(l6 (-425 -4890) (425 950)) ) net(14 name(ENABLE) - rect(l8 (2510 3010) (180 180)) - rect(l11 (-200 -250) (320 320)) + rect(l11 (2490 2940) (320 320)) rect(l12 (-260 -260) (200 200)) rect(l13 (-151 -101) (2 2)) rect(l13 (-151 -201) (400 400)) @@ -522,19 +471,7 @@ layout( rect(l11 (-750 -1450) (1200 800)) rect(l11 (-551 -401) (2 2)) rect(l11 (-1251 -401) (600 800)) - rect(l6 (24400 460) (425 950)) - rect(l6 (-20425 -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 (1375 -950) (425 950)) - rect(l6 (-19525 -950) (425 950)) - rect(l10 (24325 -2210) (500 1500)) + rect(l10 (26250 -800) (500 1500)) rect(l10 (-4300 -1500) (500 1500)) rect(l10 (-22600 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_simple_io.lvsdb.1 b/testdata/lvs/ringo_simple_io.lvsdb.1 index edb8e90ce..ed998ca98 100644 --- a/testdata/lvs/ringo_simple_io.lvsdb.1 +++ b/testdata/lvs/ringo_simple_io.lvsdb.1 @@ -26,6 +26,8 @@ J( C(l10 l8 l10) G(l7 SUBSTRATE) G(l10 SUBSTRATE) + K(PMOS MOS4) + K(NMOS MOS4) D(D$PMOS PMOS T(S R(l2 (-550 -750) (425 1500)) @@ -319,70 +321,37 @@ J( X(RINGO R((0 350) (25800 7650)) N(1 - R(l8 (4710 3010) (180 180)) - R(l11 (-850 -240) (610 300)) - R(l2 (-2550 1800) (425 1500)) - R(l2 (950 -1500) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (4040 2950) (610 300)) ) N(2 - R(l8 (6510 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (5550 2950) (900 300)) ) N(3 - R(l8 (8310 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (7350 2950) (900 300)) ) N(4 - R(l8 (10110 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (9150 2950) (900 300)) ) N(5 - R(l8 (11910 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (10950 2950) (900 300)) ) N(6 - R(l8 (13710 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (12750 2950) (900 300)) ) N(7 - R(l8 (15510 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (14550 2950) (900 300)) ) N(8 - R(l8 (17310 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (16350 2950) (900 300)) ) N(9 - R(l8 (19110 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (18150 2950) (900 300)) ) N(10 - R(l8 (20910 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (19950 2950) (900 300)) ) N(11 I(FB) - R(l8 (22710 3010) (180 180)) - R(l8 (-19700 720) (180 180)) - R(l11 (18380 -1140) (900 300)) + R(l11 (21750 2950) (900 300)) R(l11 (-19530 590) (320 320)) R(l11 (17820 -320) (320 320)) R(l12 (-18400 -260) (200 200)) @@ -391,8 +360,6 @@ J( R(l13 (-17921 -201) (2 2)) R(l13 (-221 -201) (400 400)) R(l13 (17740 -400) (400 400)) - R(l2 (-245 850) (425 1500)) - R(l6 (-425 -4890) (425 950)) ) N(12 I(VDD) R(l3 (500 4500) (1400 3500)) @@ -414,20 +381,7 @@ J( R(l11 (-750 -1450) (300 1400)) R(l11 (-101 -351) (2 2)) R(l11 (549 -401) (600 800)) - R(l2 (-23025 -2550) (425 1500)) - R(l2 (-400 -1500) (425 1500)) - R(l2 (1275 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l9 (-21975 -450) (500 1500)) + R(l9 (-24850 -1500) (500 1500)) R(l9 (22900 -1500) (500 1500)) ) N(13 I(OUT) @@ -435,12 +389,9 @@ J( R(l12 (-260 -260) (200 200)) R(l13 (-101 -101) (2 2)) R(l13 (-201 -201) (400 400)) - R(l2 (-625 850) (425 1500)) - R(l6 (-425 -4890) (425 950)) ) N(14 I(ENABLE) - R(l8 (2510 3010) (180 180)) - R(l11 (-250 -250) (320 320)) + R(l11 (2440 2940) (320 320)) R(l12 (-260 -260) (200 200)) R(l13 (-101 -101) (2 2)) R(l13 (-201 -201) (400 400)) @@ -461,19 +412,7 @@ J( R(l11 (-750 -1450) (1200 800)) R(l11 (-551 -401) (2 2)) R(l11 (549 -401) (600 800)) - R(l6 (-23700 460) (425 950)) - R(l6 (1975 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l10 (-21975 -2210) (500 1500)) + R(l10 (-24850 -800) (500 1500)) R(l10 (22900 -1500) (500 1500)) ) P(11 I(FB)) @@ -581,6 +520,8 @@ J( ) ) H( + K(PMOS MOS4) + K(NMOS MOS4) X(ND2X1 N(1 I(VDD)) N(2 I(OUT)) diff --git a/testdata/lvs/ringo_simple_io.lvsdb.2 b/testdata/lvs/ringo_simple_io.lvsdb.2 index 1db7e627a..8b7238826 100644 --- a/testdata/lvs/ringo_simple_io.lvsdb.2 +++ b/testdata/lvs/ringo_simple_io.lvsdb.2 @@ -26,6 +26,8 @@ J( C(l10 l8 l10) G(l7 SUBSTRATE) G(l10 SUBSTRATE) + K(PMOS MOS4) + K(NMOS MOS4) D(D$PMOS PMOS T(S R(l2 (-550 -750) (425 1500)) @@ -319,70 +321,37 @@ J( X(RINGO R((0 350) (25800 7650)) N(1 - R(l8 (4710 3010) (180 180)) - R(l11 (-850 -240) (610 300)) - R(l2 (-1175 1800) (425 1500)) - R(l2 (-1800 -1500) (425 1500)) - R(l6 (950 -4890) (425 950)) + R(l11 (4040 2950) (610 300)) ) N(2 - R(l8 (6510 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (5550 2950) (900 300)) ) N(3 - R(l8 (8310 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (7350 2950) (900 300)) ) N(4 - R(l8 (10110 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (9150 2950) (900 300)) ) N(5 - R(l8 (11910 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (10950 2950) (900 300)) ) N(6 - R(l8 (13710 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (12750 2950) (900 300)) ) N(7 - R(l8 (15510 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (14550 2950) (900 300)) ) N(8 - R(l8 (17310 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (16350 2950) (900 300)) ) N(9 - R(l8 (19110 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (18150 2950) (900 300)) ) N(10 - R(l8 (20910 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (19950 2950) (900 300)) ) N(11 I(FB) - R(l8 (22710 3010) (180 180)) - R(l8 (-19700 720) (180 180)) - R(l11 (18380 -1140) (900 300)) + R(l11 (21750 2950) (900 300)) R(l11 (-19530 590) (320 320)) R(l11 (17820 -320) (320 320)) R(l12 (-18400 -260) (200 200)) @@ -391,8 +360,6 @@ J( R(l13 (-17921 -201) (2 2)) R(l13 (-221 -201) (400 400)) R(l13 (17740 -400) (400 400)) - R(l2 (-245 850) (425 1500)) - R(l6 (-425 -4890) (425 950)) ) N(12 I(VDD) R(l3 (500 4500) (1400 3500)) @@ -414,20 +381,7 @@ J( R(l11 (-750 -1450) (300 1400)) R(l11 (-101 -351) (2 2)) R(l11 (549 -401) (600 800)) - R(l2 (-23025 -2550) (425 1500)) - R(l2 (-400 -1500) (425 1500)) - R(l2 (1275 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l9 (-21975 -450) (500 1500)) + R(l9 (-24850 -1500) (500 1500)) R(l9 (22900 -1500) (500 1500)) ) N(13 I(OUT) @@ -435,12 +389,9 @@ J( R(l12 (-260 -260) (200 200)) R(l13 (-101 -101) (2 2)) R(l13 (-201 -201) (400 400)) - R(l2 (-625 850) (425 1500)) - R(l6 (-425 -4890) (425 950)) ) N(14 I(ENABLE) - R(l8 (2510 3010) (180 180)) - R(l11 (-250 -250) (320 320)) + R(l11 (2440 2940) (320 320)) R(l12 (-260 -260) (200 200)) R(l13 (-101 -101) (2 2)) R(l13 (-201 -201) (400 400)) @@ -461,19 +412,7 @@ J( R(l11 (-750 -1450) (1200 800)) R(l11 (-551 -401) (2 2)) R(l11 (549 -401) (600 800)) - R(l6 (-23700 460) (425 950)) - R(l6 (1975 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l10 (-21975 -2210) (500 1500)) + R(l10 (-24850 -800) (500 1500)) R(l10 (22900 -1500) (500 1500)) ) P(11 I(FB)) @@ -581,6 +520,8 @@ J( ) ) H( + K(PMOS MOS4) + K(NMOS MOS4) X(ND2X1 N(1 I(VDD)) N(2 I(OUT)) diff --git a/testdata/lvs/ringo_simple_io2.l2n.1 b/testdata/lvs/ringo_simple_io2.l2n.1 index 3d7cc23b1..7e0cf804b 100644 --- a/testdata/lvs/ringo_simple_io2.l2n.1 +++ b/testdata/lvs/ringo_simple_io2.l2n.1 @@ -25,6 +25,8 @@ C(l6 l8 l6) C(l10 l8 l10) G(l7 SUBSTRATE) G(l10 SUBSTRATE) +K(PMOS MOS4) +K(NMOS MOS4) D(D$PMOS PMOS T(S R(l2 (-550 -750) (425 1500)) @@ -318,70 +320,37 @@ X(INVX1 X(RINGO R((0 350) (25800 7650)) N(1 - R(l8 (4710 3010) (180 180)) - R(l11 (-850 -240) (610 300)) - R(l2 (-2550 1800) (425 1500)) - R(l2 (950 -1500) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (4040 2950) (610 300)) ) N(2 - R(l8 (6510 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (5550 2950) (900 300)) ) N(3 - R(l8 (8310 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (7350 2950) (900 300)) ) N(4 - R(l8 (10110 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (9150 2950) (900 300)) ) N(5 - R(l8 (11910 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (10950 2950) (900 300)) ) N(6 - R(l8 (13710 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (12750 2950) (900 300)) ) N(7 - R(l8 (15510 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (14550 2950) (900 300)) ) N(8 - R(l8 (17310 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (16350 2950) (900 300)) ) N(9 - R(l8 (19110 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (18150 2950) (900 300)) ) N(10 - R(l8 (20910 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (19950 2950) (900 300)) ) N(11 I(FB) - R(l8 (22710 3010) (180 180)) - R(l8 (-19700 720) (180 180)) - R(l11 (18380 -1140) (900 300)) + R(l11 (21750 2950) (900 300)) R(l11 (-19530 590) (320 320)) R(l11 (17820 -320) (320 320)) R(l12 (-18400 -260) (200 200)) @@ -390,8 +359,6 @@ X(RINGO R(l13 (-17921 -201) (2 2)) R(l13 (-221 -201) (400 400)) R(l13 (17740 -400) (400 400)) - R(l2 (-245 850) (425 1500)) - R(l6 (-425 -4890) (425 950)) ) N(12 I(VDD) R(l3 (500 4500) (1400 3500)) @@ -413,20 +380,7 @@ X(RINGO R(l11 (-750 -1450) (300 1400)) R(l11 (-101 -351) (2 2)) R(l11 (549 -401) (600 800)) - R(l2 (-23025 -2550) (425 1500)) - R(l2 (-400 -1500) (425 1500)) - R(l2 (1275 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l9 (-21975 -450) (500 1500)) + R(l9 (-24850 -1500) (500 1500)) R(l9 (22900 -1500) (500 1500)) ) N(13 I(OUT) @@ -434,12 +388,9 @@ X(RINGO R(l12 (-260 -260) (200 200)) R(l13 (-101 -101) (2 2)) R(l13 (-201 -201) (400 400)) - R(l2 (-625 850) (425 1500)) - R(l6 (-425 -4890) (425 950)) ) N(14 I(ENABLE) - R(l8 (2510 3010) (180 180)) - R(l11 (-250 -250) (320 320)) + R(l11 (2440 2940) (320 320)) R(l12 (-260 -260) (200 200)) R(l13 (-101 -101) (2 2)) R(l13 (-201 -201) (400 400)) @@ -460,19 +411,7 @@ X(RINGO R(l11 (-750 -1450) (1200 800)) R(l11 (-551 -401) (2 2)) R(l11 (549 -401) (600 800)) - R(l6 (-23700 460) (425 950)) - R(l6 (1975 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l10 (-21975 -2210) (500 1500)) + R(l10 (-24850 -800) (500 1500)) R(l10 (22900 -1500) (500 1500)) ) P(11 I(FB)) diff --git a/testdata/lvs/ringo_simple_io2.l2n.2 b/testdata/lvs/ringo_simple_io2.l2n.2 index 715c73183..6b6d1f1d7 100644 --- a/testdata/lvs/ringo_simple_io2.l2n.2 +++ b/testdata/lvs/ringo_simple_io2.l2n.2 @@ -25,6 +25,8 @@ C(l6 l8 l6) C(l10 l8 l10) G(l7 SUBSTRATE) G(l10 SUBSTRATE) +K(PMOS MOS4) +K(NMOS MOS4) D(D$PMOS PMOS T(S R(l2 (-550 -750) (425 1500)) @@ -318,70 +320,37 @@ X(INVX1 X(RINGO R((0 350) (25800 7650)) N(1 - R(l8 (4710 3010) (180 180)) - R(l11 (-850 -240) (610 300)) - R(l2 (-1175 1800) (425 1500)) - R(l2 (-1800 -1500) (425 1500)) - R(l6 (950 -4890) (425 950)) + R(l11 (4040 2950) (610 300)) ) N(2 - R(l8 (6510 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (5550 2950) (900 300)) ) N(3 - R(l8 (8310 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (7350 2950) (900 300)) ) N(4 - R(l8 (10110 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (9150 2950) (900 300)) ) N(5 - R(l8 (11910 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (10950 2950) (900 300)) ) N(6 - R(l8 (13710 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (12750 2950) (900 300)) ) N(7 - R(l8 (15510 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (14550 2950) (900 300)) ) N(8 - R(l8 (17310 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (16350 2950) (900 300)) ) N(9 - R(l8 (19110 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (18150 2950) (900 300)) ) N(10 - R(l8 (20910 3010) (180 180)) - R(l11 (-1140 -240) (900 300)) - R(l2 (-1275 1800) (425 1500)) - R(l6 (-425 -4890) (425 950)) + R(l11 (19950 2950) (900 300)) ) N(11 I(FB) - R(l8 (22710 3010) (180 180)) - R(l8 (-19700 720) (180 180)) - R(l11 (18380 -1140) (900 300)) + R(l11 (21750 2950) (900 300)) R(l11 (-19530 590) (320 320)) R(l11 (17820 -320) (320 320)) R(l12 (-18400 -260) (200 200)) @@ -390,8 +359,6 @@ X(RINGO R(l13 (-17921 -201) (2 2)) R(l13 (-221 -201) (400 400)) R(l13 (17740 -400) (400 400)) - R(l2 (-245 850) (425 1500)) - R(l6 (-425 -4890) (425 950)) ) N(12 I(VDD) R(l3 (500 4500) (1400 3500)) @@ -413,20 +380,7 @@ X(RINGO R(l11 (-750 -1450) (300 1400)) R(l11 (-101 -351) (2 2)) R(l11 (549 -401) (600 800)) - R(l2 (-23025 -2550) (425 1500)) - R(l2 (-400 -1500) (425 1500)) - R(l2 (1275 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l2 (1375 -1500) (425 1500)) - R(l9 (-21975 -450) (500 1500)) + R(l9 (-24850 -1500) (500 1500)) R(l9 (22900 -1500) (500 1500)) ) N(13 I(OUT) @@ -434,12 +388,9 @@ X(RINGO R(l12 (-260 -260) (200 200)) R(l13 (-101 -101) (2 2)) R(l13 (-201 -201) (400 400)) - R(l2 (-625 850) (425 1500)) - R(l6 (-425 -4890) (425 950)) ) N(14 I(ENABLE) - R(l8 (2510 3010) (180 180)) - R(l11 (-250 -250) (320 320)) + R(l11 (2440 2940) (320 320)) R(l12 (-260 -260) (200 200)) R(l13 (-101 -101) (2 2)) R(l13 (-201 -201) (400 400)) @@ -460,19 +411,7 @@ X(RINGO R(l11 (-750 -1450) (1200 800)) R(l11 (-551 -401) (2 2)) R(l11 (549 -401) (600 800)) - R(l6 (-23700 460) (425 950)) - R(l6 (1975 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l6 (1375 -950) (425 950)) - R(l10 (-21975 -2210) (500 1500)) + R(l10 (-24850 -800) (500 1500)) R(l10 (22900 -1500) (500 1500)) ) P(11 I(FB)) diff --git a/testdata/lvs/ringo_simple_io2.lvsdb.1 b/testdata/lvs/ringo_simple_io2.lvsdb.1 index a68dae475..b4494918c 100644 --- a/testdata/lvs/ringo_simple_io2.lvsdb.1 +++ b/testdata/lvs/ringo_simple_io2.lvsdb.1 @@ -362,70 +362,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)) @@ -434,8 +401,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)) @@ -457,20 +422,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 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(13 name(OUT) @@ -478,12 +430,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)) @@ -504,19 +453,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 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l10 (-21975 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_simple_io2.lvsdb.2 b/testdata/lvs/ringo_simple_io2.lvsdb.2 index 834cc43fe..b585c4ca4 100644 --- a/testdata/lvs/ringo_simple_io2.lvsdb.2 +++ b/testdata/lvs/ringo_simple_io2.lvsdb.2 @@ -362,70 +362,37 @@ layout( # 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)) + 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)) @@ -434,8 +401,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)) @@ -457,20 +422,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 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(13 name(OUT) @@ -478,12 +430,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)) @@ -504,19 +453,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 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l10 (-21975 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_simple_net_and_circuit_equivalence.lvsdb.1 b/testdata/lvs/ringo_simple_net_and_circuit_equivalence.lvsdb.1 index bee7ccfc8..a43d6f458 100644 --- a/testdata/lvs/ringo_simple_net_and_circuit_equivalence.lvsdb.1 +++ b/testdata/lvs/ringo_simple_net_and_circuit_equivalence.lvsdb.1 @@ -362,70 +362,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)) @@ -434,8 +401,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)) @@ -457,20 +422,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 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(13 name(OUT) @@ -478,12 +430,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)) @@ -504,19 +453,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 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l10 (-21975 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_simple_net_and_circuit_equivalence.lvsdb.2 b/testdata/lvs/ringo_simple_net_and_circuit_equivalence.lvsdb.2 index f57553a48..04e80f7d8 100644 --- a/testdata/lvs/ringo_simple_net_and_circuit_equivalence.lvsdb.2 +++ b/testdata/lvs/ringo_simple_net_and_circuit_equivalence.lvsdb.2 @@ -362,70 +362,37 @@ layout( # 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)) + 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)) @@ -434,8 +401,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)) @@ -457,20 +422,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 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(13 name(OUT) @@ -478,12 +430,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)) @@ -504,19 +453,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 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l10 (-21975 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_simple_pin_swapping.lvsdb.1 b/testdata/lvs/ringo_simple_pin_swapping.lvsdb.1 index 4c98e224d..42ac52dd1 100644 --- a/testdata/lvs/ringo_simple_pin_swapping.lvsdb.1 +++ b/testdata/lvs/ringo_simple_pin_swapping.lvsdb.1 @@ -362,70 +362,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)) @@ -434,8 +401,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)) @@ -457,20 +422,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 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(13 name(OUT) @@ -478,12 +430,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)) @@ -504,19 +453,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 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l10 (-21975 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_simple_pin_swapping.lvsdb.2 b/testdata/lvs/ringo_simple_pin_swapping.lvsdb.2 index 45cc8683d..cb34ae9bf 100644 --- a/testdata/lvs/ringo_simple_pin_swapping.lvsdb.2 +++ b/testdata/lvs/ringo_simple_pin_swapping.lvsdb.2 @@ -362,70 +362,37 @@ layout( # 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)) + 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)) @@ -434,8 +401,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)) @@ -457,20 +422,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 (1375 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l9 (-21975 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(13 name(OUT) @@ -478,12 +430,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)) @@ -504,19 +453,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 (1375 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l10 (-21975 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_simple_same_device_classes.lvsdb.1 b/testdata/lvs/ringo_simple_same_device_classes.lvsdb.1 index bff454e1e..1260655ac 100644 --- a/testdata/lvs/ringo_simple_same_device_classes.lvsdb.1 +++ b/testdata/lvs/ringo_simple_same_device_classes.lvsdb.1 @@ -364,70 +364,37 @@ layout( # Nets with their geometries net(1 - rect(l14 (4710 3010) (180 180)) - rect(l17 (-850 -240) (610 300)) - rect(l4 (-2550 1800) (425 1500)) - rect(l4 (950 -1500) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (4040 2950) (610 300)) ) net(2 - rect(l14 (6510 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (5550 2950) (900 300)) ) net(3 - rect(l14 (8310 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (7350 2950) (900 300)) ) net(4 - rect(l14 (10110 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (9150 2950) (900 300)) ) net(5 - rect(l14 (11910 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (10950 2950) (900 300)) ) net(6 - rect(l14 (13710 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (12750 2950) (900 300)) ) net(7 - rect(l14 (15510 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (14550 2950) (900 300)) ) net(8 - rect(l14 (17310 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (16350 2950) (900 300)) ) net(9 - rect(l14 (19110 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (18150 2950) (900 300)) ) net(10 - rect(l14 (20910 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (19950 2950) (900 300)) ) net(11 name(FB) - rect(l14 (22710 3010) (180 180)) - rect(l14 (-19700 720) (180 180)) - rect(l17 (18380 -1140) (900 300)) + rect(l17 (21750 2950) (900 300)) rect(l17 (-19530 590) (320 320)) rect(l17 (17820 -320) (320 320)) rect(l18 (-18400 -260) (200 200)) @@ -436,8 +403,6 @@ layout( rect(l19 (-17921 -201) (2 2)) rect(l19 (-221 -201) (400 400)) rect(l19 (17740 -400) (400 400)) - rect(l4 (-245 850) (425 1500)) - rect(l9 (-425 -4890) (425 950)) ) net(12 name(VDD) rect(l3 (500 4500) (1400 3500)) @@ -459,20 +424,7 @@ layout( rect(l17 (-750 -1450) (300 1400)) rect(l17 (-101 -351) (2 2)) rect(l17 (549 -401) (600 800)) - rect(l4 (-23025 -2550) (425 1500)) - rect(l4 (-400 -1500) (425 1500)) - rect(l4 (1275 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l15 (-21975 -450) (500 1500)) + rect(l15 (-24850 -1500) (500 1500)) rect(l15 (22900 -1500) (500 1500)) ) net(13 name(OUT) @@ -480,12 +432,9 @@ layout( rect(l18 (-260 -260) (200 200)) rect(l19 (-101 -101) (2 2)) rect(l19 (-201 -201) (400 400)) - rect(l4 (-625 850) (425 1500)) - rect(l9 (-425 -4890) (425 950)) ) net(14 name(ENABLE) - rect(l14 (2510 3010) (180 180)) - rect(l17 (-250 -250) (320 320)) + rect(l17 (2440 2940) (320 320)) rect(l18 (-260 -260) (200 200)) rect(l19 (-101 -101) (2 2)) rect(l19 (-201 -201) (400 400)) @@ -506,19 +455,7 @@ layout( rect(l17 (-750 -1450) (1200 800)) rect(l17 (-551 -401) (2 2)) rect(l17 (549 -401) (600 800)) - rect(l9 (-23700 460) (425 950)) - rect(l9 (1975 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l16 (-21975 -2210) (500 1500)) + rect(l16 (-24850 -800) (500 1500)) rect(l16 (22900 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_simple_same_device_classes.lvsdb.2 b/testdata/lvs/ringo_simple_same_device_classes.lvsdb.2 index 2d7583393..f244f5156 100644 --- a/testdata/lvs/ringo_simple_same_device_classes.lvsdb.2 +++ b/testdata/lvs/ringo_simple_same_device_classes.lvsdb.2 @@ -364,70 +364,37 @@ layout( # Nets with their geometries net(1 - rect(l14 (4710 3010) (180 180)) - rect(l17 (-850 -240) (610 300)) - rect(l4 (-1175 1800) (425 1500)) - rect(l4 (-1800 -1500) (425 1500)) - rect(l9 (950 -4890) (425 950)) + rect(l17 (4040 2950) (610 300)) ) net(2 - rect(l14 (6510 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (5550 2950) (900 300)) ) net(3 - rect(l14 (8310 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (7350 2950) (900 300)) ) net(4 - rect(l14 (10110 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (9150 2950) (900 300)) ) net(5 - rect(l14 (11910 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (10950 2950) (900 300)) ) net(6 - rect(l14 (13710 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (12750 2950) (900 300)) ) net(7 - rect(l14 (15510 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (14550 2950) (900 300)) ) net(8 - rect(l14 (17310 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (16350 2950) (900 300)) ) net(9 - rect(l14 (19110 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (18150 2950) (900 300)) ) net(10 - rect(l14 (20910 3010) (180 180)) - rect(l17 (-1140 -240) (900 300)) - rect(l4 (-1275 1800) (425 1500)) - rect(l9 (-425 -4890) (425 950)) + rect(l17 (19950 2950) (900 300)) ) net(11 name(FB) - rect(l14 (22710 3010) (180 180)) - rect(l14 (-19700 720) (180 180)) - rect(l17 (18380 -1140) (900 300)) + rect(l17 (21750 2950) (900 300)) rect(l17 (-19530 590) (320 320)) rect(l17 (17820 -320) (320 320)) rect(l18 (-18400 -260) (200 200)) @@ -436,8 +403,6 @@ layout( rect(l19 (-17921 -201) (2 2)) rect(l19 (-221 -201) (400 400)) rect(l19 (17740 -400) (400 400)) - rect(l4 (-245 850) (425 1500)) - rect(l9 (-425 -4890) (425 950)) ) net(12 name(VDD) rect(l3 (500 4500) (1400 3500)) @@ -459,20 +424,7 @@ layout( rect(l17 (-750 -1450) (300 1400)) rect(l17 (-101 -351) (2 2)) rect(l17 (549 -401) (600 800)) - rect(l4 (-23025 -2550) (425 1500)) - rect(l4 (-400 -1500) (425 1500)) - rect(l4 (1275 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l4 (1375 -1500) (425 1500)) - rect(l15 (-21975 -450) (500 1500)) + rect(l15 (-24850 -1500) (500 1500)) rect(l15 (22900 -1500) (500 1500)) ) net(13 name(OUT) @@ -480,12 +432,9 @@ layout( rect(l18 (-260 -260) (200 200)) rect(l19 (-101 -101) (2 2)) rect(l19 (-201 -201) (400 400)) - rect(l4 (-625 850) (425 1500)) - rect(l9 (-425 -4890) (425 950)) ) net(14 name(ENABLE) - rect(l14 (2510 3010) (180 180)) - rect(l17 (-250 -250) (320 320)) + rect(l17 (2440 2940) (320 320)) rect(l18 (-260 -260) (200 200)) rect(l19 (-101 -101) (2 2)) rect(l19 (-201 -201) (400 400)) @@ -506,19 +455,7 @@ layout( rect(l17 (-750 -1450) (1200 800)) rect(l17 (-551 -401) (2 2)) rect(l17 (549 -401) (600 800)) - rect(l9 (-23700 460) (425 950)) - rect(l9 (1975 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l9 (1375 -950) (425 950)) - rect(l16 (-21975 -2210) (500 1500)) + rect(l16 (-24850 -800) (500 1500)) rect(l16 (22900 -1500) (500 1500)) ) diff --git a/testdata/lvs/ringo_simple_simplification.lvsdb.1 b/testdata/lvs/ringo_simple_simplification.lvsdb.1 index b0e4b5871..fb0393863 100644 --- a/testdata/lvs/ringo_simple_simplification.lvsdb.1 +++ b/testdata/lvs/ringo_simple_simplification.lvsdb.1 @@ -484,34 +484,19 @@ 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 (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(4 - 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(5 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)) @@ -520,8 +505,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(6 name(VDD) rect(l3 (1100 4500) (1400 3500)) @@ -543,21 +526,7 @@ layout( rect(l11 (-750 -1450) (300 1400)) rect(l11 (-101 -351) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l2 (-23625 -2550) (425 1500)) - rect(l2 (-400 -1500) (425 1500)) - rect(l2 (1275 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (3175 -1500) (425 1500)) - rect(l2 (-2225 -1500) (425 1500)) - rect(l2 (3175 -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 (950 -1500) (425 1500)) - rect(l2 (-3600 -1500) (425 1500)) - rect(l9 (-19575 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(7 name(OUT) @@ -565,14 +534,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(l2 (-400 -1500) (425 1500)) - rect(l6 (-450 -4890) (425 950)) - rect(l6 (-400 -950) (425 950)) ) net(8 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)) @@ -593,57 +557,26 @@ layout( rect(l11 (-750 -1450) (1200 800)) rect(l11 (-551 -401) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l6 (-24300 460) (425 950)) - rect(l6 (1975 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (3175 -950) (425 950)) - rect(l6 (-2225 -950) (425 950)) - rect(l6 (3175 -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 (950 -950) (425 950)) - rect(l6 (-3600 -950) (425 950)) - rect(l10 (-19575 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) net(10 - 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(11 - 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(12 - 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(13 - 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(14 - 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(15 - 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)) ) # Outgoing pins and their connections to nets diff --git a/testdata/lvs/ringo_simple_simplification.lvsdb.2 b/testdata/lvs/ringo_simple_simplification.lvsdb.2 index 77e688c6e..8ef1094e4 100644 --- a/testdata/lvs/ringo_simple_simplification.lvsdb.2 +++ b/testdata/lvs/ringo_simple_simplification.lvsdb.2 @@ -163,9 +163,9 @@ layout( rect(l11 (-1751 1099) (300 1400)) rect(l11 (1100 -1700) (300 300)) rect(l11 (-300 0) (300 1400)) - rect(l2 (-1750 -1450) (425 1500)) - rect(l2 (950 -1500) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + 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)) @@ -389,8 +389,8 @@ layout( rect(l11 (1100 -300) (300 300)) rect(l11 (-1101 399) (2 2)) rect(l11 (799 -2101) (300 1400)) - rect(l2 (-1750 -1450) (425 1500)) - rect(l2 (950 -1500) (425 1500)) + rect(l2 (-375 -1450) (425 1500)) + rect(l2 (-1800 -1500) (425 1500)) ) net(3 name(OUT) rect(l8 (1110 5160) (180 180)) @@ -484,34 +484,19 @@ 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 (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(4 - 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(5 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)) @@ -520,8 +505,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(6 name(VDD) rect(l3 (1100 4500) (1400 3500)) @@ -543,21 +526,7 @@ layout( rect(l11 (-750 -1450) (300 1400)) rect(l11 (-101 -351) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l2 (-23625 -2550) (425 1500)) - rect(l2 (-400 -1500) (425 1500)) - rect(l2 (1275 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (3175 -1500) (425 1500)) - rect(l2 (-2225 -1500) (425 1500)) - rect(l2 (3175 -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 (950 -1500) (425 1500)) - rect(l2 (-3600 -1500) (425 1500)) - rect(l9 (-19575 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(7 name(OUT) @@ -565,14 +534,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(l2 (-400 -1500) (425 1500)) - rect(l6 (-450 -4890) (425 950)) - rect(l6 (-400 -950) (425 950)) ) net(8 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)) @@ -593,57 +557,26 @@ layout( rect(l11 (-750 -1450) (1200 800)) rect(l11 (-551 -401) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l6 (-24300 460) (425 950)) - rect(l6 (1975 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (3175 -950) (425 950)) - rect(l6 (-2225 -950) (425 950)) - rect(l6 (3175 -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 (4550 -950) (425 950)) - rect(l6 (-1800 -950) (425 950)) - rect(l6 (-2225 -950) (425 950)) - rect(l10 (-19575 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) net(10 - 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(11 - 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(12 - 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(13 - 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(14 - 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(15 - 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)) ) # Outgoing pins and their connections to nets diff --git a/testdata/lvs/ringo_simple_simplification.lvsdb.3 b/testdata/lvs/ringo_simple_simplification.lvsdb.3 index 2492067a3..53ac9099a 100644 --- a/testdata/lvs/ringo_simple_simplification.lvsdb.3 +++ b/testdata/lvs/ringo_simple_simplification.lvsdb.3 @@ -163,9 +163,9 @@ layout( 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)) + rect(l2 (-1750 -1450) (425 1500)) + rect(l2 (950 -1500) (425 1500)) + rect(l6 (-425 -4890) (425 950)) ) net(3 name(VSS) rect(l8 (410 1770) (180 180)) @@ -389,8 +389,8 @@ layout( rect(l11 (1100 -300) (300 300)) rect(l11 (-1101 399) (2 2)) rect(l11 (799 -2101) (300 1400)) - rect(l2 (-375 -1450) (425 1500)) - rect(l2 (-1800 -1500) (425 1500)) + rect(l2 (-1750 -1450) (425 1500)) + rect(l2 (950 -1500) (425 1500)) ) net(3 name(OUT) rect(l8 (1110 5160) (180 180)) @@ -484,34 +484,19 @@ layout( # 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)) + 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 (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(4 - 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(5 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)) @@ -520,8 +505,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(6 name(VDD) rect(l3 (1100 4500) (1400 3500)) @@ -543,21 +526,7 @@ layout( rect(l11 (-750 -1450) (300 1400)) rect(l11 (-101 -351) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l2 (-23625 -2550) (425 1500)) - rect(l2 (-400 -1500) (425 1500)) - rect(l2 (1275 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (3175 -1500) (425 1500)) - rect(l2 (-2225 -1500) (425 1500)) - rect(l2 (3175 -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 (4550 -1500) (425 1500)) - rect(l2 (-1800 -1500) (425 1500)) - rect(l2 (-2225 -1500) (425 1500)) - rect(l9 (-19575 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(7 name(OUT) @@ -565,14 +534,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(l2 (-400 -1500) (425 1500)) - rect(l6 (-450 -4890) (425 950)) - rect(l6 (-400 -950) (425 950)) ) net(8 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)) @@ -593,57 +557,26 @@ layout( rect(l11 (-750 -1450) (1200 800)) rect(l11 (-551 -401) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l6 (-24300 460) (425 950)) - rect(l6 (1975 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (3175 -950) (425 950)) - rect(l6 (-2225 -950) (425 950)) - rect(l6 (3175 -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 (4550 -950) (425 950)) - rect(l6 (-1800 -950) (425 950)) - rect(l6 (-2225 -950) (425 950)) - rect(l10 (-19575 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) net(10 - 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(11 - 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(12 - 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(13 - 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(14 - 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(15 - 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)) ) # Outgoing pins and their connections to nets diff --git a/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.1 b/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.1 index 609357e5f..337303dd0 100644 --- a/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.1 +++ b/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.1 @@ -484,34 +484,19 @@ 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 (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(4 - 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(5 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)) @@ -520,8 +505,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(6 name(VDD) rect(l3 (1100 4500) (1400 3500)) @@ -543,21 +526,7 @@ layout( rect(l11 (-750 -1450) (300 1400)) rect(l11 (-101 -351) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l2 (-23625 -2550) (425 1500)) - rect(l2 (-400 -1500) (425 1500)) - rect(l2 (1275 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (3175 -1500) (425 1500)) - rect(l2 (-2225 -1500) (425 1500)) - rect(l2 (3175 -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 (950 -1500) (425 1500)) - rect(l2 (-3600 -1500) (425 1500)) - rect(l9 (-19575 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(7 name(OUT) @@ -565,14 +534,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(l2 (-400 -1500) (425 1500)) - rect(l6 (-450 -4890) (425 950)) - rect(l6 (-400 -950) (425 950)) ) net(8 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)) @@ -593,57 +557,26 @@ layout( rect(l11 (-750 -1450) (1200 800)) rect(l11 (-551 -401) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l6 (-24300 460) (425 950)) - rect(l6 (1975 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (3175 -950) (425 950)) - rect(l6 (-2225 -950) (425 950)) - rect(l6 (3175 -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 (950 -950) (425 950)) - rect(l6 (-3600 -950) (425 950)) - rect(l10 (-19575 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) net(10 - 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(11 - 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(12 - 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(13 - 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(14 - 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(15 - 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)) ) # Outgoing pins and their connections to nets diff --git a/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.2 b/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.2 index 909c14e3d..03d0da560 100644 --- a/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.2 +++ b/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.2 @@ -163,9 +163,9 @@ layout( rect(l11 (-1751 1099) (300 1400)) rect(l11 (1100 -1700) (300 300)) rect(l11 (-300 0) (300 1400)) - rect(l2 (-1750 -1450) (425 1500)) - rect(l2 (950 -1500) (425 1500)) - rect(l6 (-425 -4890) (425 950)) + 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)) @@ -389,8 +389,8 @@ layout( rect(l11 (1100 -300) (300 300)) rect(l11 (-1101 399) (2 2)) rect(l11 (799 -2101) (300 1400)) - rect(l2 (-1750 -1450) (425 1500)) - rect(l2 (950 -1500) (425 1500)) + rect(l2 (-375 -1450) (425 1500)) + rect(l2 (-1800 -1500) (425 1500)) ) net(3 name(OUT) rect(l8 (1110 5160) (180 180)) @@ -484,34 +484,19 @@ 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 (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(4 - 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(5 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)) @@ -520,8 +505,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(6 name(VDD) rect(l3 (1100 4500) (1400 3500)) @@ -543,21 +526,7 @@ layout( rect(l11 (-750 -1450) (300 1400)) rect(l11 (-101 -351) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l2 (-23625 -2550) (425 1500)) - rect(l2 (-400 -1500) (425 1500)) - rect(l2 (1275 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (3175 -1500) (425 1500)) - rect(l2 (-2225 -1500) (425 1500)) - rect(l2 (3175 -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 (950 -1500) (425 1500)) - rect(l2 (-3600 -1500) (425 1500)) - rect(l9 (-19575 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(7 name(OUT) @@ -565,14 +534,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(l2 (-400 -1500) (425 1500)) - rect(l6 (-450 -4890) (425 950)) - rect(l6 (-400 -950) (425 950)) ) net(8 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)) @@ -593,57 +557,26 @@ layout( rect(l11 (-750 -1450) (1200 800)) rect(l11 (-551 -401) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l6 (-24300 460) (425 950)) - rect(l6 (1975 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (3175 -950) (425 950)) - rect(l6 (-2225 -950) (425 950)) - rect(l6 (3175 -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 (4550 -950) (425 950)) - rect(l6 (-1800 -950) (425 950)) - rect(l6 (-2225 -950) (425 950)) - rect(l10 (-19575 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) net(10 - 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(11 - 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(12 - 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(13 - 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(14 - 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(15 - 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)) ) # Outgoing pins and their connections to nets diff --git a/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.3 b/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.3 index 60f468222..be1456dd3 100644 --- a/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.3 +++ b/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.3 @@ -163,9 +163,9 @@ layout( 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)) + rect(l2 (-1750 -1450) (425 1500)) + rect(l2 (950 -1500) (425 1500)) + rect(l6 (-425 -4890) (425 950)) ) net(3 name(VSS) rect(l8 (410 1770) (180 180)) @@ -389,8 +389,8 @@ layout( rect(l11 (1100 -300) (300 300)) rect(l11 (-1101 399) (2 2)) rect(l11 (799 -2101) (300 1400)) - rect(l2 (-375 -1450) (425 1500)) - rect(l2 (-1800 -1500) (425 1500)) + rect(l2 (-1750 -1450) (425 1500)) + rect(l2 (950 -1500) (425 1500)) ) net(3 name(OUT) rect(l8 (1110 5160) (180 180)) @@ -484,34 +484,19 @@ layout( # 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)) + 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 (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(4 - 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(5 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)) @@ -520,8 +505,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(6 name(VDD) rect(l3 (1100 4500) (1400 3500)) @@ -543,21 +526,7 @@ layout( rect(l11 (-750 -1450) (300 1400)) rect(l11 (-101 -351) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l2 (-23625 -2550) (425 1500)) - rect(l2 (-400 -1500) (425 1500)) - rect(l2 (1275 -1500) (425 1500)) - rect(l2 (1375 -1500) (425 1500)) - rect(l2 (3175 -1500) (425 1500)) - rect(l2 (-2225 -1500) (425 1500)) - rect(l2 (3175 -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 (4550 -1500) (425 1500)) - rect(l2 (-1800 -1500) (425 1500)) - rect(l2 (-2225 -1500) (425 1500)) - rect(l9 (-19575 -450) (500 1500)) + rect(l9 (-24850 -1500) (500 1500)) rect(l9 (22900 -1500) (500 1500)) ) net(7 name(OUT) @@ -565,14 +534,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(l2 (-400 -1500) (425 1500)) - rect(l6 (-450 -4890) (425 950)) - rect(l6 (-400 -950) (425 950)) ) net(8 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)) @@ -593,57 +557,26 @@ layout( rect(l11 (-750 -1450) (1200 800)) rect(l11 (-551 -401) (2 2)) rect(l11 (549 -401) (600 800)) - rect(l6 (-24300 460) (425 950)) - rect(l6 (1975 -950) (425 950)) - rect(l6 (1375 -950) (425 950)) - rect(l6 (3175 -950) (425 950)) - rect(l6 (-2225 -950) (425 950)) - rect(l6 (3175 -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 (4550 -950) (425 950)) - rect(l6 (-1800 -950) (425 950)) - rect(l6 (-2225 -950) (425 950)) - rect(l10 (-19575 -2210) (500 1500)) + rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) net(10 - 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(11 - 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(12 - 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(13 - 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(14 - 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(15 - 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)) ) # Outgoing pins and their connections to nets diff --git a/testdata/python/dbLayoutToNetlist.py b/testdata/python/dbLayoutToNetlist.py index f5faace5c..11e395309 100644 --- a/testdata/python/dbLayoutToNetlist.py +++ b/testdata/python/dbLayoutToNetlist.py @@ -191,8 +191,8 @@ circuit INV2 (IN=IN,$2=$2,OUT=OUT,$4=$4,$5=$5); end; circuit RINGO (); subcircuit INV2 $1 (IN=$I8,$2=FB,OUT=OSC,$4=VSS,$5=VDD); - subcircuit INV2 $2 (IN=FB,$2=$I38,OUT=$I37,$4=VSS,$5=VDD); - subcircuit INV2 $3 (IN=$I37,$2=$I39,OUT=$I1,$4=VSS,$5=VDD); + subcircuit INV2 $2 (IN=FB,$2=$I38,OUT=$I19,$4=VSS,$5=VDD); + subcircuit INV2 $3 (IN=$I19,$2=$I39,OUT=$I1,$4=VSS,$5=VDD); subcircuit INV2 $4 (IN=$I1,$2=$I40,OUT=$I2,$4=VSS,$5=VDD); subcircuit INV2 $5 (IN=$I2,$2=$I41,OUT=$I3,$4=VSS,$5=VDD); subcircuit INV2 $6 (IN=$I3,$2=$I42,OUT=$I4,$4=VSS,$5=VDD); @@ -272,8 +272,8 @@ end; self.assertEqual(str(l2n.netlist()), """circuit RINGO (); subcircuit INV2 $1 (IN=$I8,$2=FB,OUT=OSC,$4=VSS,$5=VDD); - subcircuit INV2 $2 (IN=FB,$2=$I38,OUT=$I37,$4=VSS,$5=VDD); - subcircuit INV2 $3 (IN=$I37,$2=$I39,OUT=$I1,$4=VSS,$5=VDD); + subcircuit INV2 $2 (IN=FB,$2=$I38,OUT=$I19,$4=VSS,$5=VDD); + subcircuit INV2 $3 (IN=$I19,$2=$I39,OUT=$I1,$4=VSS,$5=VDD); subcircuit INV2 $4 (IN=$I1,$2=$I40,OUT=$I2,$4=VSS,$5=VDD); subcircuit INV2 $5 (IN=$I2,$2=$I41,OUT=$I3,$4=VSS,$5=VDD); subcircuit INV2 $6 (IN=$I3,$2=$I42,OUT=$I4,$4=VSS,$5=VDD); @@ -387,14 +387,14 @@ end; self.assertEqual(str(l2n.netlist()), """circuit RINGO (); subcircuit INV2PAIR $1 (BULK=VSS,$2=FB,$3=VDD,$4=VSS,$5=$I7,$6=OSC,$7=VDD); - subcircuit INV2PAIR $2 (BULK=VSS,$2=$I22,$3=VDD,$4=VSS,$5=FB,$6=$I21,$7=VDD); - subcircuit INV2PAIR $3 (BULK=VSS,$2=$I23,$3=VDD,$4=VSS,$5=$I21,$6=$I5,$7=VDD); + subcircuit INV2PAIR $2 (BULK=VSS,$2=$I22,$3=VDD,$4=VSS,$5=FB,$6=$I13,$7=VDD); + subcircuit INV2PAIR $3 (BULK=VSS,$2=$I23,$3=VDD,$4=VSS,$5=$I13,$6=$I5,$7=VDD); subcircuit INV2PAIR $4 (BULK=VSS,$2=$I24,$3=VDD,$4=VSS,$5=$I5,$6=$I6,$7=VDD); subcircuit INV2PAIR $5 (BULK=VSS,$2=$I25,$3=VDD,$4=VSS,$5=$I6,$6=$I7,$7=VDD); end; -circuit INV2PAIR (BULK=BULK,$2=$I8,$3=$I5,$4=$I4,$5=$I3,$6=$I2,$7=$I1); - subcircuit INV2 $1 ($1=$I1,IN=$I3,$3=$I7,OUT=$I6,VSS=$I4,VDD=$I5,BULK=BULK); - subcircuit INV2 $2 ($1=$I1,IN=$I6,$3=$I8,OUT=$I2,VSS=$I4,VDD=$I5,BULK=BULK); +circuit INV2PAIR (BULK=BULK,$2=$I8,$3=$I6,$4=$I5,$5=$I3,$6=$I2,$7=$I1); + subcircuit INV2 $1 ($1=$I1,IN=$I3,$3=$I7,OUT=$I4,VSS=$I5,VDD=$I6,BULK=BULK); + subcircuit INV2 $2 ($1=$I1,IN=$I4,$3=$I8,OUT=$I2,VSS=$I5,VDD=$I6,BULK=BULK); end; circuit INV2 ($1=$1,IN=IN,$3=$3,OUT=OUT,VSS=VSS,VDD=VDD,BULK=BULK); device PMOS $1 (S=$3,G=IN,D=VDD,B=$1) (L=0.25,W=0.95,AS=0.49875,AD=0.26125,PS=2.95,PD=1.5); @@ -416,14 +416,14 @@ end; self.assertEqual(str(l2n.netlist()), """circuit RINGO (FB=FB,OSC=OSC,VDD=VDD,VSS=VSS); subcircuit INV2PAIR $1 (BULK=VSS,$2=FB,$3=VDD,$4=VSS,$5=$I7,$6=OSC,$7=VDD); - subcircuit INV2PAIR $2 (BULK=VSS,$2=$I22,$3=VDD,$4=VSS,$5=FB,$6=$I21,$7=VDD); - subcircuit INV2PAIR $3 (BULK=VSS,$2=$I23,$3=VDD,$4=VSS,$5=$I21,$6=$I5,$7=VDD); + subcircuit INV2PAIR $2 (BULK=VSS,$2=$I22,$3=VDD,$4=VSS,$5=FB,$6=$I13,$7=VDD); + subcircuit INV2PAIR $3 (BULK=VSS,$2=$I23,$3=VDD,$4=VSS,$5=$I13,$6=$I5,$7=VDD); subcircuit INV2PAIR $4 (BULK=VSS,$2=$I24,$3=VDD,$4=VSS,$5=$I5,$6=$I6,$7=VDD); subcircuit INV2PAIR $5 (BULK=VSS,$2=$I25,$3=VDD,$4=VSS,$5=$I6,$6=$I7,$7=VDD); end; -circuit INV2PAIR (BULK=BULK,$2=$I8,$3=$I5,$4=$I4,$5=$I3,$6=$I2,$7=$I1); - subcircuit INV2 $1 ($1=$I1,IN=$I3,$3=$I7,OUT=$I6,VSS=$I4,VDD=$I5,BULK=BULK); - subcircuit INV2 $2 ($1=$I1,IN=$I6,$3=$I8,OUT=$I2,VSS=$I4,VDD=$I5,BULK=BULK); +circuit INV2PAIR (BULK=BULK,$2=$I8,$3=$I6,$4=$I5,$5=$I3,$6=$I2,$7=$I1); + subcircuit INV2 $1 ($1=$I1,IN=$I3,$3=$I7,OUT=$I4,VSS=$I5,VDD=$I6,BULK=BULK); + subcircuit INV2 $2 ($1=$I1,IN=$I4,$3=$I8,OUT=$I2,VSS=$I5,VDD=$I6,BULK=BULK); end; circuit INV2 ($1=$1,IN=IN,$3=$3,OUT=OUT,VSS=VSS,VDD=VDD,BULK=BULK); device PMOS $1 (S=$3,G=IN,D=VDD,B=$1) (L=0.25,W=0.95,AS=0.49875,AD=0.26125,PS=2.95,PD=1.5); diff --git a/testdata/ruby/dbLayoutToNetlist.rb b/testdata/ruby/dbLayoutToNetlist.rb index aed45f75b..727ab064a 100644 --- a/testdata/ruby/dbLayoutToNetlist.rb +++ b/testdata/ruby/dbLayoutToNetlist.rb @@ -227,8 +227,8 @@ circuit INV2 (IN=IN,$2=$2,OUT=OUT,$4=$4,$5=$5); end; circuit RINGO (); subcircuit INV2 $1 (IN=$I8,$2=FB,OUT=OSC,$4=VSS,$5=VDD); - subcircuit INV2 $2 (IN=FB,$2=$I38,OUT=$I37,$4=VSS,$5=VDD); - subcircuit INV2 $3 (IN=$I37,$2=$I39,OUT=$I1,$4=VSS,$5=VDD); + subcircuit INV2 $2 (IN=FB,$2=$I38,OUT=$I19,$4=VSS,$5=VDD); + subcircuit INV2 $3 (IN=$I19,$2=$I39,OUT=$I1,$4=VSS,$5=VDD); subcircuit INV2 $4 (IN=$I1,$2=$I40,OUT=$I2,$4=VSS,$5=VDD); subcircuit INV2 $5 (IN=$I2,$2=$I41,OUT=$I3,$4=VSS,$5=VDD); subcircuit INV2 $6 (IN=$I3,$2=$I42,OUT=$I4,$4=VSS,$5=VDD); @@ -309,8 +309,8 @@ END assert_equal(l2n.netlist.to_s, <