mirror of https://github.com/KLayout/klayout.git
commit
45fdaf0a6d
|
|
@ -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 ()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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
|
||||
*
|
||||
|
|
|
|||
|
|
@ -302,7 +302,7 @@ CompoundTransformationReducer::is_translation_invariant () const
|
|||
|
||||
// ---------------------------------------------------------------------------------------------
|
||||
|
||||
CompoundRegionMultiInputOperationNode::CompoundRegionMultiInputOperationNode (const std::vector<CompoundRegionOperationNode *> &children)
|
||||
CompoundRegionMultiInputOperationNode::CompoundRegionMultiInputOperationNode (const std::vector<CompoundRegionOperationNode *> &children, bool no_init)
|
||||
{
|
||||
for (std::vector<CompoundRegionOperationNode *>::const_iterator c = children.begin (); c != children.end (); ++c) {
|
||||
(*c)->keep ();
|
||||
|
|
@ -362,6 +362,11 @@ CompoundRegionMultiInputOperationNode::init ()
|
|||
for (tl::shared_collection<CompoundRegionOperationNode>::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 ()
|
||||
|
|
|
|||
|
|
@ -453,7 +453,7 @@ class DB_PUBLIC CompoundRegionMultiInputOperationNode
|
|||
: public CompoundRegionOperationNode
|
||||
{
|
||||
public:
|
||||
CompoundRegionMultiInputOperationNode (const std::vector<CompoundRegionOperationNode *> &children);
|
||||
CompoundRegionMultiInputOperationNode (const std::vector<CompoundRegionOperationNode *> &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<CompoundRegionOperationNode> m_children;
|
||||
// maps child#,layer# to layer# of child:
|
||||
std::map<std::pair<unsigned int, unsigned int>, unsigned int> m_map_layer_to_child;
|
||||
std::vector<db::Region *> m_inputs;
|
||||
CompoundTransformationReducer m_vars;
|
||||
|
||||
void init ();
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -692,6 +692,8 @@ void std_writer_impl<Keys>::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;
|
||||
|
|
|
|||
|
|
@ -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<std::pair<const db::Net *, const db::Net *>, 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<const db::Net *, const db::Net *> &nets) const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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<const db::Net *, const db::Net *> &nets) const;
|
||||
|
||||
const db::Netlist *netlist_a () const
|
||||
|
|
|
|||
|
|
@ -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<db::PolygonWithProperties> *polygons) const
|
||||
PolygonNeighborhoodVisitor::connect_output (Layout * /*layout*/, std::unordered_set<db::PolygonWithProperties> *polygons, const db::ICplxTrans &trans) const
|
||||
{
|
||||
disconnect_outputs ();
|
||||
mp_polygons = polygons;
|
||||
m_trans = trans;
|
||||
}
|
||||
|
||||
void
|
||||
PolygonNeighborhoodVisitor::connect_output (db::Layout *layout, std::unordered_set<db::PolygonRefWithProperties> *polygons) const
|
||||
PolygonNeighborhoodVisitor::connect_output (db::Layout *layout, std::unordered_set<db::PolygonRefWithProperties> *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<db::EdgeWithProperties> *edges) const
|
||||
PolygonNeighborhoodVisitor::connect_output (db::Layout * /*layout*/, std::unordered_set<db::EdgeWithProperties> *edges, const db::ICplxTrans &trans) const
|
||||
{
|
||||
disconnect_outputs ();
|
||||
mp_edges = edges;
|
||||
m_trans = trans;
|
||||
}
|
||||
|
||||
void
|
||||
PolygonNeighborhoodVisitor::connect_output (Layout * /*layout*/, std::unordered_set<db::EdgePairWithProperties> *edge_pairs) const
|
||||
PolygonNeighborhoodVisitor::connect_output (Layout * /*layout*/, std::unordered_set<db::EdgePairWithProperties> *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<CompoundRegionOperationNode *> &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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,22 +58,22 @@ public:
|
|||
/**
|
||||
* @brief Configure the polygon output
|
||||
*/
|
||||
void connect_output (db::Layout * /*layout*/, std::unordered_set<db::PolygonWithProperties> *polygons) const;
|
||||
void connect_output (db::Layout * /*layout*/, std::unordered_set<db::PolygonWithProperties> *polygons, const db::ICplxTrans &trans) const;
|
||||
|
||||
/**
|
||||
* @brief Configure the polygon ref output
|
||||
*/
|
||||
void connect_output (db::Layout *layout, std::unordered_set<db::PolygonRefWithProperties> *polygons) const;
|
||||
void connect_output (db::Layout *layout, std::unordered_set<db::PolygonRefWithProperties> *polygons, const db::ICplxTrans &trans) const;
|
||||
|
||||
/**
|
||||
* @brief Configure the edge output
|
||||
*/
|
||||
void connect_output (db::Layout * /*layout*/, std::unordered_set<db::EdgeWithProperties> *edges) const;
|
||||
void connect_output (db::Layout * /*layout*/, std::unordered_set<db::EdgeWithProperties> *edges, const db::ICplxTrans &trans) const;
|
||||
|
||||
/**
|
||||
* @brief Configure the edge pair output
|
||||
*/
|
||||
void connect_output (db::Layout * /*layout*/, std::unordered_set<db::EdgePairWithProperties> *edge_pairs) const;
|
||||
void connect_output (db::Layout * /*layout*/, std::unordered_set<db::EdgePairWithProperties> *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<db::PolygonWithProperties> *mp_polygons;
|
||||
mutable std::unordered_set<db::PolygonRefWithProperties> *mp_polygon_refs;
|
||||
mutable std::unordered_set<db::EdgeWithProperties> *mp_edges;
|
||||
mutable std::unordered_set<db::EdgePairWithProperties> *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<PolygonNeighborhoodVisitor> mp_visitor;
|
||||
std::unique_ptr<db::TransformationReducer> m_vars;
|
||||
|
||||
template <class T, class TR>
|
||||
void compute_local_impl (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions<T, T> & /*interactions*/, std::vector<std::unordered_set<TR> > & /*results*/, const db::LocalProcessorBase * /*proc*/) const;
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
#include "gsiDecl.h"
|
||||
#include "gsiDeclDbMetaInfo.h"
|
||||
#include "gsiEnums.h"
|
||||
|
||||
#include "gsiDeclDbHelpers.h"
|
||||
#include "dbLayout.h"
|
||||
|
|
@ -4655,5 +4656,39 @@ Class<db::DCellInstArray> decl_DCellInstArray ("db", "DCellInstArray",
|
|||
"This class has been introduced in version 0.25."
|
||||
);
|
||||
|
||||
gsi::Enum<db::ReducerType> 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."
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1118,6 +1118,14 @@ Class<db::LayoutToNetlist> 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."
|
||||
|
|
|
|||
|
|
@ -1488,7 +1488,7 @@ nets_non_const (const std::vector<const db::Net *> &nc)
|
|||
}
|
||||
|
||||
static std::vector<const db::Net *>
|
||||
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<const db::Net *> 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<db::Net *>
|
||||
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<const db::Net *>
|
||||
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<const db::Net *> 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<db::Net *>
|
||||
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<db::Circuit> decl_dbCircuit (decl_dbNetlistObject, "db", "Circuit",
|
||||
|
|
@ -1658,17 +1660,25 @@ Class<db::Circuit> 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<db::Circuit *>
|
||||
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<db::Circuit *> 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<const db::Circuit *>
|
||||
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<const db::Circuit *> 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<db::Netlist> 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::Circuit *(db::Netlist::*) ()> (&db::Netlist::top_circuit),
|
||||
"@brief Gets the top circuit.\n"
|
||||
|
|
@ -2126,12 +2158,6 @@ Class<db::Netlist> 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. "
|
||||
|
|
|
|||
|
|
@ -287,6 +287,19 @@ static pair_data_iterator<db::NetlistCrossReference::NetPairData, db::NetlistCro
|
|||
}
|
||||
}
|
||||
|
||||
static pair_data_iterator<db::NetlistCrossReference::NetPairData, db::NetlistCrossReference::PerCircuitData::net_pairs_const_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<db::NetlistCrossReference::NetPairData, db::NetlistCrossReference::PerCircuitData::net_pairs_const_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<db::NetlistCrossReference::DevicePairData, db::NetlistCrossReference::PerCircuitData::device_pairs_const_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<db::NetlistCrossReference::DevicePairData, db::Netlist
|
|||
}
|
||||
}
|
||||
|
||||
static pair_data_iterator<db::NetlistCrossReference::DevicePairData, db::NetlistCrossReference::PerCircuitData::device_pairs_const_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<db::NetlistCrossReference::DevicePairData, db::NetlistCrossReference::PerCircuitData::device_pairs_const_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<db::NetlistCrossReference::PinPairData, db::NetlistCrossReference::PerCircuitData::pin_pairs_const_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<db::NetlistCrossReference::PinPairData, db::NetlistCro
|
|||
}
|
||||
}
|
||||
|
||||
static pair_data_iterator<db::NetlistCrossReference::PinPairData, db::NetlistCrossReference::PerCircuitData::pin_pairs_const_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<db::NetlistCrossReference::PinPairData, db::NetlistCrossReference::PerCircuitData::pin_pairs_const_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<db::NetlistCrossReference::SubCircuitPairData, db::NetlistCrossReference::PerCircuitData::subcircuit_pairs_const_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<db::NetlistCrossReference::SubCircuitPairData, db::Net
|
|||
}
|
||||
}
|
||||
|
||||
static pair_data_iterator<db::NetlistCrossReference::SubCircuitPairData, db::NetlistCrossReference::PerCircuitData::subcircuit_pairs_const_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<db::NetlistCrossReference::SubCircuitPairData, db::NetlistCrossReference::PerCircuitData::subcircuit_pairs_const_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<std::pair<const db::NetTerminalRef *, const db::NetTerminalRef *>, 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<std::pair<const db::NetTerminalRef *, const db::NetTer
|
|||
}
|
||||
}
|
||||
|
||||
static pair_data_iterator<std::pair<const db::NetTerminalRef *, const db::NetTerminalRef *>, 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<std::pair<const db::NetTerminalRef *, const db::NetTerminalRef *>, 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<std::pair<const db::NetPinRef *, const db::NetPinRef *>, 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<std::pair<const db::NetPinRef *, const db::NetPinRef *
|
|||
}
|
||||
}
|
||||
|
||||
static pair_data_iterator<std::pair<const db::NetPinRef *, const db::NetPinRef *>, 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<std::pair<const db::NetPinRef *, const db::NetPinRef *>, 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<std::pair<const db::NetSubcircuitPinRef *, const db::NetSubcircuitPinRef *>, 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<std::pair<const db::NetSubcircuitPinRef *, const db::N
|
|||
}
|
||||
}
|
||||
|
||||
static pair_data_iterator<std::pair<const db::NetSubcircuitPinRef *, const db::NetSubcircuitPinRef *>, 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<std::pair<const db::NetSubcircuitPinRef *, const db::NetSubcircuitPinRef *>, 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<db::NetlistCrossReference> 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<db::NetlistCrossReference> 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. "
|
||||
|
|
|
|||
|
|
@ -109,6 +109,20 @@ Class<gsi::PolygonNeighborhoodVisitorImpl> 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"
|
||||
|
|
|
|||
|
|
@ -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|
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1975,17 +1975,17 @@ sprintf (const char *f, const std::vector <tl::Variant> &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);
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue