diff --git a/src/db/db/dbCellVariants.cc b/src/db/db/dbCellVariants.cc index 74ab634a4..f4d928289 100644 --- a/src/db/db/dbCellVariants.cc +++ b/src/db/db/dbCellVariants.cc @@ -712,6 +712,28 @@ VariantsCollectorBase::create_var_instances_tl_invariant (db::Cell &in_cell, std // ------------------------------------------------------------------------------------------ +TransformationReducer * +make_reducer (ReducerType type) +{ + + switch (type) { + case Orientation: + return new OrientationReducer (); + case Orthogonal: + return new OrthogonalTransformationReducer (); + case Magnification: + return new MagnificationReducer (); + case XYAnisotropyAndMagnification: + return new XYAnisotropyAndMagnificationReducer (); + case MagnificationAndOrientation: + return new MagnificationAndOrientationReducer (); + default: + return 0; + } +} + +// ------------------------------------------------------------------------------------------ + VariantStatistics::VariantStatistics () : mp_red () { diff --git a/src/db/db/dbCellVariants.h b/src/db/db/dbCellVariants.h index 18e21f11a..b33e40c81 100644 --- a/src/db/db/dbCellVariants.h +++ b/src/db/db/dbCellVariants.h @@ -166,6 +166,51 @@ private: int64_t m_grid; }; +/** + * @brief An enum describing a reducer type + * + * This enum is used to create a generic reducer (parameterless) from the code. + */ +enum ReducerType +{ + /** + * @brief No specific reducer + */ + NoReducer = 0, + + /** + * @brief Rotation/mirror variants + */ + Orientation = 1, + + /** + * @brief Orthogonal transformations (rotations of multiple of 90 degree) variants + */ + Orthogonal = 2, + + /** + * @brief Scaling variants + */ + Magnification = 3, + + /** + * @brief Scaling and x/y assymmetry variants (i.e. anisotropic size) + */ + XYAnisotropyAndMagnification = 4, + + /** + * @brief Scaling and orientation variants + */ + MagnificationAndOrientation = 5 +}; + +/** + * @brief Creates a TransformationReducer from the type enum + * + * This function returns 0 if the type is NoReducer or invalid. + */ +DB_PUBLIC TransformationReducer *make_reducer (ReducerType type); + /** * @brief A class computing variants for cells according to a given criterion * diff --git a/src/db/db/dbCompoundOperation.cc b/src/db/db/dbCompoundOperation.cc index cd9f8dcad..80445387f 100644 --- a/src/db/db/dbCompoundOperation.cc +++ b/src/db/db/dbCompoundOperation.cc @@ -302,7 +302,7 @@ CompoundTransformationReducer::is_translation_invariant () const // --------------------------------------------------------------------------------------------- -CompoundRegionMultiInputOperationNode::CompoundRegionMultiInputOperationNode (const std::vector &children) +CompoundRegionMultiInputOperationNode::CompoundRegionMultiInputOperationNode (const std::vector &children, bool no_init) { for (std::vector::const_iterator c = children.begin (); c != children.end (); ++c) { (*c)->keep (); @@ -362,6 +362,11 @@ CompoundRegionMultiInputOperationNode::init () for (tl::shared_collection::iterator i = m_children.begin (); i != m_children.end (); ++i) { m_vars.add (i->vars ()); } + + // add the local variant reducer + if (local_vars ()) { + m_vars.add (local_vars ()); + } } CompoundRegionMultiInputOperationNode::~CompoundRegionMultiInputOperationNode () diff --git a/src/db/db/dbCompoundOperation.h b/src/db/db/dbCompoundOperation.h index 4f109553a..78c8661c3 100644 --- a/src/db/db/dbCompoundOperation.h +++ b/src/db/db/dbCompoundOperation.h @@ -453,7 +453,7 @@ class DB_PUBLIC CompoundRegionMultiInputOperationNode : public CompoundRegionOperationNode { public: - CompoundRegionMultiInputOperationNode (const std::vector &children); + CompoundRegionMultiInputOperationNode (const std::vector &children, bool no_init = false); CompoundRegionMultiInputOperationNode (); CompoundRegionMultiInputOperationNode (CompoundRegionOperationNode *child); CompoundRegionMultiInputOperationNode (CompoundRegionOperationNode *a, CompoundRegionOperationNode *b); @@ -521,14 +521,16 @@ protected: CompoundRegionOperationNode *child (unsigned int index); const CompoundRegionOperationNode *child (unsigned int index) const; + virtual const TransformationReducer *local_vars () const { return 0; } + + void init (); + private: tl::shared_collection m_children; // maps child#,layer# to layer# of child: std::map, unsigned int> m_map_layer_to_child; std::vector m_inputs; CompoundTransformationReducer m_vars; - - void init (); }; diff --git a/src/db/db/dbLayoutToNetlistWriter.cc b/src/db/db/dbLayoutToNetlistWriter.cc index cadd0a711..df2499492 100644 --- a/src/db/db/dbLayoutToNetlistWriter.cc +++ b/src/db/db/dbLayoutToNetlistWriter.cc @@ -692,6 +692,8 @@ void std_writer_impl::write (TokenizedOutput &stream, const db::Net &net, *outp << tl::to_string (id); if (! net.name ().empty ()) { TokenizedOutput (*outp, Keys::name_key, true) << tl::to_word_or_quoted_string (net.name ()); + } else if (net.id () != id) { + TokenizedOutput (*outp, Keys::name_key, true) << tl::to_word_or_quoted_string (net.expanded_name ()); } *outp << endl; diff --git a/src/db/db/dbNetlistCrossReference.cc b/src/db/db/dbNetlistCrossReference.cc index fb22eeb85..eb3f82a6d 100644 --- a/src/db/db/dbNetlistCrossReference.cc +++ b/src/db/db/dbNetlistCrossReference.cc @@ -111,6 +111,24 @@ NetlistCrossReference::other_net_for (const db::Net *net) const } } +const NetlistCrossReference::PerNetData * +NetlistCrossReference::per_net_data_for_net (const db::Net *net) const +{ + const db::Net *other_net = other_net_for (net); + + std::map, PerNetData>::iterator i = m_per_net_data.find (std::make_pair (net, other_net)); + if (i == m_per_net_data.end ()) { + i = m_per_net_data.find (std::make_pair (other_net, net)); + } + + if (i == m_per_net_data.end ()) { + static const NetlistCrossReference::PerNetData empty_net_data; + return &empty_net_data; + } else { + return &i->second; + } +} + const NetlistCrossReference::PerNetData * NetlistCrossReference::per_net_data_for (const std::pair &nets) const { diff --git a/src/db/db/dbNetlistCrossReference.h b/src/db/db/dbNetlistCrossReference.h index c06c43ba9..17138ca15 100644 --- a/src/db/db/dbNetlistCrossReference.h +++ b/src/db/db/dbNetlistCrossReference.h @@ -280,6 +280,7 @@ public: const db::SubCircuit *other_subcircuit_for (const db::SubCircuit *subcircuit) const; const db::Circuit *other_circuit_for (const db::Circuit *circuit) const; const db::Net *other_net_for (const db::Net *net) const; + const PerNetData *per_net_data_for_net (const db::Net *net) const; const PerNetData *per_net_data_for (const std::pair &nets) const; const db::Netlist *netlist_a () const diff --git a/src/db/db/dbPolygonNeighborhood.cc b/src/db/db/dbPolygonNeighborhood.cc index 21a7a9696..35fe0b384 100644 --- a/src/db/db/dbPolygonNeighborhood.cc +++ b/src/db/db/dbPolygonNeighborhood.cc @@ -28,38 +28,42 @@ namespace db { PolygonNeighborhoodVisitor::PolygonNeighborhoodVisitor () - : m_result_type (db::CompoundRegionOperationNode::ResultType::Edges) + : m_result_type (db::CompoundRegionOperationNode::ResultType::Edges), m_variant_type (db::NoReducer) { disconnect_outputs (); } void -PolygonNeighborhoodVisitor::connect_output (Layout * /*layout*/, std::unordered_set *polygons) const +PolygonNeighborhoodVisitor::connect_output (Layout * /*layout*/, std::unordered_set *polygons, const db::ICplxTrans &trans) const { disconnect_outputs (); mp_polygons = polygons; + m_trans = trans; } void -PolygonNeighborhoodVisitor::connect_output (db::Layout *layout, std::unordered_set *polygons) const +PolygonNeighborhoodVisitor::connect_output (db::Layout *layout, std::unordered_set *polygons, const db::ICplxTrans &trans) const { disconnect_outputs (); mp_layout = layout; mp_polygon_refs = polygons; + m_trans = trans; } void -PolygonNeighborhoodVisitor::connect_output (db::Layout * /*layout*/, std::unordered_set *edges) const +PolygonNeighborhoodVisitor::connect_output (db::Layout * /*layout*/, std::unordered_set *edges, const db::ICplxTrans &trans) const { disconnect_outputs (); mp_edges = edges; + m_trans = trans; } void -PolygonNeighborhoodVisitor::connect_output (Layout * /*layout*/, std::unordered_set *edge_pairs) const +PolygonNeighborhoodVisitor::connect_output (Layout * /*layout*/, std::unordered_set *edge_pairs, const db::ICplxTrans &trans) const { disconnect_outputs (); mp_edge_pairs = edge_pairs; + m_trans = trans; } void @@ -76,10 +80,10 @@ void PolygonNeighborhoodVisitor::output_polygon (const db::PolygonWithProperties &poly) { if (mp_polygons) { - mp_polygons->insert (poly); + mp_polygons->insert (poly.transformed (m_trans)); } else if (mp_polygon_refs) { tl_assert (mp_layout != 0); - mp_polygon_refs->insert (db::PolygonRefWithProperties (db::PolygonRef (poly, mp_layout->shape_repository ()), poly.properties_id ())); + mp_polygon_refs->insert (db::PolygonRefWithProperties (db::PolygonRef (poly.transformed (m_trans), mp_layout->shape_repository ()), poly.properties_id ())); } else { throw tl::Exception (tl::to_string (tr ("PolygonNeighborhoodVisitor is not configured for edge output (use 'result_type=Edges')"))); } @@ -91,7 +95,7 @@ PolygonNeighborhoodVisitor::output_edge (const db::EdgeWithProperties &edge) if (mp_edges == 0) { throw tl::Exception (tl::to_string (tr ("PolygonNeighborhoodVisitor is not configured for edge output (use 'result_type=Edges')"))); } - mp_edges->insert (edge); + mp_edges->insert (edge.transformed (m_trans)); } void @@ -100,16 +104,22 @@ PolygonNeighborhoodVisitor::output_edge_pair (const db::EdgePairWithProperties & if (mp_edge_pairs == 0) { throw tl::Exception (tl::to_string (tr ("PolygonNeighborhoodVisitor is not configured for edge pair output (use 'result_type=EdgePairs')"))); } - mp_edge_pairs->insert (edge_pair); + mp_edge_pairs->insert (edge_pair.transformed (m_trans)); } // -------------------------------------------------------------------------------------------------- PolygonNeighborhoodCompoundOperationNode::PolygonNeighborhoodCompoundOperationNode (const std::vector &children, PolygonNeighborhoodVisitor *visitor, db::Coord dist) - : CompoundRegionMultiInputOperationNode (children), m_dist (dist), mp_visitor (visitor) + : CompoundRegionMultiInputOperationNode (children, true /*no implicit init()*/), + m_dist (dist), mp_visitor (visitor) { tl_assert (visitor != 0); visitor->keep (); + + m_vars.reset (db::make_reducer (visitor->variant_type ())); + + // must be called after local_vars() is available + init (); } db::Coord @@ -170,12 +180,19 @@ PolygonNeighborhoodCompoundOperationNode::compute_local_impl (CompoundRegionOper tl_assert (interactions.num_subjects () == 1); tl_assert (! results.empty ()); + db::ICplxTrans var_trans, var_trans_inv; + if (proc->vars ()) { + var_trans_inv = proc->vars ()->single_variant_transformation (cell->cell_index ()); + var_trans = var_trans_inv.inverted (); + } + try { - mp_visitor->connect_output (layout, &results.front ()); + mp_visitor->connect_output (layout, &results.front (), var_trans_inv); const T &pr = interactions.begin_subjects ()->second; db::PolygonWithProperties subject (pr.instantiate (), pr.properties_id ()); + subject.transform (var_trans); PolygonNeighborhoodVisitor::neighbors_type neighbors; @@ -191,6 +208,7 @@ PolygonNeighborhoodCompoundOperationNode::compute_local_impl (CompoundRegionOper for (auto p = others.front ().begin (); p != others.front ().end (); ++p) { n.push_back (db::PolygonWithProperties (p->instantiate (), p->properties_id ())); + n.back ().transform (var_trans); } } diff --git a/src/db/db/dbPolygonNeighborhood.h b/src/db/db/dbPolygonNeighborhood.h index 17bd13178..25314f6dd 100644 --- a/src/db/db/dbPolygonNeighborhood.h +++ b/src/db/db/dbPolygonNeighborhood.h @@ -58,22 +58,22 @@ public: /** * @brief Configure the polygon output */ - void connect_output (db::Layout * /*layout*/, std::unordered_set *polygons) const; + void connect_output (db::Layout * /*layout*/, std::unordered_set *polygons, const db::ICplxTrans &trans) const; /** * @brief Configure the polygon ref output */ - void connect_output (db::Layout *layout, std::unordered_set *polygons) const; + void connect_output (db::Layout *layout, std::unordered_set *polygons, const db::ICplxTrans &trans) const; /** * @brief Configure the edge output */ - void connect_output (db::Layout * /*layout*/, std::unordered_set *edges) const; + void connect_output (db::Layout * /*layout*/, std::unordered_set *edges, const db::ICplxTrans &trans) const; /** * @brief Configure the edge pair output */ - void connect_output (db::Layout * /*layout*/, std::unordered_set *edge_pairs) const; + void connect_output (db::Layout * /*layout*/, std::unordered_set *edge_pairs, const db::ICplxTrans &trans) const; /** * @brief Disconnects output @@ -102,6 +102,22 @@ public: return m_result_type; } + /** + * @brief Sets the variant type + */ + void set_variant_type (db::ReducerType variant_type) + { + m_variant_type = variant_type; + } + + /** + * @brief Gets the variant type + */ + db::ReducerType variant_type () const + { + return m_variant_type; + } + /** * @brief Delivers a polygon * This function is only permitted if the result type is Region. @@ -122,11 +138,13 @@ public: private: db::CompoundRegionOperationNode::ResultType m_result_type; + db::ReducerType m_variant_type; mutable std::unordered_set *mp_polygons; mutable std::unordered_set *mp_polygon_refs; mutable std::unordered_set *mp_edges; mutable std::unordered_set *mp_edge_pairs; mutable db::Layout *mp_layout; + mutable db::ICplxTrans m_trans; }; /** @@ -148,6 +166,11 @@ public: return false; } + virtual const TransformationReducer *local_vars () const + { + return m_vars.get (); + } + protected: virtual db::Coord computed_dist () const; virtual std::string generated_description () const; @@ -162,6 +185,7 @@ protected: private: db::Coord m_dist; tl::weak_ptr mp_visitor; + std::unique_ptr m_vars; template void compute_local_impl (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const; diff --git a/src/db/db/gsiDeclDbCell.cc b/src/db/db/gsiDeclDbCell.cc index 4b4bc70a5..0e2f6f119 100644 --- a/src/db/db/gsiDeclDbCell.cc +++ b/src/db/db/gsiDeclDbCell.cc @@ -22,6 +22,7 @@ #include "gsiDecl.h" #include "gsiDeclDbMetaInfo.h" +#include "gsiEnums.h" #include "gsiDeclDbHelpers.h" #include "dbLayout.h" @@ -4655,5 +4656,39 @@ Class decl_DCellInstArray ("db", "DCellInstArray", "This class has been introduced in version 0.25." ); +gsi::Enum decl_VariantType ("db", "VariantType", + gsi::enum_const ("NoVariants", db::NoReducer, + "@brief No variants needed." + ) + + gsi::enum_const ("Orientation", db::Orientation, + "@brief Orientation variants needed.\n" + "For example, the edge orientation selection operation needs this variant type." + ) + + gsi::enum_const ("Orthogonal", db::Orthogonal, + "@brief Orthogonal transformations (rotations by multiples of 90 degree) need variants.\n" + "For example, the diagonal edge selection operation needs this variant type." + ) + + gsi::enum_const ("Magnification", db::Magnification, + "@brief Scaling variants needed.\n" + "For example, distance measurements or the isotropic sizing operations needs this variant type." + ) + + gsi::enum_const ("XYAnisotropyAndMagnification", db::XYAnisotropyAndMagnification, + "@brief Scaling and anisotropy variants needed.\n" + "For example, the anisotropic sizing operation needs this variant type." + ) + + gsi::enum_const ("MagnificationAndOrientation", db::MagnificationAndOrientation, + "@brief Scaling and orientation variants needed.\n" + "For example, the 'move' operation needs this variant type." + ), + "@brief This class represents the cell variant type for various methods.\n" + "\n" + "Cell variants are needed in hierarchical applications, when operations are to be " + "performed on cell level, but the operations are not transformation invariant.\n" + "In that case, a variant type needs to be specified in order to make the algorithm " + "separate the cells by their absolute orientation or by their accumulated magnification.\n" + "\n" + "This enum has been introduced in version 0.30.2." +); + } diff --git a/src/db/db/gsiDeclDbLayoutToNetlist.cc b/src/db/db/gsiDeclDbLayoutToNetlist.cc index 065677906..c5c0a5307 100644 --- a/src/db/db/gsiDeclDbLayoutToNetlist.cc +++ b/src/db/db/gsiDeclDbLayoutToNetlist.cc @@ -1118,6 +1118,14 @@ Class decl_dbLayoutToNetlist ("db", "LayoutToNetlist", "@brief Reads the extracted netlist from the file.\n" "This method employs the native format of KLayout.\n" ) + + gsi::method ("clear_log_entries", &db::LayoutToNetlist::clear_log_entries, + "@brief Clears the log entries.\n" + "This method has been introduced in version 0.30.2" + ) + + gsi::method ("add_log_entry", &db::LayoutToNetlist::log_entry, gsi::arg ("entry"), + "@brief Adds a log entry.\n" + "This method has been introduced in version 0.30.2" + ) + gsi::iterator ("each_log_entry|#each_error", &db::LayoutToNetlist::begin_log_entries, &db::LayoutToNetlist::end_log_entries, "@brief Iterates over all log entries collected during device and netlist extraction.\n" "This method has been introduced in version 0.28.13." diff --git a/src/db/db/gsiDeclDbNetlist.cc b/src/db/db/gsiDeclDbNetlist.cc index 05e2c85bc..792d65d15 100644 --- a/src/db/db/gsiDeclDbNetlist.cc +++ b/src/db/db/gsiDeclDbNetlist.cc @@ -1488,7 +1488,7 @@ nets_non_const (const std::vector &nc) } static std::vector -nets_by_name_const (const db::Circuit *circuit, const std::string &name_pattern) +nets_by_name_const (const db::Circuit *circuit, const std::string &name_pattern, const tl::Variant &cs) { std::vector res; if (! circuit) { @@ -1496,7 +1496,9 @@ nets_by_name_const (const db::Circuit *circuit, const std::string &name_pattern) } tl::GlobPattern glob (name_pattern); - if (circuit->netlist ()) { + if (! cs.is_nil ()) { + glob.set_case_sensitive (cs.to_bool ()); + } else if (circuit->netlist ()) { glob.set_case_sensitive (circuit->netlist ()->is_case_sensitive ()); } for (db::Circuit::const_net_iterator n = circuit->begin_nets (); n != circuit->end_nets (); ++n) { @@ -1510,13 +1512,13 @@ nets_by_name_const (const db::Circuit *circuit, const std::string &name_pattern) } static std::vector -nets_by_name (db::Circuit *circuit, const std::string &name_pattern) +nets_by_name (db::Circuit *circuit, const std::string &name_pattern, const tl::Variant &cs) { - return nets_non_const (nets_by_name_const (circuit, name_pattern)); + return nets_non_const (nets_by_name_const (circuit, name_pattern, cs)); } static std::vector -nets_by_name_const_from_netlist (const db::Netlist *netlist, const std::string &name_pattern) +nets_by_name_const_from_netlist (const db::Netlist *netlist, const std::string &name_pattern, const tl::Variant &cs) { std::vector res; if (! netlist) { @@ -1524,7 +1526,7 @@ nets_by_name_const_from_netlist (const db::Netlist *netlist, const std::string & } tl::GlobPattern glob (name_pattern); - glob.set_case_sensitive (netlist->is_case_sensitive ()); + glob.set_case_sensitive (cs.is_nil () ? netlist->is_case_sensitive () : cs.to_bool ()); for (auto c = netlist->begin_circuits (); c != netlist->end_circuits (); ++c) { bool is_top = (c->begin_parents () == c->end_parents ()); for (auto n = c->begin_nets (); n != c->end_nets (); ++n) { @@ -1540,9 +1542,9 @@ nets_by_name_const_from_netlist (const db::Netlist *netlist, const std::string & } static std::vector -nets_by_name_from_netlist (db::Netlist *netlist, const std::string &name_pattern) +nets_by_name_from_netlist (db::Netlist *netlist, const std::string &name_pattern, const tl::Variant &cs) { - return nets_non_const (nets_by_name_const_from_netlist (netlist, name_pattern)); + return nets_non_const (nets_by_name_const_from_netlist (netlist, name_pattern, cs)); } Class decl_dbCircuit (decl_dbNetlistObject, "db", "Circuit", @@ -1658,17 +1660,25 @@ Class decl_dbCircuit (decl_dbNetlistObject, "db", "Circuit", "\n\n" "This constness variant has been introduced in version 0.26.8" ) + - gsi::method_ext ("nets_by_name", &nets_by_name, gsi::arg ("name_pattern"), + gsi::method_ext ("nets_by_name", &nets_by_name, gsi::arg ("name_pattern"), gsi::arg ("case_sensitive", tl::Variant (), "default"), "@brief Gets the net objects for a given name filter.\n" "The name filter is a glob pattern. This method will return all \\Net objects matching the glob pattern.\n" + "The 'case_sensitive' argument will control whether the name is looked up in a case sensitive way or not. Note that " + "with case insensitive search on a netlist that is case sensitive, the same name may render more than one hit. By " + "default, case sensitivity is taken from the netlist.\n" "\n" "This method has been introduced in version 0.27.3.\n" + "The 'case_sensitive' argument has been added in version 0.30.2." ) + - gsi::method_ext ("nets_by_name", &nets_by_name_const, gsi::arg ("name_pattern"), + gsi::method_ext ("nets_by_name", &nets_by_name_const, gsi::arg ("name_pattern"), gsi::arg ("case_sensitive", tl::Variant (), "default"), "@brief Gets the net objects for a given name filter (const version).\n" "The name filter is a glob pattern. This method will return all \\Net objects matching the glob pattern.\n" - "\n\n" - "This constness variant has been introduced in version 0.27.3" + "The 'case_sensitive' argument will control whether the name is looked up in a case sensitive way or not. Note that " + "with case insensitive search on a netlist that is case sensitive, the same name may render more than one hit. By " + "default, case sensitivity is taken from the netlist.\n" + "\n" + "This constness variant has been introduced in version 0.27.3.\n" + "The 'case_sensitive' argument has been added in version 0.30.2." ) + gsi::method ("pin_by_id", (db::Pin *(db::Circuit::*) (size_t)) &db::Circuit::pin_by_id, gsi::arg ("id"), "@brief Gets the \\Pin object corresponding to a specific ID\n" @@ -1964,7 +1974,7 @@ static void blank_circuit_by_name (db::Netlist *nl, const std::string &name_patt } static std::vector -circuits_by_name (db::Netlist *netlist, const std::string &name_pattern) +circuits_by_name (db::Netlist *netlist, const std::string &name_pattern, const tl::Variant &cs) { std::vector res; if (! netlist) { @@ -1972,7 +1982,7 @@ circuits_by_name (db::Netlist *netlist, const std::string &name_pattern) } tl::GlobPattern glob (name_pattern); - glob.set_case_sensitive (netlist->is_case_sensitive ()); + glob.set_case_sensitive (cs.is_nil () ? netlist->is_case_sensitive () : cs.to_bool ()); for (db::Netlist::circuit_iterator c = netlist->begin_circuits (); c != netlist->end_circuits (); ++c) { db::Circuit *circuit = c.operator-> (); @@ -1985,7 +1995,7 @@ circuits_by_name (db::Netlist *netlist, const std::string &name_pattern) } static std::vector -circuits_by_name_const (const db::Netlist *netlist, const std::string &name_pattern) +circuits_by_name_const (const db::Netlist *netlist, const std::string &name_pattern, const tl::Variant &cs) { std::vector res; if (! netlist) { @@ -1993,7 +2003,7 @@ circuits_by_name_const (const db::Netlist *netlist, const std::string &name_patt } tl::GlobPattern glob (name_pattern); - glob.set_case_sensitive (netlist->is_case_sensitive ()); + glob.set_case_sensitive (cs.is_nil () ? netlist->is_case_sensitive () : cs.to_bool ()); for (db::Netlist::const_circuit_iterator c = netlist->begin_circuits (); c != netlist->end_circuits (); ++c) { const db::Circuit *circuit = c.operator-> (); @@ -2082,23 +2092,45 @@ Class decl_dbNetlist ("db", "Netlist", "\n\n" "This constness variant has been introduced in version 0.26.8." ) + - gsi::method_ext ("circuits_by_name", &circuits_by_name, gsi::arg ("name_pattern"), + gsi::method_ext ("circuits_by_name", &circuits_by_name, gsi::arg ("name_pattern"), gsi::arg ("case_sensitive", tl::Variant (), "default"), "@brief Gets the circuit objects for a given name filter.\n" "The name filter is a glob pattern. This method will return all \\Circuit objects matching the glob pattern.\n" + "The 'case_sensitive' argument will control whether the name is looked up in a case sensitive way or not. Note that " + "with case insensitive search on a netlist that is case sensitive, the same name may render more than one hit. By " + "default, case sensitivity is taken from the netlist.\n" "\n" "This method has been introduced in version 0.26.4.\n" + "The 'case_sensitive' argument has been added in version 0.30.2." ) + - gsi::method_ext ("circuits_by_name", &circuits_by_name_const, gsi::arg ("name_pattern"), + gsi::method_ext ("circuits_by_name", &circuits_by_name_const, gsi::arg ("name_pattern"), gsi::arg ("case_sensitive", tl::Variant (), "default"), "@brief Gets the circuit objects for a given name filter (const version).\n" "The name filter is a glob pattern. This method will return all \\Circuit objects matching the glob pattern.\n" - "\n\n" + "The 'case_sensitive' argument will control whether the name is looked up in a case sensitive way or not. Note that " + "with case insensitive search on a netlist that is case sensitive, the same name may render more than one hit. By " + "default, case sensitivity is taken from the netlist.\n" + "\n" "This constness variant has been introduced in version 0.26.8." + "The 'case_sensitive' argument has been added in version 0.30.2." ) + - gsi::method_ext ("nets_by_name", &nets_by_name_from_netlist, gsi::arg ("name_pattern"), + gsi::method_ext ("nets_by_name", &nets_by_name_from_netlist, gsi::arg ("name_pattern"), gsi::arg ("case_sensitive", tl::Variant (), "default"), "@brief Gets the net objects for a given name filter.\n" "The name filter is a glob pattern. This method will return all \\Net objects matching the glob pattern.\n" + "The 'case_sensitive' argument will control whether the name is looked up in a case sensitive way or not. Note that " + "with case insensitive search on a netlist that is case sensitive, the same name may render more than one hit. By " + "default, case sensitivity is taken from the netlist.\n" "\n" "This method has been introduced in version 0.28.4.\n" + "The 'case_sensitive' argument has been added in version 0.30.2." + ) + + gsi::method_ext ("nets_by_name", &nets_by_name_const_from_netlist, gsi::arg ("name_pattern"), gsi::arg ("case_sensitive", tl::Variant (), "default"), + "@brief Gets the net objects for a given name filter (const version).\n" + "The name filter is a glob pattern. This method will return all \\Net objects matching the glob pattern.\n" + "The 'case_sensitive' argument will control whether the name is looked up in a case sensitive way or not. Note that " + "with case insensitive search on a netlist that is case sensitive, the same name may render more than one hit. By " + "default, case sensitivity is taken from the netlist.\n" + "\n" + "This constness variant has been introduced in version 0.28.4." + "The 'case_sensitive' argument has been added in version 0.30.2." ) + gsi::method ("top_circuit", static_cast (&db::Netlist::top_circuit), "@brief Gets the top circuit.\n" @@ -2126,12 +2158,6 @@ Class decl_dbNetlist ("db", "Netlist", "\n" "This convenience method has been added in version 0.29.5." ) + - gsi::method_ext ("nets_by_name", &nets_by_name_const_from_netlist, gsi::arg ("name_pattern"), - "@brief Gets the net objects for a given name filter (const version).\n" - "The name filter is a glob pattern. This method will return all \\Net objects matching the glob pattern.\n" - "\n\n" - "This constness variant has been introduced in version 0.28.4." - ) + gsi::iterator ("each_circuit_top_down", (db::Netlist::top_down_circuit_iterator (db::Netlist::*) ()) &db::Netlist::begin_top_down, (db::Netlist::top_down_circuit_iterator (db::Netlist::*) ()) &db::Netlist::end_top_down, "@brief Iterates over the circuits top-down\n" "Iterating top-down means the parent circuits come before the child circuits. " diff --git a/src/db/db/gsiDeclDbNetlistCrossReference.cc b/src/db/db/gsiDeclDbNetlistCrossReference.cc index bc847f833..467b2c828 100644 --- a/src/db/db/gsiDeclDbNetlistCrossReference.cc +++ b/src/db/db/gsiDeclDbNetlistCrossReference.cc @@ -287,6 +287,19 @@ static pair_data_iterator each_net_pair1 (db::NetlistCrossReference *xref, const db::Circuit *circuit) +{ + tl_assert (xref->netlist_a () != 0 && xref->netlist_b () != 0); + typedef pair_data_iterator iter_type; + + const db::NetlistCrossReference::PerCircuitData *data = xref->per_circuit_data_for (std::make_pair (circuit, circuit)); + if (! data) { + return iter_type (); + } else { + return iter_type (xref, data->nets.begin (), data->nets.end ()); + } +} + static pair_data_iterator each_device_pair (db::NetlistCrossReference *xref, const CircuitPairData &circuit_pair) { tl_assert (xref->netlist_a () != 0 && xref->netlist_b () != 0); @@ -300,6 +313,19 @@ static pair_data_iterator each_device_pair1 (db::NetlistCrossReference *xref, const db::Circuit *circuit) +{ + tl_assert (xref->netlist_a () != 0 && xref->netlist_b () != 0); + typedef pair_data_iterator iter_type; + + const db::NetlistCrossReference::PerCircuitData *data = xref->per_circuit_data_for (std::make_pair (circuit, circuit)); + if (! data) { + return iter_type (); + } else { + return iter_type (xref, data->devices.begin (), data->devices.end ()); + } +} + static pair_data_iterator each_pin_pair (db::NetlistCrossReference *xref, const CircuitPairData &circuit_pair) { tl_assert (xref->netlist_a () != 0 && xref->netlist_b () != 0); @@ -313,6 +339,19 @@ static pair_data_iterator each_pin_pair1 (db::NetlistCrossReference *xref, const db::Circuit *circuit) +{ + tl_assert (xref->netlist_a () != 0 && xref->netlist_b () != 0); + typedef pair_data_iterator iter_type; + + const db::NetlistCrossReference::PerCircuitData *data = xref->per_circuit_data_for (std::make_pair (circuit, circuit)); + if (! data) { + return iter_type (); + } else { + return iter_type (xref, data->pins.begin (), data->pins.end ()); + } +} + static pair_data_iterator each_subcircuit_pair (db::NetlistCrossReference *xref, const CircuitPairData &circuit_pair) { tl_assert (xref->netlist_a () != 0 && xref->netlist_b () != 0); @@ -326,6 +365,19 @@ static pair_data_iterator each_subcircuit_pair1 (db::NetlistCrossReference *xref, const db::Circuit *circuit) +{ + tl_assert (xref->netlist_a () != 0 && xref->netlist_b () != 0); + typedef pair_data_iterator iter_type; + + const db::NetlistCrossReference::PerCircuitData *data = xref->per_circuit_data_for (std::make_pair (circuit, circuit)); + if (! data) { + return iter_type (); + } else { + return iter_type (xref, data->subcircuits.begin (), data->subcircuits.end ()); + } +} + static pair_data_iterator, db::NetlistCrossReference::PerNetData::terminal_pairs_const_iterator> each_net_terminal_pair (db::NetlistCrossReference *xref, const db::NetlistCrossReference::NetPairData &net_pair) { tl_assert (xref->netlist_a () != 0 && xref->netlist_b () != 0); @@ -339,6 +391,19 @@ static pair_data_iterator, db::NetlistCrossReference::PerNetData::terminal_pairs_const_iterator> each_net_terminal_pair1 (db::NetlistCrossReference *xref, const db::Net *net) +{ + tl_assert (xref->netlist_a () != 0 && xref->netlist_b () != 0); + typedef pair_data_iterator, db::NetlistCrossReference::PerNetData::terminal_pairs_const_iterator> iter_type; + + const db::NetlistCrossReference::PerNetData *data = xref->per_net_data_for_net (net); + if (! data) { + return iter_type (); + } else { + return iter_type (xref, data->terminals.begin (), data->terminals.end ()); + } +} + static pair_data_iterator, db::NetlistCrossReference::PerNetData::pin_pairs_const_iterator> each_net_pin_pair (db::NetlistCrossReference *xref, const db::NetlistCrossReference::NetPairData &net_pair) { tl_assert (xref->netlist_a () != 0 && xref->netlist_b () != 0); @@ -352,6 +417,19 @@ static pair_data_iterator, db::NetlistCrossReference::PerNetData::pin_pairs_const_iterator> each_net_pin_pair1 (db::NetlistCrossReference *xref, const db::Net *net) +{ + tl_assert (xref->netlist_a () != 0 && xref->netlist_b () != 0); + typedef pair_data_iterator, db::NetlistCrossReference::PerNetData::pin_pairs_const_iterator> iter_type; + + const db::NetlistCrossReference::PerNetData *data = xref->per_net_data_for_net (net); + if (! data) { + return iter_type (); + } else { + return iter_type (xref, data->pins.begin (), data->pins.end ()); + } +} + static pair_data_iterator, db::NetlistCrossReference::PerNetData::subcircuit_pin_pairs_const_iterator> each_net_subcircuit_pin_pair (db::NetlistCrossReference *xref, const db::NetlistCrossReference::NetPairData &net_pair) { tl_assert (xref->netlist_a () != 0 && xref->netlist_b () != 0); @@ -365,6 +443,19 @@ static pair_data_iterator, db::NetlistCrossReference::PerNetData::subcircuit_pin_pairs_const_iterator> each_net_subcircuit_pin_pair1 (db::NetlistCrossReference *xref, const db::Net *net) +{ + tl_assert (xref->netlist_a () != 0 && xref->netlist_b () != 0); + typedef pair_data_iterator, db::NetlistCrossReference::PerNetData::subcircuit_pin_pairs_const_iterator> iter_type; + + const db::NetlistCrossReference::PerNetData *data = xref->per_net_data_for_net (net); + if (! data) { + return iter_type (); + } else { + return iter_type (xref, data->subcircuit_pins.begin (), data->subcircuit_pins.end ()); + } +} + Class decl_dbNetlistCrossReference (decl_dbNetlistCompareLogger, "db", "NetlistCrossReference", gsi::iterator_ext ("each_circuit_pair", &each_circuit_pair, "@brief Delivers the circuit pairs and their status.\n" @@ -374,30 +465,72 @@ Class decl_dbNetlistCrossReference (decl_dbNetlistCom "@brief Delivers the net pairs and their status for the given circuit pair.\n" "See the class description for details." ) + + gsi::iterator_ext ("each_net_pair", &each_net_pair1, gsi::arg ("circuit"), + "@brief Delivers the net pairs and their status for the given circuit.\n" + "This convenience method looks up the circuit pair from the given circuit. This circuit can be " + "a schematic or layout circuit.\n" + "This method has been added in version 0.30.2.\n" + ) + gsi::iterator_ext ("each_device_pair", &each_device_pair, gsi::arg ("circuit_pair"), "@brief Delivers the device pairs and their status for the given circuit pair.\n" "See the class description for details." ) + + gsi::iterator_ext ("each_device_pair", &each_device_pair1, gsi::arg ("circuit"), + "@brief Delivers the device pairs and their status for the given circuit pair.\n" + "This convenience method looks up the circuit pair from the given circuit. This circuit can be " + "a schematic or layout circuit.\n" + "This method has been added in version 0.30.2.\n" + ) + gsi::iterator_ext ("each_pin_pair", &each_pin_pair, gsi::arg ("circuit_pair"), "@brief Delivers the pin pairs and their status for the given circuit pair.\n" "See the class description for details." ) + + gsi::iterator_ext ("each_pin_pair", &each_pin_pair1, gsi::arg ("circuit"), + "@brief Delivers the pin pairs and their status for the given circuit pair.\n" + "This convenience method looks up the circuit pair from the given circuit. This circuit can be " + "a schematic or layout circuit.\n" + "This method has been added in version 0.30.2.\n" + ) + gsi::iterator_ext ("each_subcircuit_pair", &each_subcircuit_pair, gsi::arg ("circuit_pair"), "@brief Delivers the subcircuit pairs and their status for the given circuit pair.\n" "See the class description for details." ) + + gsi::iterator_ext ("each_subcircuit_pair", &each_subcircuit_pair1, gsi::arg ("circuit"), + "@brief Delivers the subcircuit pairs and their status for the given circuit pair.\n" + "This convenience method looks up the circuit pair from the given circuit. This circuit can be " + "a schematic or layout circuit.\n" + "This method has been added in version 0.30.2.\n" + ) + gsi::iterator_ext ("each_net_terminal_pair", &each_net_terminal_pair, gsi::arg ("net_pair"), "@brief Delivers the device terminal pairs for the given net pair.\n" "For the net pair, lists the device terminal pairs identified on this net." ) + + gsi::iterator_ext ("each_net_terminal_pair", &each_net_terminal_pair1, gsi::arg ("net"), + "@brief Delivers the device terminal pairs for the given net pair.\n" + "This convenience method looks up the net pair from the given net. This net can be " + "a schematic or layout net.\n" + "This method has been added in version 0.30.2.\n" + ) + gsi::iterator_ext ("each_net_pin_pair", &each_net_pin_pair, gsi::arg ("net_pair"), "@brief Delivers the pin pairs for the given net pair.\n" "For the net pair, lists the pin pairs identified on this net." ) + + gsi::iterator_ext ("each_net_pin_pair", &each_net_pin_pair1, gsi::arg ("net"), + "@brief Delivers the pin pairs for the given net pair.\n" + "This convenience method looks up the net pair from the given net. This net can be " + "a schematic or layout net.\n" + "This method has been added in version 0.30.2.\n" + ) + gsi::iterator_ext ("each_net_subcircuit_pin_pair", &each_net_subcircuit_pin_pair, gsi::arg ("net_pair"), "@brief Delivers the subcircuit pin pairs for the given net pair.\n" "For the net pair, lists the subcircuit pin pairs identified on this net." ) + + gsi::iterator_ext ("each_net_subcircuit_pin_pair", &each_net_subcircuit_pin_pair1, gsi::arg ("net"), + "@brief Delivers the subcircuit pin pairs for the given net pair.\n" + "This convenience method looks up the net pair from the given net. This net can be " + "a schematic or layout net.\n" + "This method has been added in version 0.30.2.\n" + ) + gsi::method ("other_net_for", &db::NetlistCrossReference::other_net_for, gsi::arg ("net"), "@brief Gets the matching other net for a given primary net.\n" "The return value will be nil if no match is found. " diff --git a/src/db/db/gsiDeclDbPolygonNeighborhood.cc b/src/db/db/gsiDeclDbPolygonNeighborhood.cc index 37c0ffded..b8c9ebb5c 100644 --- a/src/db/db/gsiDeclDbPolygonNeighborhood.cc +++ b/src/db/db/gsiDeclDbPolygonNeighborhood.cc @@ -109,6 +109,20 @@ Class decl_PolygonNeighborhoodVisitorImpl ( ) + gsi::method ("result_type", &PolygonNeighborhoodVisitorImpl::result_type, "@brief Gets the result type\n" + ) + + gsi::method ("variant_type=", &PolygonNeighborhoodVisitorImpl::set_variant_type, gsi::arg ("variant_type"), + "@brief Configures the variant type\n" + "The variant type configures transformation variant formation. The polygons presented to the visitor are " + "normalized to the given variant type. For example, specify \\VariantType#Orientation to force orientation variants " + "in the cell tree. Polygons presented to the visitor are normalized to 'as if top' orientation with this variant type.\n" + "\n" + "This property was introduced in version 0.30.2." + ) + + gsi::method ("variant_type", &PolygonNeighborhoodVisitorImpl::variant_type, + "@brief Gets the variant type\n" + "See \\variant_type= for a description of this property.\n" + "\n" + "This property was introduced in version 0.30.2." ), "@brief A visitor for the neighborhood of polygons in the input\n" "\n" diff --git a/src/lvs/lvs/built-in-macros/_lvs_netter.rb b/src/lvs/lvs/built-in-macros/_lvs_netter.rb index c4f8f5197..9d4701d99 100644 --- a/src/lvs/lvs/built-in-macros/_lvs_netter.rb +++ b/src/lvs/lvs/built-in-macros/_lvs_netter.rb @@ -679,8 +679,8 @@ CODE if ca.is_a?(String) && (!cb || cb == "*") n2c = {} - nl_a.circuits_by_name(ca).each { |c| name = cs ? c.name.upcase : c.name; n2c[name] ||= [ nil, nil ]; n2c[name][0] = c } - nl_b.circuits_by_name(ca).each { |c| name = cs ? c.name.upcase : c.name; n2c[name] ||= [ nil, nil ]; n2c[name][1] = c } + nl_a.circuits_by_name(ca, cs).each { |c| name = cs ? c.name.upcase : c.name; n2c[name] ||= [ nil, nil ]; n2c[name][0] = c } + nl_b.circuits_by_name(ca, cs).each { |c| name = cs ? c.name.upcase : c.name; n2c[name] ||= [ nil, nil ]; n2c[name][1] = c } circuits = [] n2c.keys.sort.each do |n| @@ -706,8 +706,8 @@ CODE if a.is_a?(String) && (!b || b == "*") n2n = {} - circuit_a.nets_by_name(a).each { |n| name = cs ? n.name.upcase : n.name; n2n[name] ||= [ nil, nil ]; n2n[name][0] = n } - circuit_b.nets_by_name(a).each { |n| name = cs ? n.name.upcase : n.name; n2n[name] ||= [ nil, nil ]; n2n[name][1] = n } + circuit_a.nets_by_name(a, cs).each { |n| name = cs ? n.name.upcase : n.name; n2n[name] ||= [ nil, nil ]; n2n[name][0] = n } + circuit_b.nets_by_name(a, cs).each { |n| name = cs ? n.name.upcase : n.name; n2n[name] ||= [ nil, nil ]; n2n[name][1] = n } nets = [] n2n.keys.sort.each do |n| diff --git a/src/lvs/unit_tests/lvsTests.cc b/src/lvs/unit_tests/lvsTests.cc index 4d6c30f12..c1aac0071 100644 --- a/src/lvs/unit_tests/lvsTests.cc +++ b/src/lvs/unit_tests/lvsTests.cc @@ -154,7 +154,7 @@ TEST(16_private) TEST(17_private) { test_is_long_runner (); - run_test (_this, "test_17.lylvs", "test_17b.cir.gz", "test_17.gds.gz", true, "test_17b_4.lvsdb"); + run_test (_this, "test_17.lylvs", "test_17b.cir.gz", "test_17.gds.gz", true, "test_17b_5.lvsdb"); } TEST(18_private) @@ -177,7 +177,7 @@ TEST(20_private) TEST(21_private) { - run_test (_this, "test_21.lylvs", "test_21.cir.gz", "test_21.gds.gz", true, "test_21_5.lvsdb"); + run_test (_this, "test_21.lylvs", "test_21.cir.gz", "test_21.gds.gz", true, "test_21_6.lvsdb"); } // issue #1021 diff --git a/src/rba/rba/rbaUtils.cc b/src/rba/rba/rbaUtils.cc index bdb9e5c16..887ae0471 100644 --- a/src/rba/rba/rbaUtils.cc +++ b/src/rba/rba/rbaUtils.cc @@ -450,6 +450,10 @@ VALUE rba_funcall2_checked (VALUE obj, ID id, int argc, VALUE *args) // HINT: the ugly (VALUE) cast is required since there is only one form of rb_protect rb_protect_init (); // see above + if (! ruby_native_thread_p ()) { + throw tl::Exception (tl::to_string (tr ("Can't execute Ruby callbacks from non-Ruby threads"))); + } + RUBY_BEGIN_EXEC ret = rb_protect (&rb_funcall2_wrap, (VALUE) &p, &error); RUBY_END_EXEC diff --git a/src/tl/tl/tlString.cc b/src/tl/tl/tlString.cc index d57dee236..7bd12c832 100644 --- a/src/tl/tl/tlString.cc +++ b/src/tl/tl/tlString.cc @@ -1975,17 +1975,17 @@ sprintf (const char *f, const std::vector &vv, unsigned int a0) os.setf (std::ios::uppercase); } if (a < vv.size ()) { - os << vv [a].to_ulong (); + os << vv [a].to_ulonglong (); } } else if (*cp == 'u' || *cp == 'U') { os.setf (std::ios_base::fmtflags (0), std::ios::basefield); if (a < vv.size ()) { - os << vv [a].to_ulong (); + os << vv [a].to_ulonglong (); } } else if (*cp == 'd' || *cp == 'D') { os.setf (std::ios_base::fmtflags (0), std::ios::basefield); if (a < vv.size ()) { - os << vv [a].to_long (); + os << vv [a].to_longlong (); } } else if (*cp == 's' || *cp == 'S') { os.setf (std::ios_base::fmtflags (0), std::ios::basefield); diff --git a/src/tl/unit_tests/tlStringTests.cc b/src/tl/unit_tests/tlStringTests.cc index 634b38e6e..8d8696b09 100644 --- a/src/tl/unit_tests/tlStringTests.cc +++ b/src/tl/unit_tests/tlStringTests.cc @@ -57,6 +57,20 @@ TEST(1) EXPECT_EQ (tl::sprintf("%lu %llu %02x", 1, 2, 167), "1 2 a7"); EXPECT_EQ (tl::sprintf("%lu %llu %02X", 1, 2, 761), "1 2 2F9"); EXPECT_EQ (tl::sprintf("%c%c", 'a', 'X'), "aX"); + + // 64bit numbers + EXPECT_EQ (tl::sprintf("%x", 0x1000000000ll), "1000000000"); + EXPECT_EQ (tl::sprintf("%lx", 0x1000000000ll), "1000000000"); + EXPECT_EQ (tl::sprintf("%llx", 0x1000000000ll), "1000000000"); + EXPECT_EQ (tl::sprintf("%d", 100000000000ll), "100000000000"); + EXPECT_EQ (tl::sprintf("%ld", 100000000000ll), "100000000000"); + EXPECT_EQ (tl::sprintf("%lld", 100000000000ll), "100000000000"); + EXPECT_EQ (tl::sprintf("%d", -100000000000ll), "-100000000000"); + EXPECT_EQ (tl::sprintf("%ld", -100000000000ll), "-100000000000"); + EXPECT_EQ (tl::sprintf("%lld", -100000000000ll), "-100000000000"); + EXPECT_EQ (tl::sprintf("%u", 100000000000ull), "100000000000"); + EXPECT_EQ (tl::sprintf("%lu", 100000000000ull), "100000000000"); + EXPECT_EQ (tl::sprintf("%llu", 100000000000ull), "100000000000"); } TEST(1a) diff --git a/testdata/lvs/bbdevices1.lvsdb b/testdata/lvs/bbdevices1.lvsdb index 482fe39a9..71177629c 100644 --- a/testdata/lvs/bbdevices1.lvsdb +++ b/testdata/lvs/bbdevices1.lvsdb @@ -210,7 +210,7 @@ layout( net(2 rect(l2 (-148000 463000) (300000 25000)) ) - net(3 + net(3 name($5) rect(l9 (348500 26500) (25000 179000)) rect(l9 (-57500 -58000) (90000 90000)) rect(l9 (-86000 -288500) (90000 90000)) @@ -224,7 +224,7 @@ layout( rect(l14 (-270500 7500) (25000 193000)) rect(l14 (-87500 -87500) (150000 150000)) ) - net(4 + net(4 name($8) rect(l14 (-126000 -195000) (292000 25000)) ) diff --git a/testdata/lvs/bbdevices1b.lvsdb b/testdata/lvs/bbdevices1b.lvsdb index 0be76fb34..ec7a60026 100644 --- a/testdata/lvs/bbdevices1b.lvsdb +++ b/testdata/lvs/bbdevices1b.lvsdb @@ -140,7 +140,7 @@ layout( net(2 rect(l2 (-148000 463000) (300000 25000)) ) - net(3 + net(3 name($5) rect(l9 (348500 26500) (25000 179000)) rect(l9 (-57500 -58000) (90000 90000)) rect(l9 (-86000 -288500) (90000 90000)) @@ -154,7 +154,7 @@ layout( rect(l14 (-270500 7500) (25000 193000)) rect(l14 (-87500 -87500) (150000 150000)) ) - net(4 + net(4 name($8) rect(l14 (-126000 -195000) (292000 25000)) ) diff --git a/testdata/lvs/bbdevices2.lvsdb b/testdata/lvs/bbdevices2.lvsdb index 49b82b677..0f2a44006 100644 --- a/testdata/lvs/bbdevices2.lvsdb +++ b/testdata/lvs/bbdevices2.lvsdb @@ -220,7 +220,7 @@ layout( net(4 rect(l2 (822690 427000) (63970 82000)) ) - net(5 + net(5 name($7) rect(l9 (348500 26500) (25000 179000)) rect(l9 (-57500 -58000) (90000 90000)) rect(l9 (-86000 -288500) (90000 90000)) @@ -234,13 +234,13 @@ layout( rect(l14 (-270500 7500) (25000 193000)) rect(l14 (-87500 -87500) (150000 150000)) ) - net(6 + net(6 name($10) rect(l14 (-126000 -195000) (292000 25000)) ) - net(7 + net(7 name($12) rect(l14 (-410240 -216150) (83240 87150)) ) - net(8 + net(8 name($13) rect(l14 (846960 -242000) (77190 75500)) ) diff --git a/testdata/lvs/bbdevices2b.lvsdb b/testdata/lvs/bbdevices2b.lvsdb index 2ff9faa34..9cd9cc391 100644 --- a/testdata/lvs/bbdevices2b.lvsdb +++ b/testdata/lvs/bbdevices2b.lvsdb @@ -150,7 +150,7 @@ layout( net(4 rect(l2 (822690 427000) (63970 82000)) ) - net(5 + net(5 name($7) rect(l9 (348500 26500) (25000 179000)) rect(l9 (-57500 -58000) (90000 90000)) rect(l9 (-86000 -288500) (90000 90000)) @@ -164,13 +164,13 @@ layout( rect(l14 (-270500 7500) (25000 193000)) rect(l14 (-87500 -87500) (150000 150000)) ) - net(6 + net(6 name($10) rect(l14 (-126000 -195000) (292000 25000)) ) - net(7 + net(7 name($12) rect(l14 (-410240 -216150) (83240 87150)) ) - net(8 + net(8 name($13) rect(l14 (846960 -242000) (77190 75500)) ) diff --git a/testdata/lvs/bbdevices3.lvsdb b/testdata/lvs/bbdevices3.lvsdb index 1f7335c95..3ab3475c0 100644 --- a/testdata/lvs/bbdevices3.lvsdb +++ b/testdata/lvs/bbdevices3.lvsdb @@ -210,7 +210,7 @@ layout( net(2 rect(l2 (-148000 463000) (300000 25000)) ) - net(3 + net(3 name($5) rect(l9 (348500 26500) (25000 179000)) rect(l9 (-57500 -58000) (90000 90000)) rect(l9 (-86000 -288500) (90000 90000)) @@ -224,7 +224,7 @@ layout( rect(l14 (-270500 7500) (25000 193000)) rect(l14 (-87500 -87500) (150000 150000)) ) - net(4 + net(4 name($8) rect(l14 (-126000 -195000) (292000 25000)) ) diff --git a/testdata/lvs/bbdevices3b.lvsdb b/testdata/lvs/bbdevices3b.lvsdb index d4573f7a4..f60bc5bab 100644 --- a/testdata/lvs/bbdevices3b.lvsdb +++ b/testdata/lvs/bbdevices3b.lvsdb @@ -140,7 +140,7 @@ layout( net(2 rect(l2 (-148000 463000) (300000 25000)) ) - net(3 + net(3 name($5) rect(l9 (348500 26500) (25000 179000)) rect(l9 (-57500 -58000) (90000 90000)) rect(l9 (-86000 -288500) (90000 90000)) @@ -154,7 +154,7 @@ layout( rect(l14 (-270500 7500) (25000 193000)) rect(l14 (-87500 -87500) (150000 150000)) ) - net(4 + net(4 name($8) rect(l14 (-126000 -195000) (292000 25000)) ) diff --git a/testdata/lvs/bbdevices4.lvsdb b/testdata/lvs/bbdevices4.lvsdb index fe5d26b4a..0a74172f8 100644 --- a/testdata/lvs/bbdevices4.lvsdb +++ b/testdata/lvs/bbdevices4.lvsdb @@ -207,7 +207,7 @@ layout( net(2 rect(l2 (-148000 463000) (300000 25000)) ) - net(3 + net(3 name($5) rect(l9 (348500 26500) (25000 179000)) rect(l9 (-57500 -58000) (90000 90000)) rect(l9 (-86000 -288500) (90000 90000)) @@ -220,7 +220,7 @@ layout( rect(l14 (-25000 -193000) (25000 193000)) rect(l14 (-87500 -87500) (150000 150000)) ) - net(4 + net(4 name($7) rect(l14 (-126000 -195000) (292000 25000)) ) diff --git a/testdata/lvs/bbdevices4b.lvsdb b/testdata/lvs/bbdevices4b.lvsdb index 90993b7b2..ba1dfd285 100644 --- a/testdata/lvs/bbdevices4b.lvsdb +++ b/testdata/lvs/bbdevices4b.lvsdb @@ -137,7 +137,7 @@ layout( net(2 rect(l2 (-148000 463000) (300000 25000)) ) - net(3 + net(3 name($5) rect(l9 (348500 26500) (25000 179000)) rect(l9 (-57500 -58000) (90000 90000)) rect(l9 (-86000 -288500) (90000 90000)) @@ -150,7 +150,7 @@ layout( rect(l14 (-25000 -193000) (25000 193000)) rect(l14 (-87500 -87500) (150000 150000)) ) - net(4 + net(4 name($7) rect(l14 (-126000 -195000) (292000 25000)) ) diff --git a/testdata/lvs/bbdevices5.lvsdb b/testdata/lvs/bbdevices5.lvsdb index 42cef8ab3..6b5dee81b 100644 --- a/testdata/lvs/bbdevices5.lvsdb +++ b/testdata/lvs/bbdevices5.lvsdb @@ -210,7 +210,7 @@ layout( net(2 rect(l2 (-148000 463000) (300000 25000)) ) - net(3 + net(3 name($5) rect(l9 (348500 26500) (25000 179000)) rect(l9 (-57500 -58000) (90000 90000)) rect(l9 (-86000 -288500) (90000 90000)) @@ -224,10 +224,10 @@ layout( rect(l14 (-24000 -225500) (118960 25000)) rect(l14 (-182460 113000) (150000 150000)) ) - net(4 + net(4 name($7) rect(l14 (-126000 -195000) (292000 25000)) ) - net(5 + net(5 name($10) rect(l14 (509690 -219000) (113310 25000)) ) diff --git a/testdata/lvs/bbdevices5b.lvsdb b/testdata/lvs/bbdevices5b.lvsdb index dd49d20c6..7e9f9b4c0 100644 --- a/testdata/lvs/bbdevices5b.lvsdb +++ b/testdata/lvs/bbdevices5b.lvsdb @@ -140,7 +140,7 @@ layout( net(2 rect(l2 (-148000 463000) (300000 25000)) ) - net(3 + net(3 name($5) rect(l9 (348500 26500) (25000 179000)) rect(l9 (-57500 -58000) (90000 90000)) rect(l9 (-86000 -288500) (90000 90000)) @@ -154,10 +154,10 @@ layout( rect(l14 (-24000 -225500) (118960 25000)) rect(l14 (-182460 113000) (150000 150000)) ) - net(4 + net(4 name($7) rect(l14 (-126000 -195000) (292000 25000)) ) - net(5 + net(5 name($10) rect(l14 (509690 -219000) (113310 25000)) ) diff --git a/testdata/lvs/custom_compare.lvsdb b/testdata/lvs/custom_compare.lvsdb index 6862bb95d..d10c9dd63 100644 --- a/testdata/lvs/custom_compare.lvsdb +++ b/testdata/lvs/custom_compare.lvsdb @@ -38,12 +38,12 @@ layout( rect((0 0) (10255 5900)) # Nets with their geometries - net(1 + net(1 name($13) rect(l3 (4850 4600) (180 180)) rect(l1 (-245 -250) (310 320)) rect(l1 (0 -250) (200 250)) ) - net(2 + net(2 name($14) rect(l3 (10010 3500) (180 180)) rect(l1 (-245 -250) (310 320)) rect(l1 (-510 -250) (200 250)) diff --git a/testdata/lvs/must_connect1.lvsdb b/testdata/lvs/must_connect1.lvsdb index 1d91c7e7e..26eeb011f 100644 --- a/testdata/lvs/must_connect1.lvsdb +++ b/testdata/lvs/must_connect1.lvsdb @@ -258,7 +258,7 @@ J( N(6 I(Q) R(l12 (13260 2010) (0 0)) ) - N(7 + N(7 I($8) R(l10 (3450 4840) (3055 250)) R(l10 (2885 -250) (1975 250)) ) diff --git a/testdata/lvs/must_connect1_tl.lvsdb b/testdata/lvs/must_connect1_tl.lvsdb index fa05c7401..fa6a8ab2c 100644 --- a/testdata/lvs/must_connect1_tl.lvsdb +++ b/testdata/lvs/must_connect1_tl.lvsdb @@ -258,7 +258,7 @@ J( N(6 I(Q) R(l12 (13260 2010) (0 0)) ) - N(7 + N(7 I($8) R(l10 (3450 4840) (3055 250)) R(l10 (2885 -250) (1975 250)) ) diff --git a/testdata/lvs/must_connect3.lvsdb b/testdata/lvs/must_connect3.lvsdb index 83f89832d..19782493b 100644 --- a/testdata/lvs/must_connect3.lvsdb +++ b/testdata/lvs/must_connect3.lvsdb @@ -240,21 +240,21 @@ J( R(l10 (-1975 -8190) (1975 575)) R(l10 (-1005 -255) (0 0)) ) - N(3 + N(3 I($I1) R(l3 (12950 2130) (2160 250)) R(l3 (-250 0) (250 4990)) R(l3 (-1605 0) (1605 250)) R(l7 (-1545 -250) (240 250)) R(l8 (-560 -375) (690 510)) ) - N(4 + N(4 I($I2) R(l3 (12100 7300) (640 530)) R(l7 (-540 -415) (270 250)) R(l8 (-1695 -250) (1695 250)) R(l8 (-4075 -5650) (2630 250)) R(l8 (-250 0) (250 5150)) ) - N(5 + N(5 I($I3) R(l7 (6465 7325) (220 240)) R(l8 (-4100 -5365) (3125 250)) R(l8 (-250 0) (250 4860)) diff --git a/testdata/lvs/res_combine1.lvsdb.1 b/testdata/lvs/res_combine1.lvsdb.1 index 971e6ddb9..be2dcbb47 100644 --- a/testdata/lvs/res_combine1.lvsdb.1 +++ b/testdata/lvs/res_combine1.lvsdb.1 @@ -68,7 +68,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine1.lvsdb.2 b/testdata/lvs/res_combine1.lvsdb.2 index a482e6a93..725a958ca 100644 --- a/testdata/lvs/res_combine1.lvsdb.2 +++ b/testdata/lvs/res_combine1.lvsdb.2 @@ -68,7 +68,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine1.lvsdb.3 b/testdata/lvs/res_combine1.lvsdb.3 index 4a5eefac3..594bea880 100644 --- a/testdata/lvs/res_combine1.lvsdb.3 +++ b/testdata/lvs/res_combine1.lvsdb.3 @@ -68,7 +68,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine1.lvsdb.4 b/testdata/lvs/res_combine1.lvsdb.4 index 99b0f35c3..f9b232132 100644 --- a/testdata/lvs/res_combine1.lvsdb.4 +++ b/testdata/lvs/res_combine1.lvsdb.4 @@ -68,7 +68,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine1.lvsdb.5 b/testdata/lvs/res_combine1.lvsdb.5 index 6f91be370..d7a796e89 100644 --- a/testdata/lvs/res_combine1.lvsdb.5 +++ b/testdata/lvs/res_combine1.lvsdb.5 @@ -68,7 +68,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine1.lvsdb.6 b/testdata/lvs/res_combine1.lvsdb.6 index 856312de7..456048215 100644 --- a/testdata/lvs/res_combine1.lvsdb.6 +++ b/testdata/lvs/res_combine1.lvsdb.6 @@ -68,7 +68,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine2.lvsdb.1 b/testdata/lvs/res_combine2.lvsdb.1 index 7c5410036..877dec9ae 100644 --- a/testdata/lvs/res_combine2.lvsdb.1 +++ b/testdata/lvs/res_combine2.lvsdb.1 @@ -64,7 +64,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine2.lvsdb.2 b/testdata/lvs/res_combine2.lvsdb.2 index 9e6fd6e42..8019fd0ca 100644 --- a/testdata/lvs/res_combine2.lvsdb.2 +++ b/testdata/lvs/res_combine2.lvsdb.2 @@ -64,7 +64,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine2.lvsdb.3 b/testdata/lvs/res_combine2.lvsdb.3 index ef47b7df8..ce3c2a3de 100644 --- a/testdata/lvs/res_combine2.lvsdb.3 +++ b/testdata/lvs/res_combine2.lvsdb.3 @@ -64,7 +64,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine2.lvsdb.4 b/testdata/lvs/res_combine2.lvsdb.4 index 6d0b65e2d..ac3e9baa4 100644 --- a/testdata/lvs/res_combine2.lvsdb.4 +++ b/testdata/lvs/res_combine2.lvsdb.4 @@ -64,7 +64,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine2.lvsdb.5 b/testdata/lvs/res_combine2.lvsdb.5 index d5911356e..6f538c7ef 100644 --- a/testdata/lvs/res_combine2.lvsdb.5 +++ b/testdata/lvs/res_combine2.lvsdb.5 @@ -64,7 +64,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine2.lvsdb.6 b/testdata/lvs/res_combine2.lvsdb.6 index 89c533976..0b94b61ee 100644 --- a/testdata/lvs/res_combine2.lvsdb.6 +++ b/testdata/lvs/res_combine2.lvsdb.6 @@ -64,7 +64,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine3.lvsdb.1 b/testdata/lvs/res_combine3.lvsdb.1 index f6289f6b2..d067edf33 100644 --- a/testdata/lvs/res_combine3.lvsdb.1 +++ b/testdata/lvs/res_combine3.lvsdb.1 @@ -64,7 +64,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine3.lvsdb.2 b/testdata/lvs/res_combine3.lvsdb.2 index 7353b6eaa..14254a034 100644 --- a/testdata/lvs/res_combine3.lvsdb.2 +++ b/testdata/lvs/res_combine3.lvsdb.2 @@ -64,7 +64,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine3.lvsdb.3 b/testdata/lvs/res_combine3.lvsdb.3 index 63dd2ec89..c4c6ed4e3 100644 --- a/testdata/lvs/res_combine3.lvsdb.3 +++ b/testdata/lvs/res_combine3.lvsdb.3 @@ -64,7 +64,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine3.lvsdb.4 b/testdata/lvs/res_combine3.lvsdb.4 index e7b329f55..c8ae0cd34 100644 --- a/testdata/lvs/res_combine3.lvsdb.4 +++ b/testdata/lvs/res_combine3.lvsdb.4 @@ -64,7 +64,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine3.lvsdb.5 b/testdata/lvs/res_combine3.lvsdb.5 index bdbcf54e9..073211088 100644 --- a/testdata/lvs/res_combine3.lvsdb.5 +++ b/testdata/lvs/res_combine3.lvsdb.5 @@ -64,7 +64,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/res_combine3.lvsdb.6 b/testdata/lvs/res_combine3.lvsdb.6 index 1bb644fbe..abb6d99e0 100644 --- a/testdata/lvs/res_combine3.lvsdb.6 +++ b/testdata/lvs/res_combine3.lvsdb.6 @@ -64,7 +64,7 @@ layout( rect(l1 (-22675 -1970) (540 2000)) rect(l1 (-21840 -1605) (540 2000)) ) - net(2 + net(2 name($5) rect(l4 (19795 5575) (220 220)) rect(l4 (-220 -745) (220 220)) rect(l4 (-220 -745) (220 220)) diff --git a/testdata/lvs/ringo_device_subcircuits.lvsdb.1 b/testdata/lvs/ringo_device_subcircuits.lvsdb.1 index 06212f154..a53138333 100644 --- a/testdata/lvs/ringo_device_subcircuits.lvsdb.1 +++ b/testdata/lvs/ringo_device_subcircuits.lvsdb.1 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I3) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_device_subcircuits.lvsdb.2 b/testdata/lvs/ringo_device_subcircuits.lvsdb.2 index 4a2536ed7..c74e25058 100644 --- a/testdata/lvs/ringo_device_subcircuits.lvsdb.2 +++ b/testdata/lvs/ringo_device_subcircuits.lvsdb.2 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I5) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_layout_var.lvsdb.1 b/testdata/lvs/ringo_layout_var.lvsdb.1 index 0346c3a17..276675045 100644 --- a/testdata/lvs/ringo_layout_var.lvsdb.1 +++ b/testdata/lvs/ringo_layout_var.lvsdb.1 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I3) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_layout_var.lvsdb.2 b/testdata/lvs/ringo_layout_var.lvsdb.2 index fbe29c86e..2238cd24b 100644 --- a/testdata/lvs/ringo_layout_var.lvsdb.2 +++ b/testdata/lvs/ringo_layout_var.lvsdb.2 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I5) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_mixed_hierarchy.lvsdb b/testdata/lvs/ringo_mixed_hierarchy.lvsdb index 35c7fd126..7824c9d2c 100644 --- a/testdata/lvs/ringo_mixed_hierarchy.lvsdb +++ b/testdata/lvs/ringo_mixed_hierarchy.lvsdb @@ -308,31 +308,31 @@ layout( rect(l2 (950 -1500) (425 1500)) rect(l6 (-425 -4890) (425 950)) ) - net(5 + net(5 name($7) rect(l11 (5550 2950) (900 300)) ) - net(6 + net(6 name($8) rect(l11 (7350 2950) (900 300)) ) - net(7 + net(7 name($9) rect(l11 (9150 2950) (900 300)) ) - net(8 + net(8 name($10) rect(l11 (10950 2950) (900 300)) ) - net(9 + net(9 name($11) rect(l11 (12750 2950) (900 300)) ) - net(10 + net(10 name($12) rect(l11 (14550 2950) (900 300)) ) - net(11 + net(11 name($13) rect(l11 (16350 2950) (900 300)) ) - net(12 + net(12 name($14) rect(l11 (18150 2950) (900 300)) ) - net(13 + net(13 name($15) rect(l11 (19950 2950) (900 300)) ) net(14 name(OUT) @@ -341,7 +341,7 @@ layout( rect(l13 (-100 -100) (0 0)) rect(l13 (-200 -200) (400 400)) ) - net(15 + net(15 name($21) rect(l6 (2775 1660) (450 950)) ) net(16 name(VSS) diff --git a/testdata/lvs/ringo_simple.lvsdb.1 b/testdata/lvs/ringo_simple.lvsdb.1 index b5a1aabcb..30cbf6980 100644 --- a/testdata/lvs/ringo_simple.lvsdb.1 +++ b/testdata/lvs/ringo_simple.lvsdb.1 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I3) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple.lvsdb.2 b/testdata/lvs/ringo_simple.lvsdb.2 index 4bfcca0be..94c1f9904 100644 --- a/testdata/lvs/ringo_simple.lvsdb.2 +++ b/testdata/lvs/ringo_simple.lvsdb.2 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I5) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_blackboxing.lvsdb b/testdata/lvs/ringo_simple_blackboxing.lvsdb index 938c32edf..a76727f22 100644 --- a/testdata/lvs/ringo_simple_blackboxing.lvsdb +++ b/testdata/lvs/ringo_simple_blackboxing.lvsdb @@ -169,22 +169,22 @@ layout( rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) - net(10 + net(10 name($I22) rect(l11 (7350 2950) (900 300)) ) - net(11 + net(11 name($I18) rect(l11 (16350 2950) (900 300)) ) - net(12 + net(12 name($I36) rect(l11 (9150 2950) (900 300)) ) - net(13 + net(13 name($I37) rect(l11 (10950 2950) (900 300)) ) - net(14 + net(14 name($I38) rect(l11 (12750 2950) (900 300)) ) - net(15 + net(15 name($I39) rect(l11 (14550 2950) (900 300)) ) diff --git a/testdata/lvs/ringo_simple_blackboxing_netter.lvsdb b/testdata/lvs/ringo_simple_blackboxing_netter.lvsdb index 938c32edf..a76727f22 100644 --- a/testdata/lvs/ringo_simple_blackboxing_netter.lvsdb +++ b/testdata/lvs/ringo_simple_blackboxing_netter.lvsdb @@ -169,22 +169,22 @@ layout( rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) - net(10 + net(10 name($I22) rect(l11 (7350 2950) (900 300)) ) - net(11 + net(11 name($I18) rect(l11 (16350 2950) (900 300)) ) - net(12 + net(12 name($I36) rect(l11 (9150 2950) (900 300)) ) - net(13 + net(13 name($I37) rect(l11 (10950 2950) (900 300)) ) - net(14 + net(14 name($I38) rect(l11 (12750 2950) (900 300)) ) - net(15 + net(15 name($I39) rect(l11 (14550 2950) (900 300)) ) diff --git a/testdata/lvs/ringo_simple_compare2.lvsdb.1 b/testdata/lvs/ringo_simple_compare2.lvsdb.1 index b5a1aabcb..30cbf6980 100644 --- a/testdata/lvs/ringo_simple_compare2.lvsdb.1 +++ b/testdata/lvs/ringo_simple_compare2.lvsdb.1 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I3) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_compare2.lvsdb.2 b/testdata/lvs/ringo_simple_compare2.lvsdb.2 index 4bfcca0be..94c1f9904 100644 --- a/testdata/lvs/ringo_simple_compare2.lvsdb.2 +++ b/testdata/lvs/ringo_simple_compare2.lvsdb.2 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I5) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_device_scaling.lvsdb.1 b/testdata/lvs/ringo_simple_device_scaling.lvsdb.1 index 6cb29d488..3c8750631 100644 --- a/testdata/lvs/ringo_simple_device_scaling.lvsdb.1 +++ b/testdata/lvs/ringo_simple_device_scaling.lvsdb.1 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I3) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_device_scaling.lvsdb.2 b/testdata/lvs/ringo_simple_device_scaling.lvsdb.2 index d77d08cb2..6c89b4e06 100644 --- a/testdata/lvs/ringo_simple_device_scaling.lvsdb.2 +++ b/testdata/lvs/ringo_simple_device_scaling.lvsdb.2 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I5) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_dummy_device.lvsdb.1 b/testdata/lvs/ringo_simple_dummy_device.lvsdb.1 index 0bb5af8f8..10f93fc33 100644 --- a/testdata/lvs/ringo_simple_dummy_device.lvsdb.1 +++ b/testdata/lvs/ringo_simple_dummy_device.lvsdb.1 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I3) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) @@ -361,41 +361,41 @@ layout( rect((0 350) (27600 7650)) # Nets with their geometries - net(1 + net(1 name($3) rect(l4 (26050 2800) (525 550)) rect(l4 (-525 -300) (300 300)) rect(l4 (-25 -2000) (250 1450)) rect(l8 (-465 310) (180 180)) rect(l11 (-240 -240) (300 300)) ) - net(2 + net(2 name($4) rect(l11 (4040 2950) (610 300)) ) - net(3 + net(3 name($5) rect(l11 (5550 2950) (900 300)) ) - net(4 + net(4 name($6) rect(l11 (7350 2950) (900 300)) ) - net(5 + net(5 name($7) rect(l11 (9150 2950) (900 300)) ) - net(6 + net(6 name($8) rect(l11 (10950 2950) (900 300)) ) - net(7 + net(7 name($9) rect(l11 (12750 2950) (900 300)) ) - net(8 + net(8 name($10) rect(l11 (14550 2950) (900 300)) ) - net(9 + net(9 name($11) rect(l11 (16350 2950) (900 300)) ) - net(10 + net(10 name($12) rect(l11 (18150 2950) (900 300)) ) - net(11 + net(11 name($13) rect(l11 (19950 2950) (900 300)) ) net(12 name(FB) diff --git a/testdata/lvs/ringo_simple_dummy_device.lvsdb.2 b/testdata/lvs/ringo_simple_dummy_device.lvsdb.2 index a6f463150..4abffb39a 100644 --- a/testdata/lvs/ringo_simple_dummy_device.lvsdb.2 +++ b/testdata/lvs/ringo_simple_dummy_device.lvsdb.2 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I5) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) @@ -361,41 +361,41 @@ layout( rect((0 350) (27600 7650)) # Nets with their geometries - net(1 + net(1 name($3) rect(l4 (26050 2800) (525 550)) rect(l4 (-525 -300) (300 300)) rect(l4 (-25 -2000) (250 1450)) rect(l8 (-465 310) (180 180)) rect(l11 (-240 -240) (300 300)) ) - net(2 + net(2 name($4) rect(l11 (4040 2950) (610 300)) ) - net(3 + net(3 name($5) rect(l11 (5550 2950) (900 300)) ) - net(4 + net(4 name($6) rect(l11 (7350 2950) (900 300)) ) - net(5 + net(5 name($7) rect(l11 (9150 2950) (900 300)) ) - net(6 + net(6 name($8) rect(l11 (10950 2950) (900 300)) ) - net(7 + net(7 name($9) rect(l11 (12750 2950) (900 300)) ) - net(8 + net(8 name($10) rect(l11 (14550 2950) (900 300)) ) - net(9 + net(9 name($11) rect(l11 (16350 2950) (900 300)) ) - net(10 + net(10 name($12) rect(l11 (18150 2950) (900 300)) ) - net(11 + net(11 name($13) rect(l11 (19950 2950) (900 300)) ) net(12 name(FB) diff --git a/testdata/lvs/ringo_simple_implicit_connections.lvsdb.1 b/testdata/lvs/ringo_simple_implicit_connections.lvsdb.1 index 90d11e8b4..74a756054 100644 --- a/testdata/lvs/ringo_simple_implicit_connections.lvsdb.1 +++ b/testdata/lvs/ringo_simple_implicit_connections.lvsdb.1 @@ -202,7 +202,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I3) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_implicit_connections.lvsdb.2 b/testdata/lvs/ringo_simple_implicit_connections.lvsdb.2 index 145f3cd6a..0657be4d3 100644 --- a/testdata/lvs/ringo_simple_implicit_connections.lvsdb.2 +++ b/testdata/lvs/ringo_simple_implicit_connections.lvsdb.2 @@ -202,7 +202,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I5) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_io.lvsdb.1 b/testdata/lvs/ringo_simple_io.lvsdb.1 index b57fc7c54..9b2db59ba 100644 --- a/testdata/lvs/ringo_simple_io.lvsdb.1 +++ b/testdata/lvs/ringo_simple_io.lvsdb.1 @@ -176,7 +176,7 @@ J( R(l11 (-150 -150) (300 300)) ) N(7 I(SUBSTRATE)) - N(8 + N(8 I($I3) R(l6 (975 1660) (425 950)) R(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_io.lvsdb.2 b/testdata/lvs/ringo_simple_io.lvsdb.2 index d3768aef4..3dd69d78c 100644 --- a/testdata/lvs/ringo_simple_io.lvsdb.2 +++ b/testdata/lvs/ringo_simple_io.lvsdb.2 @@ -176,7 +176,7 @@ J( R(l11 (-150 -150) (300 300)) ) N(7 I(SUBSTRATE)) - N(8 + N(8 I($I5) R(l6 (975 1660) (425 950)) R(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_io2.l2n.1 b/testdata/lvs/ringo_simple_io2.l2n.1 index 5dff4a81c..ef8092802 100644 --- a/testdata/lvs/ringo_simple_io2.l2n.1 +++ b/testdata/lvs/ringo_simple_io2.l2n.1 @@ -175,7 +175,7 @@ X(ND2X1 R(l11 (-150 -150) (300 300)) ) N(7 I(SUBSTRATE)) - N(8 + N(8 I($I3) R(l6 (975 1660) (425 950)) R(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_io2.l2n.2 b/testdata/lvs/ringo_simple_io2.l2n.2 index fdc09bcfd..871a19bb3 100644 --- a/testdata/lvs/ringo_simple_io2.l2n.2 +++ b/testdata/lvs/ringo_simple_io2.l2n.2 @@ -175,7 +175,7 @@ X(ND2X1 R(l11 (-150 -150) (300 300)) ) N(7 I(SUBSTRATE)) - N(8 + N(8 I($I5) R(l6 (975 1660) (425 950)) R(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_io2.lvsdb.1 b/testdata/lvs/ringo_simple_io2.lvsdb.1 index b5a1aabcb..30cbf6980 100644 --- a/testdata/lvs/ringo_simple_io2.lvsdb.1 +++ b/testdata/lvs/ringo_simple_io2.lvsdb.1 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I3) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_io2.lvsdb.2 b/testdata/lvs/ringo_simple_io2.lvsdb.2 index 4bfcca0be..94c1f9904 100644 --- a/testdata/lvs/ringo_simple_io2.lvsdb.2 +++ b/testdata/lvs/ringo_simple_io2.lvsdb.2 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I5) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) 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 f88be0bc7..835c6f61c 100644 --- a/testdata/lvs/ringo_simple_net_and_circuit_equivalence.lvsdb.1 +++ b/testdata/lvs/ringo_simple_net_and_circuit_equivalence.lvsdb.1 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I3) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) 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 e500fb5a3..6e73c3fdf 100644 --- a/testdata/lvs/ringo_simple_net_and_circuit_equivalence.lvsdb.2 +++ b/testdata/lvs/ringo_simple_net_and_circuit_equivalence.lvsdb.2 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I5) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_pin_swapping.lvsdb.1 b/testdata/lvs/ringo_simple_pin_swapping.lvsdb.1 index e383b2490..9a08296ca 100644 --- a/testdata/lvs/ringo_simple_pin_swapping.lvsdb.1 +++ b/testdata/lvs/ringo_simple_pin_swapping.lvsdb.1 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I3) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_pin_swapping.lvsdb.2 b/testdata/lvs/ringo_simple_pin_swapping.lvsdb.2 index b06039efe..dbeab1f69 100644 --- a/testdata/lvs/ringo_simple_pin_swapping.lvsdb.2 +++ b/testdata/lvs/ringo_simple_pin_swapping.lvsdb.2 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I5) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_same_device_classes.lvsdb.1 b/testdata/lvs/ringo_simple_same_device_classes.lvsdb.1 index a6570c9a6..95ce47712 100644 --- a/testdata/lvs/ringo_simple_same_device_classes.lvsdb.1 +++ b/testdata/lvs/ringo_simple_same_device_classes.lvsdb.1 @@ -201,7 +201,7 @@ layout( rect(l17 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I3) rect(l9 (975 1660) (425 950)) rect(l9 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_same_device_classes.lvsdb.2 b/testdata/lvs/ringo_simple_same_device_classes.lvsdb.2 index 55dbc29ba..08ae6e339 100644 --- a/testdata/lvs/ringo_simple_same_device_classes.lvsdb.2 +++ b/testdata/lvs/ringo_simple_same_device_classes.lvsdb.2 @@ -201,7 +201,7 @@ layout( rect(l17 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I5) rect(l9 (975 1660) (425 950)) rect(l9 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_simplification.lvsdb.1 b/testdata/lvs/ringo_simple_simplification.lvsdb.1 index cf50d6703..fc1c945d2 100644 --- a/testdata/lvs/ringo_simple_simplification.lvsdb.1 +++ b/testdata/lvs/ringo_simple_simplification.lvsdb.1 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I3) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) @@ -560,22 +560,22 @@ layout( rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) - net(10 + net(10 name($I22) rect(l11 (7350 2950) (900 300)) ) - net(11 + net(11 name($I18) rect(l11 (16350 2950) (900 300)) ) - net(12 + net(12 name($I36) rect(l11 (9150 2950) (900 300)) ) - net(13 + net(13 name($I37) rect(l11 (10950 2950) (900 300)) ) - net(14 + net(14 name($I38) rect(l11 (12750 2950) (900 300)) ) - net(15 + net(15 name($I39) rect(l11 (14550 2950) (900 300)) ) diff --git a/testdata/lvs/ringo_simple_simplification.lvsdb.2 b/testdata/lvs/ringo_simple_simplification.lvsdb.2 index 475506d1f..494dbfa62 100644 --- a/testdata/lvs/ringo_simple_simplification.lvsdb.2 +++ b/testdata/lvs/ringo_simple_simplification.lvsdb.2 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I5) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) @@ -560,22 +560,22 @@ layout( rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) - net(10 + net(10 name($I22) rect(l11 (7350 2950) (900 300)) ) - net(11 + net(11 name($I18) rect(l11 (16350 2950) (900 300)) ) - net(12 + net(12 name($I36) rect(l11 (9150 2950) (900 300)) ) - net(13 + net(13 name($I37) rect(l11 (10950 2950) (900 300)) ) - net(14 + net(14 name($I38) rect(l11 (12750 2950) (900 300)) ) - net(15 + net(15 name($I39) rect(l11 (14550 2950) (900 300)) ) diff --git a/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.1 b/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.1 index acb6dfc04..2d9fdbac8 100644 --- a/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.1 +++ b/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.1 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I3) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) @@ -560,22 +560,22 @@ layout( rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) - net(10 + net(10 name($I22) rect(l11 (7350 2950) (900 300)) ) - net(11 + net(11 name($I18) rect(l11 (16350 2950) (900 300)) ) - net(12 + net(12 name($I36) rect(l11 (9150 2950) (900 300)) ) - net(13 + net(13 name($I37) rect(l11 (10950 2950) (900 300)) ) - net(14 + net(14 name($I38) rect(l11 (12750 2950) (900 300)) ) - net(15 + net(15 name($I39) rect(l11 (14550 2950) (900 300)) ) diff --git a/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.2 b/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.2 index 650cb1b5a..e374d9100 100644 --- a/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.2 +++ b/testdata/lvs/ringo_simple_simplification_with_align.lvsdb.2 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I5) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) @@ -560,22 +560,22 @@ layout( rect(l10 (-24850 -800) (500 1500)) rect(l10 (22900 -1500) (500 1500)) ) - net(10 + net(10 name($I22) rect(l11 (7350 2950) (900 300)) ) - net(11 + net(11 name($I18) rect(l11 (16350 2950) (900 300)) ) - net(12 + net(12 name($I36) rect(l11 (9150 2950) (900 300)) ) - net(13 + net(13 name($I37) rect(l11 (10950 2950) (900 300)) ) - net(14 + net(14 name($I38) rect(l11 (12750 2950) (900 300)) ) - net(15 + net(15 name($I39) rect(l11 (14550 2950) (900 300)) ) diff --git a/testdata/lvs/ringo_simple_with_tol.lvsdb.1 b/testdata/lvs/ringo_simple_with_tol.lvsdb.1 index 628deb17f..98d8bdee9 100644 --- a/testdata/lvs/ringo_simple_with_tol.lvsdb.1 +++ b/testdata/lvs/ringo_simple_with_tol.lvsdb.1 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I3) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_with_tol.lvsdb.2 b/testdata/lvs/ringo_simple_with_tol.lvsdb.2 index 6316f5d39..1ea753c38 100644 --- a/testdata/lvs/ringo_simple_with_tol.lvsdb.2 +++ b/testdata/lvs/ringo_simple_with_tol.lvsdb.2 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I5) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_with_tol_early.lvsdb.1 b/testdata/lvs/ringo_simple_with_tol_early.lvsdb.1 index 628deb17f..98d8bdee9 100644 --- a/testdata/lvs/ringo_simple_with_tol_early.lvsdb.1 +++ b/testdata/lvs/ringo_simple_with_tol_early.lvsdb.1 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I3) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/ringo_simple_with_tol_early.lvsdb.2 b/testdata/lvs/ringo_simple_with_tol_early.lvsdb.2 index 6316f5d39..1ea753c38 100644 --- a/testdata/lvs/ringo_simple_with_tol_early.lvsdb.2 +++ b/testdata/lvs/ringo_simple_with_tol_early.lvsdb.2 @@ -199,7 +199,7 @@ layout( rect(l11 (-150 -150) (300 300)) ) net(7 name(SUBSTRATE)) - net(8 + net(8 name($I5) rect(l6 (975 1660) (425 950)) rect(l6 (-400 -950) (425 950)) ) diff --git a/testdata/lvs/soft_connect3.l2n b/testdata/lvs/soft_connect3.l2n index f046069b3..ff7a71bcc 100644 --- a/testdata/lvs/soft_connect3.l2n +++ b/testdata/lvs/soft_connect3.l2n @@ -81,13 +81,13 @@ X(NTRANS R(l12 (-290 -690) (360 760)) R(l6 (-680 -855) (775 950)) ) - N(2 + N(2 I($3) R(l8 (290 -310) (220 220)) R(l8 (-220 180) (220 220)) R(l12 (-290 -690) (360 760)) R(l6 (-455 -855) (775 950)) ) - N(3 + N(3 I($5) R(l4 (-125 -800) (250 1600)) ) N(4 I(SUBSTRATE)) @@ -117,13 +117,13 @@ X(PTRANS R(l12 (-290 -690) (360 760)) R(l2 (-680 -855) (775 950)) ) - N(2 + N(2 I($3) R(l8 (290 -310) (220 220)) R(l8 (-220 180) (220 220)) R(l12 (-290 -690) (360 760)) R(l2 (-455 -855) (775 950)) ) - N(3 + N(3 I($5) R(l4 (-125 -800) (250 1600)) ) N(4) diff --git a/testdata/lvs/soft_connect4.l2n b/testdata/lvs/soft_connect4.l2n index 402240d29..5cc59c0c3 100644 --- a/testdata/lvs/soft_connect4.l2n +++ b/testdata/lvs/soft_connect4.l2n @@ -108,12 +108,12 @@ X(INV R(l10 (-700 -950) (400 1000)) R(l2 (-1875 -975) (775 950)) ) - N(3 + N(3 I($4) R(l4 (-125 -250) (250 2500)) R(l4 (-250 -3050) (250 1600)) R(l4 (-250 1200) (250 1600)) ) - N(4 + N(4 I($5) R(l8 (-510 -310) (220 220)) R(l8 (-220 180) (220 220)) R(l8 (-220 2180) (220 220)) @@ -170,7 +170,7 @@ X(TOP R(l12 (1810 2600) (690 400)) R(l16 (-400 -200) (0 0)) ) - N(4 + N(4 I($5) R(l3 (4000 3400) (2700 2000)) ) N(5 I(SUBSTRATE)) diff --git a/testdata/lvs/soft_connect5.l2n b/testdata/lvs/soft_connect5.l2n index d2a3334b8..bbe544f80 100644 --- a/testdata/lvs/soft_connect5.l2n +++ b/testdata/lvs/soft_connect5.l2n @@ -108,12 +108,12 @@ X(INV R(l10 (-700 -950) (400 1000)) R(l2 (-1875 -975) (775 950)) ) - N(3 + N(3 I($4) R(l4 (-125 -250) (250 2500)) R(l4 (-250 -3050) (250 1600)) R(l4 (-250 1200) (250 1600)) ) - N(4 + N(4 I($5) R(l8 (-510 -310) (220 220)) R(l8 (-220 180) (220 220)) R(l8 (-220 2180) (220 220)) diff --git a/testdata/lvs/soft_connect6.l2n b/testdata/lvs/soft_connect6.l2n index 600f9b0bc..0d3e3a9ad 100644 --- a/testdata/lvs/soft_connect6.l2n +++ b/testdata/lvs/soft_connect6.l2n @@ -104,7 +104,7 @@ X(INV R(l14 (-200 -900) (1000 900)) R(l6 (-2175 -925) (775 950)) ) - N(3 + N(3 I($4) R(l3 (-1500 1800) (3000 2000)) R(l3 (-200 -2000) (1000 2000)) R(l8 (-2010 -1310) (220 220)) @@ -122,7 +122,7 @@ X(INV R(l10 (-700 -950) (400 1000)) R(l2 (-1875 -975) (775 950)) ) - N(4 + N(4 I($6) R(l4 (-125 -250) (250 2500)) R(l4 (-250 -3050) (250 1600)) R(l4 (-250 1200) (250 1600)) diff --git a/testdata/lvs/stray_texts1.l2n b/testdata/lvs/stray_texts1.l2n index 04c1dbed5..312542798 100644 --- a/testdata/lvs/stray_texts1.l2n +++ b/testdata/lvs/stray_texts1.l2n @@ -27,10 +27,10 @@ X(CHILD J(l1 D (1820 510)) R(l2 (-70 -90) (160 160)) ) - N(5 + N(5 I($8) R(l2 (2370 410) (170 200)) ) - N(6 + N(6 I($9) R(l2 (2910 430) (190 200)) ) P(1 I(A)) diff --git a/testdata/lvs/stray_texts2.l2n b/testdata/lvs/stray_texts2.l2n index a014cac50..92dd849ea 100644 --- a/testdata/lvs/stray_texts2.l2n +++ b/testdata/lvs/stray_texts2.l2n @@ -25,10 +25,10 @@ X(CHILD R(l1 (1750 420) (160 160)) R(l1 (-90 -70) (0 0)) ) - N(5 + N(5 I($6) R(l1 (2370 410) (170 200)) ) - N(6 + N(6 I($7) R(l1 (2910 430) (190 200)) ) P(1 I(A)) diff --git a/testdata/lvs/test_22a.lvsdb.1 b/testdata/lvs/test_22a.lvsdb.1 index 3b1267688..6f083ffa0 100644 --- a/testdata/lvs/test_22a.lvsdb.1 +++ b/testdata/lvs/test_22a.lvsdb.1 @@ -832,16 +832,16 @@ layout( rect(l24 (2030 -150) (150 150)) rect(l24 (2030 -150) (150 150)) ) - net(27 + net(27 name($28) polygon(l7 (955 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) - net(28 + net(28 name($29) polygon(l7 (7495 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) - net(29 + net(29 name($30) polygon(l7 (3135 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) - net(30 + net(30 name($31) polygon(l7 (5315 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) net(31 name('wl[1]') @@ -893,7 +893,7 @@ layout( rect(l24 (2030 -150) (150 150)) rect(l24 (2030 -150) (150 150)) ) - net(32 + net(32 name($33) polygon(l2 (395 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -904,12 +904,12 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(33 + net(33 name($34) rect(l7 (940 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(34 + net(34 name($35) polygon(l2 (1365 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -920,7 +920,7 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(35 + net(35 name($36) polygon(l2 (2575 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -931,12 +931,12 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(36 + net(36 name($37) rect(l7 (3120 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(37 + net(37 name($38) polygon(l2 (4755 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -947,12 +947,12 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(38 + net(38 name($39) rect(l7 (5300 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(39 + net(39 name($40) polygon(l2 (6935 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -963,34 +963,34 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(40 + net(40 name($41) rect(l7 (7480 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(41 + net(41 name($42) polygon(l7 (265 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(42 + net(42 name($43) polygon(l7 (6805 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(43 + net(43 name($44) polygon(l7 (2445 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(44 + net(44 name($45) polygon(l7 (4625 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(45 + net(45 name($47) rect(l7 (290 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) ) - net(46 + net(46 name($48) rect(l7 (2470 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) ) - net(47 + net(47 name($49) polygon(l2 (3545 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -1001,12 +1001,12 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(48 + net(48 name($50) rect(l7 (4650 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) ) - net(49 + net(49 name($51) polygon(l2 (5725 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -1017,7 +1017,7 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(50 + net(50 name($52) polygon(l2 (7905 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -1028,7 +1028,7 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(51 + net(51 name($53) rect(l7 (6830 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) diff --git a/testdata/lvs/test_22a.lvsdb.2 b/testdata/lvs/test_22a.lvsdb.2 index bd5c980af..b6914388f 100644 --- a/testdata/lvs/test_22a.lvsdb.2 +++ b/testdata/lvs/test_22a.lvsdb.2 @@ -832,16 +832,16 @@ layout( rect(l24 (2030 -150) (150 150)) rect(l24 (2030 -150) (150 150)) ) - net(27 + net(27 name($28) polygon(l7 (955 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) - net(28 + net(28 name($29) polygon(l7 (7495 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) - net(29 + net(29 name($30) polygon(l7 (3135 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) - net(30 + net(30 name($31) polygon(l7 (5315 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) net(31 name('wl[1]') @@ -893,7 +893,7 @@ layout( rect(l24 (2030 -150) (150 150)) rect(l24 (2030 -150) (150 150)) ) - net(32 + net(32 name($33) polygon(l2 (395 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -904,12 +904,12 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(33 + net(33 name($34) rect(l7 (940 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(34 + net(34 name($35) polygon(l2 (1365 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -920,7 +920,7 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(35 + net(35 name($36) polygon(l2 (2575 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -931,12 +931,12 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(36 + net(36 name($37) rect(l7 (3120 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(37 + net(37 name($38) polygon(l2 (4755 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -947,12 +947,12 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(38 + net(38 name($39) rect(l7 (5300 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(39 + net(39 name($40) polygon(l2 (5725 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -963,7 +963,7 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(40 + net(40 name($41) polygon(l2 (6935 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -974,12 +974,12 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(41 + net(41 name($42) rect(l7 (7480 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(42 + net(42 name($43) polygon(l2 (7905 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -990,29 +990,29 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(43 + net(43 name($44) polygon(l7 (265 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(44 + net(44 name($45) polygon(l7 (6805 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(45 + net(45 name($46) polygon(l7 (2445 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(46 + net(46 name($47) polygon(l7 (4625 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(47 + net(47 name($49) rect(l7 (290 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) ) - net(48 + net(48 name($50) rect(l7 (2470 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) ) - net(49 + net(49 name($51) polygon(l2 (3545 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -1023,12 +1023,12 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(50 + net(50 name($52) rect(l7 (4650 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) ) - net(51 + net(51 name($53) rect(l7 (6830 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) diff --git a/testdata/lvs/test_22b.lvsdb.1 b/testdata/lvs/test_22b.lvsdb.1 index bac531746..45724cbcf 100644 --- a/testdata/lvs/test_22b.lvsdb.1 +++ b/testdata/lvs/test_22b.lvsdb.1 @@ -832,16 +832,16 @@ layout( rect(l24 (2030 -150) (150 150)) rect(l24 (2030 -150) (150 150)) ) - net(27 + net(27 name($28) polygon(l7 (955 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) - net(28 + net(28 name($29) polygon(l7 (7495 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) - net(29 + net(29 name($30) polygon(l7 (3135 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) - net(30 + net(30 name($31) polygon(l7 (5315 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) net(31 name('wl[1]') @@ -893,7 +893,7 @@ layout( rect(l24 (2030 -150) (150 150)) rect(l24 (2030 -150) (150 150)) ) - net(32 + net(32 name($33) polygon(l2 (395 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -904,12 +904,12 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(33 + net(33 name($34) rect(l7 (940 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(34 + net(34 name($35) polygon(l2 (1365 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -920,7 +920,7 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(35 + net(35 name($36) polygon(l2 (2575 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -931,12 +931,12 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(36 + net(36 name($37) rect(l7 (3120 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(37 + net(37 name($38) polygon(l2 (4755 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -947,12 +947,12 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(38 + net(38 name($39) rect(l7 (5300 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(39 + net(39 name($40) polygon(l2 (6935 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -963,34 +963,34 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(40 + net(40 name($41) rect(l7 (7480 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(41 + net(41 name($42) polygon(l7 (265 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(42 + net(42 name($43) polygon(l7 (6805 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(43 + net(43 name($44) polygon(l7 (2445 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(44 + net(44 name($45) polygon(l7 (4625 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(45 + net(45 name($47) rect(l7 (290 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) ) - net(46 + net(46 name($48) rect(l7 (2470 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) ) - net(47 + net(47 name($49) polygon(l2 (3545 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -1001,12 +1001,12 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(48 + net(48 name($50) rect(l7 (4650 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) ) - net(49 + net(49 name($51) polygon(l2 (5725 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -1017,7 +1017,7 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(50 + net(50 name($52) polygon(l2 (7905 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -1028,7 +1028,7 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(51 + net(51 name($53) rect(l7 (6830 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) diff --git a/testdata/lvs/test_22b.lvsdb.2 b/testdata/lvs/test_22b.lvsdb.2 index cac410e2b..7c718f649 100644 --- a/testdata/lvs/test_22b.lvsdb.2 +++ b/testdata/lvs/test_22b.lvsdb.2 @@ -832,16 +832,16 @@ layout( rect(l24 (2030 -150) (150 150)) rect(l24 (2030 -150) (150 150)) ) - net(27 + net(27 name($28) polygon(l7 (955 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) - net(28 + net(28 name($29) polygon(l7 (7495 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) - net(29 + net(29 name($30) polygon(l7 (3135 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) - net(30 + net(30 name($31) polygon(l7 (5315 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180)) ) net(31 name('wl[1]') @@ -893,7 +893,7 @@ layout( rect(l24 (2030 -150) (150 150)) rect(l24 (2030 -150) (150 150)) ) - net(32 + net(32 name($33) polygon(l2 (395 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -904,12 +904,12 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(33 + net(33 name($34) rect(l7 (940 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(34 + net(34 name($35) polygon(l2 (1365 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -920,7 +920,7 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(35 + net(35 name($36) polygon(l2 (2575 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -931,12 +931,12 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(36 + net(36 name($37) rect(l7 (3120 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(37 + net(37 name($38) polygon(l2 (4755 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -947,12 +947,12 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(38 + net(38 name($39) rect(l7 (5300 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(39 + net(39 name($40) polygon(l2 (5725 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -963,7 +963,7 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(40 + net(40 name($41) polygon(l2 (6935 3065) (0 340) (-105 0) (0 420) (525 0) (0 -760)) rect(l2 (-525 1670) (445 420)) polygon(l9 (-210 -1620) (0 1570) (170 0) (0 -920) (245 0) (0 -170) (-245 0) (0 -480)) @@ -974,12 +974,12 @@ layout( rect(l22 (0 -270) (950 150)) rect(l22 (0 -840) (150 2010)) ) - net(41 + net(41 name($42) rect(l7 (7480 3965) (950 150)) rect(l7 (-1280 -150) (330 270)) rect(l7 (950 -960) (150 2010)) ) - net(42 + net(42 name($43) polygon(l2 (7905 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -990,29 +990,29 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(43 + net(43 name($44) polygon(l7 (265 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(44 + net(44 name($45) polygon(l7 (6805 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(45 + net(45 name($46) polygon(l7 (2445 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(46 + net(46 name($47) polygon(l7 (4625 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) - net(47 + net(47 name($49) rect(l7 (290 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) ) - net(48 + net(48 name($50) rect(l7 (2470 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) ) - net(49 + net(49 name($51) polygon(l2 (3545 3065) (0 760) (525 0) (0 -420) (-105 0) (0 -340)) rect(l2 (-340 1670) (445 420)) polygon(l9 (-405 -1620) (0 840) (-245 0) (0 170) (245 0) (0 560) (170 0) (0 -1570)) @@ -1023,12 +1023,12 @@ layout( rect(l22 (-1100 -1320) (150 2010)) rect(l22 (950 -960) (330 270)) ) - net(50 + net(50 name($52) rect(l7 (4650 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) ) - net(51 + net(51 name($53) rect(l7 (6830 4445) (950 150)) rect(l7 (-1100 -1320) (150 2010)) rect(l7 (950 -960) (330 270)) diff --git a/testdata/lvs/test_22c.lvsdb.1 b/testdata/lvs/test_22c.lvsdb.1 index 029afa97f..0fef41270 100644 --- a/testdata/lvs/test_22c.lvsdb.1 +++ b/testdata/lvs/test_22c.lvsdb.1 @@ -265,7 +265,7 @@ layout( rect(l23 (-110 -170) (170 170)) rect(l2 (-355 -210) (420 265)) ) - net(9 + net(9 name($10) polygon(l7 (265 140) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) net(10 name(vss) diff --git a/testdata/lvs/test_22c.lvsdb.2 b/testdata/lvs/test_22c.lvsdb.2 index 7a023acbf..8438d1de6 100644 --- a/testdata/lvs/test_22c.lvsdb.2 +++ b/testdata/lvs/test_22c.lvsdb.2 @@ -265,7 +265,7 @@ layout( rect(l23 (-110 -170) (170 170)) rect(l2 (-355 -210) (420 265)) ) - net(9 + net(9 name($10) polygon(l7 (265 140) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) net(10 name(vss) diff --git a/testdata/lvs/test_22c.lvsdb.3 b/testdata/lvs/test_22c.lvsdb.3 index 3f52d22f2..e966c57ac 100644 --- a/testdata/lvs/test_22c.lvsdb.3 +++ b/testdata/lvs/test_22c.lvsdb.3 @@ -265,7 +265,7 @@ layout( rect(l23 (-110 -170) (170 170)) rect(l2 (-355 -210) (420 265)) ) - net(9 + net(9 name($10) polygon(l7 (265 140) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) net(10 name(vss) diff --git a/testdata/lvs/test_22d.lvsdb.1 b/testdata/lvs/test_22d.lvsdb.1 index bb827e1c7..73e8005b4 100644 --- a/testdata/lvs/test_22d.lvsdb.1 +++ b/testdata/lvs/test_22d.lvsdb.1 @@ -265,7 +265,7 @@ layout( rect(l23 (-110 -170) (170 170)) rect(l2 (-355 -210) (420 265)) ) - net(9 + net(9 name($10) polygon(l7 (265 140) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) net(10 name(vss) diff --git a/testdata/lvs/test_22d.lvsdb.2 b/testdata/lvs/test_22d.lvsdb.2 index 7b32708a2..1d4e0d82a 100644 --- a/testdata/lvs/test_22d.lvsdb.2 +++ b/testdata/lvs/test_22d.lvsdb.2 @@ -265,7 +265,7 @@ layout( rect(l23 (-110 -170) (170 170)) rect(l2 (-355 -210) (420 265)) ) - net(9 + net(9 name($10) polygon(l7 (265 140) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) net(10 name(vss) diff --git a/testdata/lvs/test_22d.lvsdb.3 b/testdata/lvs/test_22d.lvsdb.3 index d1f5b2a20..10a35d95c 100644 --- a/testdata/lvs/test_22d.lvsdb.3 +++ b/testdata/lvs/test_22d.lvsdb.3 @@ -265,7 +265,7 @@ layout( rect(l23 (-110 -170) (170 170)) rect(l2 (-355 -210) (420 265)) ) - net(9 + net(9 name($10) polygon(l7 (265 140) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150)) ) net(10 name(vss) diff --git a/testdata/ruby/dbCellTests.rb b/testdata/ruby/dbCellTests.rb index dec702c68..dc92a7ea7 100644 --- a/testdata/ruby/dbCellTests.rb +++ b/testdata/ruby/dbCellTests.rb @@ -348,6 +348,29 @@ class DBCellTests_TestClass < TestBase end + # variant enums + def test_VariantType + + vt = RBA::VariantType::NoVariants + assert_equal(vt.to_s, "NoVariants") + + vt = RBA::VariantType::Orientation + assert_equal(vt.to_s, "Orientation") + + vt = RBA::VariantType::Orthogonal + assert_equal(vt.to_s, "Orthogonal") + + vt = RBA::VariantType::Magnification + assert_equal(vt.to_s, "Magnification") + + vt = RBA::VariantType::XYAnisotropyAndMagnification + assert_equal(vt.to_s, "XYAnisotropyAndMagnification") + + vt = RBA::VariantType::MagnificationAndOrientation + assert_equal(vt.to_s, "MagnificationAndOrientation") + + end + end load("test_epilogue.rb") diff --git a/testdata/ruby/dbLayoutToNetlist.rb b/testdata/ruby/dbLayoutToNetlist.rb index 30408b611..4ecf8765f 100644 --- a/testdata/ruby/dbLayoutToNetlist.rb +++ b/testdata/ruby/dbLayoutToNetlist.rb @@ -1121,6 +1121,23 @@ END assert_equal(le[2].to_s, "warning") assert_equal(le[3].to_s, "error") + le = RBA::LogEntryData::new + le.severity = RBA::LogEntryData::Error + le.message = "A new entry" + le.geometry = RBA::DPolygon::new(RBA::DBox::new(0, 1, 2, 3)) + le.cell_name = "MYCELL" + le.category_name = "CAT" + le.category_description = "Cat Desc" + l2n.add_log_entry(le) + + le = l2n.each_log_entry.collect { |s| s.to_s } + assert_equal(le.size, 5) + assert_equal(le[4].to_s, "[Cat Desc] In cell MYCELL: A new entry, shape: (0,1;0,3;2,3;2,1)") + + l2n.clear_log_entries + le = l2n.each_log_entry.collect { |s| s.to_s } + assert_equal(le.size, 0) + end def test_22_Layers diff --git a/testdata/ruby/dbNetlist.rb b/testdata/ruby/dbNetlist.rb index aaf5e9cad..fa0b859e8 100644 --- a/testdata/ruby/dbNetlist.rb +++ b/testdata/ruby/dbNetlist.rb @@ -111,9 +111,17 @@ class DBNetlist_TestClass < TestBase assert_equal(nl.circuits_by_name("X*").collect { |x| x.name }, [ "XYZ" ]) assert_equal(nl.circuits_by_name("x*").collect { |x| x.name }, []) + assert_equal(nl.circuits_by_name("X*", true).collect { |x| x.name }, [ "XYZ" ]) + assert_equal(nl.circuits_by_name("x*", true).collect { |x| x.name }, []) + assert_equal(nl.circuits_by_name("X*", false).collect { |x| x.name }, [ "XYZ" ]) + assert_equal(nl.circuits_by_name("x*", false).collect { |x| x.name }, [ "XYZ" ]) nl.case_sensitive = false assert_equal(nl.circuits_by_name("X*").collect { |x| x.name }, [ "XYZ" ]) assert_equal(nl.circuits_by_name("x*").collect { |x| x.name }, [ "XYZ" ]) + assert_equal(nl.circuits_by_name("X*", true).collect { |x| x.name }, [ "XYZ" ]) + assert_equal(nl.circuits_by_name("x*", true).collect { |x| x.name }, []) + assert_equal(nl.circuits_by_name("X*", false).collect { |x| x.name }, [ "XYZ" ]) + assert_equal(nl.circuits_by_name("x*", false).collect { |x| x.name }, [ "XYZ" ]) nl.case_sensitive = true assert_equal(nl.circuits_by_name("???").collect { |x| x.name }, [ "XYZ", "UVW" ]) assert_equal(nl.circuits_by_name("*").collect { |x| x.name }, [ "XYZ", "UVW" ]) @@ -719,7 +727,31 @@ class DBNetlist_TestClass < TestBase assert_equal(c.net_by_name("net1").inspect, "nil") nl.case_sensitive = false assert_equal(c.net_by_name("net1").name, "NET1") + assert_equal(c.nets_by_name("NET*").collect(&:name), ["NET1"]) + assert_equal(c.nets_by_name("net*").collect(&:name), ["NET1"]) + assert_equal(c.nets_by_name("NET*", true).collect(&:name), ["NET1"]) + assert_equal(c.nets_by_name("net*", true).collect(&:name), []) + assert_equal(c.nets_by_name("NET*", false).collect(&:name), ["NET1"]) + assert_equal(c.nets_by_name("net*", false).collect(&:name), ["NET1"]) + assert_equal(nl.nets_by_name("NET*").collect(&:name), ["NET1"]) + assert_equal(nl.nets_by_name("net*").collect(&:name), ["NET1"]) + assert_equal(nl.nets_by_name("NET*", true).collect(&:name), ["NET1"]) + assert_equal(nl.nets_by_name("net*", true).collect(&:name), []) + assert_equal(nl.nets_by_name("NET*", false).collect(&:name), ["NET1"]) + assert_equal(nl.nets_by_name("net*", false).collect(&:name), ["NET1"]) nl.case_sensitive = true + assert_equal(c.nets_by_name("NET*").collect(&:name), ["NET1"]) + assert_equal(c.nets_by_name("net*").collect(&:name), []) + assert_equal(c.nets_by_name("NET*", true).collect(&:name), ["NET1"]) + assert_equal(c.nets_by_name("net*", true).collect(&:name), []) + assert_equal(c.nets_by_name("NET*", false).collect(&:name), ["NET1"]) + assert_equal(c.nets_by_name("net*", false).collect(&:name), ["NET1"]) + assert_equal(nl.nets_by_name("NET*").collect(&:name), ["NET1"]) + assert_equal(nl.nets_by_name("net*").collect(&:name), []) + assert_equal(nl.nets_by_name("NET*", true).collect(&:name), ["NET1"]) + assert_equal(nl.nets_by_name("net*", true).collect(&:name), []) + assert_equal(nl.nets_by_name("NET*", false).collect(&:name), ["NET1"]) + assert_equal(nl.nets_by_name("net*", false).collect(&:name), ["NET1"]) net2 = c.create_net net2.name = "NET2" diff --git a/testdata/ruby/dbNetlistCrossReference.rb b/testdata/ruby/dbNetlistCrossReference.rb index 7da53e295..22de8dd35 100644 --- a/testdata/ruby/dbNetlistCrossReference.rb +++ b/testdata/ruby/dbNetlistCrossReference.rb @@ -81,12 +81,36 @@ class DBNetlistCrossReference_TestClass < TestBase end assert_equal(info.join(","), "/1:Match,BULK/6:Match,IN/2:Match,OUT/3:Match,VDD/5:Match,VSS/4:Match") + info = [] + xref.each_pin_pair(cp_inv2.first) do |p| + info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s + end + assert_equal(info.join(","), "/1:Match,BULK/6:Match,IN/2:Match,OUT/3:Match,VDD/5:Match,VSS/4:Match") + + info = [] + xref.each_pin_pair(cp_inv2.second) do |p| + info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s + end + assert_equal(info.join(","), "/1:Match,BULK/6:Match,IN/2:Match,OUT/3:Match,VDD/5:Match,VSS/4:Match") + info = [] xref.each_net_pair(cp_inv2) do |p| info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s end assert_equal(info.join(","), "/1:Match,BULK/6:Match,IN/2:Match,OUT/3:Match,VDD/5:Match,VSS/4:Match") + info = [] + xref.each_net_pair(cp_inv2.first) do |p| + info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s + end + assert_equal(info.join(","), "/1:Match,BULK/6:Match,IN/2:Match,OUT/3:Match,VDD/5:Match,VSS/4:Match") + + info = [] + xref.each_net_pair(cp_inv2.second) do |p| + info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s + end + assert_equal(info.join(","), "/1:Match,BULK/6:Match,IN/2:Match,OUT/3:Match,VDD/5:Match,VSS/4:Match") + netp_bulk = nil xref.each_net_pair(cp_inv2) do |p| if p.first.name == "BULK" @@ -100,30 +124,90 @@ class DBNetlistCrossReference_TestClass < TestBase end assert_equal(info.join(","), "B/B") + info = [] + xref.each_net_terminal_pair(netp_bulk.first) do |p| + info << [ p.first, p.second ].collect { |s| s ? s.terminal_def.name : "(nil)" }.join("/") + end + assert_equal(info.join(","), "B/B") + + info = [] + xref.each_net_terminal_pair(netp_bulk.second) do |p| + info << [ p.first, p.second ].collect { |s| s ? s.terminal_def.name : "(nil)" }.join("/") + end + assert_equal(info.join(","), "B/B") + info = [] xref.each_net_pin_pair(netp_bulk) do |p| info << [ p.first, p.second ].collect { |s| s ? s.pin.name : "(nil)" }.join("/") end assert_equal(info.join(","), "BULK/6") + info = [] + xref.each_net_pin_pair(netp_bulk.first) do |p| + info << [ p.first, p.second ].collect { |s| s ? s.pin.name : "(nil)" }.join("/") + end + assert_equal(info.join(","), "BULK/6") + + info = [] + xref.each_net_pin_pair(netp_bulk.second) do |p| + info << [ p.first, p.second ].collect { |s| s ? s.pin.name : "(nil)" }.join("/") + end + assert_equal(info.join(","), "BULK/6") + info = [] xref.each_net_subcircuit_pin_pair(netp_bulk) do |p| info << [ p.first, p.second ].collect { |s| s ? s.pin.name : "(nil)" }.join("/") end assert_equal(info.join(","), "") + info = [] + xref.each_net_subcircuit_pin_pair(netp_bulk.first) do |p| + info << [ p.first, p.second ].collect { |s| s ? s.pin.name : "(nil)" }.join("/") + end + assert_equal(info.join(","), "") + + info = [] + xref.each_net_subcircuit_pin_pair(netp_bulk.second) do |p| + info << [ p.first, p.second ].collect { |s| s ? s.pin.name : "(nil)" }.join("/") + end + assert_equal(info.join(","), "") + info = [] xref.each_device_pair(cp_inv2) do |p| info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s end assert_equal(info.join(","), "/$1:Match,/$3:Match") + info = [] + xref.each_device_pair(cp_inv2.first) do |p| + info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s + end + assert_equal(info.join(","), "/$1:Match,/$3:Match") + + info = [] + xref.each_device_pair(cp_inv2.second) do |p| + info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s + end + assert_equal(info.join(","), "/$1:Match,/$3:Match") + info = [] xref.each_subcircuit_pair(cp_inv2) do |p| info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s end assert_equal(info.join(","), "") + info = [] + xref.each_subcircuit_pair(cp_inv2.first) do |p| + info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s + end + assert_equal(info.join(","), "") + + info = [] + xref.each_subcircuit_pair(cp_inv2.second) do |p| + info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s + end + assert_equal(info.join(","), "") + cp_inv2pair = nil xref.each_circuit_pair do |cp| if cp.first && cp.first.name == "INV2PAIR" diff --git a/testdata/ruby/dbPolygonNeighborhood.rb b/testdata/ruby/dbPolygonNeighborhood.rb index e5d5aaf67..0bdfaf33f 100644 --- a/testdata/ruby/dbPolygonNeighborhood.rb +++ b/testdata/ruby/dbPolygonNeighborhood.rb @@ -65,6 +65,29 @@ class PMyVisitor2 < RBA::PolygonNeighborhoodVisitor end +class PMyVisitor4Deep < RBA::PolygonNeighborhoodVisitor + + def initialize + self.result_type = RBA::CompoundRegionOperationNode::ResultType::Region + self.variant_type = RBA::VariantType::Orientation + end + + def neighbors(layout, cell, polygon, neighborhood) + prim_box = polygon.bbox + neighborhood.each do |inp, others| + others.each do |other| + other_box = other.bbox + top_part = prim_box.top - other_box.top + bot_part = other_box.bottom - prim_box.bottom + if top_part > 0 && bot_part > 0 && top_part > 2 * bot_part + output(polygon) + end + end + end + end + +end + class DBPolygonNeighborhood_TestClass < TestBase # basic events @@ -136,6 +159,46 @@ class DBPolygonNeighborhood_TestClass < TestBase end + # full example with deep mode, variant building + def test_3 + + ly = RBA::Layout::new + l1 = ly.layer(1, 0) + l2 = ly.layer(2, 0) + + top = ly.create_cell("TOP") + child = ly.create_cell("CHILD") + + child.shapes(l1).insert(RBA::Box::new(-5000, -100, 5000, 100)) + child.shapes(l2).insert(RBA::Box::new(-1100, -3000, -900, 1000)) + child.shapes(l2).insert(RBA::Box::new(-100, -2000, 100, 2000)) + child.shapes(l2).insert(RBA::Box::new(900, -1000, 1100, 3000)) + + top.insert(RBA::CellInstArray::new(child, RBA::Trans::new(RBA::Vector::new(0, -5000)))) + top.insert(RBA::CellInstArray::new(child, RBA::Trans::new(RBA::Trans::M0, RBA::Vector::new(0, 5000)))) + top.insert(RBA::CellInstArray::new(child, RBA::Trans::new(RBA::Trans::R90, RBA::Vector::new(-10000, 0)))) + + dss = RBA::DeepShapeStore::new + # Ruby does not like to be called from threads, so none given here: + dss.threads = 0 + l1r = RBA::Region::new(RBA::RecursiveShapeIterator::new(ly, top, l1), dss) + l2r = RBA::Region::new(RBA::RecursiveShapeIterator::new(ly, top, l2), dss) + + overlap = l1r & l2r + puts overlap.to_s + + children = [ + RBA::CompoundRegionOperationNode::new_secondary(overlap) + ] + visitor = PMyVisitor4Deep::new + node = RBA::CompoundRegionOperationNode::new_polygon_neighborhood(children, visitor, -1) + + errors = l2r.complex_op(node) + + assert_equal(errors.to_s, "(900,-6000;900,-2000;1100,-2000;1100,-6000);(-1100,4000;-1100,8000;-900,8000;-900,4000)") + + end + end load("test_epilogue.rb")