Switched l2n format to relative mode by default (relative mode is an option and maybe shorter)

This commit is contained in:
Matthias Koefferlein 2019-05-04 23:06:18 +02:00
parent 655d4bccdd
commit c33fd40ec9
10 changed files with 1781 additions and 1094 deletions

View File

@ -78,10 +78,14 @@ namespace db
*
* [geometry-def]:
*
* polygon(<layer> <x> <y> ...) - defines a polygon [short key: Q]
* polygon(<layer> [coord] ...) - defines a polygon [short key: Q]
* "*" for <x> or <y> means take previous
* rect(<layer> <left> <bottom> <right> <top>)
* - defines a rectangle [short key: R]
* rect(<layer> [coord] [coord]) - defines a rectangle [short key: R]
* coordinates are bottom/left and top/right
* [coord]
* <x> <y> - absolute coordinates
* (<x> <y>) - relative coordinates (reference is reset to 0,0
* for each net or terminal in device abstract)
*
* [device-abstract-def]:
*

View File

@ -22,7 +22,6 @@
#include "dbLayoutToNetlistReader.h"
#include "dbLayoutToNetlistFormatDefs.h"
#include "dbLayoutToNetlist.h"
namespace db
{
@ -362,6 +361,28 @@ void LayoutToNetlistStandardReader::do_read (db::LayoutToNetlist *l2n)
l2n->set_netlist_extracted ();
}
db::Point
LayoutToNetlistStandardReader::read_point ()
{
db::Coord x = m_ref.x (), y = m_ref.y ();
if (test ("(")) {
x += read_coord ();
y += read_coord ();
expect (")");
} else {
if (! test ("*")) {
x = read_coord ();
}
if (! test ("*")) {
y = read_coord ();
}
}
m_ref = db::Point (x, y);
return m_ref;
}
std::pair<unsigned int, db::PolygonRef>
LayoutToNetlistStandardReader::read_geometry (db::LayoutToNetlist *l2n)
{
@ -374,11 +395,9 @@ LayoutToNetlistStandardReader::read_geometry (db::LayoutToNetlist *l2n)
read_word_or_quoted (lname);
unsigned int lid = l2n->layer_of (layer_by_name (l2n, lname));
db::Coord l = read_coord ();
db::Coord b = read_coord ();
db::Coord r = read_coord ();
db::Coord t = read_coord ();
db::Box box (l, b, r, t);
db::Point lb = read_point ();
db::Point rt = read_point ();
db::Box box (lb, rt);
br.done ();
@ -392,18 +411,9 @@ LayoutToNetlistStandardReader::read_geometry (db::LayoutToNetlist *l2n)
unsigned int lid = l2n->layer_of (layer_by_name (l2n, lname));
std::vector<db::Point> pt;
db::Coord x = 0, y = 0;
while (br) {
if (! test ("*")) {
x = read_coord ();
}
if (! test ("*")) {
y = read_coord ();
}
pt.push_back (db::Point (x, y));
pt.push_back (read_point ());
}
br.done ();
db::Polygon poly;
@ -415,6 +425,18 @@ LayoutToNetlistStandardReader::read_geometry (db::LayoutToNetlist *l2n)
}
}
void
LayoutToNetlistStandardReader::read_geometries (Brace &br, db::LayoutToNetlist *l2n, db::local_cluster<db::PolygonRef> &lc, db::Cell &cell)
{
m_ref = db::Point ();
while (br) {
std::pair<unsigned int, db::PolygonRef> pr = read_geometry (l2n);
lc.add (pr.second, pr.first);
cell.shapes (pr.first).insert (pr.second);
}
}
void
LayoutToNetlistStandardReader::read_net (db::LayoutToNetlist *l2n, db::Circuit *circuit, std::map<unsigned int, Net *> &id2net)
{
@ -440,12 +462,7 @@ LayoutToNetlistStandardReader::read_net (db::LayoutToNetlist *l2n, db::Circuit *
net->set_cluster_id (lc.id ());
db::Cell &cell = l2n->internal_layout ()->cell (circuit->cell_index ());
while (br) {
std::pair<unsigned int, db::PolygonRef> pr = read_geometry (l2n);
lc.add (pr.second, pr.first);
cell.shapes (pr.first).insert (pr.second);
}
read_geometries (br, l2n, lc, cell);
br.done ();
}
@ -723,12 +740,7 @@ LayoutToNetlistStandardReader::read_abstract_terminal (db::LayoutToNetlist *l2n,
dm->set_cluster_id_for_terminal (tid, lc.id ());
db::Cell &cell = l2n->internal_layout ()->cell (dm->cell_index ());
while (br) {
std::pair<unsigned int, db::PolygonRef> pr = read_geometry (l2n);
lc.add (pr.second, pr.first);
cell.shapes (pr.first).insert (pr.second);
}
read_geometries (br, l2n, lc, cell);
br.done ();
}

View File

@ -26,6 +26,7 @@
#include "dbCommon.h"
#include "dbPolygon.h"
#include "dbCell.h"
#include "dbLayoutToNetlist.h"
#include "tlStream.h"
namespace db {
@ -84,6 +85,7 @@ private:
std::string m_path;
std::string m_line;
tl::Extractor m_ex;
db::Point m_ref;
void do_read (db::LayoutToNetlist *l2n);
@ -102,6 +104,8 @@ private:
db::CellInstArray read_subcircuit (db::LayoutToNetlist *l2n, db::Circuit *circuit, std::list<Connections> &refs, std::map<unsigned int, db::Net *> &id2net);
void read_abstract_terminal (db::LayoutToNetlist *l2n, db::DeviceAbstract *dm, db::DeviceClass *dc);
std::pair<unsigned int, db::PolygonRef> read_geometry (db::LayoutToNetlist *l2n);
void read_geometries (Brace &br, db::LayoutToNetlist *l2n, db::local_cluster<db::PolygonRef> &lc, db::Cell &cell);
db::Point read_point ();
};
}

View File

@ -63,13 +63,15 @@ public:
private:
tl::OutputStream *mp_stream;
db::Point m_ref;
void write (const db::LayoutToNetlist *l2n, const db::Circuit &circuit);
void write (const db::LayoutToNetlist *l2n, const db::Net &net, unsigned int id);
void write (const db::LayoutToNetlist *l2n, const db::SubCircuit &subcircuit, std::map<const Net *, unsigned int> &net2id);
void write (const db::LayoutToNetlist *l2n, const db::Device &device, std::map<const Net *, unsigned int> &net2id);
void write (const db::LayoutToNetlist *l2n, const db::DeviceAbstract &device_abstract);
void write (const db::PolygonRef *s, const db::ICplxTrans &tr, const std::string &lname);
void write (const db::PolygonRef *s, const db::ICplxTrans &tr, const std::string &lname, bool relative);
void reset_geometry_ref ();
};
static const std::string endl ("\n");
@ -254,39 +256,56 @@ void std_writer_impl<Keys>::write (const db::LayoutToNetlist *l2n, const db::Cir
}
}
template <class T, class Tr>
void write_points (tl::OutputStream &stream, const T &poly, const Tr &tr)
void write_point (tl::OutputStream &stream, const db::Point &pt, db::Point &ref, bool relative)
{
db::Coord x = 0, y = 0;
bool first = true;
for (typename T::polygon_contour_iterator c = poly.begin_hull (); c != poly.end_hull (); ++c) {
typename T::point_type pt = tr * *c;
if (relative) {
stream << "(";
stream << pt.x () - ref.x ();
stream << " ";
stream << pt.y () - ref.y ();
stream << ")";
if (first || pt.x () != x) {
} else {
if (pt.x () == 0 || pt.x () != ref.x ()) {
stream << pt.x ();
} else {
stream << "*";
}
stream << " ";
if (first || pt.y () != y) {
if (pt.y () == 0 || pt.y () != ref.y ()) {
stream << pt.y ();
} else {
stream << "*";
}
first = false;
x = pt.x (); y = pt.y ();
}
ref = pt;
}
template <class T, class Tr>
void write_points (tl::OutputStream &stream, const T &poly, const Tr &tr, db::Point &ref, bool relative)
{
for (typename T::polygon_contour_iterator c = poly.begin_hull (); c != poly.end_hull (); ++c) {
typename T::point_type pt = tr * *c;
stream << " ";
write_point (stream, pt, ref, relative);
}
}
template <class Keys>
void std_writer_impl<Keys>::write (const db::PolygonRef *s, const db::ICplxTrans &tr, const std::string &lname)
void std_writer_impl<Keys>::reset_geometry_ref ()
{
m_ref = db::Point ();
}
template <class Keys>
void std_writer_impl<Keys>::write (const db::PolygonRef *s, const db::ICplxTrans &tr, const std::string &lname, bool relative)
{
db::ICplxTrans t = tr * db::ICplxTrans (s->trans ());
@ -295,8 +314,10 @@ void std_writer_impl<Keys>::write (const db::PolygonRef *s, const db::ICplxTrans
db::Box box = t * poly.box ();
*mp_stream << Keys::rect_key << "(" << lname;
*mp_stream << " " << box.left () << " " << box.bottom ();
*mp_stream << " " << box.right () << " " << box.top ();
*mp_stream << " ";
write_point (*mp_stream, box.p1 (), m_ref, relative);
*mp_stream << " ";
write_point (*mp_stream, box.p2 (), m_ref, relative);
*mp_stream << ")";
} else {
@ -304,9 +325,9 @@ void std_writer_impl<Keys>::write (const db::PolygonRef *s, const db::ICplxTrans
*mp_stream << Keys::polygon_key << "(" << lname;
if (poly.holes () > 0) {
db::SimplePolygon sp (poly);
write_points (*mp_stream, sp, t);
write_points (*mp_stream, sp, t, m_ref, relative);
} else {
write_points (*mp_stream, poly, t);
write_points (*mp_stream, poly, t, m_ref, relative);
}
*mp_stream << ")";
@ -326,6 +347,8 @@ void std_writer_impl<Keys>::write (const db::LayoutToNetlist *l2n, const db::Net
bool any = false;
reset_geometry_ref ();
for (db::Connectivity::layer_iterator l = conn.begin_layers (); l != conn.end_layers (); ++l) {
db::cell_index_type cci = circuit->cell_index ();
@ -353,7 +376,7 @@ void std_writer_impl<Keys>::write (const db::LayoutToNetlist *l2n, const db::Net
}
*mp_stream << indent2;
write (si.operator-> (), si.trans (), name_for_layer (l2n, *l));
write (si.operator-> (), si.trans (), name_for_layer (l2n, *l), true);
*mp_stream << endl;
prev_ci = ci;
@ -441,13 +464,15 @@ void std_writer_impl<Keys>::write (const db::LayoutToNetlist *l2n, const db::Dev
*mp_stream << indent1 << Keys::terminal_key << "(" << t->name () << endl;
reset_geometry_ref ();
for (db::Connectivity::layer_iterator l = conn.begin_layers (); l != conn.end_layers (); ++l) {
const db::local_cluster<db::PolygonRef> &lc = clusters.clusters_per_cell (device_abstract.cell_index ()).cluster_by_id (device_abstract.cluster_id_for_terminal (t->id ()));
for (db::local_cluster<db::PolygonRef>::shape_iterator s = lc.begin (*l); ! s.at_end (); ++s) {
*mp_stream << indent2;
write (s.operator-> (), db::ICplxTrans (), name_for_layer (l2n, *l));
write (s.operator-> (), db::ICplxTrans (), name_for_layer (l2n, *l), true);
*mp_stream << endl;
}

View File

@ -188,3 +188,67 @@ TEST(2_ReaderWithGlobalNets)
}
}
TEST(3_ReaderAbsoluteCoordinates)
{
db::LayoutToNetlist l2n;
std::string in_path = tl::combine_path (tl::combine_path (tl::combine_path (tl::testsrc (), "testdata"), "algo"), "l2n_writer_au_2_abs.txt");
tl::InputStream is_in (in_path);
db::LayoutToNetlistStandardReader reader (is_in);
reader.read (&l2n);
// verify against the input
std::string path = tmp_file ("tmp_l2nreader_2.txt");
{
tl::OutputStream stream (path);
db::LayoutToNetlistStandardWriter writer (stream, false);
writer.write (&l2n);
}
std::string au_path = tl::combine_path (tl::combine_path (tl::combine_path (tl::testsrc (), "testdata"), "algo"), "l2n_writer_au_2.txt");
tl::InputStream is (path);
tl::InputStream is_au (au_path);
if (is.read_all () != is_au.read_all ()) {
_this->raise (tl::sprintf ("Compare failed - see\n actual: %s\n golden: %s",
tl::absolute_file_path (path),
tl::absolute_file_path (au_path)));
}
// test build_all_nets from read l2n
{
db::Layout ly2;
ly2.dbu (l2n.internal_layout ()->dbu ());
db::Cell &top2 = ly2.cell (ly2.add_cell ("TOP"));
db::CellMapping cm = l2n.cell_mapping_into (ly2, top2, true /*with device cells*/);
std::map<unsigned int, const db::Region *> lmap;
lmap [ly2.insert_layer (db::LayerProperties (10, 0))] = l2n.layer_by_name ("psd");
lmap [ly2.insert_layer (db::LayerProperties (11, 0))] = l2n.layer_by_name ("nsd");
lmap [ly2.insert_layer (db::LayerProperties (12, 0))] = l2n.layer_by_name ("rbulk");
lmap [ly2.insert_layer (db::LayerProperties (13, 0))] = l2n.layer_by_name ("ptie");
lmap [ly2.insert_layer (db::LayerProperties (14, 0))] = l2n.layer_by_name ("ntie");
lmap [ly2.insert_layer (db::LayerProperties (1, 0)) ] = l2n.layer_by_name ("nwell");
lmap [ly2.insert_layer (db::LayerProperties (3, 0)) ] = l2n.layer_by_name ("poly");
lmap [ly2.insert_layer (db::LayerProperties (4, 0)) ] = l2n.layer_by_name ("diff_cont");
lmap [ly2.insert_layer (db::LayerProperties (5, 0)) ] = l2n.layer_by_name ("poly_cont");
lmap [ly2.insert_layer (db::LayerProperties (6, 0)) ] = l2n.layer_by_name ("metal1");
lmap [ly2.insert_layer (db::LayerProperties (7, 0)) ] = l2n.layer_by_name ("via1");
lmap [ly2.insert_layer (db::LayerProperties (8, 0)) ] = l2n.layer_by_name ("metal2");
l2n.build_all_nets (cm, ly2, lmap, "NET_", tl::Variant (), db::LayoutToNetlist::BNH_SubcircuitCells, "CIRCUIT_", "DEVICE_");
std::string au = tl::testsrc ();
au = tl::combine_path (au, "testdata");
au = tl::combine_path (au, "algo");
au = tl::combine_path (au, "l2n_reader_au_2.gds");
db::compare_layouts (_this, ly2, au);
}
}

View File

@ -42,46 +42,46 @@ class(NMOS MOS3)
# Device abstracts list the pin shapes of the devices.
device(D$PMOS PMOS
terminal(S
rect(psd -650 -475 -125 475)
rect(psd (-650 -475) (525 950))
)
terminal(G
rect(poly -125 -475 125 475)
rect(poly (-125 -475) (250 950))
)
terminal(D
rect(psd 125 -475 675 475)
rect(psd (125 -475) (550 950))
)
)
device(D$PMOS$1 PMOS
terminal(S
rect(psd -675 -475 -125 475)
rect(psd (-675 -475) (550 950))
)
terminal(G
rect(poly -125 -475 125 475)
rect(poly (-125 -475) (250 950))
)
terminal(D
rect(psd 125 -475 650 475)
rect(psd (125 -475) (525 950))
)
)
device(D$NMOS NMOS
terminal(S
rect(nsd -650 -475 -125 475)
rect(nsd (-650 -475) (525 950))
)
terminal(G
rect(poly -125 -475 125 475)
rect(poly (-125 -475) (250 950))
)
terminal(D
rect(nsd 125 -475 675 475)
rect(nsd (125 -475) (550 950))
)
)
device(D$NMOS$1 NMOS
terminal(S
rect(nsd -675 -475 -125 475)
rect(nsd (-675 -475) (550 950))
)
terminal(G
rect(poly -125 -475 125 475)
rect(poly (-125 -475) (250 950))
)
terminal(D
rect(nsd 125 -475 650 475)
rect(nsd (125 -475) (525 950))
)
)
@ -91,65 +91,65 @@ circuit(INV2
# Nets with their geometries
net(1 name(IN)
rect(poly -525 -250 -275 2250)
rect(poly -1700 1620 -400 1980)
rect(poly -525 -800 -275 800)
rect(poly -525 2000 -275 3600)
rect(poly_lbl -801 1799 -799 1801)
rect(poly_cont -1630 1690 -1410 1910)
rect(poly (-525 -250) (250 2500))
rect(poly (-1425 -630) (1300 360))
rect(poly (-125 -2780) (250 1600))
rect(poly (-250 1200) (250 1600))
rect(poly_lbl (-526 -1801) (2 2))
rect(poly_cont (-831 -111) (220 220))
)
net(2
rect(poly 275 -250 525 2250)
rect(poly 220 820 580 1180)
rect(poly 275 2000 525 3600)
rect(poly 275 -800 525 800)
rect(diff_cont -910 2490 -690 2710)
rect(diff_cont -910 2890 -690 3110)
rect(diff_cont -910 -310 -690 -90)
rect(diff_cont -910 90 -690 310)
rect(poly_cont 290 890 510 1110)
rect(metal1 -800 820 580 1180)
rect(metal1 -980 -420 -620 2420)
rect(metal1 -980 2420 -620 3180)
rect(metal1 -980 -380 -620 380)
rect(psd -1050 2325 -525 3275)
rect(nsd -1050 -475 -525 475)
rect(poly (275 -250) (250 2500))
rect(poly (-305 -1430) (360 360))
rect(poly (-305 820) (250 1600))
rect(poly (-250 -4400) (250 1600))
rect(diff_cont (-1435 1690) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -3420) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(poly_cont (980 580) (220 220))
rect(metal1 (-1310 -290) (1380 360))
rect(metal1 (-1560 -1600) (360 2840))
rect(metal1 (-360 0) (360 760))
rect(metal1 (-360 -3560) (360 760))
rect(psd (-430 1945) (525 950))
rect(nsd (-525 -3750) (525 950))
)
net(3 name(OUT)
rect(diff_cont 690 2890 910 3110)
rect(diff_cont 690 2490 910 2710)
rect(diff_cont 690 90 910 310)
rect(diff_cont 690 -310 910 -90)
polygon(metal1 800 20 * 380 940 * * 1620 620 * * 2420 980 * * 1980 1300 * * 20)
rect(metal1 620 2420 980 3180)
rect(metal1 620 -380 980 380)
rect(metal1_lbl 799 1799 801 1801)
rect(psd 525 2325 1050 3275)
rect(nsd 525 -475 1050 475)
rect(diff_cont (690 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
polygon(metal1 (-110 110) (0 360) (140 0) (0 1240) (-320 0) (0 800) (360 0) (0 -440) (320 0) (0 -1960))
rect(metal1 (-680 2400) (360 760))
rect(metal1 (-360 -3560) (360 760))
rect(metal1_lbl (-181 1419) (2 2))
rect(psd (-276 524) (525 950))
rect(nsd (-525 -3750) (525 950))
)
net(4
rect(diff_cont -110 -310 110 -90)
rect(diff_cont -110 90 110 310)
rect(diff_cont -110 90 110 310)
rect(diff_cont -110 -310 110 -90)
rect(metal1 -180 -380 180 380)
rect(metal1 -180 -380 180 380)
rect(via1 -125 -325 125 -75)
rect(via1 -125 75 125 325)
rect(metal2 -1400 -450 1400 450)
rect(nsd -275 -475 275 475)
rect(diff_cont (-110 -310) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(metal1 (-290 -290) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(via1 (-305 -705) (250 250))
rect(via1 (-250 150) (250 250))
rect(metal2 (-1525 -775) (2800 900))
rect(nsd (-1675 -925) (550 950))
)
net(5
rect(diff_cont -110 2490 110 2710)
rect(diff_cont -110 2890 110 3110)
rect(diff_cont -110 2890 110 3110)
rect(diff_cont -110 2490 110 2710)
rect(metal1 -180 2420 180 3180)
rect(metal1 -180 2420 180 3180)
rect(via1 -125 2475 125 2725)
rect(via1 -125 2875 125 3125)
rect(metal2 -1400 2350 1400 3250)
rect(psd -275 2325 275 3275)
rect(diff_cont (-110 2490) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(metal1 (-290 -290) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(via1 (-305 -705) (250 250))
rect(via1 (-250 150) (250 250))
rect(metal2 (-1525 -775) (2800 900))
rect(psd (-1675 -925) (550 950))
)
# Outgoing pins and their connections to nets
@ -214,204 +214,204 @@ circuit(RINGO
# Nets with their geometries
net(1 name(FB)
rect(diff_cont 22850 2490 23070 2710)
rect(diff_cont 22850 2890 23070 3110)
rect(diff_cont 22850 -310 23070 -90)
rect(diff_cont 22850 90 23070 310)
rect(metal1 -1700 1620 -1340 1980)
rect(via1 -1645 1675 -1395 1925)
rect(via1 22835 1675 23085 1925)
rect(metal2 -1720 1600 23160 2000)
rect(metal2_lbl -1 1799 1 1801)
rect(diff_cont (22850 2490) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -3420) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(metal1 (-24770 1310) (360 360))
rect(via1 (-305 -305) (250 250))
rect(via1 (24230 -250) (250 250))
rect(metal2 (-24805 -325) (24880 400))
rect(metal2_lbl (-23161 -201) (2 2))
)
net(2 name(OSC)
rect(diff_cont 24450 2890 24670 3110)
rect(diff_cont 24450 2490 24670 2710)
rect(diff_cont 24450 90 24670 310)
rect(diff_cont 24450 -310 24670 -90)
rect(via1 24435 1675 24685 1925)
rect(metal2 24360 1600 24760 2000)
rect(metal2_lbl 24559 1799 24561 1801)
rect(diff_cont (24450 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(via1 (-235 1765) (250 250))
rect(metal2 (-325 -325) (400 400))
rect(metal2_lbl (-201 -201) (2 2))
)
net(3 name(VSS)
rect(diff_cont 2530 -310 2750 -90)
rect(diff_cont 2530 90 2750 310)
rect(diff_cont 2530 90 2750 310)
rect(diff_cont 2530 -310 2750 -90)
rect(diff_cont -110 -310 110 -90)
rect(diff_cont -110 90 110 310)
rect(diff_cont -110 90 110 310)
rect(diff_cont -110 -310 110 -90)
rect(diff_cont 5170 -310 5390 -90)
rect(diff_cont 5170 90 5390 310)
rect(diff_cont 5170 90 5390 310)
rect(diff_cont 5170 -310 5390 -90)
rect(diff_cont 7810 -310 8030 -90)
rect(diff_cont 7810 90 8030 310)
rect(diff_cont 7810 90 8030 310)
rect(diff_cont 7810 -310 8030 -90)
rect(diff_cont 10450 -310 10670 -90)
rect(diff_cont 10450 90 10670 310)
rect(diff_cont 10450 90 10670 310)
rect(diff_cont 10450 -310 10670 -90)
rect(diff_cont 13090 -310 13310 -90)
rect(diff_cont 13090 90 13310 310)
rect(diff_cont 13090 90 13310 310)
rect(diff_cont 13090 -310 13310 -90)
rect(diff_cont 15730 -310 15950 -90)
rect(diff_cont 15730 90 15950 310)
rect(diff_cont 15730 90 15950 310)
rect(diff_cont 15730 -310 15950 -90)
rect(diff_cont 18370 -310 18590 -90)
rect(diff_cont 18370 90 18590 310)
rect(diff_cont 18370 90 18590 310)
rect(diff_cont 18370 -310 18590 -90)
rect(diff_cont 21010 -310 21230 -90)
rect(diff_cont 21010 90 21230 310)
rect(diff_cont 21010 90 21230 310)
rect(diff_cont 21010 -310 21230 -90)
rect(diff_cont 23650 -310 23870 -90)
rect(diff_cont 23650 90 23870 310)
rect(diff_cont 23650 90 23870 310)
rect(diff_cont 23650 -310 23870 -90)
rect(metal1 2460 -380 2820 380)
rect(metal1 2460 -380 2820 380)
rect(metal1 -180 -380 180 380)
rect(metal1 -180 -380 180 380)
rect(metal1 5100 -380 5460 380)
rect(metal1 5100 -380 5460 380)
rect(metal1 7740 -380 8100 380)
rect(metal1 7740 -380 8100 380)
rect(metal1 10380 -380 10740 380)
rect(metal1 10380 -380 10740 380)
rect(metal1 13020 -380 13380 380)
rect(metal1 13020 -380 13380 380)
rect(metal1 15660 -380 16020 380)
rect(metal1 15660 -380 16020 380)
rect(metal1 18300 -380 18660 380)
rect(metal1 18300 -380 18660 380)
rect(metal1 20940 -380 21300 380)
rect(metal1 20940 -380 21300 380)
rect(metal1 23580 -380 23940 380)
rect(metal1 23580 -380 23940 380)
rect(metal2_lbl -1 -1 1 1)
rect(diff_cont (2530 -310) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (5060 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (2420 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (2420 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (2420 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (2420 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (2420 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (2420 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (2420 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(metal1 (-21410 -290) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (4920 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (2280 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (2280 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (2280 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (2280 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (2280 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (2280 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (2280 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal2_lbl (-23941 -381) (2 2))
)
net(4 name(VDD)
rect(diff_cont 2530 2490 2750 2710)
rect(diff_cont 2530 2890 2750 3110)
rect(diff_cont 2530 2890 2750 3110)
rect(diff_cont 2530 2490 2750 2710)
rect(diff_cont -110 2490 110 2710)
rect(diff_cont -110 2890 110 3110)
rect(diff_cont -110 2890 110 3110)
rect(diff_cont -110 2490 110 2710)
rect(diff_cont 5170 2490 5390 2710)
rect(diff_cont 5170 2890 5390 3110)
rect(diff_cont 5170 2890 5390 3110)
rect(diff_cont 5170 2490 5390 2710)
rect(diff_cont 7810 2490 8030 2710)
rect(diff_cont 7810 2890 8030 3110)
rect(diff_cont 7810 2890 8030 3110)
rect(diff_cont 7810 2490 8030 2710)
rect(diff_cont 10450 2490 10670 2710)
rect(diff_cont 10450 2890 10670 3110)
rect(diff_cont 10450 2890 10670 3110)
rect(diff_cont 10450 2490 10670 2710)
rect(diff_cont 13090 2490 13310 2710)
rect(diff_cont 13090 2890 13310 3110)
rect(diff_cont 13090 2890 13310 3110)
rect(diff_cont 13090 2490 13310 2710)
rect(diff_cont 15730 2490 15950 2710)
rect(diff_cont 15730 2890 15950 3110)
rect(diff_cont 15730 2890 15950 3110)
rect(diff_cont 15730 2490 15950 2710)
rect(diff_cont 18370 2490 18590 2710)
rect(diff_cont 18370 2890 18590 3110)
rect(diff_cont 18370 2890 18590 3110)
rect(diff_cont 18370 2490 18590 2710)
rect(diff_cont 21010 2490 21230 2710)
rect(diff_cont 21010 2890 21230 3110)
rect(diff_cont 21010 2890 21230 3110)
rect(diff_cont 21010 2490 21230 2710)
rect(diff_cont 23650 2490 23870 2710)
rect(diff_cont 23650 2890 23870 3110)
rect(diff_cont 23650 2890 23870 3110)
rect(diff_cont 23650 2490 23870 2710)
rect(metal1 2460 2420 2820 3180)
rect(metal1 2460 2420 2820 3180)
rect(metal1 -180 2420 180 3180)
rect(metal1 -180 2420 180 3180)
rect(metal1 5100 2420 5460 3180)
rect(metal1 5100 2420 5460 3180)
rect(metal1 7740 2420 8100 3180)
rect(metal1 7740 2420 8100 3180)
rect(metal1 10380 2420 10740 3180)
rect(metal1 10380 2420 10740 3180)
rect(metal1 13020 2420 13380 3180)
rect(metal1 13020 2420 13380 3180)
rect(metal1 15660 2420 16020 3180)
rect(metal1 15660 2420 16020 3180)
rect(metal1 18300 2420 18660 3180)
rect(metal1 18300 2420 18660 3180)
rect(metal1 20940 2420 21300 3180)
rect(metal1 20940 2420 21300 3180)
rect(metal1 23580 2420 23940 3180)
rect(metal1 23580 2420 23940 3180)
rect(metal2_lbl -1 2799 1 2801)
rect(diff_cont (2530 2490) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (5060 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (2420 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (2420 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (2420 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (2420 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (2420 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (2420 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (2420 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(metal1 (-21410 -290) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (4920 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (2280 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (2280 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (2280 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (2280 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (2280 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (2280 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (2280 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal2_lbl (-23941 -381) (2 2))
)
net(5
rect(diff_cont 690 2890 910 3110)
rect(diff_cont 690 2490 910 2710)
rect(diff_cont 690 90 910 310)
rect(diff_cont 690 -310 910 -90)
rect(diff_cont (690 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
)
net(6
rect(diff_cont 21810 2890 22030 3110)
rect(diff_cont 21810 2490 22030 2710)
rect(diff_cont 21810 90 22030 310)
rect(diff_cont 21810 -310 22030 -90)
rect(diff_cont (21810 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
)
net(7
rect(diff_cont 19170 2890 19390 3110)
rect(diff_cont 19170 2490 19390 2710)
rect(diff_cont 19170 90 19390 310)
rect(diff_cont 19170 -310 19390 -90)
rect(diff_cont (19170 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
)
net(8
rect(diff_cont 16530 2890 16750 3110)
rect(diff_cont 16530 2490 16750 2710)
rect(diff_cont 16530 90 16750 310)
rect(diff_cont 16530 -310 16750 -90)
rect(diff_cont (16530 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
)
net(9
rect(diff_cont 13890 2890 14110 3110)
rect(diff_cont 13890 2490 14110 2710)
rect(diff_cont 13890 90 14110 310)
rect(diff_cont 13890 -310 14110 -90)
rect(diff_cont (13890 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
)
net(10
rect(diff_cont 11250 2890 11470 3110)
rect(diff_cont 11250 2490 11470 2710)
rect(diff_cont 11250 90 11470 310)
rect(diff_cont 11250 -310 11470 -90)
rect(diff_cont (11250 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
)
net(11
rect(diff_cont 8610 2890 8830 3110)
rect(diff_cont 8610 2490 8830 2710)
rect(diff_cont 8610 90 8830 310)
rect(diff_cont 8610 -310 8830 -90)
rect(diff_cont (8610 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
)
net(12
rect(diff_cont 5970 2890 6190 3110)
rect(diff_cont 5970 2490 6190 2710)
rect(diff_cont 5970 90 6190 310)
rect(diff_cont 5970 -310 6190 -90)
rect(diff_cont (5970 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
)
net(13
rect(diff_cont 3330 2890 3550 3110)
rect(diff_cont 3330 2490 3550 2710)
rect(diff_cont 3330 90 3550 310)
rect(diff_cont 3330 -310 3550 -90)
rect(diff_cont (3330 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
)
# Outgoing pins and their connections to nets

View File

@ -53,58 +53,58 @@ class(NMOS MOS4)
# Device abstracts list the pin shapes of the devices.
device(D$PMOS PMOS
terminal(S
rect(psd -650 -475 -125 475)
rect(psd (-650 -475) (525 950))
)
terminal(G
rect(poly -125 -475 125 475)
rect(poly (-125 -475) (250 950))
)
terminal(D
rect(psd 125 -475 675 475)
rect(psd (125 -475) (550 950))
)
terminal(B
rect(nwell -125 -475 125 475)
rect(nwell (-125 -475) (250 950))
)
)
device(D$PMOS$1 PMOS
terminal(S
rect(psd -675 -475 -125 475)
rect(psd (-675 -475) (550 950))
)
terminal(G
rect(poly -125 -475 125 475)
rect(poly (-125 -475) (250 950))
)
terminal(D
rect(psd 125 -475 650 475)
rect(psd (125 -475) (525 950))
)
terminal(B
rect(nwell -125 -475 125 475)
rect(nwell (-125 -475) (250 950))
)
)
device(D$NMOS NMOS
terminal(S
rect(nsd -650 -475 -125 475)
rect(nsd (-650 -475) (525 950))
)
terminal(G
rect(poly -125 -475 125 475)
rect(poly (-125 -475) (250 950))
)
terminal(D
rect(nsd 125 -475 675 475)
rect(nsd (125 -475) (550 950))
)
terminal(B
rect(rbulk -125 -475 125 475)
rect(rbulk (-125 -475) (250 950))
)
)
device(D$NMOS$1 NMOS
terminal(S
rect(nsd -675 -475 -125 475)
rect(nsd (-675 -475) (550 950))
)
terminal(G
rect(poly -125 -475 125 475)
rect(poly (-125 -475) (250 950))
)
terminal(D
rect(nsd 125 -475 650 475)
rect(nsd (125 -475) (525 950))
)
terminal(B
rect(rbulk -125 -475 125 475)
rect(rbulk (-125 -475) (250 950))
)
)
@ -114,76 +114,76 @@ circuit(INV2
# Nets with their geometries
net(1
rect(nwell -1400 1800 1400 4580)
rect(diff_cont -110 3930 110 4150)
rect(ntie -400 3700 400 4380)
rect(nwell (-1400 1800) (2800 2780))
rect(diff_cont (-1510 -650) (220 220))
rect(ntie (-510 -450) (800 680))
)
net(2 name(IN)
rect(poly -525 -250 -275 2250)
rect(poly -1700 1620 -400 1980)
rect(poly -525 -800 -275 800)
rect(poly -525 2000 -275 3600)
rect(poly_lbl -801 1799 -799 1801)
rect(poly_cont -1630 1690 -1410 1910)
rect(poly (-525 -250) (250 2500))
rect(poly (-1425 -630) (1300 360))
rect(poly (-125 -2780) (250 1600))
rect(poly (-250 1200) (250 1600))
rect(poly_lbl (-526 -1801) (2 2))
rect(poly_cont (-831 -111) (220 220))
)
net(3
rect(poly 275 -250 525 2250)
rect(poly 220 820 580 1180)
rect(poly 275 2000 525 3600)
rect(poly 275 -800 525 800)
rect(diff_cont -910 2490 -690 2710)
rect(diff_cont -910 2890 -690 3110)
rect(diff_cont -910 -310 -690 -90)
rect(diff_cont -910 90 -690 310)
rect(poly_cont 290 890 510 1110)
rect(metal1 -800 820 580 1180)
rect(metal1 -980 -420 -620 2420)
rect(metal1 -980 2420 -620 3180)
rect(metal1 -980 -380 -620 380)
rect(psd -1050 2325 -525 3275)
rect(nsd -1050 -475 -525 475)
rect(poly (275 -250) (250 2500))
rect(poly (-305 -1430) (360 360))
rect(poly (-305 820) (250 1600))
rect(poly (-250 -4400) (250 1600))
rect(diff_cont (-1435 1690) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -3420) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(poly_cont (980 580) (220 220))
rect(metal1 (-1310 -290) (1380 360))
rect(metal1 (-1560 -1600) (360 2840))
rect(metal1 (-360 0) (360 760))
rect(metal1 (-360 -3560) (360 760))
rect(psd (-430 1945) (525 950))
rect(nsd (-525 -3750) (525 950))
)
net(4 name(OUT)
rect(diff_cont 690 2890 910 3110)
rect(diff_cont 690 2490 910 2710)
rect(diff_cont 690 90 910 310)
rect(diff_cont 690 -310 910 -90)
polygon(metal1 800 20 * 380 940 * * 1620 620 * * 2420 980 * * 1980 1300 * * 20)
rect(metal1 620 2420 980 3180)
rect(metal1 620 -380 980 380)
rect(metal1_lbl 799 1799 801 1801)
rect(psd 525 2325 1050 3275)
rect(nsd 525 -475 1050 475)
rect(diff_cont (690 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
polygon(metal1 (-110 110) (0 360) (140 0) (0 1240) (-320 0) (0 800) (360 0) (0 -440) (320 0) (0 -1960))
rect(metal1 (-680 2400) (360 760))
rect(metal1 (-360 -3560) (360 760))
rect(metal1_lbl (-181 1419) (2 2))
rect(psd (-276 524) (525 950))
rect(nsd (-525 -3750) (525 950))
)
net(5 name(VSS)
rect(diff_cont -110 -310 110 -90)
rect(diff_cont -110 90 110 310)
rect(diff_cont -110 90 110 310)
rect(diff_cont -110 -310 110 -90)
rect(metal1 -180 -380 180 380)
rect(metal1 -180 -380 180 380)
rect(via1 -125 -325 125 -75)
rect(via1 -125 75 125 325)
rect(metal2 -1400 -450 1400 450)
rect(metal2_lbl 1239 -91 1241 -89)
rect(nsd -275 -475 275 475)
rect(diff_cont (-110 -310) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(metal1 (-290 -290) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(via1 (-305 -705) (250 250))
rect(via1 (-250 150) (250 250))
rect(metal2 (-1525 -775) (2800 900))
rect(metal2_lbl (-161 -541) (2 2))
rect(nsd (-1516 -386) (550 950))
)
net(6 name(VDD)
rect(diff_cont -110 2490 110 2710)
rect(diff_cont -110 2890 110 3110)
rect(diff_cont -110 2890 110 3110)
rect(diff_cont -110 2490 110 2710)
rect(metal1 -180 2420 180 3180)
rect(metal1 -180 2420 180 3180)
rect(via1 -125 2475 125 2725)
rect(via1 -125 2875 125 3125)
rect(metal2 -1400 2350 1400 3250)
rect(metal2_lbl 1249 2799 1251 2801)
rect(psd -275 2325 275 3275)
rect(diff_cont (-110 2490) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(metal1 (-290 -290) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(via1 (-305 -705) (250 250))
rect(via1 (-250 150) (250 250))
rect(metal2 (-1525 -775) (2800 900))
rect(metal2_lbl (-151 -451) (2 2))
rect(psd (-1526 -476) (550 950))
)
net(7 name(BULK)
rect(diff_cont -110 -1360 110 -1140)
rect(ptie -400 -1590 400 -910)
rect(diff_cont (-110 -1360) (220 220))
rect(ptie (-510 -450) (800 680))
)
# Outgoing pins and their connections to nets
@ -255,51 +255,51 @@ circuit(INV2PAIR
# Nets with their geometries
net(1 name(BULK))
net(2
rect(diff_cont 3430 3290 3650 3510)
rect(diff_cont 3430 3690 3650 3910)
rect(diff_cont 3430 490 3650 710)
rect(diff_cont 3430 890 3650 1110)
rect(diff_cont (3430 3290) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -3420) (220 220))
rect(diff_cont (-220 180) (220 220))
)
net(3
rect(diff_cont 4230 3290 4450 3510)
rect(diff_cont 4230 3690 4450 3910)
rect(diff_cont 4230 3690 4450 3910)
rect(diff_cont 4230 3290 4450 3510)
rect(diff_cont 1590 3290 1810 3510)
rect(diff_cont 1590 3690 1810 3910)
rect(diff_cont 1590 3690 1810 3910)
rect(diff_cont 1590 3290 1810 3510)
rect(metal1 4160 3220 4520 3980)
rect(metal1 4160 3220 4520 3980)
rect(metal1 1520 3220 1880 3980)
rect(metal1 1520 3220 1880 3980)
rect(diff_cont (4230 3290) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(metal1 (2350 -290) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
)
net(4
rect(diff_cont 4230 490 4450 710)
rect(diff_cont 4230 890 4450 1110)
rect(diff_cont 4230 890 4450 1110)
rect(diff_cont 4230 490 4450 710)
rect(diff_cont 1590 490 1810 710)
rect(diff_cont 1590 890 1810 1110)
rect(diff_cont 1590 890 1810 1110)
rect(diff_cont 1590 490 1810 710)
rect(metal1 4160 420 4520 1180)
rect(metal1 4160 420 4520 1180)
rect(metal1 1520 420 1880 1180)
rect(metal1 1520 420 1880 1180)
rect(diff_cont (4230 490) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(metal1 (2350 -290) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
)
net(5
rect(diff_cont 2390 3690 2610 3910)
rect(diff_cont 2390 3290 2610 3510)
rect(diff_cont 2390 890 2610 1110)
rect(diff_cont 2390 490 2610 710)
rect(diff_cont (2390 3690) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
)
net(6)
net(7
rect(diff_cont 5030 3690 5250 3910)
rect(diff_cont 5030 3290 5250 3510)
rect(diff_cont 5030 890 5250 1110)
rect(diff_cont 5030 490 5250 710)
rect(diff_cont (5030 3690) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
)
net(8)
@ -336,194 +336,194 @@ circuit(RINGO
# Nets with their geometries
net(1 name(FB)
rect(diff_cont 22850 2490 23070 2710)
rect(diff_cont 22850 2890 23070 3110)
rect(diff_cont 22850 -310 23070 -90)
rect(diff_cont 22850 90 23070 310)
rect(metal1 -1700 1620 -1340 1980)
rect(via1 -1645 1675 -1395 1925)
rect(via1 22835 1675 23085 1925)
rect(metal2 -1720 1600 23160 2000)
rect(metal2_lbl -1 1799 1 1801)
rect(diff_cont (22850 2490) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -3420) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(metal1 (-24770 1310) (360 360))
rect(via1 (-305 -305) (250 250))
rect(via1 (24230 -250) (250 250))
rect(metal2 (-24805 -325) (24880 400))
rect(metal2_lbl (-23161 -201) (2 2))
)
net(2 name(OSC)
rect(diff_cont 24450 2890 24670 3110)
rect(diff_cont 24450 2490 24670 2710)
rect(diff_cont 24450 90 24670 310)
rect(diff_cont 24450 -310 24670 -90)
rect(via1 24435 1675 24685 1925)
rect(metal2 24360 1600 24760 2000)
rect(metal2_lbl 24559 1799 24561 1801)
rect(diff_cont (24450 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(via1 (-235 1765) (250 250))
rect(metal2 (-325 -325) (400 400))
rect(metal2_lbl (-201 -201) (2 2))
)
net(3 name(VDD)
rect(diff_cont 7810 2490 8030 2710)
rect(diff_cont 7810 2890 8030 3110)
rect(diff_cont 7810 2890 8030 3110)
rect(diff_cont 7810 2490 8030 2710)
rect(diff_cont 5170 2490 5390 2710)
rect(diff_cont 5170 2890 5390 3110)
rect(diff_cont 5170 2890 5390 3110)
rect(diff_cont 5170 2490 5390 2710)
rect(diff_cont 2530 2490 2750 2710)
rect(diff_cont 2530 2890 2750 3110)
rect(diff_cont 2530 2890 2750 3110)
rect(diff_cont 2530 2490 2750 2710)
rect(diff_cont -110 2490 110 2710)
rect(diff_cont -110 2890 110 3110)
rect(diff_cont -110 2890 110 3110)
rect(diff_cont -110 2490 110 2710)
rect(diff_cont 13090 2490 13310 2710)
rect(diff_cont 13090 2890 13310 3110)
rect(diff_cont 13090 2890 13310 3110)
rect(diff_cont 13090 2490 13310 2710)
rect(diff_cont 10450 2490 10670 2710)
rect(diff_cont 10450 2890 10670 3110)
rect(diff_cont 10450 2890 10670 3110)
rect(diff_cont 10450 2490 10670 2710)
rect(diff_cont 18370 2490 18590 2710)
rect(diff_cont 18370 2890 18590 3110)
rect(diff_cont 18370 2890 18590 3110)
rect(diff_cont 18370 2490 18590 2710)
rect(diff_cont 15730 2490 15950 2710)
rect(diff_cont 15730 2890 15950 3110)
rect(diff_cont 15730 2890 15950 3110)
rect(diff_cont 15730 2490 15950 2710)
rect(diff_cont 23650 2490 23870 2710)
rect(diff_cont 23650 2890 23870 3110)
rect(diff_cont 23650 2890 23870 3110)
rect(diff_cont 23650 2490 23870 2710)
rect(diff_cont 21010 2490 21230 2710)
rect(diff_cont 21010 2890 21230 3110)
rect(diff_cont 21010 2890 21230 3110)
rect(diff_cont 21010 2490 21230 2710)
rect(metal1 -180 3100 180 4220)
rect(metal1 2460 3100 2820 4220)
rect(metal1 5100 3100 5460 4220)
rect(metal1 7740 3100 8100 4220)
rect(metal1 10380 3100 10740 4220)
rect(metal1 13020 3100 13380 4220)
rect(metal1 15660 3100 16020 4220)
rect(metal1 18300 3100 18660 4220)
rect(metal1 20940 3100 21300 4220)
rect(metal1 23580 3100 23940 4220)
rect(metal1 7740 2420 8100 3180)
rect(metal1 7740 2420 8100 3180)
rect(metal1 5100 2420 5460 3180)
rect(metal1 5100 2420 5460 3180)
rect(metal1 2460 2420 2820 3180)
rect(metal1 2460 2420 2820 3180)
rect(metal1 -180 2420 180 3180)
rect(metal1 -180 2420 180 3180)
rect(metal1 13020 2420 13380 3180)
rect(metal1 13020 2420 13380 3180)
rect(metal1 10380 2420 10740 3180)
rect(metal1 10380 2420 10740 3180)
rect(metal1 18300 2420 18660 3180)
rect(metal1 18300 2420 18660 3180)
rect(metal1 15660 2420 16020 3180)
rect(metal1 15660 2420 16020 3180)
rect(metal1 23580 2420 23940 3180)
rect(metal1 23580 2420 23940 3180)
rect(metal1 20940 2420 21300 3180)
rect(metal1 20940 2420 21300 3180)
rect(metal2_lbl -1 2799 1 2801)
rect(diff_cont (7810 2490) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (12980 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (7700 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (7700 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(metal1 (-21410 390) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (-16200 -1800) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (12840 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (7560 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (7560 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal2_lbl (-21301 -381) (2 2))
)
net(4 name('BULK,VSS')
rect(diff_cont 7810 -310 8030 -90)
rect(diff_cont 7810 90 8030 310)
rect(diff_cont 7810 90 8030 310)
rect(diff_cont 7810 -310 8030 -90)
rect(diff_cont 5170 -310 5390 -90)
rect(diff_cont 5170 90 5390 310)
rect(diff_cont 5170 90 5390 310)
rect(diff_cont 5170 -310 5390 -90)
rect(diff_cont 2530 -310 2750 -90)
rect(diff_cont 2530 90 2750 310)
rect(diff_cont 2530 90 2750 310)
rect(diff_cont 2530 -310 2750 -90)
rect(diff_cont -110 -310 110 -90)
rect(diff_cont -110 90 110 310)
rect(diff_cont -110 90 110 310)
rect(diff_cont -110 -310 110 -90)
rect(diff_cont 13090 -310 13310 -90)
rect(diff_cont 13090 90 13310 310)
rect(diff_cont 13090 90 13310 310)
rect(diff_cont 13090 -310 13310 -90)
rect(diff_cont 10450 -310 10670 -90)
rect(diff_cont 10450 90 10670 310)
rect(diff_cont 10450 90 10670 310)
rect(diff_cont 10450 -310 10670 -90)
rect(diff_cont 18370 -310 18590 -90)
rect(diff_cont 18370 90 18590 310)
rect(diff_cont 18370 90 18590 310)
rect(diff_cont 18370 -310 18590 -90)
rect(diff_cont 15730 -310 15950 -90)
rect(diff_cont 15730 90 15950 310)
rect(diff_cont 15730 90 15950 310)
rect(diff_cont 15730 -310 15950 -90)
rect(diff_cont 23650 -310 23870 -90)
rect(diff_cont 23650 90 23870 310)
rect(diff_cont 23650 90 23870 310)
rect(diff_cont 23650 -310 23870 -90)
rect(diff_cont 21010 -310 21230 -90)
rect(diff_cont 21010 90 21230 310)
rect(diff_cont 21010 90 21230 310)
rect(diff_cont 21010 -310 21230 -90)
rect(metal1 -180 -1420 180 -300)
rect(metal1 2460 -1420 2820 -300)
rect(metal1 5100 -1420 5460 -300)
rect(metal1 7740 -1420 8100 -300)
rect(metal1 10380 -1420 10740 -300)
rect(metal1 13020 -1420 13380 -300)
rect(metal1 15660 -1420 16020 -300)
rect(metal1 18300 -1420 18660 -300)
rect(metal1 20940 -1420 21300 -300)
rect(metal1 23580 -1420 23940 -300)
rect(metal1 7740 -380 8100 380)
rect(metal1 7740 -380 8100 380)
rect(metal1 5100 -380 5460 380)
rect(metal1 5100 -380 5460 380)
rect(metal1 2460 -380 2820 380)
rect(metal1 2460 -380 2820 380)
rect(metal1 -180 -380 180 380)
rect(metal1 -180 -380 180 380)
rect(metal1 13020 -380 13380 380)
rect(metal1 13020 -380 13380 380)
rect(metal1 10380 -380 10740 380)
rect(metal1 10380 -380 10740 380)
rect(metal1 18300 -380 18660 380)
rect(metal1 18300 -380 18660 380)
rect(metal1 15660 -380 16020 380)
rect(metal1 15660 -380 16020 380)
rect(metal1 23580 -380 23940 380)
rect(metal1 23580 -380 23940 380)
rect(metal1 20940 -380 21300 380)
rect(metal1 20940 -380 21300 380)
rect(metal2_lbl -1 -1 1 1)
rect(diff_cont (7810 -310) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (12980 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (7700 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (7700 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-2860 -220) (220 220))
rect(diff_cont (-220 180) (220 220))
rect(diff_cont (-220 -220) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(metal1 (-21410 -1330) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (2280 -1120) (360 1120))
rect(metal1 (-16200 -80) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (12840 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (7560 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (7560 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal1 (-3000 -760) (360 760))
rect(metal1 (-360 -760) (360 760))
rect(metal2_lbl (-21301 -381) (2 2))
)
net(5
rect(diff_cont 3330 2890 3550 3110)
rect(diff_cont 3330 2490 3550 2710)
rect(diff_cont 3330 90 3550 310)
rect(diff_cont 3330 -310 3550 -90)
rect(diff_cont (3330 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
)
net(6
rect(diff_cont 19170 2890 19390 3110)
rect(diff_cont 19170 2490 19390 2710)
rect(diff_cont 19170 90 19390 310)
rect(diff_cont 19170 -310 19390 -90)
rect(diff_cont (19170 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
)
net(7
rect(diff_cont 13890 2890 14110 3110)
rect(diff_cont 13890 2490 14110 2710)
rect(diff_cont 13890 90 14110 310)
rect(diff_cont 13890 -310 14110 -90)
rect(diff_cont (13890 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
)
net(8
rect(diff_cont 8610 2890 8830 3110)
rect(diff_cont 8610 2490 8830 2710)
rect(diff_cont 8610 90 8830 310)
rect(diff_cont 8610 -310 8830 -90)
rect(diff_cont (8610 2890) (220 220))
rect(diff_cont (-220 -620) (220 220))
rect(diff_cont (-220 -2620) (220 220))
rect(diff_cont (-220 -620) (220 220))
)
# Outgoing pins and their connections to nets

578
testdata/algo/l2n_writer_au_2_abs.txt vendored Normal file
View File

@ -0,0 +1,578 @@
#%l2n-klayout
# General section
top(RINGO)
unit(0.001)
# Layer section
# This section lists the mask layers (drawing or derived) and their connections.
# Mask layers
layer(rbulk)
layer(nwell '1/0')
layer(poly '3/0')
layer(poly_lbl '3/1')
layer(diff_cont '4/0')
layer(poly_cont '5/0')
layer(metal1 '6/0')
layer(metal1_lbl '6/1')
layer(via1 '7/0')
layer(metal2 '8/0')
layer(metal2_lbl '8/1')
layer(ntie)
layer(psd)
layer(ptie)
layer(nsd)
# Mask layer connectivity
connect(nwell nwell ntie)
connect(poly poly poly_lbl poly_cont)
connect(poly_lbl poly)
connect(diff_cont diff_cont metal1 ntie psd ptie nsd)
connect(poly_cont poly poly_cont metal1)
connect(metal1 diff_cont poly_cont metal1 metal1_lbl via1)
connect(metal1_lbl metal1)
connect(via1 metal1 via1 metal2)
connect(metal2 via1 metal2 metal2_lbl)
connect(metal2_lbl metal2)
connect(ntie nwell diff_cont ntie)
connect(psd diff_cont psd)
connect(ptie diff_cont ptie)
connect(nsd diff_cont nsd)
# Global nets and connectivity
global(rbulk BULK)
global(ptie BULK)
# Device class section
class(PMOS MOS4)
class(NMOS MOS4)
# Device abstracts section
# Device abstracts list the pin shapes of the devices.
device(D$PMOS PMOS
terminal(S
rect(psd -650 -475 -125 475)
)
terminal(G
rect(poly -125 -475 125 475)
)
terminal(D
rect(psd 125 -475 675 475)
)
terminal(B
rect(nwell -125 -475 125 475)
)
)
device(D$PMOS$1 PMOS
terminal(S
rect(psd -675 -475 -125 475)
)
terminal(G
rect(poly -125 -475 125 475)
)
terminal(D
rect(psd 125 -475 650 475)
)
terminal(B
rect(nwell -125 -475 125 475)
)
)
device(D$NMOS NMOS
terminal(S
rect(nsd -650 -475 -125 475)
)
terminal(G
rect(poly -125 -475 125 475)
)
terminal(D
rect(nsd 125 -475 675 475)
)
terminal(B
rect(rbulk -125 -475 125 475)
)
)
device(D$NMOS$1 NMOS
terminal(S
rect(nsd -675 -475 -125 475)
)
terminal(G
rect(poly -125 -475 125 475)
)
terminal(D
rect(nsd 125 -475 650 475)
)
terminal(B
rect(rbulk -125 -475 125 475)
)
)
# Circuit section
# Circuits are the hierarchical building blocks of the netlist.
circuit(INV2
# Nets with their geometries
net(1
rect(nwell -1400 1800 1400 4580)
rect(diff_cont -110 3930 110 4150)
rect(ntie -400 3700 400 4380)
)
net(2 name(IN)
rect(poly -525 -250 -275 2250)
rect(poly -1700 1620 -400 1980)
rect(poly -525 -800 -275 800)
rect(poly -525 2000 -275 3600)
rect(poly_lbl -801 1799 -799 1801)
rect(poly_cont -1630 1690 -1410 1910)
)
net(3
rect(poly 275 -250 525 2250)
rect(poly 220 820 580 1180)
rect(poly 275 2000 525 3600)
rect(poly 275 -800 525 800)
rect(diff_cont -910 2490 -690 2710)
rect(diff_cont -910 2890 -690 3110)
rect(diff_cont -910 -310 -690 -90)
rect(diff_cont -910 90 -690 310)
rect(poly_cont 290 890 510 1110)
rect(metal1 -800 820 580 1180)
rect(metal1 -980 -420 -620 2420)
rect(metal1 -980 2420 -620 3180)
rect(metal1 -980 -380 -620 380)
rect(psd -1050 2325 -525 3275)
rect(nsd -1050 -475 -525 475)
)
net(4 name(OUT)
rect(diff_cont 690 2890 910 3110)
rect(diff_cont 690 2490 910 2710)
rect(diff_cont 690 90 910 310)
rect(diff_cont 690 -310 910 -90)
polygon(metal1 800 20 * 380 940 * * 1620 620 * * 2420 980 * * 1980 1300 * * 20)
rect(metal1 620 2420 980 3180)
rect(metal1 620 -380 980 380)
rect(metal1_lbl 799 1799 801 1801)
rect(psd 525 2325 1050 3275)
rect(nsd 525 -475 1050 475)
)
net(5 name(VSS)
rect(diff_cont -110 -310 110 -90)
rect(diff_cont -110 90 110 310)
rect(diff_cont -110 90 110 310)
rect(diff_cont -110 -310 110 -90)
rect(metal1 -180 -380 180 380)
rect(metal1 -180 -380 180 380)
rect(via1 -125 -325 125 -75)
rect(via1 -125 75 125 325)
rect(metal2 -1400 -450 1400 450)
rect(metal2_lbl 1239 -91 1241 -89)
rect(nsd -275 -475 275 475)
)
net(6 name(VDD)
rect(diff_cont -110 2490 110 2710)
rect(diff_cont -110 2890 110 3110)
rect(diff_cont -110 2890 110 3110)
rect(diff_cont -110 2490 110 2710)
rect(metal1 -180 2420 180 3180)
rect(metal1 -180 2420 180 3180)
rect(via1 -125 2475 125 2725)
rect(via1 -125 2875 125 3125)
rect(metal2 -1400 2350 1400 3250)
rect(metal2_lbl 1249 2799 1251 2801)
rect(psd -275 2325 275 3275)
)
net(7 name(BULK)
rect(diff_cont -110 -1360 110 -1140)
rect(ptie -400 -1590 400 -910)
)
# Outgoing pins and their connections to nets
pin($0 1)
pin(IN 2)
pin($2 3)
pin(OUT 4)
pin(VSS 5)
pin(VDD 6)
pin(BULK 7)
# Devices and their connections
device($1 D$PMOS
location(-400 2800)
param(L 0.25)
param(W 0.95)
param(AS 0.49875)
param(AD 0.26125)
param(PS 2.95)
param(PD 1.5)
terminal(S 3)
terminal(G 2)
terminal(D 6)
terminal(B 1)
)
device($2 D$PMOS$1
location(400 2800)
param(L 0.25)
param(W 0.95)
param(AS 0.26125)
param(AD 0.49875)
param(PS 1.5)
param(PD 2.95)
terminal(S 6)
terminal(G 3)
terminal(D 4)
terminal(B 1)
)
device($3 D$NMOS
location(-400 0)
param(L 0.25)
param(W 0.95)
param(AS 0.49875)
param(AD 0.26125)
param(PS 2.95)
param(PD 1.5)
terminal(S 3)
terminal(G 2)
terminal(D 5)
terminal(B 7)
)
device($4 D$NMOS$1
location(400 0)
param(L 0.25)
param(W 0.95)
param(AS 0.26125)
param(AD 0.49875)
param(PS 1.5)
param(PD 2.95)
terminal(S 5)
terminal(G 3)
terminal(D 4)
terminal(B 7)
)
)
circuit(INV2PAIR
# Nets with their geometries
net(1 name(BULK))
net(2
rect(diff_cont 3430 3290 3650 3510)
rect(diff_cont 3430 3690 3650 3910)
rect(diff_cont 3430 490 3650 710)
rect(diff_cont 3430 890 3650 1110)
)
net(3
rect(diff_cont 4230 3290 4450 3510)
rect(diff_cont 4230 3690 4450 3910)
rect(diff_cont 4230 3690 4450 3910)
rect(diff_cont 4230 3290 4450 3510)
rect(diff_cont 1590 3290 1810 3510)
rect(diff_cont 1590 3690 1810 3910)
rect(diff_cont 1590 3690 1810 3910)
rect(diff_cont 1590 3290 1810 3510)
rect(metal1 4160 3220 4520 3980)
rect(metal1 4160 3220 4520 3980)
rect(metal1 1520 3220 1880 3980)
rect(metal1 1520 3220 1880 3980)
)
net(4
rect(diff_cont 4230 490 4450 710)
rect(diff_cont 4230 890 4450 1110)
rect(diff_cont 4230 890 4450 1110)
rect(diff_cont 4230 490 4450 710)
rect(diff_cont 1590 490 1810 710)
rect(diff_cont 1590 890 1810 1110)
rect(diff_cont 1590 890 1810 1110)
rect(diff_cont 1590 490 1810 710)
rect(metal1 4160 420 4520 1180)
rect(metal1 4160 420 4520 1180)
rect(metal1 1520 420 1880 1180)
rect(metal1 1520 420 1880 1180)
)
net(5
rect(diff_cont 2390 3690 2610 3910)
rect(diff_cont 2390 3290 2610 3510)
rect(diff_cont 2390 890 2610 1110)
rect(diff_cont 2390 490 2610 710)
)
net(6)
net(7
rect(diff_cont 5030 3690 5250 3910)
rect(diff_cont 5030 3290 5250 3510)
rect(diff_cont 5030 890 5250 1110)
rect(diff_cont 5030 490 5250 710)
)
net(8)
# Outgoing pins and their connections to nets
pin(BULK 1)
pin($1 2)
pin($2 3)
pin($3 4)
pin($4 6)
pin($5 7)
pin($6 8)
# Subcircuits and their connections
circuit($1 INV2 location(1700 800)
pin($0 8)
pin(IN 6)
pin(OUT 5)
pin(VSS 4)
pin(VDD 3)
pin(BULK 1)
)
circuit($2 INV2 location(4340 800)
pin($0 8)
pin(IN 5)
pin($2 2)
pin(OUT 7)
pin(VSS 4)
pin(VDD 3)
pin(BULK 1)
)
)
circuit(RINGO
# Nets with their geometries
net(1 name(FB)
rect(diff_cont 22850 2490 23070 2710)
rect(diff_cont 22850 2890 23070 3110)
rect(diff_cont 22850 -310 23070 -90)
rect(diff_cont 22850 90 23070 310)
rect(metal1 -1700 1620 -1340 1980)
rect(via1 -1645 1675 -1395 1925)
rect(via1 22835 1675 23085 1925)
rect(metal2 -1720 1600 23160 2000)
rect(metal2_lbl -1 1799 1 1801)
)
net(2 name(OSC)
rect(diff_cont 24450 2890 24670 3110)
rect(diff_cont 24450 2490 24670 2710)
rect(diff_cont 24450 90 24670 310)
rect(diff_cont 24450 -310 24670 -90)
rect(via1 24435 1675 24685 1925)
rect(metal2 24360 1600 24760 2000)
rect(metal2_lbl 24559 1799 24561 1801)
)
net(3 name(VDD)
rect(diff_cont 7810 2490 8030 2710)
rect(diff_cont 7810 2890 8030 3110)
rect(diff_cont 7810 2890 8030 3110)
rect(diff_cont 7810 2490 8030 2710)
rect(diff_cont 5170 2490 5390 2710)
rect(diff_cont 5170 2890 5390 3110)
rect(diff_cont 5170 2890 5390 3110)
rect(diff_cont 5170 2490 5390 2710)
rect(diff_cont 2530 2490 2750 2710)
rect(diff_cont 2530 2890 2750 3110)
rect(diff_cont 2530 2890 2750 3110)
rect(diff_cont 2530 2490 2750 2710)
rect(diff_cont -110 2490 110 2710)
rect(diff_cont -110 2890 110 3110)
rect(diff_cont -110 2890 110 3110)
rect(diff_cont -110 2490 110 2710)
rect(diff_cont 13090 2490 13310 2710)
rect(diff_cont 13090 2890 13310 3110)
rect(diff_cont 13090 2890 13310 3110)
rect(diff_cont 13090 2490 13310 2710)
rect(diff_cont 10450 2490 10670 2710)
rect(diff_cont 10450 2890 10670 3110)
rect(diff_cont 10450 2890 10670 3110)
rect(diff_cont 10450 2490 10670 2710)
rect(diff_cont 18370 2490 18590 2710)
rect(diff_cont 18370 2890 18590 3110)
rect(diff_cont 18370 2890 18590 3110)
rect(diff_cont 18370 2490 18590 2710)
rect(diff_cont 15730 2490 15950 2710)
rect(diff_cont 15730 2890 15950 3110)
rect(diff_cont 15730 2890 15950 3110)
rect(diff_cont 15730 2490 15950 2710)
rect(diff_cont 23650 2490 23870 2710)
rect(diff_cont 23650 2890 23870 3110)
rect(diff_cont 23650 2890 23870 3110)
rect(diff_cont 23650 2490 23870 2710)
rect(diff_cont 21010 2490 21230 2710)
rect(diff_cont 21010 2890 21230 3110)
rect(diff_cont 21010 2890 21230 3110)
rect(diff_cont 21010 2490 21230 2710)
rect(metal1 -180 3100 180 4220)
rect(metal1 2460 3100 2820 4220)
rect(metal1 5100 3100 5460 4220)
rect(metal1 7740 3100 8100 4220)
rect(metal1 10380 3100 10740 4220)
rect(metal1 13020 3100 13380 4220)
rect(metal1 15660 3100 16020 4220)
rect(metal1 18300 3100 18660 4220)
rect(metal1 20940 3100 21300 4220)
rect(metal1 23580 3100 23940 4220)
rect(metal1 7740 2420 8100 3180)
rect(metal1 7740 2420 8100 3180)
rect(metal1 5100 2420 5460 3180)
rect(metal1 5100 2420 5460 3180)
rect(metal1 2460 2420 2820 3180)
rect(metal1 2460 2420 2820 3180)
rect(metal1 -180 2420 180 3180)
rect(metal1 -180 2420 180 3180)
rect(metal1 13020 2420 13380 3180)
rect(metal1 13020 2420 13380 3180)
rect(metal1 10380 2420 10740 3180)
rect(metal1 10380 2420 10740 3180)
rect(metal1 18300 2420 18660 3180)
rect(metal1 18300 2420 18660 3180)
rect(metal1 15660 2420 16020 3180)
rect(metal1 15660 2420 16020 3180)
rect(metal1 23580 2420 23940 3180)
rect(metal1 23580 2420 23940 3180)
rect(metal1 20940 2420 21300 3180)
rect(metal1 20940 2420 21300 3180)
rect(metal2_lbl -1 2799 1 2801)
)
net(4 name('BULK,VSS')
rect(diff_cont 7810 -310 8030 -90)
rect(diff_cont 7810 90 8030 310)
rect(diff_cont 7810 90 8030 310)
rect(diff_cont 7810 -310 8030 -90)
rect(diff_cont 5170 -310 5390 -90)
rect(diff_cont 5170 90 5390 310)
rect(diff_cont 5170 90 5390 310)
rect(diff_cont 5170 -310 5390 -90)
rect(diff_cont 2530 -310 2750 -90)
rect(diff_cont 2530 90 2750 310)
rect(diff_cont 2530 90 2750 310)
rect(diff_cont 2530 -310 2750 -90)
rect(diff_cont -110 -310 110 -90)
rect(diff_cont -110 90 110 310)
rect(diff_cont -110 90 110 310)
rect(diff_cont -110 -310 110 -90)
rect(diff_cont 13090 -310 13310 -90)
rect(diff_cont 13090 90 13310 310)
rect(diff_cont 13090 90 13310 310)
rect(diff_cont 13090 -310 13310 -90)
rect(diff_cont 10450 -310 10670 -90)
rect(diff_cont 10450 90 10670 310)
rect(diff_cont 10450 90 10670 310)
rect(diff_cont 10450 -310 10670 -90)
rect(diff_cont 18370 -310 18590 -90)
rect(diff_cont 18370 90 18590 310)
rect(diff_cont 18370 90 18590 310)
rect(diff_cont 18370 -310 18590 -90)
rect(diff_cont 15730 -310 15950 -90)
rect(diff_cont 15730 90 15950 310)
rect(diff_cont 15730 90 15950 310)
rect(diff_cont 15730 -310 15950 -90)
rect(diff_cont 23650 -310 23870 -90)
rect(diff_cont 23650 90 23870 310)
rect(diff_cont 23650 90 23870 310)
rect(diff_cont 23650 -310 23870 -90)
rect(diff_cont 21010 -310 21230 -90)
rect(diff_cont 21010 90 21230 310)
rect(diff_cont 21010 90 21230 310)
rect(diff_cont 21010 -310 21230 -90)
rect(metal1 -180 -1420 180 -300)
rect(metal1 2460 -1420 2820 -300)
rect(metal1 5100 -1420 5460 -300)
rect(metal1 7740 -1420 8100 -300)
rect(metal1 10380 -1420 10740 -300)
rect(metal1 13020 -1420 13380 -300)
rect(metal1 15660 -1420 16020 -300)
rect(metal1 18300 -1420 18660 -300)
rect(metal1 20940 -1420 21300 -300)
rect(metal1 23580 -1420 23940 -300)
rect(metal1 7740 -380 8100 380)
rect(metal1 7740 -380 8100 380)
rect(metal1 5100 -380 5460 380)
rect(metal1 5100 -380 5460 380)
rect(metal1 2460 -380 2820 380)
rect(metal1 2460 -380 2820 380)
rect(metal1 -180 -380 180 380)
rect(metal1 -180 -380 180 380)
rect(metal1 13020 -380 13380 380)
rect(metal1 13020 -380 13380 380)
rect(metal1 10380 -380 10740 380)
rect(metal1 10380 -380 10740 380)
rect(metal1 18300 -380 18660 380)
rect(metal1 18300 -380 18660 380)
rect(metal1 15660 -380 16020 380)
rect(metal1 15660 -380 16020 380)
rect(metal1 23580 -380 23940 380)
rect(metal1 23580 -380 23940 380)
rect(metal1 20940 -380 21300 380)
rect(metal1 20940 -380 21300 380)
rect(metal2_lbl -1 -1 1 1)
)
net(5
rect(diff_cont 3330 2890 3550 3110)
rect(diff_cont 3330 2490 3550 2710)
rect(diff_cont 3330 90 3550 310)
rect(diff_cont 3330 -310 3550 -90)
)
net(6
rect(diff_cont 19170 2890 19390 3110)
rect(diff_cont 19170 2490 19390 2710)
rect(diff_cont 19170 90 19390 310)
rect(diff_cont 19170 -310 19390 -90)
)
net(7
rect(diff_cont 13890 2890 14110 3110)
rect(diff_cont 13890 2490 14110 2710)
rect(diff_cont 13890 90 14110 310)
rect(diff_cont 13890 -310 14110 -90)
)
net(8
rect(diff_cont 8610 2890 8830 3110)
rect(diff_cont 8610 2490 8830 2710)
rect(diff_cont 8610 90 8830 310)
rect(diff_cont 8610 -310 8830 -90)
)
# Outgoing pins and their connections to nets
pin(FB 1)
pin(OSC 2)
pin(VDD 3)
pin('BULK,VSS' 4)
# Subcircuits and their connections
circuit($1 INV2PAIR location(19420 -800)
pin(BULK 4)
pin($1 1)
pin($2 3)
pin($3 4)
pin($4 6)
pin($5 2)
pin($6 3)
)
circuit($2 INV2PAIR location(-1700 -800)
pin(BULK 4)
pin($2 3)
pin($3 4)
pin($4 1)
pin($5 5)
pin($6 3)
)
circuit($3 INV2PAIR location(3580 -800)
pin(BULK 4)
pin($2 3)
pin($3 4)
pin($4 5)
pin($5 8)
pin($6 3)
)
circuit($4 INV2PAIR location(8860 -800)
pin(BULK 4)
pin($2 3)
pin($3 4)
pin($4 8)
pin($5 7)
pin($6 3)
)
circuit($5 INV2PAIR location(14140 -800)
pin(BULK 4)
pin($2 3)
pin($3 4)
pin($4 7)
pin($5 6)
pin($6 3)
)
)

View File

@ -34,132 +34,132 @@ G(rbulk BULK)
G(ptie BULK)
D(D$PMOS PMOS
T(S
R(psd -650 -475 -125 475)
R(psd (-650 -475) (525 950))
)
T(G
R(poly -125 -475 125 475)
R(poly (-125 -475) (250 950))
)
T(D
R(psd 125 -475 675 475)
R(psd (125 -475) (550 950))
)
T(B
R(nwell -125 -475 125 475)
R(nwell (-125 -475) (250 950))
)
)
D(D$PMOS$1 PMOS
T(S
R(psd -675 -475 -125 475)
R(psd (-675 -475) (550 950))
)
T(G
R(poly -125 -475 125 475)
R(poly (-125 -475) (250 950))
)
T(D
R(psd 125 -475 650 475)
R(psd (125 -475) (525 950))
)
T(B
R(nwell -125 -475 125 475)
R(nwell (-125 -475) (250 950))
)
)
D(D$NMOS NMOS
T(S
R(nsd -650 -475 -125 475)
R(nsd (-650 -475) (525 950))
)
T(G
R(poly -125 -475 125 475)
R(poly (-125 -475) (250 950))
)
T(D
R(nsd 125 -475 675 475)
R(nsd (125 -475) (550 950))
)
T(B
R(rbulk -125 -475 125 475)
R(rbulk (-125 -475) (250 950))
)
)
D(D$NMOS$1 NMOS
T(S
R(nsd -675 -475 -125 475)
R(nsd (-675 -475) (550 950))
)
T(G
R(poly -125 -475 125 475)
R(poly (-125 -475) (250 950))
)
T(D
R(nsd 125 -475 650 475)
R(nsd (125 -475) (525 950))
)
T(B
R(rbulk -125 -475 125 475)
R(rbulk (-125 -475) (250 950))
)
)
X(INV2
N(1
R(nwell -1400 1800 1400 4580)
R(diff_cont -110 3930 110 4150)
R(ntie -400 3700 400 4380)
R(nwell (-1400 1800) (2800 2780))
R(diff_cont (-1510 -650) (220 220))
R(ntie (-510 -450) (800 680))
)
N(2 I(IN)
R(poly -525 -250 -275 2250)
R(poly -1700 1620 -400 1980)
R(poly -525 -800 -275 800)
R(poly -525 2000 -275 3600)
R(poly_lbl -801 1799 -799 1801)
R(poly_cont -1630 1690 -1410 1910)
R(poly (-525 -250) (250 2500))
R(poly (-1425 -630) (1300 360))
R(poly (-125 -2780) (250 1600))
R(poly (-250 1200) (250 1600))
R(poly_lbl (-526 -1801) (2 2))
R(poly_cont (-831 -111) (220 220))
)
N(3
R(poly 275 -250 525 2250)
R(poly 220 820 580 1180)
R(poly 275 2000 525 3600)
R(poly 275 -800 525 800)
R(diff_cont -910 2490 -690 2710)
R(diff_cont -910 2890 -690 3110)
R(diff_cont -910 -310 -690 -90)
R(diff_cont -910 90 -690 310)
R(poly_cont 290 890 510 1110)
R(metal1 -800 820 580 1180)
R(metal1 -980 -420 -620 2420)
R(metal1 -980 2420 -620 3180)
R(metal1 -980 -380 -620 380)
R(psd -1050 2325 -525 3275)
R(nsd -1050 -475 -525 475)
R(poly (275 -250) (250 2500))
R(poly (-305 -1430) (360 360))
R(poly (-305 820) (250 1600))
R(poly (-250 -4400) (250 1600))
R(diff_cont (-1435 1690) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -3420) (220 220))
R(diff_cont (-220 180) (220 220))
R(poly_cont (980 580) (220 220))
R(metal1 (-1310 -290) (1380 360))
R(metal1 (-1560 -1600) (360 2840))
R(metal1 (-360 0) (360 760))
R(metal1 (-360 -3560) (360 760))
R(psd (-430 1945) (525 950))
R(nsd (-525 -3750) (525 950))
)
N(4 I(OUT)
R(diff_cont 690 2890 910 3110)
R(diff_cont 690 2490 910 2710)
R(diff_cont 690 90 910 310)
R(diff_cont 690 -310 910 -90)
Q(metal1 800 20 * 380 940 * * 1620 620 * * 2420 980 * * 1980 1300 * * 20)
R(metal1 620 2420 980 3180)
R(metal1 620 -380 980 380)
R(metal1_lbl 799 1799 801 1801)
R(psd 525 2325 1050 3275)
R(nsd 525 -475 1050 475)
R(diff_cont (690 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
Q(metal1 (-110 110) (0 360) (140 0) (0 1240) (-320 0) (0 800) (360 0) (0 -440) (320 0) (0 -1960))
R(metal1 (-680 2400) (360 760))
R(metal1 (-360 -3560) (360 760))
R(metal1_lbl (-181 1419) (2 2))
R(psd (-276 524) (525 950))
R(nsd (-525 -3750) (525 950))
)
N(5 I(VSS)
R(diff_cont -110 -310 110 -90)
R(diff_cont -110 90 110 310)
R(diff_cont -110 90 110 310)
R(diff_cont -110 -310 110 -90)
R(metal1 -180 -380 180 380)
R(metal1 -180 -380 180 380)
R(via1 -125 -325 125 -75)
R(via1 -125 75 125 325)
R(metal2 -1400 -450 1400 450)
R(metal2_lbl 1239 -91 1241 -89)
R(nsd -275 -475 275 475)
R(diff_cont (-110 -310) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(metal1 (-290 -290) (360 760))
R(metal1 (-360 -760) (360 760))
R(via1 (-305 -705) (250 250))
R(via1 (-250 150) (250 250))
R(metal2 (-1525 -775) (2800 900))
R(metal2_lbl (-161 -541) (2 2))
R(nsd (-1516 -386) (550 950))
)
N(6 I(VDD)
R(diff_cont -110 2490 110 2710)
R(diff_cont -110 2890 110 3110)
R(diff_cont -110 2890 110 3110)
R(diff_cont -110 2490 110 2710)
R(metal1 -180 2420 180 3180)
R(metal1 -180 2420 180 3180)
R(via1 -125 2475 125 2725)
R(via1 -125 2875 125 3125)
R(metal2 -1400 2350 1400 3250)
R(metal2_lbl 1249 2799 1251 2801)
R(psd -275 2325 275 3275)
R(diff_cont (-110 2490) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(metal1 (-290 -290) (360 760))
R(metal1 (-360 -760) (360 760))
R(via1 (-305 -705) (250 250))
R(via1 (-250 150) (250 250))
R(metal2 (-1525 -775) (2800 900))
R(metal2_lbl (-151 -451) (2 2))
R(psd (-1526 -476) (550 950))
)
N(7 I(BULK)
R(diff_cont -110 -1360 110 -1140)
R(ptie -400 -1590 400 -910)
R(diff_cont (-110 -1360) (220 220))
R(ptie (-510 -450) (800 680))
)
P($0 1)
P(IN 2)
@ -224,51 +224,51 @@ X(INV2
X(INV2PAIR
N(1 I(BULK))
N(2
R(diff_cont 3430 3290 3650 3510)
R(diff_cont 3430 3690 3650 3910)
R(diff_cont 3430 490 3650 710)
R(diff_cont 3430 890 3650 1110)
R(diff_cont (3430 3290) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -3420) (220 220))
R(diff_cont (-220 180) (220 220))
)
N(3
R(diff_cont 4230 3290 4450 3510)
R(diff_cont 4230 3690 4450 3910)
R(diff_cont 4230 3690 4450 3910)
R(diff_cont 4230 3290 4450 3510)
R(diff_cont 1590 3290 1810 3510)
R(diff_cont 1590 3690 1810 3910)
R(diff_cont 1590 3690 1810 3910)
R(diff_cont 1590 3290 1810 3510)
R(metal1 4160 3220 4520 3980)
R(metal1 4160 3220 4520 3980)
R(metal1 1520 3220 1880 3980)
R(metal1 1520 3220 1880 3980)
R(diff_cont (4230 3290) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(metal1 (2350 -290) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
)
N(4
R(diff_cont 4230 490 4450 710)
R(diff_cont 4230 890 4450 1110)
R(diff_cont 4230 890 4450 1110)
R(diff_cont 4230 490 4450 710)
R(diff_cont 1590 490 1810 710)
R(diff_cont 1590 890 1810 1110)
R(diff_cont 1590 890 1810 1110)
R(diff_cont 1590 490 1810 710)
R(metal1 4160 420 4520 1180)
R(metal1 4160 420 4520 1180)
R(metal1 1520 420 1880 1180)
R(metal1 1520 420 1880 1180)
R(diff_cont (4230 490) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(metal1 (2350 -290) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
)
N(5
R(diff_cont 2390 3690 2610 3910)
R(diff_cont 2390 3290 2610 3510)
R(diff_cont 2390 890 2610 1110)
R(diff_cont 2390 490 2610 710)
R(diff_cont (2390 3690) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
)
N(6)
N(7
R(diff_cont 5030 3690 5250 3910)
R(diff_cont 5030 3290 5250 3510)
R(diff_cont 5030 890 5250 1110)
R(diff_cont 5030 490 5250 710)
R(diff_cont (5030 3690) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
)
N(8)
P(BULK 1)
@ -298,194 +298,194 @@ X(INV2PAIR
)
X(RINGO
N(1 I(FB)
R(diff_cont 22850 2490 23070 2710)
R(diff_cont 22850 2890 23070 3110)
R(diff_cont 22850 -310 23070 -90)
R(diff_cont 22850 90 23070 310)
R(metal1 -1700 1620 -1340 1980)
R(via1 -1645 1675 -1395 1925)
R(via1 22835 1675 23085 1925)
R(metal2 -1720 1600 23160 2000)
R(metal2_lbl -1 1799 1 1801)
R(diff_cont (22850 2490) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -3420) (220 220))
R(diff_cont (-220 180) (220 220))
R(metal1 (-24770 1310) (360 360))
R(via1 (-305 -305) (250 250))
R(via1 (24230 -250) (250 250))
R(metal2 (-24805 -325) (24880 400))
R(metal2_lbl (-23161 -201) (2 2))
)
N(2 I(OSC)
R(diff_cont 24450 2890 24670 3110)
R(diff_cont 24450 2490 24670 2710)
R(diff_cont 24450 90 24670 310)
R(diff_cont 24450 -310 24670 -90)
R(via1 24435 1675 24685 1925)
R(metal2 24360 1600 24760 2000)
R(metal2_lbl 24559 1799 24561 1801)
R(diff_cont (24450 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
R(via1 (-235 1765) (250 250))
R(metal2 (-325 -325) (400 400))
R(metal2_lbl (-201 -201) (2 2))
)
N(3 I(VDD)
R(diff_cont 7810 2490 8030 2710)
R(diff_cont 7810 2890 8030 3110)
R(diff_cont 7810 2890 8030 3110)
R(diff_cont 7810 2490 8030 2710)
R(diff_cont 5170 2490 5390 2710)
R(diff_cont 5170 2890 5390 3110)
R(diff_cont 5170 2890 5390 3110)
R(diff_cont 5170 2490 5390 2710)
R(diff_cont 2530 2490 2750 2710)
R(diff_cont 2530 2890 2750 3110)
R(diff_cont 2530 2890 2750 3110)
R(diff_cont 2530 2490 2750 2710)
R(diff_cont -110 2490 110 2710)
R(diff_cont -110 2890 110 3110)
R(diff_cont -110 2890 110 3110)
R(diff_cont -110 2490 110 2710)
R(diff_cont 13090 2490 13310 2710)
R(diff_cont 13090 2890 13310 3110)
R(diff_cont 13090 2890 13310 3110)
R(diff_cont 13090 2490 13310 2710)
R(diff_cont 10450 2490 10670 2710)
R(diff_cont 10450 2890 10670 3110)
R(diff_cont 10450 2890 10670 3110)
R(diff_cont 10450 2490 10670 2710)
R(diff_cont 18370 2490 18590 2710)
R(diff_cont 18370 2890 18590 3110)
R(diff_cont 18370 2890 18590 3110)
R(diff_cont 18370 2490 18590 2710)
R(diff_cont 15730 2490 15950 2710)
R(diff_cont 15730 2890 15950 3110)
R(diff_cont 15730 2890 15950 3110)
R(diff_cont 15730 2490 15950 2710)
R(diff_cont 23650 2490 23870 2710)
R(diff_cont 23650 2890 23870 3110)
R(diff_cont 23650 2890 23870 3110)
R(diff_cont 23650 2490 23870 2710)
R(diff_cont 21010 2490 21230 2710)
R(diff_cont 21010 2890 21230 3110)
R(diff_cont 21010 2890 21230 3110)
R(diff_cont 21010 2490 21230 2710)
R(metal1 -180 3100 180 4220)
R(metal1 2460 3100 2820 4220)
R(metal1 5100 3100 5460 4220)
R(metal1 7740 3100 8100 4220)
R(metal1 10380 3100 10740 4220)
R(metal1 13020 3100 13380 4220)
R(metal1 15660 3100 16020 4220)
R(metal1 18300 3100 18660 4220)
R(metal1 20940 3100 21300 4220)
R(metal1 23580 3100 23940 4220)
R(metal1 7740 2420 8100 3180)
R(metal1 7740 2420 8100 3180)
R(metal1 5100 2420 5460 3180)
R(metal1 5100 2420 5460 3180)
R(metal1 2460 2420 2820 3180)
R(metal1 2460 2420 2820 3180)
R(metal1 -180 2420 180 3180)
R(metal1 -180 2420 180 3180)
R(metal1 13020 2420 13380 3180)
R(metal1 13020 2420 13380 3180)
R(metal1 10380 2420 10740 3180)
R(metal1 10380 2420 10740 3180)
R(metal1 18300 2420 18660 3180)
R(metal1 18300 2420 18660 3180)
R(metal1 15660 2420 16020 3180)
R(metal1 15660 2420 16020 3180)
R(metal1 23580 2420 23940 3180)
R(metal1 23580 2420 23940 3180)
R(metal1 20940 2420 21300 3180)
R(metal1 20940 2420 21300 3180)
R(metal2_lbl -1 2799 1 2801)
R(diff_cont (7810 2490) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (12980 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (7700 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (7700 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(metal1 (-21410 390) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (-16200 -1800) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (12840 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (7560 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (7560 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal2_lbl (-21301 -381) (2 2))
)
N(4 I('BULK,VSS')
R(diff_cont 7810 -310 8030 -90)
R(diff_cont 7810 90 8030 310)
R(diff_cont 7810 90 8030 310)
R(diff_cont 7810 -310 8030 -90)
R(diff_cont 5170 -310 5390 -90)
R(diff_cont 5170 90 5390 310)
R(diff_cont 5170 90 5390 310)
R(diff_cont 5170 -310 5390 -90)
R(diff_cont 2530 -310 2750 -90)
R(diff_cont 2530 90 2750 310)
R(diff_cont 2530 90 2750 310)
R(diff_cont 2530 -310 2750 -90)
R(diff_cont -110 -310 110 -90)
R(diff_cont -110 90 110 310)
R(diff_cont -110 90 110 310)
R(diff_cont -110 -310 110 -90)
R(diff_cont 13090 -310 13310 -90)
R(diff_cont 13090 90 13310 310)
R(diff_cont 13090 90 13310 310)
R(diff_cont 13090 -310 13310 -90)
R(diff_cont 10450 -310 10670 -90)
R(diff_cont 10450 90 10670 310)
R(diff_cont 10450 90 10670 310)
R(diff_cont 10450 -310 10670 -90)
R(diff_cont 18370 -310 18590 -90)
R(diff_cont 18370 90 18590 310)
R(diff_cont 18370 90 18590 310)
R(diff_cont 18370 -310 18590 -90)
R(diff_cont 15730 -310 15950 -90)
R(diff_cont 15730 90 15950 310)
R(diff_cont 15730 90 15950 310)
R(diff_cont 15730 -310 15950 -90)
R(diff_cont 23650 -310 23870 -90)
R(diff_cont 23650 90 23870 310)
R(diff_cont 23650 90 23870 310)
R(diff_cont 23650 -310 23870 -90)
R(diff_cont 21010 -310 21230 -90)
R(diff_cont 21010 90 21230 310)
R(diff_cont 21010 90 21230 310)
R(diff_cont 21010 -310 21230 -90)
R(metal1 -180 -1420 180 -300)
R(metal1 2460 -1420 2820 -300)
R(metal1 5100 -1420 5460 -300)
R(metal1 7740 -1420 8100 -300)
R(metal1 10380 -1420 10740 -300)
R(metal1 13020 -1420 13380 -300)
R(metal1 15660 -1420 16020 -300)
R(metal1 18300 -1420 18660 -300)
R(metal1 20940 -1420 21300 -300)
R(metal1 23580 -1420 23940 -300)
R(metal1 7740 -380 8100 380)
R(metal1 7740 -380 8100 380)
R(metal1 5100 -380 5460 380)
R(metal1 5100 -380 5460 380)
R(metal1 2460 -380 2820 380)
R(metal1 2460 -380 2820 380)
R(metal1 -180 -380 180 380)
R(metal1 -180 -380 180 380)
R(metal1 13020 -380 13380 380)
R(metal1 13020 -380 13380 380)
R(metal1 10380 -380 10740 380)
R(metal1 10380 -380 10740 380)
R(metal1 18300 -380 18660 380)
R(metal1 18300 -380 18660 380)
R(metal1 15660 -380 16020 380)
R(metal1 15660 -380 16020 380)
R(metal1 23580 -380 23940 380)
R(metal1 23580 -380 23940 380)
R(metal1 20940 -380 21300 380)
R(metal1 20940 -380 21300 380)
R(metal2_lbl -1 -1 1 1)
R(diff_cont (7810 -310) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (12980 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (7700 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (7700 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(metal1 (-21410 -1330) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (2280 -1120) (360 1120))
R(metal1 (-16200 -80) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (12840 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (7560 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (7560 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal2_lbl (-21301 -381) (2 2))
)
N(5
R(diff_cont 3330 2890 3550 3110)
R(diff_cont 3330 2490 3550 2710)
R(diff_cont 3330 90 3550 310)
R(diff_cont 3330 -310 3550 -90)
R(diff_cont (3330 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
)
N(6
R(diff_cont 19170 2890 19390 3110)
R(diff_cont 19170 2490 19390 2710)
R(diff_cont 19170 90 19390 310)
R(diff_cont 19170 -310 19390 -90)
R(diff_cont (19170 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
)
N(7
R(diff_cont 13890 2890 14110 3110)
R(diff_cont 13890 2490 14110 2710)
R(diff_cont 13890 90 14110 310)
R(diff_cont 13890 -310 14110 -90)
R(diff_cont (13890 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
)
N(8
R(diff_cont 8610 2890 8830 3110)
R(diff_cont 8610 2490 8830 2710)
R(diff_cont 8610 90 8830 310)
R(diff_cont 8610 -310 8830 -90)
R(diff_cont (8610 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
)
P(FB 1)
P(OSC 2)

View File

@ -25,109 +25,109 @@ C(psd diff_cont psd)
C(nsd diff_cont nsd)
D(D$PMOS PMOS
T(S
R(psd -650 -475 -125 475)
R(psd (-650 -475) (525 950))
)
T(G
R(poly -125 -475 125 475)
R(poly (-125 -475) (250 950))
)
T(D
R(psd 125 -475 675 475)
R(psd (125 -475) (550 950))
)
)
D(D$PMOS$1 PMOS
T(S
R(psd -675 -475 -125 475)
R(psd (-675 -475) (550 950))
)
T(G
R(poly -125 -475 125 475)
R(poly (-125 -475) (250 950))
)
T(D
R(psd 125 -475 650 475)
R(psd (125 -475) (525 950))
)
)
D(D$NMOS NMOS
T(S
R(nsd -650 -475 -125 475)
R(nsd (-650 -475) (525 950))
)
T(G
R(poly -125 -475 125 475)
R(poly (-125 -475) (250 950))
)
T(D
R(nsd 125 -475 675 475)
R(nsd (125 -475) (550 950))
)
)
D(D$NMOS$1 NMOS
T(S
R(nsd -675 -475 -125 475)
R(nsd (-675 -475) (550 950))
)
T(G
R(poly -125 -475 125 475)
R(poly (-125 -475) (250 950))
)
T(D
R(nsd 125 -475 650 475)
R(nsd (125 -475) (525 950))
)
)
X(INV2
N(1 I(IN)
R(poly -525 -250 -275 2250)
R(poly -1700 1620 -400 1980)
R(poly -525 -800 -275 800)
R(poly -525 2000 -275 3600)
R(poly_lbl -801 1799 -799 1801)
R(poly_cont -1630 1690 -1410 1910)
R(poly (-525 -250) (250 2500))
R(poly (-1425 -630) (1300 360))
R(poly (-125 -2780) (250 1600))
R(poly (-250 1200) (250 1600))
R(poly_lbl (-526 -1801) (2 2))
R(poly_cont (-831 -111) (220 220))
)
N(2
R(poly 275 -250 525 2250)
R(poly 220 820 580 1180)
R(poly 275 2000 525 3600)
R(poly 275 -800 525 800)
R(diff_cont -910 2490 -690 2710)
R(diff_cont -910 2890 -690 3110)
R(diff_cont -910 -310 -690 -90)
R(diff_cont -910 90 -690 310)
R(poly_cont 290 890 510 1110)
R(metal1 -800 820 580 1180)
R(metal1 -980 -420 -620 2420)
R(metal1 -980 2420 -620 3180)
R(metal1 -980 -380 -620 380)
R(psd -1050 2325 -525 3275)
R(nsd -1050 -475 -525 475)
R(poly (275 -250) (250 2500))
R(poly (-305 -1430) (360 360))
R(poly (-305 820) (250 1600))
R(poly (-250 -4400) (250 1600))
R(diff_cont (-1435 1690) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -3420) (220 220))
R(diff_cont (-220 180) (220 220))
R(poly_cont (980 580) (220 220))
R(metal1 (-1310 -290) (1380 360))
R(metal1 (-1560 -1600) (360 2840))
R(metal1 (-360 0) (360 760))
R(metal1 (-360 -3560) (360 760))
R(psd (-430 1945) (525 950))
R(nsd (-525 -3750) (525 950))
)
N(3 I(OUT)
R(diff_cont 690 2890 910 3110)
R(diff_cont 690 2490 910 2710)
R(diff_cont 690 90 910 310)
R(diff_cont 690 -310 910 -90)
Q(metal1 800 20 * 380 940 * * 1620 620 * * 2420 980 * * 1980 1300 * * 20)
R(metal1 620 2420 980 3180)
R(metal1 620 -380 980 380)
R(metal1_lbl 799 1799 801 1801)
R(psd 525 2325 1050 3275)
R(nsd 525 -475 1050 475)
R(diff_cont (690 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
Q(metal1 (-110 110) (0 360) (140 0) (0 1240) (-320 0) (0 800) (360 0) (0 -440) (320 0) (0 -1960))
R(metal1 (-680 2400) (360 760))
R(metal1 (-360 -3560) (360 760))
R(metal1_lbl (-181 1419) (2 2))
R(psd (-276 524) (525 950))
R(nsd (-525 -3750) (525 950))
)
N(4
R(diff_cont -110 -310 110 -90)
R(diff_cont -110 90 110 310)
R(diff_cont -110 90 110 310)
R(diff_cont -110 -310 110 -90)
R(metal1 -180 -380 180 380)
R(metal1 -180 -380 180 380)
R(via1 -125 -325 125 -75)
R(via1 -125 75 125 325)
R(metal2 -1400 -450 1400 450)
R(nsd -275 -475 275 475)
R(diff_cont (-110 -310) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(metal1 (-290 -290) (360 760))
R(metal1 (-360 -760) (360 760))
R(via1 (-305 -705) (250 250))
R(via1 (-250 150) (250 250))
R(metal2 (-1525 -775) (2800 900))
R(nsd (-1675 -925) (550 950))
)
N(5
R(diff_cont -110 2490 110 2710)
R(diff_cont -110 2890 110 3110)
R(diff_cont -110 2890 110 3110)
R(diff_cont -110 2490 110 2710)
R(metal1 -180 2420 180 3180)
R(metal1 -180 2420 180 3180)
R(via1 -125 2475 125 2725)
R(via1 -125 2875 125 3125)
R(metal2 -1400 2350 1400 3250)
R(psd -275 2325 275 3275)
R(diff_cont (-110 2490) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(metal1 (-290 -290) (360 760))
R(metal1 (-360 -760) (360 760))
R(via1 (-305 -705) (250 250))
R(via1 (-250 150) (250 250))
R(metal2 (-1525 -775) (2800 900))
R(psd (-1675 -925) (550 950))
)
P(IN 1)
P($1 2)
@ -185,204 +185,204 @@ X(INV2
)
X(RINGO
N(1 I(FB)
R(diff_cont 22850 2490 23070 2710)
R(diff_cont 22850 2890 23070 3110)
R(diff_cont 22850 -310 23070 -90)
R(diff_cont 22850 90 23070 310)
R(metal1 -1700 1620 -1340 1980)
R(via1 -1645 1675 -1395 1925)
R(via1 22835 1675 23085 1925)
R(metal2 -1720 1600 23160 2000)
R(metal2_lbl -1 1799 1 1801)
R(diff_cont (22850 2490) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -3420) (220 220))
R(diff_cont (-220 180) (220 220))
R(metal1 (-24770 1310) (360 360))
R(via1 (-305 -305) (250 250))
R(via1 (24230 -250) (250 250))
R(metal2 (-24805 -325) (24880 400))
R(metal2_lbl (-23161 -201) (2 2))
)
N(2 I(OSC)
R(diff_cont 24450 2890 24670 3110)
R(diff_cont 24450 2490 24670 2710)
R(diff_cont 24450 90 24670 310)
R(diff_cont 24450 -310 24670 -90)
R(via1 24435 1675 24685 1925)
R(metal2 24360 1600 24760 2000)
R(metal2_lbl 24559 1799 24561 1801)
R(diff_cont (24450 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
R(via1 (-235 1765) (250 250))
R(metal2 (-325 -325) (400 400))
R(metal2_lbl (-201 -201) (2 2))
)
N(3 I(VSS)
R(diff_cont 2530 -310 2750 -90)
R(diff_cont 2530 90 2750 310)
R(diff_cont 2530 90 2750 310)
R(diff_cont 2530 -310 2750 -90)
R(diff_cont -110 -310 110 -90)
R(diff_cont -110 90 110 310)
R(diff_cont -110 90 110 310)
R(diff_cont -110 -310 110 -90)
R(diff_cont 5170 -310 5390 -90)
R(diff_cont 5170 90 5390 310)
R(diff_cont 5170 90 5390 310)
R(diff_cont 5170 -310 5390 -90)
R(diff_cont 7810 -310 8030 -90)
R(diff_cont 7810 90 8030 310)
R(diff_cont 7810 90 8030 310)
R(diff_cont 7810 -310 8030 -90)
R(diff_cont 10450 -310 10670 -90)
R(diff_cont 10450 90 10670 310)
R(diff_cont 10450 90 10670 310)
R(diff_cont 10450 -310 10670 -90)
R(diff_cont 13090 -310 13310 -90)
R(diff_cont 13090 90 13310 310)
R(diff_cont 13090 90 13310 310)
R(diff_cont 13090 -310 13310 -90)
R(diff_cont 15730 -310 15950 -90)
R(diff_cont 15730 90 15950 310)
R(diff_cont 15730 90 15950 310)
R(diff_cont 15730 -310 15950 -90)
R(diff_cont 18370 -310 18590 -90)
R(diff_cont 18370 90 18590 310)
R(diff_cont 18370 90 18590 310)
R(diff_cont 18370 -310 18590 -90)
R(diff_cont 21010 -310 21230 -90)
R(diff_cont 21010 90 21230 310)
R(diff_cont 21010 90 21230 310)
R(diff_cont 21010 -310 21230 -90)
R(diff_cont 23650 -310 23870 -90)
R(diff_cont 23650 90 23870 310)
R(diff_cont 23650 90 23870 310)
R(diff_cont 23650 -310 23870 -90)
R(metal1 2460 -380 2820 380)
R(metal1 2460 -380 2820 380)
R(metal1 -180 -380 180 380)
R(metal1 -180 -380 180 380)
R(metal1 5100 -380 5460 380)
R(metal1 5100 -380 5460 380)
R(metal1 7740 -380 8100 380)
R(metal1 7740 -380 8100 380)
R(metal1 10380 -380 10740 380)
R(metal1 10380 -380 10740 380)
R(metal1 13020 -380 13380 380)
R(metal1 13020 -380 13380 380)
R(metal1 15660 -380 16020 380)
R(metal1 15660 -380 16020 380)
R(metal1 18300 -380 18660 380)
R(metal1 18300 -380 18660 380)
R(metal1 20940 -380 21300 380)
R(metal1 20940 -380 21300 380)
R(metal1 23580 -380 23940 380)
R(metal1 23580 -380 23940 380)
R(metal2_lbl -1 -1 1 1)
R(diff_cont (2530 -310) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (5060 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (2420 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (2420 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (2420 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (2420 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (2420 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (2420 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (2420 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(metal1 (-21410 -290) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (4920 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (2280 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (2280 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (2280 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (2280 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (2280 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (2280 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (2280 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal2_lbl (-23941 -381) (2 2))
)
N(4 I(VDD)
R(diff_cont 2530 2490 2750 2710)
R(diff_cont 2530 2890 2750 3110)
R(diff_cont 2530 2890 2750 3110)
R(diff_cont 2530 2490 2750 2710)
R(diff_cont -110 2490 110 2710)
R(diff_cont -110 2890 110 3110)
R(diff_cont -110 2890 110 3110)
R(diff_cont -110 2490 110 2710)
R(diff_cont 5170 2490 5390 2710)
R(diff_cont 5170 2890 5390 3110)
R(diff_cont 5170 2890 5390 3110)
R(diff_cont 5170 2490 5390 2710)
R(diff_cont 7810 2490 8030 2710)
R(diff_cont 7810 2890 8030 3110)
R(diff_cont 7810 2890 8030 3110)
R(diff_cont 7810 2490 8030 2710)
R(diff_cont 10450 2490 10670 2710)
R(diff_cont 10450 2890 10670 3110)
R(diff_cont 10450 2890 10670 3110)
R(diff_cont 10450 2490 10670 2710)
R(diff_cont 13090 2490 13310 2710)
R(diff_cont 13090 2890 13310 3110)
R(diff_cont 13090 2890 13310 3110)
R(diff_cont 13090 2490 13310 2710)
R(diff_cont 15730 2490 15950 2710)
R(diff_cont 15730 2890 15950 3110)
R(diff_cont 15730 2890 15950 3110)
R(diff_cont 15730 2490 15950 2710)
R(diff_cont 18370 2490 18590 2710)
R(diff_cont 18370 2890 18590 3110)
R(diff_cont 18370 2890 18590 3110)
R(diff_cont 18370 2490 18590 2710)
R(diff_cont 21010 2490 21230 2710)
R(diff_cont 21010 2890 21230 3110)
R(diff_cont 21010 2890 21230 3110)
R(diff_cont 21010 2490 21230 2710)
R(diff_cont 23650 2490 23870 2710)
R(diff_cont 23650 2890 23870 3110)
R(diff_cont 23650 2890 23870 3110)
R(diff_cont 23650 2490 23870 2710)
R(metal1 2460 2420 2820 3180)
R(metal1 2460 2420 2820 3180)
R(metal1 -180 2420 180 3180)
R(metal1 -180 2420 180 3180)
R(metal1 5100 2420 5460 3180)
R(metal1 5100 2420 5460 3180)
R(metal1 7740 2420 8100 3180)
R(metal1 7740 2420 8100 3180)
R(metal1 10380 2420 10740 3180)
R(metal1 10380 2420 10740 3180)
R(metal1 13020 2420 13380 3180)
R(metal1 13020 2420 13380 3180)
R(metal1 15660 2420 16020 3180)
R(metal1 15660 2420 16020 3180)
R(metal1 18300 2420 18660 3180)
R(metal1 18300 2420 18660 3180)
R(metal1 20940 2420 21300 3180)
R(metal1 20940 2420 21300 3180)
R(metal1 23580 2420 23940 3180)
R(metal1 23580 2420 23940 3180)
R(metal2_lbl -1 2799 1 2801)
R(diff_cont (2530 2490) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-2860 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (5060 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (2420 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (2420 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (2420 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (2420 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (2420 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (2420 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (2420 -220) (220 220))
R(diff_cont (-220 180) (220 220))
R(diff_cont (-220 -220) (220 220))
R(diff_cont (-220 -620) (220 220))
R(metal1 (-21410 -290) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (-3000 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (4920 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (2280 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (2280 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (2280 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (2280 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (2280 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (2280 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal1 (2280 -760) (360 760))
R(metal1 (-360 -760) (360 760))
R(metal2_lbl (-23941 -381) (2 2))
)
N(5
R(diff_cont 690 2890 910 3110)
R(diff_cont 690 2490 910 2710)
R(diff_cont 690 90 910 310)
R(diff_cont 690 -310 910 -90)
R(diff_cont (690 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
)
N(6
R(diff_cont 21810 2890 22030 3110)
R(diff_cont 21810 2490 22030 2710)
R(diff_cont 21810 90 22030 310)
R(diff_cont 21810 -310 22030 -90)
R(diff_cont (21810 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
)
N(7
R(diff_cont 19170 2890 19390 3110)
R(diff_cont 19170 2490 19390 2710)
R(diff_cont 19170 90 19390 310)
R(diff_cont 19170 -310 19390 -90)
R(diff_cont (19170 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
)
N(8
R(diff_cont 16530 2890 16750 3110)
R(diff_cont 16530 2490 16750 2710)
R(diff_cont 16530 90 16750 310)
R(diff_cont 16530 -310 16750 -90)
R(diff_cont (16530 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
)
N(9
R(diff_cont 13890 2890 14110 3110)
R(diff_cont 13890 2490 14110 2710)
R(diff_cont 13890 90 14110 310)
R(diff_cont 13890 -310 14110 -90)
R(diff_cont (13890 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
)
N(10
R(diff_cont 11250 2890 11470 3110)
R(diff_cont 11250 2490 11470 2710)
R(diff_cont 11250 90 11470 310)
R(diff_cont 11250 -310 11470 -90)
R(diff_cont (11250 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
)
N(11
R(diff_cont 8610 2890 8830 3110)
R(diff_cont 8610 2490 8830 2710)
R(diff_cont 8610 90 8830 310)
R(diff_cont 8610 -310 8830 -90)
R(diff_cont (8610 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
)
N(12
R(diff_cont 5970 2890 6190 3110)
R(diff_cont 5970 2490 6190 2710)
R(diff_cont 5970 90 6190 310)
R(diff_cont 5970 -310 6190 -90)
R(diff_cont (5970 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
)
N(13
R(diff_cont 3330 2890 3550 3110)
R(diff_cont 3330 2490 3550 2710)
R(diff_cont 3330 90 3550 310)
R(diff_cont 3330 -310 3550 -90)
R(diff_cont (3330 2890) (220 220))
R(diff_cont (-220 -620) (220 220))
R(diff_cont (-220 -2620) (220 220))
R(diff_cont (-220 -620) (220 220))
)
P(FB 1)
P(OSC 2)