From a0bf5345f8ce4d5c31a3f9ee9e180e21cb539817 Mon Sep 17 00:00:00 2001 From: Matt Guthaus Date: Wed, 21 Mar 2018 15:23:32 -0700 Subject: [PATCH] Mostly working for 1 bank. --- compiler/modules/bitcell_array.py | 102 +++++++----------- compiler/modules/control_logic.py | 10 +- compiler/sram.py | 35 ++---- technology/freepdk45/gds_lib/cell_6t.gds | Bin 22528 -> 20480 bytes .../freepdk45/gds_lib/replica_cell_6t.gds | Bin 14336 -> 20480 bytes technology/scn3me_subm/gds_lib/cell_6t.gds | Bin 5788 -> 5916 bytes .../scn3me_subm/gds_lib/replica_cell_6t.gds | Bin 5996 -> 6060 bytes technology/scn3me_subm/mag_lib/cell_6t.gds | Bin 0 -> 5916 bytes technology/scn3me_subm/mag_lib/cell_6t.mag | 22 ++-- .../scn3me_subm/mag_lib/replica_cell_6t.mag | 30 +++--- 10 files changed, 83 insertions(+), 116 deletions(-) create mode 100644 technology/scn3me_subm/mag_lib/cell_6t.gds diff --git a/compiler/modules/bitcell_array.py b/compiler/modules/bitcell_array.py index 69b6c47c..5c6e04a5 100644 --- a/compiler/modules/bitcell_array.py +++ b/compiler/modules/bitcell_array.py @@ -27,8 +27,8 @@ class bitcell_array(design.design): self.add_mod(self.cell) # We increase it by a well enclosure so the precharges don't overlap our wells - self.height = self.row_size*self.cell.height + drc["well_enclosure_active"] - self.width = self.column_size*self.cell.width + self.height = self.row_size*self.cell.height + drc["well_enclosure_active"] + self.m1_width + self.width = self.column_size*self.cell.width + self.m1_width self.add_pins() self.create_layout() @@ -76,28 +76,7 @@ class bitcell_array(design.design): def add_layout_pins(self): - - # Our cells have multiple gnd pins for now. - # FIXME: fix for multiple vdd too - vdd_pin = self.cell.get_pin("vdd") - - # shift it up by the overlap amount (gnd_pin) too - # must find the lower gnd pin to determine this overlap - lower_y = self.cell.height - gnd_pins = self.cell.get_pins("gnd") - for gnd_pin in gnd_pins: - if gnd_pin.layer=="metal2" and gnd_pin.by()p&D$c zsi8Q#MKrVowTeT~AK(x~AZaJ!3{5rtIN$lcALo>=q*7Tr^vt;-qXR0!7=fKA+1&Et zX1)Nl%f^^?e{%jh{~qa0d7h>(tLQQkIAMbVE8m3hYpWujH?{TCFf3 z)d4&J@|K{;X+`b%N2{sMvIDo%=}+_F1whhVw7`X`pvY-c(=>4qmx3Z^O)WzLf4aWw zj129W=ws5y2BRAWR*h|&*y%)^&{QJMYKe+OtCMTgobwu;4Lz{*36A%=+rNQp{I%U>9 xP?G#buDjvAA~%e4eh7-3#lp`L(?ho=s)ro3)*qy!ZC)04=rYya5vI&U$rsuqlXae{b|AOi=37y~B*GXom~4-;ETYFc7xP6-2p2s5jl!jaia9|wQ4REiP5 z;Ja3VL57uyfscV3sFI68l);DrMK2p$a%xUayjjWS=X%ZDlUG@32{1r_G6RPsTY6p! z!{h{OsmXO#VJr*`thJMGSoLjI^GavlSj@**|MUO<{}v1kj6Z=|PB1Vqcfx3xIGAP; zWME+7U|?Y5Wny4rVB=!~s?rf)2I+&TgXx3OFmZhP|No!FWIVao*K)HClPF((I#BI0 z1_q{dpczp>w@AZim^he5b_*l2TbL-+zxjZGBU38rhOmXZPpQPXWyLb(7?HQvs5>W1~4cL7#O%5q4Z&3kk|qFFd8QAxLHkp7P}ge zYL}@+G1W79Ld^xy`+(*G;}=eY%!SA!2Q@JDA)*~D?*>%|at}y9jE0H3G2qfa`M-vv z8gXvetfqN`5fl<27r{)1*#x6u;%<|lX|+w((FNrIrnNu~(?B_(EG30ubDFj{GcV8& oVxXkUCeFyfFxf#@j33BZ4@^}bp*dyqeqTqX%@2GP;6wu>0D1hw9smFU diff --git a/technology/freepdk45/gds_lib/replica_cell_6t.gds b/technology/freepdk45/gds_lib/replica_cell_6t.gds index c9ae078bb68a996305db512802623b946139af07..8636daac2693414472079dbaedaab6aa10ce2a7c 100644 GIT binary patch literal 20480 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 RS75yY>lIk9z!j;${{ap}=~Ms! diff --git a/technology/scn3me_subm/gds_lib/cell_6t.gds b/technology/scn3me_subm/gds_lib/cell_6t.gds index 81c8112a83f9e9b1296ca03fce96f04c019cb555..c6fdb0e8208d82752b8df1f873200eaf17b8e3c1 100644 GIT binary patch delta 366 zcmZ{eF-ikb5QaZDkCzQgmPFoLqK2?6LKKXJS)!GQcmgXcNg>`qvGWSbSmpqhicN|X zsjMxv@dRE$*7sPJwa{t4ng5@knb~Nzo1qD4&|e9-cC>U+bbj^bJ{#IUjpy?;-h$O7 zK23JpeSq;DBquffiq|VTUv)vb zlx_!%(QyFmbQ;i4AvlBdt)|a;y`uB~%S&Ne5}Jt|+AI06kvmbAeA!G7-~HfQnIs#s jowT)jf-sj?J5bP?$~4*R4Q^oX0==e>Ps>Y9_pRawj(|1V delta 236 zcmbQEH%C{AfsKKQftf*uk%^%U$YN#SW6)+`L1ObvR8kkkDzPz6fp7CZJ|;Fb?i~ya zOc4wW0vQO}!hwMSBo3pQA|@{rQJTylqCL4-R8&kx;s5`?D;OAL6d+2(3qbVbd7@J% zuNLEF1DVFoF?pYu9LN9v|E@4FC|sDFC#J-swg$vx;E-fX&zn3)OlI-~G3m+CV!TW| hPbNPQQ<0FE!@yva!oViU<`l%hBFMnN!VbhN3;^oNEj9oE diff --git a/technology/scn3me_subm/gds_lib/replica_cell_6t.gds b/technology/scn3me_subm/gds_lib/replica_cell_6t.gds index 50dd9d1246336c996afb2f811b8e2b2defe3f4be..af9bd1b8956ae3cf09012fa84d93c798cb4d89f8 100644 GIT binary patch delta 462 zcmZ{eJxc>Y5Qbkj=jMwXw`X>9harR`U<5H@LbMEGZDD00!9pzU40is7$cSZX1raq( ziYqMBX_+5kEm%n0;W%QU+dMPReC@~PLo0%WKnB$%fq|ul!ZI4a;`QsOrT;8EpEcbk z;J*T$7|_9jJLSZu?8M`NI}%iu9yOFF!YOrCzYtCVbpzORqzv0n)vxg)wkgBueExmM zT}*oMkLkcS1sx<>2XyX7V{fG=XsC0hI7xhQ0_^sHY>r8fI=bSm?IB?H7vvW9DQ(?R zfMcg*NuUks3IH2k2B_8naRk)g7vwqiDQ*3~d3w`%nw7icnhUx&MSCK76q`t{%{bwZ oWM!4UOi4OVK(0f#rse?o6WXdYg4!jpeF_=My~E^E*8bMP52mwKG5`Po delta 382 zcmZ3Z|3*)VfsKKQftf*uk%^%U$YN#SW6);ML}KerRMHp4DzPz5gKzUWzBVQNn#EI14tA`%liEP|91sQ6@-?UGx?if z+~g}l0$dVv;6m?&lqLrVu*iu@Ky<@skSRP*Ag1v=nOr0kvzbrWiAjxn2gF4J83@|K zfq?-e4x^bOCYy;WO`aj5J(*cdR7^$zVw;QtM2UC-h@Pw`Hg&SKI4>K>f9xES{lw)s z{{R1Xg@Hlg!sLHqN<3<7KuiV>Nw)O7$vWaPlNH3JC%+csWdb^?-R|3>rGNFiIjZB$~KJ3SuY>p`@_T zgo1*?L<$NLEhsD~wy>ZuhLXatL*4ElH_cx7%WQR{=IcL(E_!=&%uN2det+~` z-4KbRxUly<^)J(9TeJ}DJIx0pS#jV=Y{EKz{!ZX)2o18KeSqthS zx?c3Z^ouX<_h#Z;Q*nc?XZ&Wnw!=q${2B*3L&6mqKo_zqPab@FZXk0&7YFz&;MqI zE_!>`zkf4)2XEEHhc4#*-R?g>NA4YqHOH=pF8bKA`I#qU=d2T%54u?Lk3P~EL^H<1 z{DVC`n}7di_zvC@!^iybSM3>pc-Uw36_@UWF1nua$DHvoS8?f1=wivg?{WATFMfy* zT`c*jGd}7s;zJkn{+K7Zn7^o+imqqpPab^a7nuXPIN)DS_fLC0ysS4dAn$E-(e*U{ zQ~s$NW;?H%iNsM{=z7-AzTv(7;+dM{MHdI&-+lR6cg{%sBJt2g*R%QQ$NhQFshY%5 z+^Rk6XU=@6waD4UchSFR{nUs11AY;2Rkt1o?hk$QrypY{mq;ANt=fzEx%aYuB5@QK z4%~nH@^i)wKZyB?oZsl8>)HI&p1iD|Nd3{peExW641E#r9dY_z=yt~u2W*yjv=;FZo_vI&Fx>l?mYk@9$dz%0F;P`p((O=}f$N0s8 z_g~_V^M`qJ{)mUKgf0%uKk>&ogO5EgQa8>YvE*;BN3NY$#TW}UVN6wfcK%a0!ng0S z7(Uhnf7PD)SL^!4bMo~4JM@i{Puh!q?mX%JdF`5fL2u9aVYnn{EU;e=A0CXg)X|DnSa!WzZIyTc;t5IqU#xdb8NbLp&_&m? ze#S{Z@{5cEU39(ZColJQkvNJAOZj=uSa)hAvVJ-{s`hMt-ZSalgSzRxBYJzrAI}-@ zE%J+;Mf@!y4!pmT^TTYU9evZkpLmu>+VMs(e=#uW6v;8o*xk(dq8wO>;HfC<2j4E z&98`&m*> rect -8 29 42 51 << pwell >> @@ -73,7 +73,8 @@ rect 15 29 19 33 rect 21 20 25 24 rect 17 6 21 10 << metal1 >> -rect -2 44 32 48 +rect -2 44 15 48 +rect 19 44 32 48 rect -2 40 2 44 rect 32 40 36 44 rect 11 36 12 40 @@ -92,6 +93,7 @@ rect -2 6 17 9 rect 21 6 36 9 rect -2 5 36 6 << m2contact >> +rect 15 44 19 48 rect -2 29 2 33 rect 32 29 36 33 rect 6 -2 10 2 @@ -99,17 +101,17 @@ rect 20 -2 24 2 << metal2 >> rect -2 33 2 48 rect -2 -2 2 29 -rect 10 -2 14 48 -rect 20 2 24 48 +rect 6 2 10 48 +rect 24 -2 28 48 rect 32 33 36 48 rect 32 -2 36 29 << m3p >> rect 0 0 34 46 << labels >> -rlabel metal1 2 6 2 6 3 WL -rlabel metal2 -1 28 -1 28 1 gnd -rlabel metal2 33 28 33 28 1 gnd -rlabel metal1 17 46 17 46 5 vdd -rlabel metal2 11 43 11 43 1 BL -rlabel metal2 21 43 21 43 1 BR +rlabel metal2 0 0 0 0 1 gnd +rlabel metal2 34 0 34 0 1 gnd +rlabel m2contact 17 46 17 46 5 vdd +rlabel metal1 4 7 4 7 1 WL +rlabel metal2 8 43 8 43 1 BL +rlabel metal2 26 43 26 43 1 BR << end >> diff --git a/technology/scn3me_subm/mag_lib/replica_cell_6t.mag b/technology/scn3me_subm/mag_lib/replica_cell_6t.mag index 8257df55..52dd6265 100644 --- a/technology/scn3me_subm/mag_lib/replica_cell_6t.mag +++ b/technology/scn3me_subm/mag_lib/replica_cell_6t.mag @@ -1,6 +1,6 @@ magic tech scmos -timestamp 1517870621 +timestamp 1521677136 << nwell >> rect -8 29 42 51 << pwell >> @@ -73,19 +73,18 @@ rect 15 29 19 33 rect 21 20 25 24 rect 17 6 21 10 << metal1 >> -rect -2 44 32 48 +rect -2 44 15 48 +rect 19 44 32 48 rect -2 40 2 44 rect 32 40 36 44 rect 11 36 12 40 rect 26 36 27 40 rect -2 26 2 29 -rect 11 25 15 36 -rect 2 22 15 25 +rect 11 22 15 36 rect 23 24 27 36 -rect -2 21 15 22 -rect -2 16 2 21 -rect 11 18 15 21 +rect -2 18 15 22 rect 25 20 27 24 +rect -2 16 2 18 rect 14 14 15 18 rect 23 18 27 20 rect 32 26 36 29 @@ -95,6 +94,7 @@ rect -2 6 17 9 rect 21 6 36 9 rect -2 5 36 6 << m2contact >> +rect 15 44 19 48 rect -2 29 2 33 rect 32 29 36 33 rect 6 -2 10 2 @@ -102,17 +102,17 @@ rect 20 -2 24 2 << metal2 >> rect -2 33 2 48 rect -2 -2 2 29 -rect 10 -2 14 48 -rect 20 2 24 48 +rect 6 2 10 48 +rect 24 -2 28 48 rect 32 33 36 48 rect 32 -2 36 29 << m3p >> rect 0 0 34 46 << labels >> -rlabel metal1 2 6 2 6 3 WL -rlabel metal2 -1 28 -1 28 1 gnd -rlabel metal2 33 28 33 28 1 gnd -rlabel metal1 17 46 17 46 5 vdd -rlabel metal2 11 43 11 43 1 BL -rlabel metal2 21 43 21 43 1 BR +rlabel metal2 0 0 0 0 1 gnd +rlabel metal2 34 0 34 0 1 gnd +rlabel m2contact 17 46 17 46 5 vdd +rlabel metal1 4 7 4 7 1 WL +rlabel metal2 8 43 8 43 1 BL +rlabel metal2 26 43 26 43 1 BR << end >>