From 6640d3491d516c93a4c0549b061a46aa977fcc59 Mon Sep 17 00:00:00 2001 From: Matt Guthaus Date: Wed, 11 Apr 2018 15:11:47 -0700 Subject: [PATCH] Tri gate and array supply to M2 and M3 --- compiler/modules/tri_gate_array.py | 24 ++++++++------------ technology/freepdk45/gds_lib/tri_gate.gds | Bin 12288 -> 12288 bytes technology/scn3me_subm/gds_lib/tri_gate.gds | Bin 4808 -> 4896 bytes technology/scn3me_subm/mag_lib/tri_gate.mag | 17 +++++--------- 4 files changed, 16 insertions(+), 25 deletions(-) diff --git a/compiler/modules/tri_gate_array.py b/compiler/modules/tri_gate_array.py index 4bef69c2..2e6a44c6 100644 --- a/compiler/modules/tri_gate_array.py +++ b/compiler/modules/tri_gate_array.py @@ -77,6 +77,16 @@ class tri_gate_array(design.design): height=out_pin.height()) + # Route both supplies + for n in ["vdd", "gnd"]: + for supply_pin in self.tri_inst[i].get_pins(n): + pin_pos = supply_pin.center() + self.add_via_center(layers=("metal2", "via2", "metal3"), + offset=pin_pos) + self.add_layout_pin_rect_center(text=n, + layer="metal3", + offset=pin_pos) + width = self.tri.width * self.columns - (self.words_per_row - 1) * self.tri.width en_pin = self.tri_inst[0].get_pin("en") @@ -93,20 +103,6 @@ class tri_gate_array(design.design): width=width, height=drc["minwidth_metal1"]) - vdd_pin = self.tri_inst[0].get_pin("vdd") - self.add_layout_pin(text="vdd", - layer="metal1", - offset=vdd_pin.ll().scale(0, 1), - width=width, - height=drc["minwidth_metal1"]) - - for gnd_pin in self.tri_inst[0].get_pins("gnd"): - if gnd_pin.layer=="metal1": - self.add_layout_pin(text="gnd", - layer="metal1", - offset=gnd_pin.ll().scale(0, 1), - width=width, - height=drc["minwidth_metal1"]) def analytical_delay(self, slew, load=0.0): diff --git a/technology/freepdk45/gds_lib/tri_gate.gds b/technology/freepdk45/gds_lib/tri_gate.gds index 45eadfbe142601ce381c504ed6184c47719cbfed..d112b97c65bff7719678365cc513d3a203e81416 100644 GIT binary patch delta 556 zcmaKoze^i&7{=f4kGmw-cm^v5u~13ul?!)va!Ap5gEUahAW{mY&k+k6hnElE_xrr>`|vcXjp|mm+((+O zQ7*{_uk19ZcXtTcGSCWr3QKeHJ19^k|) z;>N;>nPNTxDX_>lgN2|9NgrhzasSX!Yf8#1&@uIIfc$*(e?RAxV73~y%W61W5=GY28eq7^UqfyTYh6zqIQ2vNA2N?$i^0aDZeDN1tS%d!o delta 761 zcmaKq&ui3B5XUD!x3rt+N=#Z?lWejUmMlHAP^hdm6-5x#!|JWt7I!T|yR5PbUS$7* z(q&37Qap$kZF|Yhg9v&M57J&_FS1~7Qb9ckf`~Jl1ns2{!iRik=KJ2vd#(A_{Hj&S zK_8fK6b#THE2`Dn?S=bGO#nkurro!XpY2tCPIs8G8cTx5Y_U(B9E%vacV~>=n4!CQN;FcHQx_=y(y|Y;ILfp@XxS2nXjeHqP z#BXkyPC0|iF2!AnI~1pH$q7Anm-dpAeos!CFxK&kO+Yh45)t?vFkdUdvHepUOn*#cP76%uruN@?*XrzWI+m9kanDBMYEvA`F0Piqw>9 z2>`e~IHXl5{bDi}z_r0~UAP6HpJC}iwaU^2UNDQEa1ucK0l?JhN`)u?80)xW+E_P3 zkEg~GFHYrKNg3;u`q}2TdC9e890_9`SBC9q+qx>|9>vu%k*lQ!ZxoeIgmL%1>2dcw zP3}HntdotCZ^W~gh`bp)rQ|HB5q%hbFWMP6>`}IFUdN5%K>N=aJ%VHHS7XudK$iXj Dpvk2Y diff --git a/technology/scn3me_subm/gds_lib/tri_gate.gds b/technology/scn3me_subm/gds_lib/tri_gate.gds index 0128ae6191b0439f42b42c7f35dcc91cd54ebdc9..030a81505289cd94b69e7184e4d46549ac2f5fef 100644 GIT binary patch delta 380 zcmZvUy-LGy6h}|nP)$B`u?4OiN*bONi78S7I}pHTWvFSHM!-2(HPasLC%K2b?s6syF>xFpU=Tn$QUYZw^B z3m6zQSrD}32?hp`IE0?Oh%0Wg13!zLj}8NamH`6;j1IWN00t0xvl90`X0SRj7l=9- zE%gPW4nj{>;-9xjfN`>eV6nb20~;R`P*O*LnSnvI0iq0K1qguX&>o05gr2-eaN^|E zLcDxXr5uuM>3Jy(lYNBbxPXoVa?4U6+{rFN_LC!pczGFtZU%Y}qH^+FA?e8zgsj-u J85met7yyXpG*AEl diff --git a/technology/scn3me_subm/mag_lib/tri_gate.mag b/technology/scn3me_subm/mag_lib/tri_gate.mag index 8559a1b5..27c963f4 100644 --- a/technology/scn3me_subm/mag_lib/tri_gate.mag +++ b/technology/scn3me_subm/mag_lib/tri_gate.mag @@ -1,6 +1,6 @@ magic tech scmos -timestamp 1517275711 +timestamp 1523484606 << nwell >> rect -2 45 38 73 << pwell >> @@ -63,8 +63,6 @@ rect 16 38 20 42 rect 25 12 29 16 rect 28 4 32 8 << metal1 >> -rect 0 65 12 69 -rect 16 65 36 69 rect 12 61 16 65 rect 3 53 4 61 rect 3 42 6 53 @@ -74,25 +72,23 @@ rect 3 31 6 38 rect 29 31 32 53 rect 3 27 4 31 rect 12 23 16 27 -rect 0 19 12 23 -rect 16 19 32 23 +rect 16 19 24 23 rect 0 12 25 16 rect 29 12 36 16 rect 0 4 28 8 rect 32 4 36 8 << m2contact >> +rect 8 65 12 69 rect 15 46 19 50 rect 25 34 29 38 -rect 32 19 36 23 +rect 24 19 28 23 << metal2 >> rect 15 50 19 73 rect 13 46 15 50 rect 15 34 25 38 rect 15 9 19 34 -rect 32 23 36 73 rect 19 5 20 9 rect 15 0 19 5 -rect 32 0 36 19 << m3contact >> rect 15 5 19 9 << metal3 >> @@ -103,11 +99,10 @@ rect 14 4 20 5 << m3p >> rect 0 0 34 73 << labels >> -rlabel metal2 32 0 32 0 8 gnd -rlabel metal1 0 65 0 65 4 vdd rlabel metal1 0 12 0 12 3 en rlabel metal1 0 4 0 4 2 en_bar -rlabel metal1 1 20 1 20 3 gnd rlabel metal2 16 1 16 1 1 out rlabel metal2 17 70 17 70 5 in +rlabel m2contact 10 67 10 67 1 vdd +rlabel m2contact 26 21 26 21 1 gnd << end >>