From c020d74f267c7086d1848e12e10d56818e848aa7 Mon Sep 17 00:00:00 2001 From: Matt Guthaus Date: Mon, 5 Mar 2018 16:24:54 -0800 Subject: [PATCH] Add dff_buf and dff_array modules. --- compiler/modules/dff_array.py | 10 +++++----- compiler/modules/dff_buf.py | 3 +-- technology/freepdk45/gds_lib/dff.gds | Bin 22528 -> 22528 bytes 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/compiler/modules/dff_array.py b/compiler/modules/dff_array.py index 6673a130..293044b2 100644 --- a/compiler/modules/dff_array.py +++ b/compiler/modules/dff_array.py @@ -62,9 +62,9 @@ class dff_array(design.design): mod=self.dff, offset=base, mirror=mirror) - self.connect_inst(["din[{0}][{1}]".format(x,y), - "dout[{0}][{1}]".format(x,y), - "dout_bar[{0}][{1}]".format(x,y), + self.connect_inst([self.get_din_name(y,x), + self.get_dout_name(y,x), + self.get_dout_bar_name(y,x), "clk", "vdd", "gnd"]) @@ -159,7 +159,7 @@ class dff_array(design.design): else: self.add_layout_pin(text="clk", layer="metal3", - offset=clk_pin.ll().scale(0,1), + offset=vector(0,0), width=self.width, height=self.m3_width) for x in range(self.columns): @@ -172,7 +172,7 @@ class dff_array(design.design): height=self.height) # Drop a via to the M3 pin self.add_via_center(layers=("metal2","via2","metal3"), - offset=clk_pin.center()) + offset=clk_pin.center().scale(1,0)) diff --git a/compiler/modules/dff_buf.py b/compiler/modules/dff_buf.py index 6d214e6e..29ad3802 100644 --- a/compiler/modules/dff_buf.py +++ b/compiler/modules/dff_buf.py @@ -86,8 +86,7 @@ class dff_buf(design.design): z1_pin = self.inv1_inst.get_pin("Z") a2_pin = self.inv2_inst.get_pin("A") mid_point = vector(z1_pin.cx(), a2_pin.cy()) - self.add_wire(("metal1","via1","metal2"), - [z1_pin.center(), mid_point, a2_pin.center()]) + self.add_path("metal1", [z1_pin.center(), mid_point, a2_pin.center()]) def add_layout_pins(self): diff --git a/technology/freepdk45/gds_lib/dff.gds b/technology/freepdk45/gds_lib/dff.gds index db7d3af31b9b86b49b4bf1bb369048f353431d67..526a1861149039682e51578ccf5624d908940ae9 100644 GIT binary patch literal 22528 zcmeI4eT;3@S;qIwne#CpXXebz1%g1pA`(K8G!0e?wNfOcwxl5xky0eLB-4K?`u-nE{y&pzz6 zojbwAKcu<+&Ae+p>s{aPK6|Y>)u39e2G#Kki`ABXT95yY^mDK3R~ywS)mhcr;^69Q zuHAcJ|F2fno?icFPx`A*KluD5|9z=Z?MazR&2#YHiZ1s^MQ()#yjn=-9!B z_wSQ-Q~yR&{W|(LN50#Y?>OZbmrv8rC)KoF4E>S#-?I|_2geS6zQg%#BZ{e5Udj%j-Qk}&P#G2#h^}E_?uKz&gDW9qQZRN#i^`DgXlT`(mFIK%SuW7qj z)GxeQ{e5Ot!R2>|kJYqY4E>Re_QEf#+)q^+ZB=U4`%BfJo@-1_|F`{%Rdw_)X@oOv z7iaZaSD}9|qg_?6z4qGApfgqbKh@|SQ*-ot`dOoAlFomLp_?tg*DOEfLr;E}L-~|v zKh&FaxMxo)-;{l}{6Vw*sop5aZ@t@-+c&FUXz0HoJ?;61{(YdTj{3N1d$2=aRa^g- z^xG;2y=l8x)NemqRV&9zBd%-L*>he^+r^@u{N%IlsO_YOws+~b_NIIg|67mNM4!`( z{>dNtvd-;ryK;I_KhZ9L9^!xV-8F3&i+b{t&$?+la=UVRQNMA0(nI`jXcsUkH>a2N z${+c%&h2o!D6gyjW9`W3A%4fV)wI1!zn0q%L+^5OxjDV9{;~e?ho9H=LqGR}xOIwt z)+S`O)U&Pp*j-mXs&)P&`4A`H6rZkXyI9sMf8@)$)z2qAw7p9|Qr%asQeN6{p?GIa z+r>8j(LdxT-|}Z`hTpk%kxu(yi=Vdgqkjf!2jxR_!*Na93-t><`N?P9w4J%#IlbtA zNpo)faRmr*a!|acrtM-`ul$iO>-uj?dT4v6{%fiJOXAukio%+UChfxB)&5={ABfK7 zWL=fh+v*=rJNU!T{5bSA-xv?*`j}nyS@=(tr!wK@3stpvWlh_=*7L%tSudh@In#1e zdRu#9zTyu*i_)4g4s+w&(-RBh4O{BjR({Mk_VuMdOYv&(Cn@fjwu?nQaf*Bp9dXLE zy-UyjPCkf^_+r}LsaO8UmvyuUz1u~3U3&I)^bj5K#k9RkPk!=QH*H65S57bXANw?V zh+pE1X?vG{@<+a`b35FwoL=-#oI(%rOZ+fx@A6MPA|DK$%gN>D^fv!7zww8D{T($I zenG$MiQgoBzMtmm*;ancZ{ied0uGN6wf;@p#j;-cBVX1Lr_e*&yY%ee{gYF?LPz{D zZ5P}8$9_hB@)3v3@H^M8xpLdei~e9=q#Q^+h$p7)Vo^_i@>xgwqCL5tIlZVKXun&~ zJ_UPU5$~#LyI9sMf8@)$;gv}bZST_eFHQMi_;)>Wy>fcdfB%fsen`9f_td0ca(Yp} zq~|X3!O**$Ty9P;>hTwTvR{v*$2F%H^~9atAE^&S-e(YBOxwk>p8i5FqH{UZa#MOy zk3aPG%cpwEfws^2Uuu57Q;ayW&u0z20+Xb9uXscMbh6;$1_( zi+I=6A9=iM=ywtCn))1hy~{uGj(jk5E+?0p)7$({;~o0f^+P}RgXs5=rt4>R)o&N?BOCLRIOq3{ zyze94nYPcpk8J3Pcf4B{O{s@WWzu2Fa6$ea!{Xr-j?2Tb-a&k>eKti>3hT-ypL??ckw>b`Zwx* zq|1x`B%ZOJV9R^Huy?JOUA&L9|Cq1DGyK1S?;}@cQ`P&`k?fyHza*f`kY?WuU(h)LFu`5K>LHz z=k%hU6Mx1pDBZf&Kl-5U9pks5y$XF$x{dE7ebDv}{p6XX4@$qO`Hugf^f|p)|E2rEfzu43B;3H}MROhAjlW2ResPEmD^09u< zv2GG=@76E9n)0zu(6Me3ZSU3(Zb|uAC+Ju=iMDs^hcBmmtP^ysn?&2Y^~*PQX{?-4({{0_XS^2PFAe+$@q070{rzSAo;#Ay;FonC zx2)ey)g`AF{gb|WLCUxKSkg~v`vu+p*EHsov-VulPigy=-TJZCEc)>)Nk66S2g-WJ zXmvY{A-BpH!zpdw?$)oJp7d*9O8O~nKfPN&K0oQlk0$+;wx3_tub!ZOdsuZA$7hT8 z*R)+Mj$i1WN_y^ipf|_aE_UjfbCknpHuR?LVyAxNwWOc?PSTsUi$y(W@+&8+58#91 zw`XX3^L(oD{I$foJEXWJZd|JPqd9NdE*AZV?!}~^+>rFZ0L+BbTt!-i@58D;+qv`voe(6xsPigzb-TJ=b4*LF!Nk66S*O&F&?}{^csC|pu-&3kB zIlb8ar7My?DE-p2NgtFxrx*3Tq5A6~{S&#t&ifDWKePwgH1 z2RinTp!N@R>>okfJNA#Qdo^Fat9@7OU90ykia)09VzK{t)?L3_u~XdGsH)9gP20ty zezZ^dRnMU6Jvyx4P1`%_&lrtZ`|!>*hEv);Ec;)%Lz?ev-xWt6QNJzMv|TLLe@pcr zX}lqSJ+r0yo3@KZ{nD>X|CGjBbOlziN0MQ7SB7WKP0?{3r|J$@j5Io~#I@AB_+VV@KG z+}h{ZIlWka((wcFi_WyY%m0Sf8|Ooi^IO)CY5UyyRHOaq@B{IS-n6~TKj+-|f%x6Q zd3VDQFX}egQKiosb zKiuJYbHl&yu|oWFzHH(@rx*RR-}vt%CI>Z^*Jv(h+Afy$+ApcU|L$Z5=f%zXpQ=4e z{7B64$p^Qr;q!+()(VpY5Uy$+=iZg zlXVxoDea%@rtJ&m{ztd;uB2xjvj0wL`@358aXyWnbvwInk1o^iAJv>T52tjVt>)r_ z_xpI_CAuzF=;RPOyzGYFYW`7kM_dhRw~D| zT`cO^=lQIi<3jBB%pdlB+r>70v}baQ#`|MQKjlKwGY=?dL*jXdXno zGu8f_-qwFHei84~uAth9p7sW9?`ZG(X&UzrCA~?zXX7UAqI{F@Jy?H4I`cpDJLQ-k zDvx(tT-`WNaq=noFrQBGb0bsppsoEee<-i_DdpGLm`gvE;_j5{kJ-4ad~M}Le@^4J z%B8);Z=|w&9H~y|w+E|1>(B7C|ZO46vAxj#X?+;i+2rf-No~oX?yd$#qlQkkNa>7FX`XqHLD-0|L>|QbLP1%p6ep7 z`oQFl8s(TOuUOydbD{F{jVJgq<9Shbv8dSALTFNyG^EJlH&!vz%9*bAjoca6cw)#)? z?5F5?9z{Q;?Ps>OKaIC^ex5Z)x1};n;y&-sP2L~j$0VNM-&8rX^GsMe zR5_!gXJ~u#eN;ogi}zU#J>P=E9v|O^v#N1?pW2mayI8D0?~MCe50E=qyh}E17d!QF zc0xJKBk4`s#iBmW0iV%$Xiwx`3Fm?4YPO4I{X^R4PLm#fL3;f>rR}G6>v@hrKT+M$ zo3@KZ|AP~>Kc1y_!-vKDXK4FbWqrS&^g-$ScO-pK`kY?$-#eW2LFw67sYg)yoLlNPRAHk77-Gt7-e(eTv5X;~v|Z_D47#iZ9f(T`c>TjyrVdS6@o{DQ&-@tY7$P z&Hn>hukaP|&u3`+frfr{cKsg7w?XCa4r}NuzK`j*6-)T#?|qyBuKl-hdK$IUd3l+QTE{eVAA{s)=ZxkF>dJ-!pw_uS_b zvC}?tps}I-CU(v(P4=F_x6&R2v2(6#61Rz0CieLLt6*_{{WI<3oN4W5t*!fOj#c*L z9QA+Z@Obr|_FuDiQp#^qZ_eAy#Xr{j4ULmI)bBhSnw*32`P}5341ebOYAWC4{t)Gx zYcH$bhgILqiTu+JQ|)OR&zO&VYh9cpJyMf(#JVymd*wXYGC4vd-r^oD&vkJ5G|lrHYuYZh^>@@a&e0UZ;vCJq zN4}rXcxN)sakn;;zT3Je^&y;WOMiY%-Dhg^cP{fe&X_(Y{ifDLChIcp(`0fkM?Q1z zJkIU^P0FJW2mh-4m(=WkK)-)mW0)D|ZLexPIbVaCC#0L)1xIg^k8?efxr-lD{@U92 zUh2bM!1KiLx|+Oqi~D|=s~0H!1?p~<&Gl#|T-jr@`-m2eKuBo!y{73uf*WSL=K9hSg%qNp)MA~Qa z+#mO#GNp_1kL3Ab@GII=9_RVt*RC!+Kg9SE$B5gIcpcw|nQ6P@_fXYZQr7?f@Bdy8 F{5Nsri2DEl literal 22528 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