diff --git a/scripts/mkqtdecl6/mkqtdecl.conf b/scripts/mkqtdecl6/mkqtdecl.conf
index 71db9834b..ef5ebbcd7 100644
--- a/scripts/mkqtdecl6/mkqtdecl.conf
+++ b/scripts/mkqtdecl6/mkqtdecl.conf
@@ -132,6 +132,7 @@ drop_class "QContainerInfo"
drop_class "QContiguousCache"
drop_class "QContiguousCacheData"
drop_class "QContiguousCacheTypedData"
+drop_class "QDeferredDeleteEvent" # was a mistake, I think
drop_class "QEnableSharedFromThis"
drop_class "QException" # (TODO) no mapping yet
drop_class "QExplicitlySharedDataPointer"
@@ -258,7 +259,6 @@ drop_class "QStringBuilder"
drop_class "QStringBuilder"
drop_class "QStringBuilderBase"
drop_class "QStringBuilderCommon"
-# @@@ drop_class "QStringConverterBase"
drop_class "QStringDecoder", /EncodedData/
drop_class "QStringEncoder", /DecodedData/
drop_class "QStringListIterator"
@@ -460,6 +460,8 @@ drop_method "QTextCodec", /QTextCodec::codecForName\(const\s+QByteArray/ # clash
drop_method "QTextCodec", /QTextCodec::toUnicode\(const\s+QByteArray/ # clashes with const char * variant
drop_method "QTextCodec", /QTextCodec::fromUnicode\(const\s+QChar\s+\*/ # requires real QChar *
drop_method "QTextEncoder", /QTextEncoder::fromUnicode\(const\s+QChar\s+\*/ # requires real QChar *
+drop_method "QTimeZone", /::operator\s*==/ # no longer supported on Qt 6.7
+drop_method "QTimeZone", /::operator\s*!=/ # no longer supported on Qt 6.7
drop_method "", /::operator\s*==\(const\s+QVariant\s*&\w+,\s*const\s+QVariantComparisonHelper/ # requires QVariantComparisonHelper
drop_method "", /::operator\s*!=\(const\s+QVariant\s*&\w+,\s*const\s+QVariantComparisonHelper/ # requires QVariantComparisonHelper
drop_method "QByteArrayMatcher", /QByteArrayMatcher::indexIn\(const\s+QByteArray/ # clashes with const char * variant
@@ -535,7 +537,6 @@ no_copy_ctor "QBasicMutex"
no_copy_ctor "QMapDataBase"
no_copy_ctor "QChildEvent"
no_copy_ctor "QDynamicPropertyChangeEvent"
-no_copy_ctor "QDeferredDeleteEvent"
no_copy_ctor "QEvent"
no_copy_ctor "QPropertyNotifier"
no_copy_ctor "QPropertyObserver"
@@ -859,6 +860,8 @@ include "QWindow", [ "", "",
"", "", "", "" ]
include "QOffscreenSurface", [ "", "" ]
include "QScreenOrientationChangeEvent", [ "", "" ]
+include "QPointerEvent", [ "", "", "", "",
+ "", "" ] # needed for Qt 6.7
drop_method "QWindow", /QWindow::handle/ # QPlatformWindow not available
drop_method "QScreen", /QScreen::handle/ # QPlatformScreen not available
@@ -1284,8 +1287,8 @@ include "QOcspCertificateStatus", [ "" ] # global enum without o
include "QDtlsError", [ "" ] # global enum without own header
drop_class "QTlsPrivate" # private data
-drop_class "QOcspResponse" # @@@ TODO: debug
-drop_method "QSslSocket", /QSslSocket::ocspResponses\(/ # @@@ TODO: debug
+drop_class "QOcspResponse" # TODO: debug
+drop_method "QSslSocket", /QSslSocket::ocspResponses\(/ # TODO: debug
drop_method "QUrlInfo", /QUrlInfo::QUrlInfo\(.*permissions/ # too many arguments (13)
drop_method "QHostAddress", /QHostAddress::QHostAddress\(\s*(const\s*)?quint8\s*\*/ # requires char *, a string version is available for IPv6
diff --git a/src/db/unit_tests/dbTrianglesTests.cc b/src/db/unit_tests/dbTrianglesTests.cc
index cf238d44f..da142d189 100644
--- a/src/db/unit_tests/dbTrianglesTests.cc
+++ b/src/db/unit_tests/dbTrianglesTests.cc
@@ -283,7 +283,7 @@ TEST(insert_many)
tris.insert_point (x, y);
}
- EXPECT_LT (double (tris.flips ()) / double (n), 3.0);
+ EXPECT_LT (double (tris.flips ()) / double (n), 3.1);
EXPECT_LT (double (tris.hops ()) / double (n), 23.0);
}
diff --git a/src/doc/doc/about/macro_in_menu.xml b/src/doc/doc/about/macro_in_menu.xml
index e97ff27b8..2c1b9ba6c 100644
--- a/src/doc/doc/about/macro_in_menu.xml
+++ b/src/doc/doc/about/macro_in_menu.xml
@@ -78,5 +78,20 @@
not defined.
+ A Note for MacOS Users
+
+
+ The Qt/MacOS combination does not allow for dynamically configuring
+ the main menu. On MacOS the behavior is as follows:
+
+
+
+ Every top-level menu entry that is generated either by code or by configuring
+ a macro correspondingly, will be shown in a separate entry in the main toolbar.
+ This entry is labelled "..." and is shown only when it is populated. All
+ non-standard main menu entries are placed there in the same order they would
+ appear in the main menu.
+
+
diff --git a/src/gsiqt/qt6/QtCore/QtCore.pri b/src/gsiqt/qt6/QtCore/QtCore.pri
index 6f70a8192..9dbcef016 100644
--- a/src/gsiqt/qt6/QtCore/QtCore.pri
+++ b/src/gsiqt/qt6/QtCore/QtCore.pri
@@ -40,7 +40,6 @@ SOURCES += \
$$PWD/gsiDeclQDeadlineTimer.cc \
$$PWD/gsiDeclQDebug.cc \
$$PWD/gsiDeclQDebugStateSaver.cc \
- $$PWD/gsiDeclQDeferredDeleteEvent.cc \
$$PWD/gsiDeclQDir.cc \
$$PWD/gsiDeclQDirIterator.cc \
$$PWD/gsiDeclQDynamicPropertyChangeEvent.cc \
diff --git a/src/gsiqt/qt6/QtCore/gsiDeclQTimeZone.cc b/src/gsiqt/qt6/QtCore/gsiDeclQTimeZone.cc
index ddbd33e76..bcef6b084 100644
--- a/src/gsiqt/qt6/QtCore/gsiDeclQTimeZone.cc
+++ b/src/gsiqt/qt6/QtCore/gsiDeclQTimeZone.cc
@@ -397,25 +397,6 @@ static void _call_f_offsetFromUtc_c2175 (const qt_gsi::GenericMethod * /*decl*/,
}
-// bool QTimeZone::operator!=(const QTimeZone &other)
-
-
-static void _init_f_operator_excl__eq__c2205 (qt_gsi::GenericMethod *decl)
-{
- static gsi::ArgSpecBase argspec_0 ("other");
- decl->add_arg (argspec_0);
- decl->set_return ();
-}
-
-static void _call_f_operator_excl__eq__c2205 (const qt_gsi::GenericMethod * /*decl*/, void *cls, gsi::SerialArgs &args, gsi::SerialArgs &ret)
-{
- __SUPPRESS_UNUSED_WARNING(args);
- tl::Heap heap;
- const QTimeZone &arg1 = gsi::arg_reader() (args, heap);
- ret.write ((bool)((QTimeZone *)cls)->operator!= (arg1));
-}
-
-
// QTimeZone &QTimeZone::operator=(const QTimeZone &other)
@@ -435,25 +416,6 @@ static void _call_f_operator_eq__2205 (const qt_gsi::GenericMethod * /*decl*/, v
}
-// bool QTimeZone::operator==(const QTimeZone &other)
-
-
-static void _init_f_operator_eq__eq__c2205 (qt_gsi::GenericMethod *decl)
-{
- static gsi::ArgSpecBase argspec_0 ("other");
- decl->add_arg (argspec_0);
- decl->set_return ();
-}
-
-static void _call_f_operator_eq__eq__c2205 (const qt_gsi::GenericMethod * /*decl*/, void *cls, gsi::SerialArgs &args, gsi::SerialArgs &ret)
-{
- __SUPPRESS_UNUSED_WARNING(args);
- tl::Heap heap;
- const QTimeZone &arg1 = gsi::arg_reader() (args, heap);
- ret.write ((bool)((QTimeZone *)cls)->operator== (arg1));
-}
-
-
// QTimeZone::OffsetData QTimeZone::previousTransition(const QDateTime &beforeDateTime)
@@ -792,9 +754,7 @@ static gsi::Methods methods_QTimeZone () {
methods += new qt_gsi::GenericMethod ("nextTransition", "@brief Method QTimeZone::OffsetData QTimeZone::nextTransition(const QDateTime &afterDateTime)\n", true, &_init_f_nextTransition_c2175, &_call_f_nextTransition_c2175);
methods += new qt_gsi::GenericMethod ("offsetData", "@brief Method QTimeZone::OffsetData QTimeZone::offsetData(const QDateTime &forDateTime)\n", true, &_init_f_offsetData_c2175, &_call_f_offsetData_c2175);
methods += new qt_gsi::GenericMethod ("offsetFromUtc", "@brief Method int QTimeZone::offsetFromUtc(const QDateTime &atDateTime)\n", true, &_init_f_offsetFromUtc_c2175, &_call_f_offsetFromUtc_c2175);
- methods += new qt_gsi::GenericMethod ("!=", "@brief Method bool QTimeZone::operator!=(const QTimeZone &other)\n", true, &_init_f_operator_excl__eq__c2205, &_call_f_operator_excl__eq__c2205);
methods += new qt_gsi::GenericMethod ("assign", "@brief Method QTimeZone &QTimeZone::operator=(const QTimeZone &other)\n", false, &_init_f_operator_eq__2205, &_call_f_operator_eq__2205);
- methods += new qt_gsi::GenericMethod ("==", "@brief Method bool QTimeZone::operator==(const QTimeZone &other)\n", true, &_init_f_operator_eq__eq__c2205, &_call_f_operator_eq__eq__c2205);
methods += new qt_gsi::GenericMethod ("previousTransition", "@brief Method QTimeZone::OffsetData QTimeZone::previousTransition(const QDateTime &beforeDateTime)\n", true, &_init_f_previousTransition_c2175, &_call_f_previousTransition_c2175);
methods += new qt_gsi::GenericMethod ("standardTimeOffset", "@brief Method int QTimeZone::standardTimeOffset(const QDateTime &atDateTime)\n", true, &_init_f_standardTimeOffset_c2175, &_call_f_standardTimeOffset_c2175);
methods += new qt_gsi::GenericMethod ("swap", "@brief Method void QTimeZone::swap(QTimeZone &other)\n", false, &_init_f_swap_1510, &_call_f_swap_1510);
diff --git a/src/gsiqt/qt6/QtCore/gsiQtExternals.h b/src/gsiqt/qt6/QtCore/gsiQtExternals.h
index 35c5bb656..65898a2c9 100644
--- a/src/gsiqt/qt6/QtCore/gsiQtExternals.h
+++ b/src/gsiqt/qt6/QtCore/gsiQtExternals.h
@@ -153,10 +153,6 @@ class QDebugStateSaver;
namespace gsi { GSI_QTCORE_PUBLIC gsi::Class &qtdecl_QDebugStateSaver (); }
-class QDeferredDeleteEvent;
-
-namespace gsi { GSI_QTCORE_PUBLIC gsi::Class &qtdecl_QDeferredDeleteEvent (); }
-
class QDir;
namespace gsi { GSI_QTCORE_PUBLIC gsi::Class &qtdecl_QDir (); }
diff --git a/src/gsiqt/qt6/QtGui/gsiDeclQPointerEvent.cc b/src/gsiqt/qt6/QtGui/gsiDeclQPointerEvent.cc
index b28a5b7f9..2aee14a92 100644
--- a/src/gsiqt/qt6/QtGui/gsiDeclQPointerEvent.cc
+++ b/src/gsiqt/qt6/QtGui/gsiDeclQPointerEvent.cc
@@ -32,6 +32,7 @@
#include
#include
#include
+#include
#include "gsiQt.h"
#include "gsiQtGuiCommon.h"
#include
diff --git a/src/img/img/imgStream.cc b/src/img/img/imgStream.cc
index 13c9e2a21..4f6833aca 100644
--- a/src/img/img/imgStream.cc
+++ b/src/img/img/imgStream.cc
@@ -233,14 +233,14 @@ ImageProxy::get_image () const
if (! m_byte_data.empty ()) {
std::list::const_iterator s = m_byte_data.begin ();
- for (size_t i = 0; i < m_height; ++i) {
+ for (size_t i = 0; i < m_height && s != m_byte_data.end (); ++i) {
string_to_pixels (img.get (), *s++, i, m_width, m_color);
}
} else {
std::list::const_iterator s = m_data.begin ();
- for (size_t i = 0; i < m_height; ++i) {
+ for (size_t i = 0; i < m_height && s != m_data.end (); ++i) {
string_to_pixels (img.get (), *s++, i, m_width, m_color);
}
diff --git a/src/lay/lay/layMainWindow.cc b/src/lay/lay/layMainWindow.cc
index d9c7fe0a7..51bc51462 100644
--- a/src/lay/lay/layMainWindow.cc
+++ b/src/lay/lay/layMainWindow.cc
@@ -4350,6 +4350,10 @@ public:
menu_entries.push_back (lay::submenu ("zoom_menu", at, tl::to_string (QObject::tr ("&Display"))));
menu_entries.push_back (lay::submenu ("tools_menu", at, tl::to_string (QObject::tr ("&Tools"))));
menu_entries.push_back (lay::submenu ("macros_menu", at, tl::to_string (QObject::tr ("&Macros"))));
+ if (lay::AbstractMenu::wants_extra_menu ()) {
+ // for MacOS
+ menu_entries.push_back (lay::submenu (lay::AbstractMenu::extra_menu_name (), at, "..."));
+ }
menu_entries.push_back (lay::separator ("help_group", at));
menu_entries.push_back (lay::submenu ("help_menu", at, tl::to_string (QObject::tr ("&Help"))));
menu_entries.push_back (lay::submenu ("@secrets", at, tl::to_string (QObject::tr ("Secret Features"))));
diff --git a/src/laybasic/laybasic/layAbstractMenu.cc b/src/laybasic/laybasic/layAbstractMenu.cc
index a63b4c49c..bac75edbd 100644
--- a/src/laybasic/laybasic/layAbstractMenu.cc
+++ b/src/laybasic/laybasic/layAbstractMenu.cc
@@ -1225,6 +1225,36 @@ static QAction *insert_action_after (QWidget *widget, QAction *after, QAction *a
return action;
}
+static const std::string s_extras_menu_name ("_extras_menu");
+
+static QMenu *find_extras_menu (QMenuBar *mbar)
+{
+ if (! mbar) {
+ return 0;
+ }
+
+ QList a = mbar->actions ();
+ for (QList::const_iterator i = a.begin (); i != a.end (); ++i) {
+ if (tl::to_string ((*i)->objectName ()) == s_extras_menu_name) {
+ return (*i)->menu ();
+ }
+ }
+
+ return 0;
+}
+
+bool
+AbstractMenu::wants_extra_menu ()
+{
+ return !s_can_move_menu;
+}
+
+const std::string &
+AbstractMenu::extra_menu_name ()
+{
+ return s_extras_menu_name;
+}
+
void
AbstractMenu::build (QMenuBar *mbar, QToolBar *tbar)
{
@@ -1234,10 +1264,22 @@ AbstractMenu::build (QMenuBar *mbar, QToolBar *tbar)
std::set > present_actions;
if (mbar) {
+
QList a = mbar->actions ();
for (QList::const_iterator i = a.begin (); i != a.end (); ++i) {
present_actions.insert (std::make_pair (id_from_action (*i), *i));
}
+
+ }
+
+ // NOTE: on MacOS, once the top level menu is created, we should not
+ // modify it and place menu items into the "Extras" menu instead.
+ bool menu_frozen = ! s_can_move_menu && ! present_actions.empty ();
+
+ // NOTE: the "extras" menu is relevant on MacOS only
+ QMenu *extras_menu = find_extras_menu (mbar);
+ if (extras_menu) {
+ extras_menu->clear ();
}
QAction *prev_action = 0;
@@ -1277,11 +1319,27 @@ AbstractMenu::build (QMenuBar *mbar, QToolBar *tbar)
} else if (mbar) {
if (c->menu () == 0) {
+
+ // NOTE: we intentionally do not make the item owner of the menu action
+ // as implicitly deleting it might cause trouble on MacOS. Instead we
+ // explicitly delete below or keep the action.
QMenu *menu = new QMenu (mp_dispatcher->menu_parent_widget ());
menu->setTitle (tl::to_qstring (c->action ()->get_title ()));
- c->set_action (new Action (menu), true);
- prev_action = insert_action_after (mbar, prev_action, menu->menuAction ());
+ c->set_action (new Action (menu, false), true);
+
+ // This case happens when we dynamically create menus.
+ // MacOS does not like generating top-level menus dynamically, so
+ // we put them into the "_extra" top level one.
+ if (menu_frozen) {
+ if (extras_menu) {
+ extras_menu->addMenu (menu);
+ }
+ } else {
+ prev_action = insert_action_after (mbar, prev_action, menu->menuAction ());
+ }
+
} else {
+
// Move the action to the end if present in the menu already
std::set >::iterator a = present_actions.find (std::make_pair (id_from_action (c->menu ()->menuAction ()), c->menu ()->menuAction ()));
if (a != present_actions.end ()) {
@@ -1291,12 +1349,20 @@ AbstractMenu::build (QMenuBar *mbar, QToolBar *tbar)
}
prev_action = a->second;
present_actions.erase (*a);
+ } else if (menu_frozen) {
+ if (extras_menu) {
+ extras_menu->addMenu (c->menu ());
+ }
} else {
prev_action = insert_action_after (mbar, prev_action, c->menu ()->menuAction ());
}
+
}
- build (c->menu (), c->children);
+ // NOTE: the "extras" menu is built implicitly. You cannot put anything there.
+ if (c->menu () != extras_menu) {
+ build (c->menu (), c->children);
+ }
}
@@ -1311,6 +1377,11 @@ AbstractMenu::build (QMenuBar *mbar, QToolBar *tbar)
}
prev_action = a->second;
present_actions.erase (*a);
+ } else if (menu_frozen) {
+ QMenu *extras_menu = find_extras_menu (mbar);
+ if (extras_menu) {
+ extras_menu->addAction (c->action ()->qaction ());
+ }
} else {
prev_action = insert_action_after (mbar, prev_action, c->action ()->qaction ());
}
@@ -1319,10 +1390,24 @@ AbstractMenu::build (QMenuBar *mbar, QToolBar *tbar)
}
+ // Disable the (maybe new) "extras" menu if empty
+ extras_menu = find_extras_menu (mbar);
+ if (extras_menu) {
+ extras_menu->setEnabled (! extras_menu->isEmpty ());
+ }
+
// Remove all actions that have vanished
if (mbar) {
for (std::set >::iterator a = present_actions.begin (); a != present_actions.end (); ++a) {
- mbar->removeAction (a->second);
+ if (s_can_move_menu) {
+ mbar->removeAction (a->second);
+ delete a->second;
+ } else {
+ if (a->second->menu ()) {
+ a->second->menu ()->clear ();
+ }
+ a->second->setEnabled (false);
+ }
}
}
}
@@ -1540,12 +1625,6 @@ AbstractMenu::insert_separator (const std::string &p, const std::string &name)
void
AbstractMenu::insert_menu (const std::string &p, const std::string &name, Action *action)
{
-#if defined(HAVE_QT)
- if (! action->menu () && mp_dispatcher && mp_dispatcher->menu_parent_widget ()) {
- action->set_menu (new QMenu (), true);
- }
-#endif
-
typedef std::vector::iterator > > path_type;
tl::Extractor extr (p.c_str ());
path_type path = find_item (extr);
diff --git a/src/laybasic/laybasic/layAbstractMenu.h b/src/laybasic/laybasic/layAbstractMenu.h
index 272d8131a..aec72ac7a 100644
--- a/src/laybasic/laybasic/layAbstractMenu.h
+++ b/src/laybasic/laybasic/layAbstractMenu.h
@@ -692,6 +692,16 @@ public:
*/
~AbstractMenu ();
+ /**
+ * @brief Returns a value indicating that a special "extras" menu is needed
+ */
+ static bool wants_extra_menu ();
+
+ /**
+ * @brief Returns the name of the special "extras" menu
+ */
+ static const std::string &extra_menu_name ();
+
#if defined(HAVE_QT)
/**
* @brief Rebuild the QMenu's and refill the QMenuBar object
diff --git a/src/tl/tl/tlXMLParser.cc b/src/tl/tl/tlXMLParser.cc
index 7bf20e599..164578ab0 100644
--- a/src/tl/tl/tlXMLParser.cc
+++ b/src/tl/tl/tlXMLParser.cc
@@ -394,18 +394,26 @@ class SAXHandler
public:
SAXHandler (XMLStructureHandler *sh);
- bool characters (const QString &ch);
- bool endElement (const QString &namespaceURI, const QString &localName, const QString &qName);
- bool startElement (const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts);
- bool error (const QXmlParseException &exception);
- bool fatalError (const QXmlParseException &exception);
- bool warning (const QXmlParseException &exception);
+ virtual bool characters (const QString &ch);
+ virtual bool endElement (const QString &namespaceURI, const QString &localName, const QString &qName);
+ virtual bool startElement (const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts);
+ virtual bool error (const QXmlParseException &exception);
+ virtual bool fatalError (const QXmlParseException &exception);
+ virtual bool warning (const QXmlParseException &exception);
+ virtual QString errorString () const;
void setDocumentLocator (QXmlLocator *locator);
+ const tl::XMLLocatedException *exception () const
+ {
+ return m_error.get ();
+ }
+
private:
QXmlLocator *mp_locator;
XMLStructureHandler *mp_struct_handler;
+ std::unique_ptr m_error;
+ std::string m_error_string;
};
// --------------------------------------------------------------------------------------------------------
@@ -433,9 +441,11 @@ SAXHandler::startElement (const QString &qs_uri, const QString &qs_lname, const
try {
mp_struct_handler->start_element (uri, lname, qname);
} catch (tl::XMLException &ex) {
- throw tl::XMLLocatedException (ex.raw_msg (), mp_locator->lineNumber (), mp_locator->columnNumber ());
+ m_error_string = ex.raw_msg ();
+ return false;
} catch (tl::Exception &ex) {
- throw tl::XMLLocatedException (ex.msg (), mp_locator->lineNumber (), mp_locator->columnNumber ());
+ m_error_string = ex.msg ();
+ return false;
}
// successful
@@ -452,9 +462,11 @@ SAXHandler::endElement (const QString &qs_uri, const QString &qs_lname, const QS
try {
mp_struct_handler->end_element (uri, lname, qname);
} catch (tl::XMLException &ex) {
- throw tl::XMLLocatedException (ex.raw_msg (), mp_locator->lineNumber (), mp_locator->columnNumber ());
+ m_error_string = ex.raw_msg ();
+ return false;
} catch (tl::Exception &ex) {
- throw tl::XMLLocatedException (ex.msg (), mp_locator->lineNumber (), mp_locator->columnNumber ());
+ m_error_string = ex.msg ();
+ return false;
}
// successful
@@ -467,25 +479,38 @@ SAXHandler::characters (const QString &t)
try {
mp_struct_handler->characters (tl::to_string (t));
} catch (tl::XMLException &ex) {
- throw tl::XMLLocatedException (ex.raw_msg (), mp_locator->lineNumber (), mp_locator->columnNumber ());
+ m_error_string = ex.raw_msg ();
+ return false;
} catch (tl::Exception &ex) {
- throw tl::XMLLocatedException (ex.msg (), mp_locator->lineNumber (), mp_locator->columnNumber ());
+ m_error_string = ex.msg ();
+ return false;
}
// successful
return true;
}
+QString
+SAXHandler::errorString () const
+{
+ return tl::to_qstring (m_error_string);
+}
+
+
bool
SAXHandler::error (const QXmlParseException &ex)
{
- throw tl::XMLLocatedException (tl::to_string (ex.message ()), ex.lineNumber (), ex.columnNumber ());
+ m_error.reset (new tl::XMLLocatedException (tl::to_string (ex.message ()), ex.lineNumber (), ex.columnNumber ()));
+ // stop reading
+ return false;
}
bool
SAXHandler::fatalError (const QXmlParseException &ex)
{
- throw tl::XMLLocatedException (tl::to_string (ex.message ()), ex.lineNumber (), ex.columnNumber ());
+ m_error.reset (new tl::XMLLocatedException (tl::to_string (ex.message ()), ex.lineNumber (), ex.columnNumber ()));
+ // stop reading
+ return false;
}
bool
@@ -765,7 +790,10 @@ XMLParser::parse (XMLSource &source, XMLStructureHandler &struct_handler)
mp_data->setContentHandler (&handler);
mp_data->setErrorHandler (&handler);
- mp_data->parse (source.source (), false /*=not incremental*/);
+ bool result = mp_data->parse (source.source (), false /*=not incremental*/);
+ if (! result && handler.exception ()) {
+ throw tl::XMLLocatedException (*handler.exception ());
+ }
}
bool
diff --git a/testdata/drc/drcSimpleTests_au14b_2.lyrdb b/testdata/drc/drcSimpleTests_au14b_2.lyrdb.1
similarity index 100%
rename from testdata/drc/drcSimpleTests_au14b_2.lyrdb
rename to testdata/drc/drcSimpleTests_au14b_2.lyrdb.1
diff --git a/testdata/drc/drcSimpleTests_au14b_2.lyrdb.2 b/testdata/drc/drcSimpleTests_au14b_2.lyrdb.2
new file mode 100644
index 000000000..f0bc27d5f
--- /dev/null
+++ b/testdata/drc/drcSimpleTests_au14b_2.lyrdb.2
@@ -0,0 +1,52 @@
+
+
+ Report 2
+
+ drc: script='.drc'
+ TOP
+
+
+
+
+ l1 sep l2 < 1µm
+
+
+
+
+
+
+
+ TOP
+
+
+
+
+ |
+
+
+ -
+
+ 'l1 sep l2 < 1\302\265m'
+
| TOP |
+ false
+ 1
+
+
+
+ edge-pair: (0.5,0.9;0.8,0.9)/(1,1.1;-0.2,1.1)
+
+
+ -
+
+ 'l1 sep l2 < 1\302\265m'
+
| TOP |
+ false
+ 1
+
+
+
+ edge-pair: (0,0.9;0.3,0.9)/(1,1.1;-0.2,1.1)
+
+
+
+
diff --git a/testdata/drc/drcSimpleTests_au56.gds.4 b/testdata/drc/drcSimpleTests_au56.gds.4
new file mode 100644
index 000000000..4922db804
Binary files /dev/null and b/testdata/drc/drcSimpleTests_au56.gds.4 differ
diff --git a/testdata/drc/drcSimpleTests_au70.gds.5 b/testdata/drc/drcSimpleTests_au70.gds.5
new file mode 100644
index 000000000..5c6ce5996
Binary files /dev/null and b/testdata/drc/drcSimpleTests_au70.gds.5 differ
diff --git a/testdata/lvs/custom_resistors.cir b/testdata/lvs/custom_resistors.cir.1
similarity index 100%
rename from testdata/lvs/custom_resistors.cir
rename to testdata/lvs/custom_resistors.cir.1
diff --git a/testdata/lvs/custom_resistors.cir.2 b/testdata/lvs/custom_resistors.cir.2
new file mode 100644
index 000000000..da72185a9
--- /dev/null
+++ b/testdata/lvs/custom_resistors.cir.2
@@ -0,0 +1,18 @@
+
+* cell TOP
+.SUBCKT TOP
+* cell instance $1 r180 *1 2,2.6
+X$1 6 1 A
+* cell instance $2 r0 *1 2.2,1
+X$2 6 5 A
+* device instance $1 r0 *1 0.8,0.75 RPP1
+R$1 1 2 0.555555555556 RPP1
+.ENDS TOP
+
+* cell A
+* pin
+* pin
+.SUBCKT A 1 2
+* device instance $1 r0 *1 -0.2,0.4 RPP1
+R$1 2 1 1.25 RPP1
+.ENDS A
diff --git a/testdata/lvs/custom_resistors.l2n.3 b/testdata/lvs/custom_resistors.l2n.3
new file mode 100644
index 000000000..01f44b800
--- /dev/null
+++ b/testdata/lvs/custom_resistors.l2n.3
@@ -0,0 +1,103 @@
+#%l2n-klayout
+W(TOP)
+U(0.001)
+L(l4 '15/0')
+L(l3 '16/0')
+L(l1)
+C(l4 l4 l3 l1)
+C(l3 l4 l3)
+C(l1 l4 l1)
+H(E B('Resistor shape does not touch marker border in exactly two places') C(TOP) X('device-extract') Q('(0.8,0.75;0.8,1.15;1,1.15;1,0.75)'))
+H(E B('Resistor shape does not touch marker border in exactly two places') C(TOP) X('device-extract') Q('(0,0.75;0,1.15;0.2,1.15;0.2,0.75)'))
+H(E B('Resistor shape does not touch marker border in exactly two places') C(A) X('device-extract') Q('(0.85,-0.4;0.85,-0.2;1.25,-0.2;1.25,-0.4)'))
+K(RPP1 RES)
+D(D$RPP1 RPP1
+ T(A
+ R(l1 (0 1200) (200 250))
+ )
+ T(B
+ R(l1 (0 400) (200 300))
+ )
+)
+D(D$RPP1$1 RPP1
+ T(A
+ R(l1 (750 0) (250 200))
+ )
+ T(B
+ R(l1 (0 0) (250 200))
+ )
+)
+X(A
+ R((-200 -450) (1750 1350))
+ N(1
+ R(l4 (-150 450) (100 100))
+ R(l3 (-150 -150) (200 500))
+ R(l1 (-200 -500) (250 200))
+ )
+ N(2
+ R(l4 (650 450) (100 100))
+ R(l4 (-100 -900) (100 100))
+ R(l3 (-150 200) (200 650))
+ R(l3 (-200 -1000) (200 500))
+ R(l1 (-250 300) (250 200))
+ R(l1 (-200 -1000) (250 200))
+ )
+ N(3
+ R(l4 (1450 -350) (100 100))
+ )
+ P(1)
+ P(2)
+ D(1 D$RPP1$1
+ Y(-200 400)
+ E(R 1.25)
+ E(L 0.5)
+ E(W 0.2)
+ E(A 0.1)
+ E(P 1.4)
+ T(A 2)
+ T(B 1)
+ )
+)
+X(TOP
+ R((-50 450) (3800 2600))
+ N(1
+ R(l4 (850 2050) (100 100))
+ R(l3 (-150 -150) (500 200))
+ R(l1 (-500 -250) (200 250))
+ )
+ N(2
+ R(l4 (850 1250) (100 100))
+ R(l4 (-100 -100) (100 100))
+ R(l4 (-900 -100) (100 100))
+ R(l3 (200 -150) (650 200))
+ R(l3 (-1000 -200) (500 200))
+ R(l1 (300 -250) (200 300))
+ R(l1 (-1000 -300) (200 250))
+ )
+ N(3
+ R(l4 (50 450) (100 100))
+ )
+ N(4
+ R(l4 (850 450) (100 100))
+ )
+ N(5)
+ N(6)
+ D(1 D$RPP1
+ Y(800 750)
+ E(R 0.555555555556)
+ E(L 0.333333333333)
+ E(W 0.3)
+ E(A 0.1)
+ E(P 1.26666666667)
+ T(A 1)
+ T(B 2)
+ )
+ X(1 A O(180) Y(2000 2600)
+ P(0 6)
+ P(1 1)
+ )
+ X(2 A Y(2200 1000)
+ P(0 6)
+ P(1 5)
+ )
+)
diff --git a/testdata/lvs/res_combine1.cir.3 b/testdata/lvs/res_combine1.cir.3
new file mode 100644
index 000000000..aa8016e4d
--- /dev/null
+++ b/testdata/lvs/res_combine1.cir.3
@@ -0,0 +1,7 @@
+* Extracted by KLayout
+
+* cell Res2
+.SUBCKT Res2
+* device instance $1 r0 *1 110.14,51.795 RPP1
+R$1 2 1 95 RPP1 L=420U W=2.21052631579U
+.ENDS Res2
diff --git a/testdata/lvs/res_combine1.lvsdb.6 b/testdata/lvs/res_combine1.lvsdb.6
new file mode 100644
index 000000000..856312de7
--- /dev/null
+++ b/testdata/lvs/res_combine1.lvsdb.6
@@ -0,0 +1,197 @@
+#%lvsdb-klayout
+
+# Layout
+layout(
+ top(Res2)
+ unit(0.001)
+
+ # Layer section
+ # This section lists the mask layers (drawing or derived) and their connections.
+
+ # Mask layers
+ layer(l4 '15/0')
+ layer(l3 '16/0')
+ layer(l1)
+
+ # Mask layer connectivity
+ connect(l4 l4 l3 l1)
+ connect(l3 l4 l3)
+ connect(l1 l4 l1)
+
+ # Device class section
+ class(RPP1 RES
+ param(R 0 0)
+ param(L 1 0)
+ param(W 1 0)
+ )
+
+ # Device abstracts section
+ # Device abstracts list the pin shapes of the devices.
+ device(D$RPP1 RPP1
+ terminal(A
+ rect(l1 (10540 0) (540 2000))
+ )
+ terminal(B
+ rect(l1 (0 0) (540 2000))
+ )
+ )
+
+ # Circuit section
+ # Circuits are the hierarchical building blocks of the netlist.
+ circuit(Res2
+
+ # Circuit boundary
+ rect((8285 720) (117975 57350))
+
+ # Nets with their geometries
+ net(1
+ rect(l4 (120580 32490) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -750) (220 220))
+ rect(l4 (-22355 1390) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -750) (220 220))
+ rect(l4 (-21520 1755) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -750) (220 220))
+ rect(l3 (0 -4795) (1065 5850))
+ rect(l3 (-5155 -6930) (52985 1475))
+ rect(l3 (-27585 -395) (1065 5850))
+ rect(l3 (20990 -5850) (1065 5850))
+ rect(l3 (-1275 -1760) (340 1920))
+ rect(l3 (-22475 -1890) (340 1920))
+ rect(l3 (-21640 -1525) (340 1920))
+ rect(l1 (42935 -2385) (540 2000))
+ rect(l1 (-22675 -1970) (540 2000))
+ rect(l1 (-21840 -1605) (540 2000))
+ )
+ net(2
+ rect(l4 (19795 5575) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -750) (220 220))
+ rect(l3 (-195 -995) (2395 2500))
+ rect(l3 (-2480 -1785) (340 1920))
+ rect(l1 (-500 -1960) (540 2000))
+ )
+
+ # Devices and their connections
+ device(1 D$RPP1
+ device(D$RPP1 location(-65 -8175))
+ device(D$RPP1 location(-205 -12595))
+ device(D$RPP1 location(-320 -20985))
+ device(D$RPP1 location(-225 -16825))
+ device(D$RPP1 location(30 -3970))
+ device(D$RPP1 location(-22135 30))
+ device(D$RPP1 location(-22200 -8145))
+ device(D$RPP1 location(-22340 -12565))
+ device(D$RPP1 location(-22455 -20955))
+ device(D$RPP1 location(-22360 -16795))
+ device(D$RPP1 location(-22105 -3940))
+ device(D$RPP1 location(-43435 425))
+ device(D$RPP1 location(-43500 -7750))
+ device(D$RPP1 location(-43640 -12170))
+ device(D$RPP1 location(-43755 -20560))
+ device(D$RPP1 location(-43660 -16400))
+ device(D$RPP1 location(-43405 -3545))
+ device(D$RPP1 location(-100465 855))
+ device(D$RPP1 location(-81950 425))
+ device(D$RPP1 location(-100530 -7320))
+ device(D$RPP1 location(-100670 -11740))
+ device(D$RPP1 location(-100785 -20130))
+ device(D$RPP1 location(-100785 -26915))
+ device(D$RPP1 location(-100690 -15970))
+ device(D$RPP1 location(-100435 -3115))
+ device(D$RPP1 location(-82015 -7750))
+ device(D$RPP1 location(-82155 -12170))
+ device(D$RPP1 location(-82175 -16400))
+ device(D$RPP1 location(-63435 640))
+ device(D$RPP1 location(-63500 -7535))
+ device(D$RPP1 location(-63640 -11955))
+ device(D$RPP1 location(-63755 -20345))
+ device(D$RPP1 location(-63865 -26810))
+ device(D$RPP1 location(-63660 -16185))
+ device(D$RPP1 location(-63405 -3330))
+ device(D$RPP1 location(-63930 -34985))
+ device(D$RPP1 location(-64070 -39405))
+ device(D$RPP1 location(-64090 -43635))
+ device(D$RPP1 location(-82380 -26810))
+ device(D$RPP1 location(-82270 -20560))
+ device(D$RPP1 location(-82445 -34985))
+ device(D$RPP1 location(-82585 -39405))
+ device(D$RPP1 location(-82700 -47795))
+ device(D$RPP1 location(-64185 -47795))
+ device(D$RPP1 location(-82605 -43635))
+ device(D$RPP1 location(-82350 -30780))
+ device(D$RPP1 location(-63835 -30780))
+ device(D$RPP1 location(-81920 -3545))
+ device(D$RPP1 location(-100850 -35090))
+ device(D$RPP1 location(-100990 -39510))
+ device(D$RPP1 location(-101105 -47900))
+ device(D$RPP1 location(-101010 -43740))
+ device(D$RPP1 location(-100755 -30885))
+ connect(51 A A)
+ connect(3 B A)
+ connect(9 B A)
+ connect(15 B A)
+ location(110140 51795)
+ param(R 95)
+ param(L 420)
+ param(W 2.21052631579)
+ param(A 1080)
+ param(P 1296)
+ terminal(A 2)
+ terminal(B 1)
+ )
+
+ )
+)
+
+# Reference netlist
+reference(
+
+ # Device class section
+ class(RPP1 RES)
+
+ # Circuit section
+ # Circuits are the hierarchical building blocks of the netlist.
+ circuit(RES2
+
+ # Nets
+ net(1 name(GND))
+ net(2 name(VDD))
+
+ # Outgoing pins and their connections to nets
+ pin(1 name(GND))
+ pin(2 name(VDD))
+
+ # Devices and their connections
+ device(1 RPP1
+ name(I0.I106.R0)
+ param(R 59475.7)
+ param(L 420)
+ param(W 2.21052631579)
+ param(A 0)
+ param(P 0)
+ terminal(A 2)
+ terminal(B 1)
+ )
+
+ )
+)
+
+# Cross reference
+xref(
+ circuit(Res2 RES2 match
+ xref(
+ net(1 1 warning)
+ net(2 2 warning)
+ pin(() 0 match)
+ pin(() 1 match)
+ device(1 1 match)
+ )
+ )
+)
diff --git a/testdata/lvs/res_combine2.cir.3 b/testdata/lvs/res_combine2.cir.3
new file mode 100644
index 000000000..e440a8095
--- /dev/null
+++ b/testdata/lvs/res_combine2.cir.3
@@ -0,0 +1,7 @@
+* Extracted by KLayout
+
+* cell Res2
+.SUBCKT Res2
+* device instance $1 r0 *1 110.14,51.795 RPP1
+R$1 2 1 95 RPP1
+.ENDS Res2
diff --git a/testdata/lvs/res_combine2.lvsdb.6 b/testdata/lvs/res_combine2.lvsdb.6
new file mode 100644
index 000000000..89c533976
--- /dev/null
+++ b/testdata/lvs/res_combine2.lvsdb.6
@@ -0,0 +1,193 @@
+#%lvsdb-klayout
+
+# Layout
+layout(
+ top(Res2)
+ unit(0.001)
+
+ # Layer section
+ # This section lists the mask layers (drawing or derived) and their connections.
+
+ # Mask layers
+ layer(l4 '15/0')
+ layer(l3 '16/0')
+ layer(l1)
+
+ # Mask layer connectivity
+ connect(l4 l4 l3 l1)
+ connect(l3 l4 l3)
+ connect(l1 l4 l1)
+
+ # Device class section
+ class(RPP1 RES)
+
+ # Device abstracts section
+ # Device abstracts list the pin shapes of the devices.
+ device(D$RPP1 RPP1
+ terminal(A
+ rect(l1 (10540 0) (540 2000))
+ )
+ terminal(B
+ rect(l1 (0 0) (540 2000))
+ )
+ )
+
+ # Circuit section
+ # Circuits are the hierarchical building blocks of the netlist.
+ circuit(Res2
+
+ # Circuit boundary
+ rect((8285 720) (117975 57350))
+
+ # Nets with their geometries
+ net(1
+ rect(l4 (120580 32490) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -750) (220 220))
+ rect(l4 (-22355 1390) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -750) (220 220))
+ rect(l4 (-21520 1755) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -750) (220 220))
+ rect(l3 (0 -4795) (1065 5850))
+ rect(l3 (-5155 -6930) (52985 1475))
+ rect(l3 (-27585 -395) (1065 5850))
+ rect(l3 (20990 -5850) (1065 5850))
+ rect(l3 (-1275 -1760) (340 1920))
+ rect(l3 (-22475 -1890) (340 1920))
+ rect(l3 (-21640 -1525) (340 1920))
+ rect(l1 (42935 -2385) (540 2000))
+ rect(l1 (-22675 -1970) (540 2000))
+ rect(l1 (-21840 -1605) (540 2000))
+ )
+ net(2
+ rect(l4 (19795 5575) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -750) (220 220))
+ rect(l3 (-195 -995) (2395 2500))
+ rect(l3 (-2480 -1785) (340 1920))
+ rect(l1 (-500 -1960) (540 2000))
+ )
+
+ # Devices and their connections
+ device(1 D$RPP1
+ device(D$RPP1 location(-65 -8175))
+ device(D$RPP1 location(-205 -12595))
+ device(D$RPP1 location(-320 -20985))
+ device(D$RPP1 location(-225 -16825))
+ device(D$RPP1 location(30 -3970))
+ device(D$RPP1 location(-22135 30))
+ device(D$RPP1 location(-22200 -8145))
+ device(D$RPP1 location(-22340 -12565))
+ device(D$RPP1 location(-22455 -20955))
+ device(D$RPP1 location(-22360 -16795))
+ device(D$RPP1 location(-22105 -3940))
+ device(D$RPP1 location(-43435 425))
+ device(D$RPP1 location(-43500 -7750))
+ device(D$RPP1 location(-43640 -12170))
+ device(D$RPP1 location(-43755 -20560))
+ device(D$RPP1 location(-43660 -16400))
+ device(D$RPP1 location(-43405 -3545))
+ device(D$RPP1 location(-100465 855))
+ device(D$RPP1 location(-81950 425))
+ device(D$RPP1 location(-100530 -7320))
+ device(D$RPP1 location(-100670 -11740))
+ device(D$RPP1 location(-100785 -20130))
+ device(D$RPP1 location(-100785 -26915))
+ device(D$RPP1 location(-100690 -15970))
+ device(D$RPP1 location(-100435 -3115))
+ device(D$RPP1 location(-82015 -7750))
+ device(D$RPP1 location(-82155 -12170))
+ device(D$RPP1 location(-82175 -16400))
+ device(D$RPP1 location(-63435 640))
+ device(D$RPP1 location(-63500 -7535))
+ device(D$RPP1 location(-63640 -11955))
+ device(D$RPP1 location(-63755 -20345))
+ device(D$RPP1 location(-63865 -26810))
+ device(D$RPP1 location(-63660 -16185))
+ device(D$RPP1 location(-63405 -3330))
+ device(D$RPP1 location(-63930 -34985))
+ device(D$RPP1 location(-64070 -39405))
+ device(D$RPP1 location(-64090 -43635))
+ device(D$RPP1 location(-82380 -26810))
+ device(D$RPP1 location(-82270 -20560))
+ device(D$RPP1 location(-82445 -34985))
+ device(D$RPP1 location(-82585 -39405))
+ device(D$RPP1 location(-82700 -47795))
+ device(D$RPP1 location(-64185 -47795))
+ device(D$RPP1 location(-82605 -43635))
+ device(D$RPP1 location(-82350 -30780))
+ device(D$RPP1 location(-63835 -30780))
+ device(D$RPP1 location(-81920 -3545))
+ device(D$RPP1 location(-100850 -35090))
+ device(D$RPP1 location(-100990 -39510))
+ device(D$RPP1 location(-101105 -47900))
+ device(D$RPP1 location(-101010 -43740))
+ device(D$RPP1 location(-100755 -30885))
+ connect(51 A A)
+ connect(3 B A)
+ connect(9 B A)
+ connect(15 B A)
+ location(110140 51795)
+ param(R 95)
+ param(L 420)
+ param(W 2.21052631579)
+ param(A 1080)
+ param(P 1296)
+ terminal(A 2)
+ terminal(B 1)
+ )
+
+ )
+)
+
+# Reference netlist
+reference(
+
+ # Device class section
+ class(RPP1 RES)
+
+ # Circuit section
+ # Circuits are the hierarchical building blocks of the netlist.
+ circuit(RES2
+
+ # Nets
+ net(1 name(GND))
+ net(2 name(VDD))
+
+ # Outgoing pins and their connections to nets
+ pin(1 name(GND))
+ pin(2 name(VDD))
+
+ # Devices and their connections
+ device(1 RPP1
+ name(I0.I106.R0)
+ param(R 59475.7)
+ param(L 420)
+ param(W 2.21052631579)
+ param(A 0)
+ param(P 0)
+ terminal(A 2)
+ terminal(B 1)
+ )
+
+ )
+)
+
+# Cross reference
+xref(
+ circuit(Res2 RES2 match
+ xref(
+ net(1 1 warning)
+ net(2 2 warning)
+ pin(() 0 match)
+ pin(() 1 match)
+ device(1 1 match)
+ )
+ )
+)
diff --git a/testdata/lvs/res_combine3.cir.3 b/testdata/lvs/res_combine3.cir.3
new file mode 100644
index 000000000..e440a8095
--- /dev/null
+++ b/testdata/lvs/res_combine3.cir.3
@@ -0,0 +1,7 @@
+* Extracted by KLayout
+
+* cell Res2
+.SUBCKT Res2
+* device instance $1 r0 *1 110.14,51.795 RPP1
+R$1 2 1 95 RPP1
+.ENDS Res2
diff --git a/testdata/lvs/res_combine3.lvsdb.6 b/testdata/lvs/res_combine3.lvsdb.6
new file mode 100644
index 000000000..1bb644fbe
--- /dev/null
+++ b/testdata/lvs/res_combine3.lvsdb.6
@@ -0,0 +1,196 @@
+#%lvsdb-klayout
+
+# Layout
+layout(
+ top(Res2)
+ unit(0.001)
+
+ # Layer section
+ # This section lists the mask layers (drawing or derived) and their connections.
+
+ # Mask layers
+ layer(l4 '15/0')
+ layer(l3 '16/0')
+ layer(l1)
+
+ # Mask layer connectivity
+ connect(l4 l4 l3 l1)
+ connect(l3 l4 l3)
+ connect(l1 l4 l1)
+
+ # Device class section
+ class(RPP1 RES)
+
+ # Device abstracts section
+ # Device abstracts list the pin shapes of the devices.
+ device(D$RPP1 RPP1
+ terminal(A
+ rect(l1 (10540 0) (540 2000))
+ )
+ terminal(B
+ rect(l1 (0 0) (540 2000))
+ )
+ )
+
+ # Circuit section
+ # Circuits are the hierarchical building blocks of the netlist.
+ circuit(Res2
+
+ # Circuit boundary
+ rect((8285 720) (117975 57350))
+
+ # Nets with their geometries
+ net(1
+ rect(l4 (120580 32490) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -750) (220 220))
+ rect(l4 (-22355 1390) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -750) (220 220))
+ rect(l4 (-21520 1755) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -750) (220 220))
+ rect(l3 (0 -4795) (1065 5850))
+ rect(l3 (-5155 -6930) (52985 1475))
+ rect(l3 (-27585 -395) (1065 5850))
+ rect(l3 (20990 -5850) (1065 5850))
+ rect(l3 (-1275 -1760) (340 1920))
+ rect(l3 (-22475 -1890) (340 1920))
+ rect(l3 (-21640 -1525) (340 1920))
+ rect(l1 (42935 -2385) (540 2000))
+ rect(l1 (-22675 -1970) (540 2000))
+ rect(l1 (-21840 -1605) (540 2000))
+ )
+ net(2
+ rect(l4 (19795 5575) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -745) (220 220))
+ rect(l4 (-220 -750) (220 220))
+ rect(l3 (-195 -995) (2395 2500))
+ rect(l3 (-2480 -1785) (340 1920))
+ rect(l1 (-500 -1960) (540 2000))
+ )
+
+ # Devices and their connections
+ device(1 D$RPP1
+ device(D$RPP1 location(-65 -8175))
+ device(D$RPP1 location(-205 -12595))
+ device(D$RPP1 location(-320 -20985))
+ device(D$RPP1 location(-225 -16825))
+ device(D$RPP1 location(30 -3970))
+ device(D$RPP1 location(-22135 30))
+ device(D$RPP1 location(-22200 -8145))
+ device(D$RPP1 location(-22340 -12565))
+ device(D$RPP1 location(-22455 -20955))
+ device(D$RPP1 location(-22360 -16795))
+ device(D$RPP1 location(-22105 -3940))
+ device(D$RPP1 location(-43435 425))
+ device(D$RPP1 location(-43500 -7750))
+ device(D$RPP1 location(-43640 -12170))
+ device(D$RPP1 location(-43755 -20560))
+ device(D$RPP1 location(-43660 -16400))
+ device(D$RPP1 location(-43405 -3545))
+ device(D$RPP1 location(-100465 855))
+ device(D$RPP1 location(-81950 425))
+ device(D$RPP1 location(-100530 -7320))
+ device(D$RPP1 location(-100670 -11740))
+ device(D$RPP1 location(-100785 -20130))
+ device(D$RPP1 location(-100785 -26915))
+ device(D$RPP1 location(-100690 -15970))
+ device(D$RPP1 location(-100435 -3115))
+ device(D$RPP1 location(-82015 -7750))
+ device(D$RPP1 location(-82155 -12170))
+ device(D$RPP1 location(-82175 -16400))
+ device(D$RPP1 location(-63435 640))
+ device(D$RPP1 location(-63500 -7535))
+ device(D$RPP1 location(-63640 -11955))
+ device(D$RPP1 location(-63755 -20345))
+ device(D$RPP1 location(-63865 -26810))
+ device(D$RPP1 location(-63660 -16185))
+ device(D$RPP1 location(-63405 -3330))
+ device(D$RPP1 location(-63930 -34985))
+ device(D$RPP1 location(-64070 -39405))
+ device(D$RPP1 location(-64090 -43635))
+ device(D$RPP1 location(-82380 -26810))
+ device(D$RPP1 location(-82270 -20560))
+ device(D$RPP1 location(-82445 -34985))
+ device(D$RPP1 location(-82585 -39405))
+ device(D$RPP1 location(-82700 -47795))
+ device(D$RPP1 location(-64185 -47795))
+ device(D$RPP1 location(-82605 -43635))
+ device(D$RPP1 location(-82350 -30780))
+ device(D$RPP1 location(-63835 -30780))
+ device(D$RPP1 location(-81920 -3545))
+ device(D$RPP1 location(-100850 -35090))
+ device(D$RPP1 location(-100990 -39510))
+ device(D$RPP1 location(-101105 -47900))
+ device(D$RPP1 location(-101010 -43740))
+ device(D$RPP1 location(-100755 -30885))
+ connect(51 A A)
+ connect(3 B A)
+ connect(9 B A)
+ connect(15 B A)
+ location(110140 51795)
+ param(R 95)
+ param(L 420)
+ param(W 2.21052631579)
+ param(A 1080)
+ param(P 1296)
+ terminal(A 2)
+ terminal(B 1)
+ )
+
+ )
+)
+
+# Reference netlist
+reference(
+
+ # Device class section
+ class(RPP1 RES)
+
+ # Circuit section
+ # Circuits are the hierarchical building blocks of the netlist.
+ circuit(RES2
+
+ # Nets
+ net(1 name(GND))
+ net(2 name(VDD))
+
+ # Outgoing pins and their connections to nets
+ pin(1 name(GND))
+ pin(2 name(VDD))
+
+ # Devices and their connections
+ device(1 RPP1
+ name(I0.I106.R0)
+ param(R 59475.7)
+ param(L 420)
+ param(W 2.21052631579)
+ param(A 0)
+ param(P 0)
+ terminal(A 2)
+ terminal(B 1)
+ )
+
+ )
+)
+
+# Cross reference
+xref(
+ circuit(Res2 RES2 nomatch
+ xref(
+ net(() 1 mismatch)
+ net(() 2 mismatch)
+ net(1 () mismatch)
+ net(2 () mismatch)
+ pin(() 0 match)
+ pin(() 1 match)
+ device(() 1 mismatch)
+ device(1 () mismatch)
+ )
+ )
+)
diff --git a/testdata/lvs/test_22a.lvsdb.3 b/testdata/lvs/test_22a.lvsdb.3
new file mode 100644
index 000000000..87bbe1b42
--- /dev/null
+++ b/testdata/lvs/test_22a.lvsdb.3
@@ -0,0 +1,2593 @@
+#%lvsdb-klayout
+
+# Layout
+layout(
+ top(SP6TArray_2X4)
+ unit(0.001)
+
+ # Layer section
+ # This section lists the mask layers (drawing or derived) and their connections.
+
+ # Mask layers
+ layer(l1)
+ layer(l2)
+ layer(l3)
+ layer(l4)
+ layer(l5 '64/20')
+ layer(l6)
+ layer(l7 '66/20')
+ layer(l8)
+ layer(l9 '67/20')
+ layer(l10)
+ layer(l11 '68/20')
+ layer(l12 '68/16')
+ layer(l13 '69/20')
+ layer(l14 '69/16')
+ layer(l15)
+ layer(l16)
+ layer(l17)
+ layer(l18)
+ layer(l19)
+ layer(l20)
+ layer(l21 '66/44')
+ layer(l22 '66/20')
+ layer(l23 '67/44')
+ layer(l24 '68/44')
+ layer(l25)
+ layer(l26)
+ layer(l27)
+
+ # Mask layer connectivity
+ connect(l1 l1)
+ connect(l2 l2 l3 l4 l6 l21)
+ connect(l3 l2 l3)
+ connect(l4 l2 l4 l5)
+ connect(l5 l4 l5)
+ connect(l6 l2 l6)
+ connect(l7 l7 l8)
+ connect(l8 l7 l8)
+ connect(l9 l9 l10 l21 l23)
+ connect(l10 l9 l10)
+ connect(l11 l11 l12 l23 l24)
+ connect(l12 l11 l12)
+ connect(l13 l13 l14 l24 l25)
+ connect(l14 l13 l14)
+ connect(l15 l15 l16 l25 l26)
+ connect(l16 l15 l16)
+ connect(l17 l17 l18 l26 l27)
+ connect(l18 l17 l18)
+ connect(l19 l19 l20 l27)
+ connect(l20 l19 l20)
+ connect(l21 l2 l9 l21 l22)
+ connect(l22 l21 l22)
+ connect(l23 l9 l11 l23)
+ connect(l24 l11 l13 l24)
+ connect(l25 l13 l15 l25)
+ connect(l26 l15 l17 l26)
+ connect(l27 l17 l19 l27)
+
+ # Global nets and connectivity
+ global(l1 vss)
+ global(l6 vss)
+
+ # Log entries
+ message(warning description('Must-connect subnets of vdd must be connected further up in the hierarchy - this is an error at chip top level') cell(SP6TArray_2X4) cat('must-connect') polygon('(-0.385,-0.305;-0.385,5.855;9.105,5.855;9.105,-0.305)'))
+
+ # Device class section
+ class(active_res RES)
+ class(poly_res RES)
+ class(sky130_fd_pr__diode_pw2nd_05v5 DIODE)
+ class(sky130_fd_pr__diode_pd2nw_05v5 DIODE)
+ class(sky130_fd_pr__nfet_01v8__model MOS4)
+ class(sky130_fd_pr__nfet_01v8_lvt__model MOS4)
+ class(sky130_fd_pr__nfet_g5v0d10v5__model MOS4)
+ class(sky130_fd_pr__pfet_01v8__model MOS4)
+ class(sky130_fd_pr__pfet_01v8_hvt__model MOS4)
+ class(sky130_fd_pr__pfet_01v8_lvt__model MOS4)
+ class(sky130_fd_pr__pfet_g5v0d10v5__model MOS4)
+
+ # Device abstracts section
+ # Device abstracts list the pin shapes of the devices.
+ device(D$sky130_fd_pr__nfet_01v8__model sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ rect(l2 (-340 -210) (265 420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ polygon(l2 (75 -210) (0 420) (105 0) (0 340) (420 0) (0 -760))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$1 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (-315 -835) (0 420) (105 0) (0 340) (420 0) (0 -760))
+ )
+ terminal(G
+ rect(l22 (-210 -75) (420 150))
+ )
+ terminal(D
+ rect(l2 (-210 75) (420 280))
+ )
+ terminal(B
+ rect(l1 (-210 -75) (420 150))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$2 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ rect(l2 (-210 -355) (420 280))
+ )
+ terminal(G
+ rect(l22 (-210 -75) (420 150))
+ )
+ terminal(D
+ polygon(l2 (-210 75) (0 340) (-105 0) (0 420) (525 0) (0 -760))
+ )
+ terminal(B
+ rect(l1 (-210 -75) (420 150))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$3 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (180 -550) (0 340) (-105 0) (0 420) (525 0) (0 -760))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (-340 -210) (265 420))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$4 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (-600 -210) (0 760) (420 0) (0 -340) (105 0) (0 -420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (280 420))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$5 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ rect(l2 (-355 -210) (280 420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ polygon(l2 (75 -210) (0 420) (105 0) (0 340) (420 0) (0 -760))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$6 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (-210 -835) (0 760) (420 0) (0 -340) (105 0) (0 -420))
+ )
+ terminal(G
+ rect(l22 (-210 -75) (420 150))
+ )
+ terminal(D
+ rect(l2 (-210 75) (420 280))
+ )
+ terminal(B
+ rect(l1 (-210 -75) (420 150))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$7 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ rect(l2 (-210 -355) (420 280))
+ )
+ terminal(G
+ rect(l22 (-210 -75) (420 150))
+ )
+ terminal(D
+ polygon(l2 (-210 75) (0 760) (525 0) (0 -420) (-105 0) (0 -340))
+ )
+ terminal(B
+ rect(l1 (-210 -75) (420 150))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$8 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (-600 -550) (0 760) (525 0) (0 -420) (-105 0) (0 -340))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (280 420))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$9 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (180 -550) (0 340) (-105 0) (0 420) (525 0) (0 -760))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (-355 -210) (280 420))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$10 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (-600 -210) (0 760) (420 0) (0 -340) (105 0) (0 -420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (265 420))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$11 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (-600 -550) (0 760) (525 0) (0 -420) (-105 0) (0 -340))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (265 420))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__pfet_01v8__model sky130_fd_pr__pfet_01v8__model
+ terminal(S
+ rect(l2 (-340 -210) (265 420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (445 420))
+ )
+ terminal(B
+ rect(l5 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__pfet_01v8__model$1 sky130_fd_pr__pfet_01v8__model
+ terminal(S
+ rect(l2 (-520 -210) (445 420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (280 420))
+ )
+ terminal(B
+ rect(l5 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__pfet_01v8__model$2 sky130_fd_pr__pfet_01v8__model
+ terminal(S
+ rect(l2 (-355 -210) (280 420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (445 420))
+ )
+ terminal(B
+ rect(l5 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__pfet_01v8__model$3 sky130_fd_pr__pfet_01v8__model
+ terminal(S
+ rect(l2 (-520 -210) (445 420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (265 420))
+ )
+ terminal(B
+ rect(l5 (-75 -210) (150 420))
+ )
+ )
+
+ # Circuit section
+ # Circuits are the hierarchical building blocks of the netlist.
+ circuit(SP6TArray_2X4
+
+ # Circuit boundary
+ rect((-385 -305) (9490 6160))
+
+ # Nets with their geometries
+ net(1 name(vdd)
+ rect(l2 (-205 -125) (9130 250))
+ rect(l2 (-9050 270) (265 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (265 420))
+ rect(l2 (-9050 4610) (9130 250))
+ rect(l2 (-9050 -940) (265 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (265 420))
+ rect(l4 (-9050 -5280) (9130 250))
+ rect(l4 (-9130 5300) (9130 250))
+ rect(l5 (-7130 -5980) (2950 1300))
+ rect(l5 (-5130 -1300) (2950 1300))
+ rect(l5 (1410 -1300) (2950 1300))
+ rect(l5 (-770 -1300) (2950 1300))
+ rect(l5 (-9490 3560) (2950 1300))
+ rect(l5 (-770 -1300) (2950 1300))
+ rect(l5 (-770 -1300) (2950 1300))
+ rect(l5 (-770 -1300) (2950 1300))
+ rect(l9 (-9270 -5940) (2510 170))
+ rect(l9 (-330 -170) (2510 170))
+ rect(l9 (-330 -170) (2510 170))
+ rect(l9 (-330 -170) (2510 170))
+ rect(l9 (-8970 0) (170 685))
+ rect(l9 (2010 -685) (170 685))
+ rect(l9 (-170 -685) (170 685))
+ rect(l9 (2010 -685) (170 685))
+ rect(l9 (-170 -685) (170 685))
+ rect(l9 (2010 -685) (170 685))
+ rect(l9 (-170 -685) (170 685))
+ rect(l9 (2010 -685) (170 685))
+ rect(l9 (-8890 4010) (170 685))
+ rect(l9 (-250 0) (2510 170))
+ rect(l9 (-330 -170) (2510 170))
+ rect(l9 (-2430 -855) (170 685))
+ rect(l9 (-170 -685) (170 685))
+ rect(l9 (1930 0) (2510 170))
+ rect(l9 (-2430 -855) (170 685))
+ rect(l9 (-170 -685) (170 685))
+ rect(l9 (1930 0) (2510 170))
+ rect(l9 (-2430 -855) (170 685))
+ rect(l9 (-170 -685) (170 685))
+ rect(l9 (2010 -685) (170 685))
+ rect(l11 (-8935 -5625) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-8980 5230) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l13 (-9010 -5840) (2500 260))
+ rect(l13 (-2500 -260) (9040 260))
+ rect(l13 (-9040 -260) (2500 260))
+ rect(l13 (-2500 -260) (4680 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-320 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-2500 -260) (4680 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-9040 5290) (4680 260))
+ rect(l13 (-4680 -260) (9040 260))
+ rect(l13 (-9040 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-320 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-320 -260) (2500 260))
+ rect(l13 (-2500 -260) (4680 260))
+ rect(l13 (-4680 -260) (2500 260))
+ rect(l13 (-320 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l14 (-9040 -5810) (4680 260))
+ rect(l14 (-4680 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-2500 -260) (9040 260))
+ rect(l14 (-6860 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-320 -260) (2500 260))
+ rect(l14 (-2500 -260) (4680 260))
+ rect(l14 (-4680 -260) (2500 260))
+ rect(l14 (-320 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-4520 -130) (0 0))
+ rect(l14 (-4520 5420) (9040 260))
+ rect(l14 (-9040 -260) (4680 260))
+ rect(l14 (-4680 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-320 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-320 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-2500 -260) (4680 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-4520 -130) (0 0))
+ rect(l21 (-4445 -5635) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-8890 435) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-8890 4775) (170 170))
+ rect(l21 (-170 -775) (170 170))
+ rect(l21 (2010 435) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -775) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 435) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -775) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 435) (170 170))
+ rect(l21 (-170 -775) (170 170))
+ rect(l21 (-170 435) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -775) (170 170))
+ rect(l23 (-8890 -5115) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-8890 5380) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l24 (-8880 -5710) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-8870 5400) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ )
+ net(2 name('bl[0]')
+ rect(l2 (395 2635) (420 280))
+ polygon(l9 (-295 -305) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ polygon(l9 (-170 0) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ rect(l11 (-260 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -290) (230 2920))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -2920) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -2920) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-25 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-230 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(3 name('bl_n[0]')
+ rect(l2 (1365 2635) (420 280))
+ polygon(l9 (-295 -305) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ polygon(l9 (-170 0) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ rect(l11 (-140 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -2920) (230 5550))
+ rect(l11 (-230 -2920) (230 2920))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -2920) (230 5550))
+ rect(l12 (-230 -2920) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-145 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-110 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(4 name('bl[1]')
+ rect(l2 (2575 2635) (420 280))
+ polygon(l9 (-295 -305) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ polygon(l9 (-170 0) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ rect(l11 (-260 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -2920) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -2920) (230 2920))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -2920) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -2920) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-25 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-230 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(5 name('bl_n[1]')
+ rect(l2 (3545 2635) (420 280))
+ polygon(l9 (-295 -305) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ polygon(l9 (-170 0) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ rect(l11 (-140 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -2920) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -2920) (230 2920))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -2920) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -2920) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-145 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-110 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(6 name('bl[2]')
+ rect(l2 (4755 2635) (420 280))
+ polygon(l9 (-295 -305) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ polygon(l9 (-170 0) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ rect(l11 (-260 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -2920) (230 5550))
+ rect(l11 (-230 -2920) (230 2920))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -2920) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -2920) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-25 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-230 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(7 name('bl_n[2]')
+ rect(l2 (5725 2635) (420 280))
+ polygon(l9 (-295 -305) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ polygon(l9 (-170 0) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ rect(l11 (-140 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -290) (230 2920))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -290) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-145 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-110 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(8 name('bl[3]')
+ rect(l2 (6935 2635) (420 280))
+ polygon(l9 (-295 -305) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ polygon(l9 (-170 0) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ rect(l11 (-260 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -2920) (230 5550))
+ rect(l11 (-230 -2920) (230 2920))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -290) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-25 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-230 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(9 name('bl_n[3]')
+ rect(l2 (7905 2635) (420 280))
+ polygon(l9 (-295 -305) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ polygon(l9 (-170 0) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ rect(l11 (-140 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -2920) (230 5550))
+ rect(l11 (-230 -2920) (230 2920))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -2920) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -2920) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-145 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-110 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(10
+ rect(l2 (1445 395) (445 420))
+ polygon(l2 (-525 910) (0 760) (420 0) (0 -340) (105 0) (0 -420))
+ polygon(l9 (-405 -1280) (0 560) (-245 0) (0 170) (245 0) (0 840) (170 0) (0 -1570))
+ rect(l21 (-335 560) (170 170))
+ rect(l21 (-5 -650) (170 170))
+ rect(l21 (-170 1070) (170 170))
+ rect(l22 (-1365 -980) (950 150))
+ rect(l22 (-1100 -840) (150 2010))
+ rect(l22 (950 -1320) (330 270))
+ )
+ net(11
+ rect(l7 (290 955) (950 150))
+ rect(l7 (-1100 -840) (150 2010))
+ rect(l7 (950 -1320) (330 270))
+ )
+ net(12
+ polygon(l2 (290 1725) (0 420) (105 0) (0 340) (420 0) (0 -760))
+ rect(l2 (-525 -1330) (445 420))
+ polygon(l9 (-210 -370) (0 1570) (170 0) (0 -480) (245 0) (0 -170) (-245 0) (0 -920))
+ rect(l21 (-170 1320) (170 170))
+ rect(l21 (-170 -1410) (170 170))
+ rect(l21 (-5 670) (170 170))
+ rect(l22 (-250 -220) (330 270))
+ rect(l22 (0 -150) (950 150))
+ rect(l22 (0 -1320) (150 2010))
+ )
+ net(13
+ rect(l7 (940 1435) (950 150))
+ rect(l7 (-1280 -270) (330 270))
+ rect(l7 (950 -1320) (150 2010))
+ )
+ net(14
+ polygon(l2 (3545 1725) (0 760) (420 0) (0 -340) (105 0) (0 -420))
+ rect(l2 (-445 -1330) (445 420))
+ polygon(l9 (-405 -370) (0 560) (-245 0) (0 170) (245 0) (0 840) (170 0) (0 -1570))
+ rect(l21 (-335 560) (170 170))
+ rect(l21 (-5 590) (170 170))
+ rect(l21 (-170 -1410) (170 170))
+ rect(l22 (-1365 260) (950 150))
+ rect(l22 (-1100 -840) (150 2010))
+ rect(l22 (950 -1320) (330 270))
+ )
+ net(15
+ rect(l7 (2470 955) (950 150))
+ rect(l7 (-1100 -840) (150 2010))
+ rect(l7 (950 -1320) (330 270))
+ )
+ net(16
+ rect(l2 (2470 395) (445 420))
+ polygon(l2 (-445 910) (0 420) (105 0) (0 340) (420 0) (0 -760))
+ polygon(l9 (-290 -1280) (0 1570) (170 0) (0 -480) (245 0) (0 -170) (-245 0) (0 -920))
+ rect(l21 (-170 80) (170 170))
+ rect(l21 (-170 1070) (170 170))
+ rect(l21 (-5 -570) (170 170))
+ rect(l22 (-250 -220) (330 270))
+ rect(l22 (0 -150) (950 150))
+ rect(l22 (0 -1320) (150 2010))
+ )
+ net(17
+ rect(l7 (3120 1435) (950 150))
+ rect(l7 (-1280 -270) (330 270))
+ rect(l7 (950 -1320) (150 2010))
+ )
+ net(18
+ rect(l2 (5805 395) (445 420))
+ polygon(l2 (-525 910) (0 760) (420 0) (0 -340) (105 0) (0 -420))
+ polygon(l9 (-405 -1280) (0 560) (-245 0) (0 170) (245 0) (0 840) (170 0) (0 -1570))
+ rect(l21 (-335 560) (170 170))
+ rect(l21 (-5 -650) (170 170))
+ rect(l21 (-170 1070) (170 170))
+ rect(l22 (-1365 -980) (950 150))
+ rect(l22 (-1100 -840) (150 2010))
+ rect(l22 (950 -1320) (330 270))
+ )
+ net(19
+ rect(l7 (4650 955) (950 150))
+ rect(l7 (-1100 -840) (150 2010))
+ rect(l7 (950 -1320) (330 270))
+ )
+ net(20
+ polygon(l2 (4650 1725) (0 420) (105 0) (0 340) (420 0) (0 -760))
+ rect(l2 (-525 -1330) (445 420))
+ polygon(l9 (-210 -370) (0 1570) (170 0) (0 -480) (245 0) (0 -170) (-245 0) (0 -920))
+ rect(l21 (-170 1320) (170 170))
+ rect(l21 (-170 -1410) (170 170))
+ rect(l21 (-5 670) (170 170))
+ rect(l22 (-250 -220) (330 270))
+ rect(l22 (0 -150) (950 150))
+ rect(l22 (0 -1320) (150 2010))
+ )
+ net(21
+ rect(l7 (5300 1435) (950 150))
+ rect(l7 (-1280 -270) (330 270))
+ rect(l7 (950 -1320) (150 2010))
+ )
+ net(22
+ rect(l2 (7985 395) (445 420))
+ polygon(l2 (-525 910) (0 760) (420 0) (0 -340) (105 0) (0 -420))
+ polygon(l9 (-405 -1280) (0 560) (-245 0) (0 170) (245 0) (0 840) (170 0) (0 -1570))
+ rect(l21 (-335 560) (170 170))
+ rect(l21 (-5 -650) (170 170))
+ rect(l21 (-170 1070) (170 170))
+ rect(l22 (-1365 -980) (950 150))
+ rect(l22 (-1100 -840) (150 2010))
+ rect(l22 (950 -1320) (330 270))
+ )
+ net(23
+ rect(l7 (6830 955) (950 150))
+ rect(l7 (-1100 -840) (150 2010))
+ rect(l7 (950 -1320) (330 270))
+ )
+ net(24
+ polygon(l2 (6830 1725) (0 420) (105 0) (0 340) (420 0) (0 -760))
+ rect(l2 (-525 -1330) (445 420))
+ polygon(l9 (-210 -370) (0 1570) (170 0) (0 -480) (245 0) (0 -170) (-245 0) (0 -920))
+ rect(l21 (-170 1320) (170 170))
+ rect(l21 (-170 -1410) (170 170))
+ rect(l21 (-5 670) (170 170))
+ rect(l22 (-250 -220) (330 270))
+ rect(l22 (0 -150) (950 150))
+ rect(l22 (0 -1320) (150 2010))
+ )
+ net(25
+ rect(l7 (7480 1435) (950 150))
+ rect(l7 (-1280 -270) (330 270))
+ rect(l7 (950 -1320) (150 2010))
+ )
+ net(26 name('wl[0]')
+ rect(l9 (1005 2135) (170 500))
+ rect(l9 (2010 -500) (170 500))
+ rect(l9 (2010 -500) (170 500))
+ rect(l9 (2010 -500) (170 500))
+ polygon(l11 (-6755 -880) (0 320) (15 0) (0 290) (230 0) (0 -290) (15 0) (0 -320))
+ polygon(l11 (1920 0) (0 320) (15 0) (0 290) (230 0) (0 -290) (15 0) (0 -320))
+ polygon(l11 (1920 0) (0 320) (15 0) (0 290) (230 0) (0 -290) (15 0) (0 -320))
+ polygon(l11 (1920 0) (0 320) (15 0) (0 290) (230 0) (0 -290) (15 0) (0 -320))
+ rect(l13 (-7760 30) (8720 260))
+ rect(l13 (-8720 -260) (2180 260))
+ rect(l13 (-2180 -260) (2180 260))
+ rect(l13 (-2180 -260) (4360 260))
+ rect(l13 (-2180 -260) (2180 260))
+ rect(l13 (-2180 -260) (2180 260))
+ rect(l13 (0 -260) (4360 260))
+ rect(l13 (-4360 -260) (2180 260))
+ rect(l13 (-2180 -260) (2180 260))
+ rect(l13 (0 -260) (2180 260))
+ rect(l13 (-2180 -260) (2180 260))
+ rect(l14 (-8720 -260) (2180 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l14 (-2180 -260) (4360 260))
+ rect(l14 (-4360 -260) (8720 260))
+ rect(l14 (-6540 -260) (2180 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l14 (0 -260) (2180 260))
+ rect(l14 (-2180 -130) (0 0))
+ rect(l14 (0 -130) (2180 260))
+ rect(l14 (-2180 -260) (4360 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l21 (-7715 340) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ polygon(l22 (-6760 -250) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ polygon(l22 (1910 0) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ polygon(l22 (1910 0) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ polygon(l22 (1910 0) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ rect(l23 (-6760 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l24 (-6700 -465) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ )
+ net(27
+ polygon(l7 (955 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ )
+ net(28
+ polygon(l7 (7495 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ )
+ net(29
+ polygon(l7 (3135 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ )
+ net(30
+ polygon(l7 (5315 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ )
+ net(31 name('wl[1]')
+ rect(l9 (1005 2915) (170 500))
+ rect(l9 (2010 -500) (170 500))
+ rect(l9 (2010 -500) (170 500))
+ rect(l9 (2010 -500) (170 500))
+ polygon(l11 (-6740 -230) (0 290) (-15 0) (0 320) (260 0) (0 -320) (-15 0) (0 -290))
+ polygon(l11 (1950 0) (0 290) (-15 0) (0 320) (260 0) (0 -320) (-15 0) (0 -290))
+ polygon(l11 (1950 0) (0 290) (-15 0) (0 320) (260 0) (0 -320) (-15 0) (0 -290))
+ polygon(l11 (1950 0) (0 290) (-15 0) (0 320) (260 0) (0 -320) (-15 0) (0 -290))
+ rect(l13 (-7745 320) (2180 260))
+ rect(l13 (-2180 -260) (4360 260))
+ rect(l13 (-4360 -260) (8720 260))
+ rect(l13 (-8720 -260) (2180 260))
+ rect(l13 (0 -260) (2180 260))
+ rect(l13 (-2180 -260) (2180 260))
+ rect(l13 (0 -260) (2180 260))
+ rect(l13 (-2180 -260) (4360 260))
+ rect(l13 (-4360 -260) (2180 260))
+ rect(l13 (0 -260) (2180 260))
+ rect(l13 (-2180 -260) (2180 260))
+ rect(l14 (-8720 -260) (2180 260))
+ rect(l14 (-2180 -260) (8720 260))
+ rect(l14 (-8720 -260) (4360 260))
+ rect(l14 (-4360 -260) (2180 260))
+ rect(l14 (0 -260) (2180 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l14 (0 -130) (0 0))
+ rect(l14 (0 -130) (2180 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l14 (-2180 -260) (4360 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l21 (-7715 -770) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ polygon(l22 (-7450 -250) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ polygon(l22 (530 0) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ polygon(l22 (530 0) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ polygon(l22 (530 0) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ rect(l23 (-7450 330) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l24 (-6700 145) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ )
+ net(32
+ 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))
+ rect(l21 (-170 80) (170 170))
+ rect(l21 (-5 230) (170 170))
+ rect(l21 (-335 670) (170 170))
+ rect(l22 (-85 -1060) (330 270))
+ rect(l22 (0 -270) (950 150))
+ rect(l22 (0 -840) (150 2010))
+ )
+ net(33
+ rect(l7 (940 3965) (950 150))
+ rect(l7 (-1280 -150) (330 270))
+ rect(l7 (950 -960) (150 2010))
+ )
+ net(34
+ 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))
+ rect(l21 (-170 80) (170 170))
+ rect(l21 (-5 230) (170 170))
+ rect(l21 (-335 670) (170 170))
+ rect(l22 (-85 -1060) (330 270))
+ rect(l22 (0 -270) (950 150))
+ rect(l22 (0 -840) (150 2010))
+ )
+ net(35
+ rect(l7 (3120 3965) (950 150))
+ rect(l7 (-1280 -150) (330 270))
+ rect(l7 (950 -960) (150 2010))
+ )
+ net(36
+ 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))
+ rect(l21 (-170 80) (170 170))
+ rect(l21 (-5 230) (170 170))
+ rect(l21 (-335 670) (170 170))
+ rect(l22 (-85 -1060) (330 270))
+ rect(l22 (0 -270) (950 150))
+ rect(l22 (0 -840) (150 2010))
+ )
+ net(37
+ rect(l7 (5300 3965) (950 150))
+ rect(l7 (-1280 -150) (330 270))
+ rect(l7 (950 -960) (150 2010))
+ )
+ net(38
+ 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))
+ rect(l21 (-170 80) (170 170))
+ rect(l21 (-5 230) (170 170))
+ rect(l21 (-335 670) (170 170))
+ rect(l22 (-85 -1060) (330 270))
+ rect(l22 (0 -270) (950 150))
+ rect(l22 (0 -840) (150 2010))
+ )
+ net(39
+ rect(l7 (7480 3965) (950 150))
+ rect(l7 (-1280 -150) (330 270))
+ rect(l7 (950 -960) (150 2010))
+ )
+ net(40
+ 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))
+ rect(l21 (-170 80) (170 170))
+ rect(l21 (-335 590) (170 170))
+ rect(l21 (-5 310) (170 170))
+ rect(l22 (-1365 -580) (950 150))
+ rect(l22 (-1100 -1320) (150 2010))
+ rect(l22 (950 -960) (330 270))
+ )
+ net(41
+ polygon(l7 (265 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ )
+ net(42
+ polygon(l7 (6805 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ )
+ net(43
+ polygon(l7 (2445 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ )
+ net(44
+ polygon(l7 (4625 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ )
+ net(45
+ 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))
+ rect(l21 (-335 840) (170 170))
+ rect(l21 (-5 -930) (170 170))
+ rect(l21 (-170 1070) (170 170))
+ rect(l22 (-1365 -580) (950 150))
+ rect(l22 (-1100 -1320) (150 2010))
+ rect(l22 (950 -960) (330 270))
+ )
+ net(46
+ rect(l7 (290 4445) (950 150))
+ rect(l7 (-1100 -1320) (150 2010))
+ rect(l7 (950 -960) (330 270))
+ )
+ net(47
+ rect(l7 (2470 4445) (950 150))
+ rect(l7 (-1100 -1320) (150 2010))
+ rect(l7 (950 -960) (330 270))
+ )
+ net(48
+ 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))
+ rect(l21 (-335 840) (170 170))
+ rect(l21 (-5 -930) (170 170))
+ rect(l21 (-170 1070) (170 170))
+ rect(l22 (-1365 -580) (950 150))
+ rect(l22 (-1100 -1320) (150 2010))
+ rect(l22 (950 -960) (330 270))
+ )
+ net(49
+ 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))
+ rect(l21 (-335 840) (170 170))
+ rect(l21 (-5 -930) (170 170))
+ rect(l21 (-170 1070) (170 170))
+ rect(l22 (-1365 -580) (950 150))
+ rect(l22 (-1100 -1320) (150 2010))
+ rect(l22 (950 -960) (330 270))
+ )
+ net(50
+ rect(l7 (4650 4445) (950 150))
+ rect(l7 (-1100 -1320) (150 2010))
+ rect(l7 (950 -960) (330 270))
+ )
+ net(51
+ rect(l7 (6830 4445) (950 150))
+ rect(l7 (-1100 -1320) (150 2010))
+ rect(l7 (950 -960) (330 270))
+ )
+ net(52 name(vss)
+ rect(l2 (-125 1725) (265 420))
+ rect(l2 (-265 270) (250 720))
+ rect(l2 (1915 -1410) (280 420))
+ rect(l2 (-265 270) (250 720))
+ rect(l2 (1915 -1410) (280 420))
+ rect(l2 (-265 270) (250 720))
+ rect(l2 (1915 -1410) (280 420))
+ rect(l2 (-265 270) (250 720))
+ rect(l2 (1915 -1410) (265 420))
+ rect(l2 (-250 270) (250 720))
+ rect(l2 (-8970 270) (265 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (265 420))
+ rect(l6 (-8970 -1410) (250 720))
+ rect(l6 (1930 -720) (250 720))
+ rect(l6 (1930 -720) (250 720))
+ rect(l6 (1930 -720) (250 720))
+ rect(l6 (1930 -720) (250 720))
+ rect(l9 (-8930 -1365) (170 1170))
+ rect(l9 (-170 -330) (170 1170))
+ rect(l9 (2010 -2010) (170 1170))
+ rect(l9 (-170 -1170) (170 1170))
+ rect(l9 (-170 -330) (170 1170))
+ rect(l9 (-170 -1170) (170 1170))
+ rect(l9 (2010 -2010) (170 1170))
+ rect(l9 (-170 -1170) (170 1170))
+ rect(l9 (-170 -330) (170 1170))
+ rect(l9 (-170 -1170) (170 1170))
+ rect(l9 (2010 -2010) (170 1170))
+ rect(l9 (-170 -1170) (170 1170))
+ rect(l9 (-170 -330) (170 1170))
+ rect(l9 (-170 -1170) (170 1170))
+ rect(l9 (2010 -1170) (170 1170))
+ rect(l9 (-170 -2010) (170 1170))
+ rect(l11 (-8935 -325) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l13 (-9010 -290) (2500 260))
+ rect(l13 (-2500 -260) (9040 260))
+ rect(l13 (-9040 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-2500 -260) (4680 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-320 -260) (2500 260))
+ rect(l13 (-2500 -260) (4680 260))
+ rect(l13 (-4680 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-320 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l14 (-9040 -260) (2500 260))
+ rect(l14 (-2500 -260) (4680 260))
+ rect(l14 (-4680 -260) (9040 260))
+ rect(l14 (-9040 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-320 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-320 -260) (4680 260))
+ rect(l14 (-4680 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-2340 -130) (0 0))
+ rect(l14 (2020 -130) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l21 (-8965 -1055) (170 170))
+ rect(l21 (-170 670) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -1010) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 670) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -1010) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 670) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -1010) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 670) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -1010) (170 170))
+ rect(l21 (-170 670) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-8890 670) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l23 (-8890 -1010) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l24 (-8880 -160) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ )
+
+ # Devices and their connections
+ device(1 D$sky130_fd_pr__nfet_01v8__model
+ location(215 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1113)
+ param(AD 0.18165)
+ param(PS 1.37)
+ param(PD 1.285)
+ terminal(S 52)
+ terminal(G 10)
+ terminal(D 12)
+ terminal(B 52)
+ )
+ device(2 D$sky130_fd_pr__nfet_01v8__model$1
+ location(605 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 12)
+ terminal(G 26)
+ terminal(D 2)
+ terminal(B 52)
+ )
+ device(3 D$sky130_fd_pr__nfet_01v8__model$2
+ location(605 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 2)
+ terminal(G 31)
+ terminal(D 32)
+ terminal(B 52)
+ )
+ device(4 D$sky130_fd_pr__nfet_01v8__model$3
+ location(215 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.1113)
+ param(PS 1.285)
+ param(PD 1.37)
+ terminal(S 32)
+ terminal(G 45)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(5 D$sky130_fd_pr__nfet_01v8__model$4
+ location(1965 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 10)
+ terminal(G 12)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(6 D$sky130_fd_pr__nfet_01v8__model$5
+ location(2395 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 52)
+ terminal(G 14)
+ terminal(D 16)
+ terminal(B 52)
+ )
+ device(7 D$sky130_fd_pr__nfet_01v8__model$6
+ location(1575 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 10)
+ terminal(G 26)
+ terminal(D 3)
+ terminal(B 52)
+ )
+ device(8 D$sky130_fd_pr__nfet_01v8__model$1
+ location(2785 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 16)
+ terminal(G 26)
+ terminal(D 4)
+ terminal(B 52)
+ )
+ device(9 D$sky130_fd_pr__nfet_01v8__model$7
+ location(1575 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 3)
+ terminal(G 31)
+ terminal(D 45)
+ terminal(B 52)
+ )
+ device(10 D$sky130_fd_pr__nfet_01v8__model$2
+ location(2785 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 4)
+ terminal(G 31)
+ terminal(D 34)
+ terminal(B 52)
+ )
+ device(11 D$sky130_fd_pr__nfet_01v8__model$8
+ location(1965 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 45)
+ terminal(G 32)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(12 D$sky130_fd_pr__nfet_01v8__model$9
+ location(2395 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 34)
+ terminal(G 48)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(13 D$sky130_fd_pr__nfet_01v8__model$4
+ location(4145 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 14)
+ terminal(G 16)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(14 D$sky130_fd_pr__nfet_01v8__model$5
+ location(4575 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 52)
+ terminal(G 18)
+ terminal(D 20)
+ terminal(B 52)
+ )
+ device(15 D$sky130_fd_pr__nfet_01v8__model$6
+ location(3755 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 14)
+ terminal(G 26)
+ terminal(D 5)
+ terminal(B 52)
+ )
+ device(16 D$sky130_fd_pr__nfet_01v8__model$1
+ location(4965 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 20)
+ terminal(G 26)
+ terminal(D 6)
+ terminal(B 52)
+ )
+ device(17 D$sky130_fd_pr__nfet_01v8__model$7
+ location(3755 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 5)
+ terminal(G 31)
+ terminal(D 48)
+ terminal(B 52)
+ )
+ device(18 D$sky130_fd_pr__nfet_01v8__model$2
+ location(4965 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 6)
+ terminal(G 31)
+ terminal(D 36)
+ terminal(B 52)
+ )
+ device(19 D$sky130_fd_pr__nfet_01v8__model$8
+ location(4145 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 48)
+ terminal(G 34)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(20 D$sky130_fd_pr__nfet_01v8__model$9
+ location(4575 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 36)
+ terminal(G 49)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(21 D$sky130_fd_pr__nfet_01v8__model$4
+ location(6325 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 18)
+ terminal(G 20)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(22 D$sky130_fd_pr__nfet_01v8__model$5
+ location(6755 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 52)
+ terminal(G 22)
+ terminal(D 24)
+ terminal(B 52)
+ )
+ device(23 D$sky130_fd_pr__nfet_01v8__model$6
+ location(5935 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 18)
+ terminal(G 26)
+ terminal(D 7)
+ terminal(B 52)
+ )
+ device(24 D$sky130_fd_pr__nfet_01v8__model$1
+ location(7145 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 24)
+ terminal(G 26)
+ terminal(D 8)
+ terminal(B 52)
+ )
+ device(25 D$sky130_fd_pr__nfet_01v8__model$7
+ location(5935 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 7)
+ terminal(G 31)
+ terminal(D 49)
+ terminal(B 52)
+ )
+ device(26 D$sky130_fd_pr__nfet_01v8__model$2
+ location(7145 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 8)
+ terminal(G 31)
+ terminal(D 38)
+ terminal(B 52)
+ )
+ device(27 D$sky130_fd_pr__nfet_01v8__model$8
+ location(6325 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 49)
+ terminal(G 36)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(28 D$sky130_fd_pr__nfet_01v8__model$9
+ location(6755 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 38)
+ terminal(G 40)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(29 D$sky130_fd_pr__nfet_01v8__model$10
+ location(8505 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.1113)
+ param(PS 1.285)
+ param(PD 1.37)
+ terminal(S 22)
+ terminal(G 24)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(30 D$sky130_fd_pr__nfet_01v8__model$6
+ location(8115 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 22)
+ terminal(G 26)
+ terminal(D 9)
+ terminal(B 52)
+ )
+ device(31 D$sky130_fd_pr__nfet_01v8__model$7
+ location(8115 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 9)
+ terminal(G 31)
+ terminal(D 40)
+ terminal(B 52)
+ )
+ device(32 D$sky130_fd_pr__nfet_01v8__model$11
+ location(8505 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.1113)
+ param(PS 1.285)
+ param(PD 1.37)
+ terminal(S 40)
+ terminal(G 38)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(33 D$sky130_fd_pr__pfet_01v8__model
+ location(215 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1113)
+ param(AD 0.1869)
+ param(PS 1.37)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 10)
+ terminal(D 12)
+ terminal(B 1)
+ )
+ device(34 D$sky130_fd_pr__pfet_01v8__model$1
+ location(1965 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.0588)
+ param(PS 1.73)
+ param(PD 0.7)
+ terminal(S 10)
+ terminal(G 12)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(35 D$sky130_fd_pr__pfet_01v8__model$2
+ location(2395 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.1869)
+ param(PS 0.7)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 14)
+ terminal(D 16)
+ terminal(B 1)
+ )
+ device(36 D$sky130_fd_pr__pfet_01v8__model$1
+ location(4145 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.0588)
+ param(PS 1.73)
+ param(PD 0.7)
+ terminal(S 14)
+ terminal(G 16)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(37 D$sky130_fd_pr__pfet_01v8__model$2
+ location(4575 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.1869)
+ param(PS 0.7)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 18)
+ terminal(D 20)
+ terminal(B 1)
+ )
+ device(38 D$sky130_fd_pr__pfet_01v8__model$1
+ location(6325 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.0588)
+ param(PS 1.73)
+ param(PD 0.7)
+ terminal(S 18)
+ terminal(G 20)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(39 D$sky130_fd_pr__pfet_01v8__model$2
+ location(6755 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.1869)
+ param(PS 0.7)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 22)
+ terminal(D 24)
+ terminal(B 1)
+ )
+ device(40 D$sky130_fd_pr__pfet_01v8__model$3
+ location(8505 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.1113)
+ param(PS 1.73)
+ param(PD 1.37)
+ terminal(S 22)
+ terminal(G 24)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(41 D$sky130_fd_pr__pfet_01v8__model
+ location(215 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1113)
+ param(AD 0.1869)
+ param(PS 1.37)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 45)
+ terminal(D 32)
+ terminal(B 1)
+ )
+ device(42 D$sky130_fd_pr__pfet_01v8__model$1
+ location(1965 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.0588)
+ param(PS 1.73)
+ param(PD 0.7)
+ terminal(S 45)
+ terminal(G 32)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(43 D$sky130_fd_pr__pfet_01v8__model$2
+ location(2395 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.1869)
+ param(PS 0.7)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 48)
+ terminal(D 34)
+ terminal(B 1)
+ )
+ device(44 D$sky130_fd_pr__pfet_01v8__model$1
+ location(4145 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.0588)
+ param(PS 1.73)
+ param(PD 0.7)
+ terminal(S 48)
+ terminal(G 34)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(45 D$sky130_fd_pr__pfet_01v8__model$2
+ location(4575 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.1869)
+ param(PS 0.7)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 49)
+ terminal(D 36)
+ terminal(B 1)
+ )
+ device(46 D$sky130_fd_pr__pfet_01v8__model$1
+ location(6325 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.0588)
+ param(PS 1.73)
+ param(PD 0.7)
+ terminal(S 49)
+ terminal(G 36)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(47 D$sky130_fd_pr__pfet_01v8__model$2
+ location(6755 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.1869)
+ param(PS 0.7)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 40)
+ terminal(D 38)
+ terminal(B 1)
+ )
+ device(48 D$sky130_fd_pr__pfet_01v8__model$3
+ location(8505 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.1113)
+ param(PS 1.73)
+ param(PD 1.37)
+ terminal(S 40)
+ terminal(G 38)
+ terminal(D 1)
+ terminal(B 1)
+ )
+
+ )
+)
+
+# Reference netlist
+reference(
+
+ # Device class section
+ class(SKY130_FD_PR__PFET_01V8__MODEL MOS4)
+ class(SKY130_FD_PR__NFET_01V8__MODEL MOS4)
+
+ # Circuit section
+ # Circuits are the hierarchical building blocks of the netlist.
+ circuit(SP6TARRAY_2X4
+
+ # Nets
+ net(1 name(VSS))
+ net(2 name(VDD))
+ net(3 name('WL[0]'))
+ net(4 name('WL[1]'))
+ net(5 name('BL[0]'))
+ net(6 name('BL_N[0]'))
+ net(7 name('BL[1]'))
+ net(8 name('BL_N[1]'))
+ net(9 name('BL[2]'))
+ net(10 name('BL_N[2]'))
+ net(11 name('BL[3]'))
+ net(12 name('BL_N[3]'))
+ net(13 name(INST0X0.INST0X0.INST0X0.BIT_N))
+ net(14 name(INST0X0.INST0X0.INST0X0.BIT))
+ net(15 name(INST0X0.INST0X0.INST1X0.BIT_N))
+ net(16 name(INST0X0.INST0X0.INST1X0.BIT))
+ net(17 name(INST0X0.INST0X1.INST0X0.BIT_N))
+ net(18 name(INST0X0.INST0X1.INST0X0.BIT))
+ net(19 name(INST0X0.INST0X1.INST1X0.BIT_N))
+ net(20 name(INST0X0.INST0X1.INST1X0.BIT))
+ net(21 name(INST0X1.INST0X0.INST0X0.BIT_N))
+ net(22 name(INST0X1.INST0X0.INST0X0.BIT))
+ net(23 name(INST0X1.INST0X0.INST1X0.BIT_N))
+ net(24 name(INST0X1.INST0X0.INST1X0.BIT))
+ net(25 name(INST0X1.INST0X1.INST0X0.BIT_N))
+ net(26 name(INST0X1.INST0X1.INST0X0.BIT))
+ net(27 name(INST0X1.INST0X1.INST1X0.BIT_N))
+ net(28 name(INST0X1.INST0X1.INST1X0.BIT))
+
+ # Outgoing pins and their connections to nets
+ pin(1 name(VSS))
+ pin(2 name(VDD))
+ pin(3 name('WL[0]'))
+ pin(4 name('WL[1]'))
+ pin(5 name('BL[0]'))
+ pin(6 name('BL_N[0]'))
+ pin(7 name('BL[1]'))
+ pin(8 name('BL_N[1]'))
+ pin(9 name('BL[2]'))
+ pin(10 name('BL_N[2]'))
+ pin(11 name('BL[3]'))
+ pin(12 name('BL_N[3]'))
+
+ # Devices and their connections
+ device(1 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST0X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 14)
+ terminal(G 13)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(2 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST0X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 14)
+ terminal(D 13)
+ terminal(B 2)
+ )
+ device(3 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST0X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 14)
+ terminal(G 13)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(4 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST0X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 14)
+ terminal(D 13)
+ terminal(B 1)
+ )
+ device(5 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST0X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 14)
+ terminal(G 3)
+ terminal(D 5)
+ terminal(B 1)
+ )
+ device(6 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST0X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 13)
+ terminal(G 3)
+ terminal(D 6)
+ terminal(B 1)
+ )
+ device(7 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST1X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 16)
+ terminal(G 15)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(8 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST1X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 16)
+ terminal(D 15)
+ terminal(B 2)
+ )
+ device(9 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST1X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 16)
+ terminal(G 15)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(10 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST1X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 16)
+ terminal(D 15)
+ terminal(B 1)
+ )
+ device(11 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST1X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 16)
+ terminal(G 4)
+ terminal(D 5)
+ terminal(B 1)
+ )
+ device(12 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST1X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 15)
+ terminal(G 4)
+ terminal(D 6)
+ terminal(B 1)
+ )
+ device(13 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST0X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 18)
+ terminal(G 17)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(14 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST0X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 18)
+ terminal(D 17)
+ terminal(B 2)
+ )
+ device(15 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST0X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 18)
+ terminal(G 17)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(16 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST0X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 18)
+ terminal(D 17)
+ terminal(B 1)
+ )
+ device(17 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST0X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 18)
+ terminal(G 3)
+ terminal(D 7)
+ terminal(B 1)
+ )
+ device(18 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST0X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 17)
+ terminal(G 3)
+ terminal(D 8)
+ terminal(B 1)
+ )
+ device(19 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST1X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 20)
+ terminal(G 19)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(20 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST1X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 20)
+ terminal(D 19)
+ terminal(B 2)
+ )
+ device(21 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST1X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 20)
+ terminal(G 19)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(22 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST1X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 20)
+ terminal(D 19)
+ terminal(B 1)
+ )
+ device(23 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST1X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 20)
+ terminal(G 4)
+ terminal(D 7)
+ terminal(B 1)
+ )
+ device(24 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST1X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 19)
+ terminal(G 4)
+ terminal(D 8)
+ terminal(B 1)
+ )
+ device(25 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST0X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 22)
+ terminal(G 21)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(26 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST0X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 22)
+ terminal(D 21)
+ terminal(B 2)
+ )
+ device(27 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST0X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 22)
+ terminal(G 21)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(28 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST0X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 22)
+ terminal(D 21)
+ terminal(B 1)
+ )
+ device(29 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST0X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 22)
+ terminal(G 3)
+ terminal(D 9)
+ terminal(B 1)
+ )
+ device(30 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST0X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 21)
+ terminal(G 3)
+ terminal(D 10)
+ terminal(B 1)
+ )
+ device(31 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST1X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 24)
+ terminal(G 23)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(32 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST1X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 24)
+ terminal(D 23)
+ terminal(B 2)
+ )
+ device(33 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST1X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 24)
+ terminal(G 23)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(34 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST1X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 24)
+ terminal(D 23)
+ terminal(B 1)
+ )
+ device(35 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST1X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 24)
+ terminal(G 4)
+ terminal(D 9)
+ terminal(B 1)
+ )
+ device(36 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST1X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 23)
+ terminal(G 4)
+ terminal(D 10)
+ terminal(B 1)
+ )
+ device(37 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST0X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 26)
+ terminal(G 25)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(38 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST0X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 26)
+ terminal(D 25)
+ terminal(B 2)
+ )
+ device(39 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST0X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 26)
+ terminal(G 25)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(40 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST0X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 26)
+ terminal(D 25)
+ terminal(B 1)
+ )
+ device(41 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST0X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 26)
+ terminal(G 3)
+ terminal(D 11)
+ terminal(B 1)
+ )
+ device(42 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST0X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 25)
+ terminal(G 3)
+ terminal(D 12)
+ terminal(B 1)
+ )
+ device(43 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST1X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 28)
+ terminal(G 27)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(44 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST1X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 28)
+ terminal(D 27)
+ terminal(B 2)
+ )
+ device(45 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST1X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 28)
+ terminal(G 27)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(46 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST1X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 28)
+ terminal(D 27)
+ terminal(B 1)
+ )
+ device(47 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST1X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 28)
+ terminal(G 4)
+ terminal(D 11)
+ terminal(B 1)
+ )
+ device(48 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST1X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 27)
+ terminal(G 4)
+ terminal(D 12)
+ terminal(B 1)
+ )
+
+ )
+)
+
+# Cross reference
+xref(
+ circuit(SP6TArray_2X4 SP6TARRAY_2X4 match
+ xref(
+ net(10 14 warning)
+ net(12 13 warning)
+ net(45 16 match)
+ net(32 15 match)
+ net(16 18 match)
+ net(14 17 match)
+ net(34 20 match)
+ net(48 19 match)
+ net(20 22 match)
+ net(18 21 match)
+ net(36 24 match)
+ net(49 23 match)
+ net(24 26 match)
+ net(22 25 match)
+ net(38 28 match)
+ net(40 27 match)
+ net(2 6 match)
+ net(4 7 match)
+ net(6 9 match)
+ net(8 11 match)
+ net(3 5 match)
+ net(5 8 match)
+ net(7 10 match)
+ net(9 12 match)
+ net(1 2 match)
+ net(52 1 match)
+ net(26 3 match)
+ net(31 4 match)
+ pin(() 4 match)
+ pin(() 6 match)
+ pin(() 8 match)
+ pin(() 10 match)
+ pin(() 5 match)
+ pin(() 7 match)
+ pin(() 9 match)
+ pin(() 11 match)
+ pin(() 1 match)
+ pin(() 0 match)
+ pin(() 2 match)
+ pin(() 3 match)
+ device(5 3 match)
+ device(1 4 match)
+ device(7 5 match)
+ device(2 6 match)
+ device(11 9 match)
+ device(4 10 match)
+ device(9 11 match)
+ device(3 12 match)
+ device(6 15 match)
+ device(13 16 match)
+ device(8 17 match)
+ device(15 18 match)
+ device(12 21 match)
+ device(19 22 match)
+ device(10 23 match)
+ device(17 24 match)
+ device(14 27 match)
+ device(21 28 match)
+ device(16 29 match)
+ device(23 30 match)
+ device(20 33 match)
+ device(27 34 match)
+ device(18 35 match)
+ device(25 36 match)
+ device(22 39 match)
+ device(29 40 match)
+ device(24 41 match)
+ device(30 42 match)
+ device(28 45 match)
+ device(32 46 match)
+ device(26 47 match)
+ device(31 48 match)
+ device(34 1 match)
+ device(33 2 match)
+ device(42 7 match)
+ device(41 8 match)
+ device(35 13 match)
+ device(36 14 match)
+ device(43 19 match)
+ device(44 20 match)
+ device(37 25 match)
+ device(38 26 match)
+ device(45 31 match)
+ device(46 32 match)
+ device(39 37 match)
+ device(40 38 match)
+ device(47 43 match)
+ device(48 44 match)
+ )
+ )
+)
diff --git a/testdata/lvs/test_22b.lvsdb.3 b/testdata/lvs/test_22b.lvsdb.3
new file mode 100644
index 000000000..f2960ffe8
--- /dev/null
+++ b/testdata/lvs/test_22b.lvsdb.3
@@ -0,0 +1,2593 @@
+#%lvsdb-klayout
+
+# Layout
+layout(
+ top(SP6TArray_2X4)
+ unit(0.001)
+
+ # Layer section
+ # This section lists the mask layers (drawing or derived) and their connections.
+
+ # Mask layers
+ layer(l1)
+ layer(l2)
+ layer(l3)
+ layer(l4)
+ layer(l5 '64/20')
+ layer(l6)
+ layer(l7 '66/20')
+ layer(l8)
+ layer(l9 '67/20')
+ layer(l10)
+ layer(l11 '68/20')
+ layer(l12 '68/16')
+ layer(l13 '69/20')
+ layer(l14 '69/16')
+ layer(l15)
+ layer(l16)
+ layer(l17)
+ layer(l18)
+ layer(l19)
+ layer(l20)
+ layer(l21 '66/44')
+ layer(l22 '66/20')
+ layer(l23 '67/44')
+ layer(l24 '68/44')
+ layer(l25)
+ layer(l26)
+ layer(l27)
+
+ # Mask layer connectivity
+ connect(l1 l1)
+ connect(l2 l2 l3 l4 l6 l21)
+ connect(l3 l2 l3)
+ connect(l4 l2 l4 l5)
+ connect(l5 l4 l5)
+ connect(l6 l2 l6)
+ connect(l7 l7 l8)
+ connect(l8 l7 l8)
+ connect(l9 l9 l10 l21 l23)
+ connect(l10 l9 l10)
+ connect(l11 l11 l12 l23 l24)
+ connect(l12 l11 l12)
+ connect(l13 l13 l14 l24 l25)
+ connect(l14 l13 l14)
+ connect(l15 l15 l16 l25 l26)
+ connect(l16 l15 l16)
+ connect(l17 l17 l18 l26 l27)
+ connect(l18 l17 l18)
+ connect(l19 l19 l20 l27)
+ connect(l20 l19 l20)
+ connect(l21 l2 l9 l21 l22)
+ connect(l22 l21 l22)
+ connect(l23 l9 l11 l23)
+ connect(l24 l11 l13 l24)
+ connect(l25 l13 l15 l25)
+ connect(l26 l15 l17 l26)
+ connect(l27 l17 l19 l27)
+
+ # Global nets and connectivity
+ global(l1 vss)
+ global(l6 vss)
+
+ # Log entries
+ message(warning description('Must-connect subnets of vdd must be connected further up in the hierarchy - this is an error at chip top level') cell(SP6TArray_2X4) cat('must-connect') polygon('(-0.385,-0.305;-0.385,5.855;9.105,5.855;9.105,-0.305)'))
+
+ # Device class section
+ class(active_res RES)
+ class(poly_res RES)
+ class(sky130_fd_pr__diode_pw2nd_05v5 DIODE)
+ class(sky130_fd_pr__diode_pd2nw_05v5 DIODE)
+ class(sky130_fd_pr__nfet_01v8__model MOS4)
+ class(sky130_fd_pr__nfet_01v8_lvt__model MOS4)
+ class(sky130_fd_pr__nfet_g5v0d10v5__model MOS4)
+ class(sky130_fd_pr__pfet_01v8__model MOS4)
+ class(sky130_fd_pr__pfet_01v8_hvt__model MOS4)
+ class(sky130_fd_pr__pfet_01v8_lvt__model MOS4)
+ class(sky130_fd_pr__pfet_g5v0d10v5__model MOS4)
+
+ # Device abstracts section
+ # Device abstracts list the pin shapes of the devices.
+ device(D$sky130_fd_pr__nfet_01v8__model sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ rect(l2 (-340 -210) (265 420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ polygon(l2 (75 -210) (0 420) (105 0) (0 340) (420 0) (0 -760))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$1 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (-315 -835) (0 420) (105 0) (0 340) (420 0) (0 -760))
+ )
+ terminal(G
+ rect(l22 (-210 -75) (420 150))
+ )
+ terminal(D
+ rect(l2 (-210 75) (420 280))
+ )
+ terminal(B
+ rect(l1 (-210 -75) (420 150))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$2 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ rect(l2 (-210 -355) (420 280))
+ )
+ terminal(G
+ rect(l22 (-210 -75) (420 150))
+ )
+ terminal(D
+ polygon(l2 (-210 75) (0 340) (-105 0) (0 420) (525 0) (0 -760))
+ )
+ terminal(B
+ rect(l1 (-210 -75) (420 150))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$3 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (180 -550) (0 340) (-105 0) (0 420) (525 0) (0 -760))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (-340 -210) (265 420))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$4 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (-600 -210) (0 760) (420 0) (0 -340) (105 0) (0 -420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (280 420))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$5 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ rect(l2 (-355 -210) (280 420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ polygon(l2 (75 -210) (0 420) (105 0) (0 340) (420 0) (0 -760))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$6 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (-210 -835) (0 760) (420 0) (0 -340) (105 0) (0 -420))
+ )
+ terminal(G
+ rect(l22 (-210 -75) (420 150))
+ )
+ terminal(D
+ rect(l2 (-210 75) (420 280))
+ )
+ terminal(B
+ rect(l1 (-210 -75) (420 150))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$7 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ rect(l2 (-210 -355) (420 280))
+ )
+ terminal(G
+ rect(l22 (-210 -75) (420 150))
+ )
+ terminal(D
+ polygon(l2 (-210 75) (0 760) (525 0) (0 -420) (-105 0) (0 -340))
+ )
+ terminal(B
+ rect(l1 (-210 -75) (420 150))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$8 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (-600 -550) (0 760) (525 0) (0 -420) (-105 0) (0 -340))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (280 420))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$9 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (180 -550) (0 340) (-105 0) (0 420) (525 0) (0 -760))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (-355 -210) (280 420))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$10 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (-600 -210) (0 760) (420 0) (0 -340) (105 0) (0 -420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (265 420))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__nfet_01v8__model$11 sky130_fd_pr__nfet_01v8__model
+ terminal(S
+ polygon(l2 (-600 -550) (0 760) (525 0) (0 -420) (-105 0) (0 -340))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (265 420))
+ )
+ terminal(B
+ rect(l1 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__pfet_01v8__model sky130_fd_pr__pfet_01v8__model
+ terminal(S
+ rect(l2 (-340 -210) (265 420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (445 420))
+ )
+ terminal(B
+ rect(l5 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__pfet_01v8__model$1 sky130_fd_pr__pfet_01v8__model
+ terminal(S
+ rect(l2 (-520 -210) (445 420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (280 420))
+ )
+ terminal(B
+ rect(l5 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__pfet_01v8__model$2 sky130_fd_pr__pfet_01v8__model
+ terminal(S
+ rect(l2 (-355 -210) (280 420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (445 420))
+ )
+ terminal(B
+ rect(l5 (-75 -210) (150 420))
+ )
+ )
+ device(D$sky130_fd_pr__pfet_01v8__model$3 sky130_fd_pr__pfet_01v8__model
+ terminal(S
+ rect(l2 (-520 -210) (445 420))
+ )
+ terminal(G
+ rect(l22 (-75 -210) (150 420))
+ )
+ terminal(D
+ rect(l2 (75 -210) (265 420))
+ )
+ terminal(B
+ rect(l5 (-75 -210) (150 420))
+ )
+ )
+
+ # Circuit section
+ # Circuits are the hierarchical building blocks of the netlist.
+ circuit(SP6TArray_2X4
+
+ # Circuit boundary
+ rect((-385 -305) (9490 6160))
+
+ # Nets with their geometries
+ net(1 name(vdd)
+ rect(l2 (-205 -125) (9130 250))
+ rect(l2 (-9050 270) (265 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (265 420))
+ rect(l2 (-9050 4610) (9130 250))
+ rect(l2 (-9050 -940) (265 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (265 420))
+ rect(l4 (-9050 -5280) (9130 250))
+ rect(l4 (-9130 5300) (9130 250))
+ rect(l5 (-7130 -5980) (2950 1300))
+ rect(l5 (-5130 -1300) (2950 1300))
+ rect(l5 (1410 -1300) (2950 1300))
+ rect(l5 (-770 -1300) (2950 1300))
+ rect(l5 (-9490 3560) (2950 1300))
+ rect(l5 (-770 -1300) (2950 1300))
+ rect(l5 (-770 -1300) (2950 1300))
+ rect(l5 (-770 -1300) (2950 1300))
+ rect(l9 (-9270 -5940) (2510 170))
+ rect(l9 (-330 -170) (2510 170))
+ rect(l9 (-330 -170) (2510 170))
+ rect(l9 (-330 -170) (2510 170))
+ rect(l9 (-8970 0) (170 685))
+ rect(l9 (2010 -685) (170 685))
+ rect(l9 (-170 -685) (170 685))
+ rect(l9 (2010 -685) (170 685))
+ rect(l9 (-170 -685) (170 685))
+ rect(l9 (2010 -685) (170 685))
+ rect(l9 (-170 -685) (170 685))
+ rect(l9 (2010 -685) (170 685))
+ rect(l9 (-8890 4010) (170 685))
+ rect(l9 (-250 0) (2510 170))
+ rect(l9 (-330 -170) (2510 170))
+ rect(l9 (-2430 -855) (170 685))
+ rect(l9 (-170 -685) (170 685))
+ rect(l9 (1930 0) (2510 170))
+ rect(l9 (-2430 -855) (170 685))
+ rect(l9 (-170 -685) (170 685))
+ rect(l9 (1930 0) (2510 170))
+ rect(l9 (-2430 -855) (170 685))
+ rect(l9 (-170 -685) (170 685))
+ rect(l9 (2010 -685) (170 685))
+ rect(l11 (-8935 -5625) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-8980 5230) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l13 (-9010 -5840) (2500 260))
+ rect(l13 (-2500 -260) (9040 260))
+ rect(l13 (-9040 -260) (2500 260))
+ rect(l13 (-2500 -260) (4680 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-320 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-2500 -260) (4680 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-9040 5290) (4680 260))
+ rect(l13 (-4680 -260) (9040 260))
+ rect(l13 (-9040 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-320 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-320 -260) (2500 260))
+ rect(l13 (-2500 -260) (4680 260))
+ rect(l13 (-4680 -260) (2500 260))
+ rect(l13 (-320 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l14 (-9040 -5810) (4680 260))
+ rect(l14 (-4680 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-2500 -260) (9040 260))
+ rect(l14 (-6860 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-320 -260) (2500 260))
+ rect(l14 (-2500 -260) (4680 260))
+ rect(l14 (-4680 -260) (2500 260))
+ rect(l14 (-320 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-4520 -130) (0 0))
+ rect(l14 (-4520 5420) (9040 260))
+ rect(l14 (-9040 -260) (4680 260))
+ rect(l14 (-4680 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-320 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-320 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-2500 -260) (4680 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-4520 -130) (0 0))
+ rect(l21 (-4445 -5635) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-8890 435) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-8890 4775) (170 170))
+ rect(l21 (-170 -775) (170 170))
+ rect(l21 (2010 435) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -775) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 435) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -775) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 435) (170 170))
+ rect(l21 (-170 -775) (170 170))
+ rect(l21 (-170 435) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -775) (170 170))
+ rect(l23 (-8890 -5115) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-8890 5380) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l24 (-8880 -5710) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-8870 5400) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ )
+ net(2 name('bl[0]')
+ rect(l2 (395 2635) (420 280))
+ polygon(l9 (-295 -305) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ polygon(l9 (-170 0) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ rect(l11 (-260 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -290) (230 2920))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -2920) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -2920) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-25 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-230 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(3 name('bl_n[0]')
+ rect(l2 (1365 2635) (420 280))
+ polygon(l9 (-295 -305) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ polygon(l9 (-170 0) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ rect(l11 (-140 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -2920) (230 5550))
+ rect(l11 (-230 -2920) (230 2920))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -2920) (230 5550))
+ rect(l12 (-230 -2920) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-145 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-110 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(4 name('bl[1]')
+ rect(l2 (2575 2635) (420 280))
+ polygon(l9 (-295 -305) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ polygon(l9 (-170 0) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ rect(l11 (-260 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -2920) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -2920) (230 2920))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -2920) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -2920) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-25 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-230 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(5 name('bl_n[1]')
+ rect(l2 (3545 2635) (420 280))
+ polygon(l9 (-295 -305) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ polygon(l9 (-170 0) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ rect(l11 (-140 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -2920) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -2920) (230 2920))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -2920) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -2920) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-145 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-110 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(6 name('bl[2]')
+ rect(l2 (4755 2635) (420 280))
+ polygon(l9 (-295 -305) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ polygon(l9 (-170 0) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ rect(l11 (-260 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -2920) (230 5550))
+ rect(l11 (-230 -2920) (230 2920))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -2920) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -2920) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-25 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-230 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(7 name('bl_n[2]')
+ rect(l2 (5725 2635) (420 280))
+ polygon(l9 (-295 -305) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ polygon(l9 (-170 0) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ rect(l11 (-140 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -290) (230 2920))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -290) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-145 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-110 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(8 name('bl[3]')
+ rect(l2 (6935 2635) (420 280))
+ polygon(l9 (-295 -305) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ polygon(l9 (-170 0) (0 80) (-60 0) (0 170) (60 0) (0 80) (170 0) (0 -330))
+ rect(l11 (-260 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -2920) (230 5550))
+ rect(l11 (-230 -2920) (230 2920))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -290) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-25 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-230 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(9 name('bl_n[3]')
+ rect(l2 (7905 2635) (420 280))
+ polygon(l9 (-295 -305) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ polygon(l9 (-170 0) (0 330) (170 0) (0 -80) (60 0) (0 -170) (-60 0) (0 -80))
+ rect(l11 (-140 -2610) (230 5550))
+ rect(l11 (-230 -5550) (230 5550))
+ rect(l11 (-230 -5550) (230 2920))
+ rect(l11 (-230 -2920) (230 5550))
+ rect(l11 (-230 -2920) (230 2920))
+ rect(l12 (-230 -5550) (230 2920))
+ rect(l12 (-230 -2920) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -5550) (230 5550))
+ rect(l12 (-230 -2920) (230 2920))
+ rect(l12 (-115 -2775) (0 0))
+ rect(l21 (-145 -85) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l23 (-110 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ )
+ net(10
+ rect(l2 (1445 395) (445 420))
+ polygon(l2 (-525 910) (0 760) (420 0) (0 -340) (105 0) (0 -420))
+ polygon(l9 (-405 -1280) (0 560) (-245 0) (0 170) (245 0) (0 840) (170 0) (0 -1570))
+ rect(l21 (-335 560) (170 170))
+ rect(l21 (-5 -650) (170 170))
+ rect(l21 (-170 1070) (170 170))
+ rect(l22 (-1365 -980) (950 150))
+ rect(l22 (-1100 -840) (150 2010))
+ rect(l22 (950 -1320) (330 270))
+ )
+ net(11
+ rect(l7 (290 955) (950 150))
+ rect(l7 (-1100 -840) (150 2010))
+ rect(l7 (950 -1320) (330 270))
+ )
+ net(12
+ polygon(l2 (290 1725) (0 420) (105 0) (0 340) (420 0) (0 -760))
+ rect(l2 (-525 -1330) (445 420))
+ polygon(l9 (-210 -370) (0 1570) (170 0) (0 -480) (245 0) (0 -170) (-245 0) (0 -920))
+ rect(l21 (-170 1320) (170 170))
+ rect(l21 (-170 -1410) (170 170))
+ rect(l21 (-5 670) (170 170))
+ rect(l22 (-250 -220) (330 270))
+ rect(l22 (0 -150) (950 150))
+ rect(l22 (0 -1320) (150 2010))
+ )
+ net(13
+ rect(l7 (940 1435) (950 150))
+ rect(l7 (-1280 -270) (330 270))
+ rect(l7 (950 -1320) (150 2010))
+ )
+ net(14
+ polygon(l2 (3545 1725) (0 760) (420 0) (0 -340) (105 0) (0 -420))
+ rect(l2 (-445 -1330) (445 420))
+ polygon(l9 (-405 -370) (0 560) (-245 0) (0 170) (245 0) (0 840) (170 0) (0 -1570))
+ rect(l21 (-335 560) (170 170))
+ rect(l21 (-5 590) (170 170))
+ rect(l21 (-170 -1410) (170 170))
+ rect(l22 (-1365 260) (950 150))
+ rect(l22 (-1100 -840) (150 2010))
+ rect(l22 (950 -1320) (330 270))
+ )
+ net(15
+ rect(l7 (2470 955) (950 150))
+ rect(l7 (-1100 -840) (150 2010))
+ rect(l7 (950 -1320) (330 270))
+ )
+ net(16
+ rect(l2 (2470 395) (445 420))
+ polygon(l2 (-445 910) (0 420) (105 0) (0 340) (420 0) (0 -760))
+ polygon(l9 (-290 -1280) (0 1570) (170 0) (0 -480) (245 0) (0 -170) (-245 0) (0 -920))
+ rect(l21 (-170 80) (170 170))
+ rect(l21 (-170 1070) (170 170))
+ rect(l21 (-5 -570) (170 170))
+ rect(l22 (-250 -220) (330 270))
+ rect(l22 (0 -150) (950 150))
+ rect(l22 (0 -1320) (150 2010))
+ )
+ net(17
+ rect(l7 (3120 1435) (950 150))
+ rect(l7 (-1280 -270) (330 270))
+ rect(l7 (950 -1320) (150 2010))
+ )
+ net(18
+ rect(l2 (5805 395) (445 420))
+ polygon(l2 (-525 910) (0 760) (420 0) (0 -340) (105 0) (0 -420))
+ polygon(l9 (-405 -1280) (0 560) (-245 0) (0 170) (245 0) (0 840) (170 0) (0 -1570))
+ rect(l21 (-335 560) (170 170))
+ rect(l21 (-5 -650) (170 170))
+ rect(l21 (-170 1070) (170 170))
+ rect(l22 (-1365 -980) (950 150))
+ rect(l22 (-1100 -840) (150 2010))
+ rect(l22 (950 -1320) (330 270))
+ )
+ net(19
+ rect(l7 (4650 955) (950 150))
+ rect(l7 (-1100 -840) (150 2010))
+ rect(l7 (950 -1320) (330 270))
+ )
+ net(20
+ polygon(l2 (4650 1725) (0 420) (105 0) (0 340) (420 0) (0 -760))
+ rect(l2 (-525 -1330) (445 420))
+ polygon(l9 (-210 -370) (0 1570) (170 0) (0 -480) (245 0) (0 -170) (-245 0) (0 -920))
+ rect(l21 (-170 1320) (170 170))
+ rect(l21 (-170 -1410) (170 170))
+ rect(l21 (-5 670) (170 170))
+ rect(l22 (-250 -220) (330 270))
+ rect(l22 (0 -150) (950 150))
+ rect(l22 (0 -1320) (150 2010))
+ )
+ net(21
+ rect(l7 (5300 1435) (950 150))
+ rect(l7 (-1280 -270) (330 270))
+ rect(l7 (950 -1320) (150 2010))
+ )
+ net(22
+ rect(l2 (7985 395) (445 420))
+ polygon(l2 (-525 910) (0 760) (420 0) (0 -340) (105 0) (0 -420))
+ polygon(l9 (-405 -1280) (0 560) (-245 0) (0 170) (245 0) (0 840) (170 0) (0 -1570))
+ rect(l21 (-335 560) (170 170))
+ rect(l21 (-5 -650) (170 170))
+ rect(l21 (-170 1070) (170 170))
+ rect(l22 (-1365 -980) (950 150))
+ rect(l22 (-1100 -840) (150 2010))
+ rect(l22 (950 -1320) (330 270))
+ )
+ net(23
+ rect(l7 (6830 955) (950 150))
+ rect(l7 (-1100 -840) (150 2010))
+ rect(l7 (950 -1320) (330 270))
+ )
+ net(24
+ polygon(l2 (6830 1725) (0 420) (105 0) (0 340) (420 0) (0 -760))
+ rect(l2 (-525 -1330) (445 420))
+ polygon(l9 (-210 -370) (0 1570) (170 0) (0 -480) (245 0) (0 -170) (-245 0) (0 -920))
+ rect(l21 (-170 1320) (170 170))
+ rect(l21 (-170 -1410) (170 170))
+ rect(l21 (-5 670) (170 170))
+ rect(l22 (-250 -220) (330 270))
+ rect(l22 (0 -150) (950 150))
+ rect(l22 (0 -1320) (150 2010))
+ )
+ net(25
+ rect(l7 (7480 1435) (950 150))
+ rect(l7 (-1280 -270) (330 270))
+ rect(l7 (950 -1320) (150 2010))
+ )
+ net(26 name('wl[0]')
+ rect(l9 (1005 2135) (170 500))
+ rect(l9 (2010 -500) (170 500))
+ rect(l9 (2010 -500) (170 500))
+ rect(l9 (2010 -500) (170 500))
+ polygon(l11 (-6755 -880) (0 320) (15 0) (0 290) (230 0) (0 -290) (15 0) (0 -320))
+ polygon(l11 (1920 0) (0 320) (15 0) (0 290) (230 0) (0 -290) (15 0) (0 -320))
+ polygon(l11 (1920 0) (0 320) (15 0) (0 290) (230 0) (0 -290) (15 0) (0 -320))
+ polygon(l11 (1920 0) (0 320) (15 0) (0 290) (230 0) (0 -290) (15 0) (0 -320))
+ rect(l13 (-7760 30) (8720 260))
+ rect(l13 (-8720 -260) (2180 260))
+ rect(l13 (-2180 -260) (2180 260))
+ rect(l13 (-2180 -260) (4360 260))
+ rect(l13 (-2180 -260) (2180 260))
+ rect(l13 (-2180 -260) (2180 260))
+ rect(l13 (0 -260) (4360 260))
+ rect(l13 (-4360 -260) (2180 260))
+ rect(l13 (-2180 -260) (2180 260))
+ rect(l13 (0 -260) (2180 260))
+ rect(l13 (-2180 -260) (2180 260))
+ rect(l14 (-8720 -260) (2180 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l14 (-2180 -260) (4360 260))
+ rect(l14 (-4360 -260) (8720 260))
+ rect(l14 (-6540 -260) (2180 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l14 (0 -260) (2180 260))
+ rect(l14 (-2180 -130) (0 0))
+ rect(l14 (0 -130) (2180 260))
+ rect(l14 (-2180 -260) (4360 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l21 (-7715 340) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ polygon(l22 (-6760 -250) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ polygon(l22 (1910 0) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ polygon(l22 (1910 0) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ polygon(l22 (1910 0) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ rect(l23 (-6760 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l24 (-6700 -465) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ )
+ net(27
+ polygon(l7 (955 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ )
+ net(28
+ polygon(l7 (7495 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ )
+ net(29
+ polygon(l7 (3135 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ )
+ net(30
+ polygon(l7 (5315 2305) (0 180) (-690 0) (0 150) (1650 0) (0 -150) (-690 0) (0 -180))
+ )
+ net(31 name('wl[1]')
+ rect(l9 (1005 2915) (170 500))
+ rect(l9 (2010 -500) (170 500))
+ rect(l9 (2010 -500) (170 500))
+ rect(l9 (2010 -500) (170 500))
+ polygon(l11 (-6740 -230) (0 290) (-15 0) (0 320) (260 0) (0 -320) (-15 0) (0 -290))
+ polygon(l11 (1950 0) (0 290) (-15 0) (0 320) (260 0) (0 -320) (-15 0) (0 -290))
+ polygon(l11 (1950 0) (0 290) (-15 0) (0 320) (260 0) (0 -320) (-15 0) (0 -290))
+ polygon(l11 (1950 0) (0 290) (-15 0) (0 320) (260 0) (0 -320) (-15 0) (0 -290))
+ rect(l13 (-7745 320) (2180 260))
+ rect(l13 (-2180 -260) (4360 260))
+ rect(l13 (-4360 -260) (8720 260))
+ rect(l13 (-8720 -260) (2180 260))
+ rect(l13 (0 -260) (2180 260))
+ rect(l13 (-2180 -260) (2180 260))
+ rect(l13 (0 -260) (2180 260))
+ rect(l13 (-2180 -260) (4360 260))
+ rect(l13 (-4360 -260) (2180 260))
+ rect(l13 (0 -260) (2180 260))
+ rect(l13 (-2180 -260) (2180 260))
+ rect(l14 (-8720 -260) (2180 260))
+ rect(l14 (-2180 -260) (8720 260))
+ rect(l14 (-8720 -260) (4360 260))
+ rect(l14 (-4360 -260) (2180 260))
+ rect(l14 (0 -260) (2180 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l14 (0 -130) (0 0))
+ rect(l14 (0 -130) (2180 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l14 (-2180 -260) (4360 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l14 (-2180 -260) (2180 260))
+ rect(l21 (-7715 -770) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ polygon(l22 (-7450 -250) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ polygon(l22 (530 0) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ polygon(l22 (530 0) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ polygon(l22 (530 0) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ rect(l23 (-7450 330) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l24 (-6700 145) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ )
+ net(32
+ 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))
+ rect(l21 (-170 80) (170 170))
+ rect(l21 (-5 230) (170 170))
+ rect(l21 (-335 670) (170 170))
+ rect(l22 (-85 -1060) (330 270))
+ rect(l22 (0 -270) (950 150))
+ rect(l22 (0 -840) (150 2010))
+ )
+ net(33
+ rect(l7 (940 3965) (950 150))
+ rect(l7 (-1280 -150) (330 270))
+ rect(l7 (950 -960) (150 2010))
+ )
+ net(34
+ 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))
+ rect(l21 (-170 80) (170 170))
+ rect(l21 (-5 230) (170 170))
+ rect(l21 (-335 670) (170 170))
+ rect(l22 (-85 -1060) (330 270))
+ rect(l22 (0 -270) (950 150))
+ rect(l22 (0 -840) (150 2010))
+ )
+ net(35
+ rect(l7 (3120 3965) (950 150))
+ rect(l7 (-1280 -150) (330 270))
+ rect(l7 (950 -960) (150 2010))
+ )
+ net(36
+ 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))
+ rect(l21 (-170 80) (170 170))
+ rect(l21 (-5 230) (170 170))
+ rect(l21 (-335 670) (170 170))
+ rect(l22 (-85 -1060) (330 270))
+ rect(l22 (0 -270) (950 150))
+ rect(l22 (0 -840) (150 2010))
+ )
+ net(37
+ rect(l7 (5300 3965) (950 150))
+ rect(l7 (-1280 -150) (330 270))
+ rect(l7 (950 -960) (150 2010))
+ )
+ net(38
+ 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))
+ rect(l21 (-170 80) (170 170))
+ rect(l21 (-5 230) (170 170))
+ rect(l21 (-335 670) (170 170))
+ rect(l22 (-85 -1060) (330 270))
+ rect(l22 (0 -270) (950 150))
+ rect(l22 (0 -840) (150 2010))
+ )
+ net(39
+ rect(l7 (7480 3965) (950 150))
+ rect(l7 (-1280 -150) (330 270))
+ rect(l7 (950 -960) (150 2010))
+ )
+ net(40
+ 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))
+ rect(l21 (-170 80) (170 170))
+ rect(l21 (-335 590) (170 170))
+ rect(l21 (-5 310) (170 170))
+ rect(l22 (-1365 -580) (950 150))
+ rect(l22 (-1100 -1320) (150 2010))
+ rect(l22 (950 -960) (330 270))
+ )
+ net(41
+ polygon(l7 (265 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ )
+ net(42
+ polygon(l7 (6805 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ )
+ net(43
+ polygon(l7 (2445 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ )
+ net(44
+ polygon(l7 (4625 2915) (0 150) (690 0) (0 180) (270 0) (0 -180) (690 0) (0 -150))
+ )
+ net(45
+ 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))
+ rect(l21 (-335 840) (170 170))
+ rect(l21 (-5 -930) (170 170))
+ rect(l21 (-170 1070) (170 170))
+ rect(l22 (-1365 -580) (950 150))
+ rect(l22 (-1100 -1320) (150 2010))
+ rect(l22 (950 -960) (330 270))
+ )
+ net(46
+ rect(l7 (290 4445) (950 150))
+ rect(l7 (-1100 -1320) (150 2010))
+ rect(l7 (950 -960) (330 270))
+ )
+ net(47
+ rect(l7 (2470 4445) (950 150))
+ rect(l7 (-1100 -1320) (150 2010))
+ rect(l7 (950 -960) (330 270))
+ )
+ net(48
+ 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))
+ rect(l21 (-335 840) (170 170))
+ rect(l21 (-5 -930) (170 170))
+ rect(l21 (-170 1070) (170 170))
+ rect(l22 (-1365 -580) (950 150))
+ rect(l22 (-1100 -1320) (150 2010))
+ rect(l22 (950 -960) (330 270))
+ )
+ net(49
+ 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))
+ rect(l21 (-335 840) (170 170))
+ rect(l21 (-5 -930) (170 170))
+ rect(l21 (-170 1070) (170 170))
+ rect(l22 (-1365 -580) (950 150))
+ rect(l22 (-1100 -1320) (150 2010))
+ rect(l22 (950 -960) (330 270))
+ )
+ net(50
+ rect(l7 (4650 4445) (950 150))
+ rect(l7 (-1100 -1320) (150 2010))
+ rect(l7 (950 -960) (330 270))
+ )
+ net(51
+ rect(l7 (6830 4445) (950 150))
+ rect(l7 (-1100 -1320) (150 2010))
+ rect(l7 (950 -960) (330 270))
+ )
+ net(52 name(vss)
+ rect(l2 (-125 1725) (265 420))
+ rect(l2 (-265 270) (250 720))
+ rect(l2 (1915 -1410) (280 420))
+ rect(l2 (-265 270) (250 720))
+ rect(l2 (1915 -1410) (280 420))
+ rect(l2 (-265 270) (250 720))
+ rect(l2 (1915 -1410) (280 420))
+ rect(l2 (-265 270) (250 720))
+ rect(l2 (1915 -1410) (265 420))
+ rect(l2 (-250 270) (250 720))
+ rect(l2 (-8970 270) (265 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (280 420))
+ rect(l2 (1900 -420) (265 420))
+ rect(l6 (-8970 -1410) (250 720))
+ rect(l6 (1930 -720) (250 720))
+ rect(l6 (1930 -720) (250 720))
+ rect(l6 (1930 -720) (250 720))
+ rect(l6 (1930 -720) (250 720))
+ rect(l9 (-8930 -1365) (170 1170))
+ rect(l9 (-170 -330) (170 1170))
+ rect(l9 (2010 -2010) (170 1170))
+ rect(l9 (-170 -1170) (170 1170))
+ rect(l9 (-170 -330) (170 1170))
+ rect(l9 (-170 -1170) (170 1170))
+ rect(l9 (2010 -2010) (170 1170))
+ rect(l9 (-170 -1170) (170 1170))
+ rect(l9 (-170 -330) (170 1170))
+ rect(l9 (-170 -1170) (170 1170))
+ rect(l9 (2010 -2010) (170 1170))
+ rect(l9 (-170 -1170) (170 1170))
+ rect(l9 (-170 -330) (170 1170))
+ rect(l9 (-170 -1170) (170 1170))
+ rect(l9 (2010 -1170) (170 1170))
+ rect(l9 (-170 -2010) (170 1170))
+ rect(l11 (-8935 -325) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l11 (1920 -320) (260 320))
+ rect(l11 (-260 -320) (260 320))
+ rect(l13 (-9010 -290) (2500 260))
+ rect(l13 (-2500 -260) (9040 260))
+ rect(l13 (-9040 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-2500 -260) (4680 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-320 -260) (2500 260))
+ rect(l13 (-2500 -260) (4680 260))
+ rect(l13 (-4680 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-320 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l13 (-2500 -260) (2500 260))
+ rect(l14 (-9040 -260) (2500 260))
+ rect(l14 (-2500 -260) (4680 260))
+ rect(l14 (-4680 -260) (9040 260))
+ rect(l14 (-9040 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-320 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-320 -260) (4680 260))
+ rect(l14 (-4680 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-2340 -130) (0 0))
+ rect(l14 (2020 -130) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l14 (-2500 -260) (2500 260))
+ rect(l21 (-8965 -1055) (170 170))
+ rect(l21 (-170 670) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -1010) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 670) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -1010) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 670) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -1010) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 670) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -1010) (170 170))
+ rect(l21 (-170 670) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (-8890 670) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l21 (-170 -170) (170 170))
+ rect(l21 (2010 -170) (170 170))
+ rect(l23 (-8890 -1010) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l23 (2010 -170) (170 170))
+ rect(l23 (-170 -170) (170 170))
+ rect(l24 (-8880 -160) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ rect(l24 (2030 -150) (150 150))
+ rect(l24 (-150 -150) (150 150))
+ )
+
+ # Devices and their connections
+ device(1 D$sky130_fd_pr__nfet_01v8__model
+ location(215 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1113)
+ param(AD 0.18165)
+ param(PS 1.37)
+ param(PD 1.285)
+ terminal(S 52)
+ terminal(G 10)
+ terminal(D 12)
+ terminal(B 52)
+ )
+ device(2 D$sky130_fd_pr__nfet_01v8__model$1
+ location(605 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 12)
+ terminal(G 26)
+ terminal(D 2)
+ terminal(B 52)
+ )
+ device(3 D$sky130_fd_pr__nfet_01v8__model$2
+ location(605 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 2)
+ terminal(G 31)
+ terminal(D 32)
+ terminal(B 52)
+ )
+ device(4 D$sky130_fd_pr__nfet_01v8__model$3
+ location(215 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.1113)
+ param(PS 1.285)
+ param(PD 1.37)
+ terminal(S 32)
+ terminal(G 45)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(5 D$sky130_fd_pr__nfet_01v8__model$4
+ location(1965 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 10)
+ terminal(G 12)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(6 D$sky130_fd_pr__nfet_01v8__model$5
+ location(2395 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 52)
+ terminal(G 14)
+ terminal(D 16)
+ terminal(B 52)
+ )
+ device(7 D$sky130_fd_pr__nfet_01v8__model$6
+ location(1575 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 10)
+ terminal(G 26)
+ terminal(D 3)
+ terminal(B 52)
+ )
+ device(8 D$sky130_fd_pr__nfet_01v8__model$1
+ location(2785 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 16)
+ terminal(G 26)
+ terminal(D 4)
+ terminal(B 52)
+ )
+ device(9 D$sky130_fd_pr__nfet_01v8__model$7
+ location(1575 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 3)
+ terminal(G 31)
+ terminal(D 45)
+ terminal(B 52)
+ )
+ device(10 D$sky130_fd_pr__nfet_01v8__model$2
+ location(2785 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 4)
+ terminal(G 31)
+ terminal(D 34)
+ terminal(B 52)
+ )
+ device(11 D$sky130_fd_pr__nfet_01v8__model$8
+ location(1965 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 45)
+ terminal(G 32)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(12 D$sky130_fd_pr__nfet_01v8__model$9
+ location(2395 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 34)
+ terminal(G 48)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(13 D$sky130_fd_pr__nfet_01v8__model$4
+ location(4145 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 14)
+ terminal(G 16)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(14 D$sky130_fd_pr__nfet_01v8__model$5
+ location(4575 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 52)
+ terminal(G 18)
+ terminal(D 20)
+ terminal(B 52)
+ )
+ device(15 D$sky130_fd_pr__nfet_01v8__model$6
+ location(3755 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 14)
+ terminal(G 26)
+ terminal(D 5)
+ terminal(B 52)
+ )
+ device(16 D$sky130_fd_pr__nfet_01v8__model$1
+ location(4965 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 20)
+ terminal(G 26)
+ terminal(D 6)
+ terminal(B 52)
+ )
+ device(17 D$sky130_fd_pr__nfet_01v8__model$7
+ location(3755 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 5)
+ terminal(G 31)
+ terminal(D 48)
+ terminal(B 52)
+ )
+ device(18 D$sky130_fd_pr__nfet_01v8__model$2
+ location(4965 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 6)
+ terminal(G 31)
+ terminal(D 36)
+ terminal(B 52)
+ )
+ device(19 D$sky130_fd_pr__nfet_01v8__model$8
+ location(4145 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 48)
+ terminal(G 34)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(20 D$sky130_fd_pr__nfet_01v8__model$9
+ location(4575 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 36)
+ terminal(G 49)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(21 D$sky130_fd_pr__nfet_01v8__model$4
+ location(6325 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 18)
+ terminal(G 20)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(22 D$sky130_fd_pr__nfet_01v8__model$5
+ location(6755 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 52)
+ terminal(G 22)
+ terminal(D 24)
+ terminal(B 52)
+ )
+ device(23 D$sky130_fd_pr__nfet_01v8__model$6
+ location(5935 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 18)
+ terminal(G 26)
+ terminal(D 7)
+ terminal(B 52)
+ )
+ device(24 D$sky130_fd_pr__nfet_01v8__model$1
+ location(7145 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 24)
+ terminal(G 26)
+ terminal(D 8)
+ terminal(B 52)
+ )
+ device(25 D$sky130_fd_pr__nfet_01v8__model$7
+ location(5935 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 7)
+ terminal(G 31)
+ terminal(D 49)
+ terminal(B 52)
+ )
+ device(26 D$sky130_fd_pr__nfet_01v8__model$2
+ location(7145 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 8)
+ terminal(G 31)
+ terminal(D 38)
+ terminal(B 52)
+ )
+ device(27 D$sky130_fd_pr__nfet_01v8__model$8
+ location(6325 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 49)
+ terminal(G 36)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(28 D$sky130_fd_pr__nfet_01v8__model$9
+ location(6755 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 38)
+ terminal(G 40)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(29 D$sky130_fd_pr__nfet_01v8__model$10
+ location(8505 1935)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.1113)
+ param(PS 1.285)
+ param(PD 1.37)
+ terminal(S 22)
+ terminal(G 24)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(30 D$sky130_fd_pr__nfet_01v8__model$6
+ location(8115 2560)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.0588)
+ param(PS 1.285)
+ param(PD 0.7)
+ terminal(S 22)
+ terminal(G 26)
+ terminal(D 9)
+ terminal(B 52)
+ )
+ device(31 D$sky130_fd_pr__nfet_01v8__model$7
+ location(8115 2990)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.18165)
+ param(PS 0.7)
+ param(PD 1.285)
+ terminal(S 9)
+ terminal(G 31)
+ terminal(D 40)
+ terminal(B 52)
+ )
+ device(32 D$sky130_fd_pr__nfet_01v8__model$11
+ location(8505 3615)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.18165)
+ param(AD 0.1113)
+ param(PS 1.285)
+ param(PD 1.37)
+ terminal(S 40)
+ terminal(G 38)
+ terminal(D 52)
+ terminal(B 52)
+ )
+ device(33 D$sky130_fd_pr__pfet_01v8__model
+ location(215 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1113)
+ param(AD 0.1869)
+ param(PS 1.37)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 10)
+ terminal(D 12)
+ terminal(B 1)
+ )
+ device(34 D$sky130_fd_pr__pfet_01v8__model$1
+ location(1965 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.0588)
+ param(PS 1.73)
+ param(PD 0.7)
+ terminal(S 10)
+ terminal(G 12)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(35 D$sky130_fd_pr__pfet_01v8__model$2
+ location(2395 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.1869)
+ param(PS 0.7)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 14)
+ terminal(D 16)
+ terminal(B 1)
+ )
+ device(36 D$sky130_fd_pr__pfet_01v8__model$1
+ location(4145 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.0588)
+ param(PS 1.73)
+ param(PD 0.7)
+ terminal(S 14)
+ terminal(G 16)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(37 D$sky130_fd_pr__pfet_01v8__model$2
+ location(4575 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.1869)
+ param(PS 0.7)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 18)
+ terminal(D 20)
+ terminal(B 1)
+ )
+ device(38 D$sky130_fd_pr__pfet_01v8__model$1
+ location(6325 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.0588)
+ param(PS 1.73)
+ param(PD 0.7)
+ terminal(S 18)
+ terminal(G 20)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(39 D$sky130_fd_pr__pfet_01v8__model$2
+ location(6755 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.1869)
+ param(PS 0.7)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 22)
+ terminal(D 24)
+ terminal(B 1)
+ )
+ device(40 D$sky130_fd_pr__pfet_01v8__model$3
+ location(8505 605)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.1113)
+ param(PS 1.73)
+ param(PD 1.37)
+ terminal(S 22)
+ terminal(G 24)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(41 D$sky130_fd_pr__pfet_01v8__model
+ location(215 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1113)
+ param(AD 0.1869)
+ param(PS 1.37)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 45)
+ terminal(D 32)
+ terminal(B 1)
+ )
+ device(42 D$sky130_fd_pr__pfet_01v8__model$1
+ location(1965 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.0588)
+ param(PS 1.73)
+ param(PD 0.7)
+ terminal(S 45)
+ terminal(G 32)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(43 D$sky130_fd_pr__pfet_01v8__model$2
+ location(2395 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.1869)
+ param(PS 0.7)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 48)
+ terminal(D 34)
+ terminal(B 1)
+ )
+ device(44 D$sky130_fd_pr__pfet_01v8__model$1
+ location(4145 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.0588)
+ param(PS 1.73)
+ param(PD 0.7)
+ terminal(S 48)
+ terminal(G 34)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(45 D$sky130_fd_pr__pfet_01v8__model$2
+ location(4575 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.1869)
+ param(PS 0.7)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 49)
+ terminal(D 36)
+ terminal(B 1)
+ )
+ device(46 D$sky130_fd_pr__pfet_01v8__model$1
+ location(6325 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.0588)
+ param(PS 1.73)
+ param(PD 0.7)
+ terminal(S 49)
+ terminal(G 36)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(47 D$sky130_fd_pr__pfet_01v8__model$2
+ location(6755 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.0588)
+ param(AD 0.1869)
+ param(PS 0.7)
+ param(PD 1.73)
+ terminal(S 1)
+ terminal(G 40)
+ terminal(D 38)
+ terminal(B 1)
+ )
+ device(48 D$sky130_fd_pr__pfet_01v8__model$3
+ location(8505 4945)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0.1869)
+ param(AD 0.1113)
+ param(PS 1.73)
+ param(PD 1.37)
+ terminal(S 40)
+ terminal(G 38)
+ terminal(D 1)
+ terminal(B 1)
+ )
+
+ )
+)
+
+# Reference netlist
+reference(
+
+ # Device class section
+ class(SKY130_FD_PR__PFET_01V8__MODEL MOS4)
+ class(SKY130_FD_PR__NFET_01V8__MODEL MOS4)
+
+ # Circuit section
+ # Circuits are the hierarchical building blocks of the netlist.
+ circuit(SP6TARRAY_2X4
+
+ # Nets
+ net(1 name(VSS))
+ net(2 name(VDD))
+ net(3 name('WL[0]'))
+ net(4 name('WL[1]'))
+ net(5 name('BL[0]'))
+ net(6 name('BL_N[0]'))
+ net(7 name('BL[1]'))
+ net(8 name('BL_N[1]'))
+ net(9 name('BL[2]'))
+ net(10 name('BL_N[2]'))
+ net(11 name('BL[3]'))
+ net(12 name('BL_N[3]'))
+ net(13 name(INST0X0.INST0X0.INST0X0.BIT_N))
+ net(14 name(INST0X0.INST0X0.INST0X0.BIT))
+ net(15 name(INST0X0.INST0X0.INST1X0.BIT_N))
+ net(16 name(INST0X0.INST0X0.INST1X0.BIT))
+ net(17 name(INST0X0.INST0X1.INST0X0.BIT_N))
+ net(18 name(INST0X0.INST0X1.INST0X0.BIT))
+ net(19 name(INST0X0.INST0X1.INST1X0.BIT_N))
+ net(20 name(INST0X0.INST0X1.INST1X0.BIT))
+ net(21 name(INST0X1.INST0X0.INST0X0.BIT_N))
+ net(22 name(INST0X1.INST0X0.INST0X0.BIT))
+ net(23 name(INST0X1.INST0X0.INST1X0.BIT_N))
+ net(24 name(INST0X1.INST0X0.INST1X0.BIT))
+ net(25 name(INST0X1.INST0X1.INST0X0.BIT_N))
+ net(26 name(INST0X1.INST0X1.INST0X0.BIT))
+ net(27 name(INST0X1.INST0X1.INST1X0.BIT_N))
+ net(28 name(INST0X1.INST0X1.INST1X0.BIT))
+
+ # Outgoing pins and their connections to nets
+ pin(1 name(VSS))
+ pin(2 name(VDD))
+ pin(3 name('WL[0]'))
+ pin(4 name('WL[1]'))
+ pin(5 name('BL[0]'))
+ pin(6 name('BL_N[0]'))
+ pin(7 name('BL[1]'))
+ pin(8 name('BL_N[1]'))
+ pin(9 name('BL[2]'))
+ pin(10 name('BL_N[2]'))
+ pin(11 name('BL[3]'))
+ pin(12 name('BL_N[3]'))
+
+ # Devices and their connections
+ device(1 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST0X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 14)
+ terminal(G 13)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(2 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST0X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 14)
+ terminal(D 13)
+ terminal(B 2)
+ )
+ device(3 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST0X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 14)
+ terminal(G 13)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(4 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST0X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 14)
+ terminal(D 13)
+ terminal(B 1)
+ )
+ device(5 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST0X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 14)
+ terminal(G 3)
+ terminal(D 5)
+ terminal(B 1)
+ )
+ device(6 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST0X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 13)
+ terminal(G 3)
+ terminal(D 6)
+ terminal(B 1)
+ )
+ device(7 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST1X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 16)
+ terminal(G 15)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(8 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST1X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 16)
+ terminal(D 15)
+ terminal(B 2)
+ )
+ device(9 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST1X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 16)
+ terminal(G 15)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(10 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST1X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 16)
+ terminal(D 15)
+ terminal(B 1)
+ )
+ device(11 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST1X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 16)
+ terminal(G 4)
+ terminal(D 5)
+ terminal(B 1)
+ )
+ device(12 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X0.INST1X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 15)
+ terminal(G 4)
+ terminal(D 6)
+ terminal(B 1)
+ )
+ device(13 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST0X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 18)
+ terminal(G 17)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(14 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST0X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 18)
+ terminal(D 17)
+ terminal(B 2)
+ )
+ device(15 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST0X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 18)
+ terminal(G 17)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(16 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST0X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 18)
+ terminal(D 17)
+ terminal(B 1)
+ )
+ device(17 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST0X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 18)
+ terminal(G 3)
+ terminal(D 7)
+ terminal(B 1)
+ )
+ device(18 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST0X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 17)
+ terminal(G 3)
+ terminal(D 8)
+ terminal(B 1)
+ )
+ device(19 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST1X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 20)
+ terminal(G 19)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(20 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST1X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 20)
+ terminal(D 19)
+ terminal(B 2)
+ )
+ device(21 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST1X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 20)
+ terminal(G 19)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(22 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST1X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 20)
+ terminal(D 19)
+ terminal(B 1)
+ )
+ device(23 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST1X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 20)
+ terminal(G 4)
+ terminal(D 7)
+ terminal(B 1)
+ )
+ device(24 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X0.INST0X1.INST1X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 19)
+ terminal(G 4)
+ terminal(D 8)
+ terminal(B 1)
+ )
+ device(25 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST0X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 22)
+ terminal(G 21)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(26 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST0X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 22)
+ terminal(D 21)
+ terminal(B 2)
+ )
+ device(27 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST0X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 22)
+ terminal(G 21)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(28 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST0X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 22)
+ terminal(D 21)
+ terminal(B 1)
+ )
+ device(29 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST0X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 22)
+ terminal(G 3)
+ terminal(D 9)
+ terminal(B 1)
+ )
+ device(30 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST0X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 21)
+ terminal(G 3)
+ terminal(D 10)
+ terminal(B 1)
+ )
+ device(31 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST1X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 24)
+ terminal(G 23)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(32 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST1X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 24)
+ terminal(D 23)
+ terminal(B 2)
+ )
+ device(33 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST1X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 24)
+ terminal(G 23)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(34 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST1X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 24)
+ terminal(D 23)
+ terminal(B 1)
+ )
+ device(35 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST1X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 24)
+ terminal(G 4)
+ terminal(D 9)
+ terminal(B 1)
+ )
+ device(36 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X0.INST1X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 23)
+ terminal(G 4)
+ terminal(D 10)
+ terminal(B 1)
+ )
+ device(37 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST0X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 26)
+ terminal(G 25)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(38 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST0X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 26)
+ terminal(D 25)
+ terminal(B 2)
+ )
+ device(39 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST0X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 26)
+ terminal(G 25)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(40 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST0X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 26)
+ terminal(D 25)
+ terminal(B 1)
+ )
+ device(41 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST0X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 26)
+ terminal(G 3)
+ terminal(D 11)
+ terminal(B 1)
+ )
+ device(42 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST0X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 25)
+ terminal(G 3)
+ terminal(D 12)
+ terminal(B 1)
+ )
+ device(43 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST1X0.PU1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 28)
+ terminal(G 27)
+ terminal(D 2)
+ terminal(B 2)
+ )
+ device(44 SKY130_FD_PR__PFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST1X0.PU2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 2)
+ terminal(G 28)
+ terminal(D 27)
+ terminal(B 2)
+ )
+ device(45 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST1X0.PD1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 28)
+ terminal(G 27)
+ terminal(D 1)
+ terminal(B 1)
+ )
+ device(46 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST1X0.PD2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 1)
+ terminal(G 28)
+ terminal(D 27)
+ terminal(B 1)
+ )
+ device(47 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST1X0.PG1)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 28)
+ terminal(G 4)
+ terminal(D 11)
+ terminal(B 1)
+ )
+ device(48 SKY130_FD_PR__NFET_01V8__MODEL
+ name(INST0X1.INST0X1.INST1X0.PG2)
+ param(L 0.15)
+ param(W 0.42)
+ param(AS 0)
+ param(AD 0)
+ param(PS 0)
+ param(PD 0)
+ terminal(S 27)
+ terminal(G 4)
+ terminal(D 12)
+ terminal(B 1)
+ )
+
+ )
+)
+
+# Cross reference
+xref(
+ circuit(SP6TArray_2X4 SP6TARRAY_2X4 match
+ xref(
+ net(12 14 match)
+ net(10 13 match)
+ net(32 16 match)
+ net(45 15 match)
+ net(16 18 match)
+ net(14 17 match)
+ net(34 20 match)
+ net(48 19 match)
+ net(20 22 match)
+ net(18 21 match)
+ net(36 24 match)
+ net(49 23 match)
+ net(24 26 match)
+ net(22 25 match)
+ net(38 28 match)
+ net(40 27 match)
+ net(2 5 match)
+ net(4 7 match)
+ net(6 9 match)
+ net(8 11 match)
+ net(3 6 match)
+ net(5 8 match)
+ net(7 10 match)
+ net(9 12 match)
+ net(1 2 match)
+ net(52 1 match)
+ net(26 3 match)
+ net(31 4 match)
+ pin(() 4 match)
+ pin(() 6 match)
+ pin(() 8 match)
+ pin(() 10 match)
+ pin(() 5 match)
+ pin(() 7 match)
+ pin(() 9 match)
+ pin(() 11 match)
+ pin(() 1 match)
+ pin(() 0 match)
+ pin(() 2 match)
+ pin(() 3 match)
+ device(1 3 match)
+ device(5 4 match)
+ device(2 5 match)
+ device(7 6 match)
+ device(4 9 match)
+ device(11 10 match)
+ device(3 11 match)
+ device(9 12 match)
+ device(6 15 match)
+ device(13 16 match)
+ device(8 17 match)
+ device(15 18 match)
+ device(12 21 match)
+ device(19 22 match)
+ device(10 23 match)
+ device(17 24 match)
+ device(14 27 match)
+ device(21 28 match)
+ device(16 29 match)
+ device(23 30 match)
+ device(20 33 match)
+ device(27 34 match)
+ device(18 35 match)
+ device(25 36 match)
+ device(22 39 match)
+ device(29 40 match)
+ device(24 41 match)
+ device(30 42 match)
+ device(28 45 match)
+ device(32 46 match)
+ device(26 47 match)
+ device(31 48 match)
+ device(33 1 match)
+ device(34 2 match)
+ device(41 7 match)
+ device(42 8 match)
+ device(35 13 match)
+ device(36 14 match)
+ device(43 19 match)
+ device(44 20 match)
+ device(37 25 match)
+ device(38 26 match)
+ device(45 31 match)
+ device(46 32 match)
+ device(39 37 match)
+ device(40 38 match)
+ device(47 43 match)
+ device(48 44 match)
+ )
+ )
+)