From a8a5f055664b46b7ec7ed636e016a41828ea5adb Mon Sep 17 00:00:00 2001 From: kareefardi Date: Sun, 12 Nov 2023 18:03:57 +0200 Subject: [PATCH] add unit test for xor check --- tests/2041-xor-checker/config.tcl | 2 ++ tests/2041-xor-checker/interactive.tcl | 6 ++++++ tests/2041-xor-checker/inverter.gds | Bin 0 -> 57074 bytes tests/2041-xor-checker/inverter.klayout.gds | Bin 0 -> 47380 bytes tests/2041-xor-checker/issue_regression.py | 21 ++++++++++++++++++++ 5 files changed, 29 insertions(+) create mode 100644 tests/2041-xor-checker/config.tcl create mode 100644 tests/2041-xor-checker/interactive.tcl create mode 100644 tests/2041-xor-checker/inverter.gds create mode 100644 tests/2041-xor-checker/inverter.klayout.gds create mode 100644 tests/2041-xor-checker/issue_regression.py diff --git a/tests/2041-xor-checker/config.tcl b/tests/2041-xor-checker/config.tcl new file mode 100644 index 000000000..26c8c46c0 --- /dev/null +++ b/tests/2041-xor-checker/config.tcl @@ -0,0 +1,2 @@ +set ::env(DESIGN_NAME) inverter + diff --git a/tests/2041-xor-checker/interactive.tcl b/tests/2041-xor-checker/interactive.tcl new file mode 100644 index 000000000..4a4b412a2 --- /dev/null +++ b/tests/2041-xor-checker/interactive.tcl @@ -0,0 +1,6 @@ +package require openlane; + +prep -design $::env(TEST_DIR) {*}$argv + +set ::env(signoff_results) $::env(TEST_DIR) +run_klayout_gds_xor diff --git a/tests/2041-xor-checker/inverter.gds b/tests/2041-xor-checker/inverter.gds new file mode 100644 index 0000000000000000000000000000000000000000..d657198bbeaade8c5fc25dbe3e3b3126a8b1e925 GIT binary patch literal 57074 zcmeI53$SHZS?BkCoxa`aJcu16A%hVKA?apJzmoI>Nq0zyApw$@9^Tw&-ra3pbOU)n zA_7(b$D~MVL=YMfDacd-BW=Nm3L_3UKmj$T90bQV%v7`tqfr!)`Ty3p{`>5G?pf=e za~lzAIH{Xo-*2z~dVSwod#!c$Iky=!v$M}_PMn!t^Ofd^W_@#PGuQlJ_utLp?BL=H z&uy9wa|=)1b@!PU{kL~NyyLtN{pi6rKmYRP#D%i%gu&n?dvD#m_4K7{u3CD@l}p!M zwX}5o4KH2V(#$V5&EUw{=C7K;QL|0cY&vF6|L?rk9c-F~tD45_T$+DW)9TMl`eU;G zUZuZCDd8hcGjn!_wqMj#^xyi{w;l+6vpe)b+Y`I`orhWeZGFAVQ5_~Le^=6P7`DH8 zDC$3VK%MkIn#QzU?ACvoe&I8rUwbI@rtMYa^FqJ2Eno4op&9%zQM7opqG;w%nhlO7 zM~|3lJ()^5rPvd?ZI!R5YpX`ga{bvW_Z2NsTc2fp9xKmEzTPw(EAxLwO;g|Y#)|D? zDnILA)YmK4Q~GN4-hSJ~uKsD=_RpWHx@)Y@pQ=+^l~CqkHCl39k>%{dxS`TzGQW&2?w0pEjy~nb_xcsLV|4 zlxdPL*G=+8Z@OHuTfgYv4b8qZ`@BN=|AF!l(>+Q5Y^i=q_coLMqW?0{&1)t#vCmu? z*P-(j$CZCE<2gH9)O=s=5nr^Yu~PG&uJRdI&ob7(Y_|fuZkgVXs0=MchuL! zPJ2x3wAaK=e*~RxA^v=?laJ=NN+Tve|JsnYi{1K1{N(wQ`pldX^_uy-_<(*lZ9k>1 zpZ$f<6D#OV+r?`6gIvxam)p|z70O?8dz8O;a+Gh{E>_E5RLs*4Yi|v`X}eg|6HoMC zqUz85LH{M%Ua3Di`YFYw`VSrb2W_wQA3FLkF_%mKp>ORglutjQr{B<-w%7VE>C}Ia zenW54fBAZ`|C$f0Jf(x^7}uulwf;v(|0k;5=;{AN+biuyM?XXQ9i3@=t^d)baR&b= z^eq{ealP7p{6sqZM)@smU!nf^2|a#8Z`yAE<+bWhr1jgTajVo57tVdY^5V7LYe)Ti z-SLCiuJp!1%=3BAfuCo;8UCJocf^5dyV&iAp1!$P{dcL#f?roV&hF6mOUru7UwBuP zKX`VOZ`v*v%STW7i7KBsrXGp5=kjwus{Uiw!5d%mxDQ?W&})Zl{`p^R2FDL}DZ@wU zXBzeFe^w1HL;bu}su%w0aMV$Am#r?T?Q$PCW|w>AzP&$n;F_gvs{JH8-F2T-upQKo z*m-rmHnP*rcgcH|T6a&PCTRPzyXS~LRue?sggfP(Y4x@Go%XkPr~7ki??d_#nXS^w zF4K0g+kgF?u5@WfE3(5~_mm-R7rSvg@lIE@>g`kycc;8o6QfQ_!hgk`u1a~xQKZR}Lx zYIeGm&rTO=hnrqvxBTi(x7+?ur~h~Lafit(-L*d-bHdu6S31oVjFq76i50yxswaBp z3iK^)@7KRq{+f?PIcq)^Hm>(#w%!Q*BCy&!lCiaC7 z#&w8&@aZABzUHUmI^_D|Z9{T>?J;p3&c9v1A2%fRTD&vr2j{+_{H`66>#V9xt}kfC zY+_&dk+=@A&mS=)*K_;3^Mg-f(n-L~J)wu3kj!Y=WTu_D>?ZA*ePXl+VxN7@km#_R zl%MnOmLKuGp?O2B)gz8oixk(K)DYircDwR=>X6tMekZO&t`Gj}kX&E;LvbB)J=Hmr z>%>ja8c{*WY)f{@$(je=GNq%Aa|Cln)0#qx!#K zNOpwm%35k?IQIelo|#Uvl$SYsq4HB6rpqauL?!>@r@>#U4kGge{xlgA_}Rohw>Pds z`WYXaX`WHjT0WwG%irmK2c>7NXu4c+Tz_q%zh>T}GX6G5yfbf_wu@bT@1$zsVQIC# zPgFYxzog$y+s`iRQ!J^!6Xg$L2Y)2mUO6dS^CqSJ3H`utsxP0`q3u6WE}#1bJ96j~ z7Snd`)ECt}t#y0tr`!d_2pp&{Dc`hREcRdXK55=9r;2MYRo^{tNZZAt9{n<&4f?dO-vM?drI(9is1=v&(U?6N-f`)8y7eL`h27v<~4 z_OHD_eXlW+_{ZW`^}A{N_ImlmFXa%o#D7cMEAc!3WAfig>T~$t#jkW|`$^^U=g(Dn z_)ttf`>P>s7mMwm|5<6}=S2CPv5Wr`ZLj#Bxea}ybZL$>ZLjGcQhVj61rfgu?jO>2 zu~>h`4RH>Mf5wk#doBLgyfyj{(tnFTJ|z8@uNTWFZWixWnc`Ztm-sPl7t8vKRlee6 zEmZuh{re7W&+)Tf-J|(q`jfu(#}C>gn{G{FrO`R-oAj(K&t%K=J`?mAp=rBVET0_^ zXL^t`K6XH+?X|N$c5u``@$0&aX*I@KU!v`mvqp5(6H;$M8N2O|T+{!%`nb3G{q)0pp62_fT#9q; zE}MJBM`Fd(()Ru-TltjhRWaTcGUv2<?F5%ujcyyqQBe6@sk1xo!?F51mQ3loy_!H#dFlg&#Mnat}{M^)-AgiyZ)(v*+o(hICrx0*J|F> z?zw5St~9B4+9hWWw922;s^3ih{(#aG7h>|WuA8&Bhu(C#wf58AHQHUk_Vnc<)k`nN zL7IeBe7XIb(y5hVi)EYQKD#%{H*K%&;@EZ1?^hp)oKWL8({`~~|FnBQMQwhO`r-4D zPfOb?&ugGdeuCc&eM|fv*Q@2zPSVkC+F{yWYk%`$wO_l>#6MCSuGH_Q?Uh|P<7VbM z>BU+3i}7LFE*9&Lj`k;hGxW5dd|G=yetYqUj&?%YoyKRT?QVbGJx#w0*7Gj0o#?eA z#!=n_&;O9h)_efdY0B>nY5T}&$};`nA49+9ouc%n?P9kdm+2Ru8T!S42z^W2pIO#7 z_e!IFOVr+%lZE!V8`~>;V02U7r+f8prr48AvkUI7lSiJhSNSXN!O`nA?#YFT^voeM z|I9Nt-pfu?d(><6eEaIvi|<&inwIzX@S0j`&-=6Rp1uD+b^n95i{1WP zwh#AyeeO}AGi~=iK1c1u`*8V@G4rqRxt1J7snu)M5tBV5lw&Tba$Du=$>s;Q^*gx_ z?~aw#?8DKs4?pS(#keY-*4gLwVkKg|@U+j-S}U=Sh7&*S^BKws9p$5k>B%zL{bX4_ zBd+el(XB97#Qnve3tH{{snvTy|K^;J_9xn2Y5(Cqt(2aUQaOn#ciN|=4)0eM}9WSPqe*K{*fm~Ip`@DUC{Pr<@+2cog=KdS!3px<$s7)FOw%B2A@!Dn!ED6 zl-cTjxi>%hoaia(X@=KpwRE-S1reXFe{e|Vx52N)JO`al?2gxE`LQQY=RR*#y6%M{C_pE>)1 z1Kozvn#2LGmXAdK#ABM*b)E9L4xNwKEpPcg5Wl`pW9(M-o8r{u-C*pscZ0c}o(L0p z`XcQ=Gi?{E<+eWLA^@@Y4528lb`Z`xjqKXk+yB>vEwwmbgv`gHnp485E0 z4Ov8z3R~Td?u^NHbmBH8O^;t`|mjWHIWSd&Nf-QD=8}kut#Eze|kh^X#N_ z%sA+SwlBL&?EG%t(XHF1C_1Dzi>ukup<_n}zjt?ZIf_!$OunPbF_%=|3p={*SXs@E z4*hrh^BY>(@M0%N`Q~bNblvtxuIc~De|bmP+tK8?Am)V0=86%$=LD5A*<8`ne}6}p z=Hg~Sec$fn^zZNQ=%Qcpj;|QMtJu-?b~Nep3fj>mYURPJyQ5h+TGzCrN!0w$_~M%+ z(mY|^6g!%=KPIhqHjwen?!#Qojs`6|8s|a2S_+1IIj(m__5Ilpds-_{+?+8bj<4q1_} zJAO!3(KV6L<@3XNI%`_|H!+G6YEv0-n)x=EJXeNtuD+>$0#MQhgJVio3}cNP#nZu* zZ`v+)>%TMY>k98)%)Tzxs&LYGFQ_-Kxz9%VrtM<4{AJ(jMSXd(MyCFz?P6D7efOi= z|B-9@e^=jItNtr|)-=j@{ONw1UgF$oYQM&xX}h?*{vG`S{V#orJI3$9$j5fEte3RC zM?Vt%pUxMEf@6flj{i&f}uUpHiJ}YwU@q_+U-m6c%^W46hraJ75 z`pi8u>SNk2cH6T|zaT%-pKGrOy=l9c^efzv#yz!g&Gq~C=~mR9aV@`>5Hs9M{#0c@ zzC+tfp^PPh~gocf@aXX!{MlzUzO-$QzXZ?@9Lt z{hX=t=S|xaQ~5a-O82spq~x_ey~CjUs>b9r@A{vV)E&Kk@7)V0JMBp`fkvd5YCV~X zveP)u^GoW9{2`-&|l!=;iyJ zX}j1h|J!`uQ&dpC=7|Z69TbaL;b9-)O zdZK?db31zG_Jym`oUZOp?8aKGBMNi-s=ldM_k3Q=>6CABrpHU{mS3IQyX_Bk`hQp7 zo0|{!iKN4QBI^I+?+;2()bIov-`A4(+3*;9VqTm(^ZrQ7T@fGcHyK+u?(^;WlSREx zKD|-pJXSxM^Iy@x*3&j7Pw4Pz6|-=D9DAyqKkH`lfD7-_UHSDxa?VYDCTF#L_ljwq zxI8}dd2#BOzg9l#C!Z6WojqsjFV-e0{!Oh}7LJa!3!KaOh{f{Kc<0{3Yj^*LbI0V5 z%=D=>@_kyALwd>&=6luh^YGrDG=1_%XG!UkKmSfVq%t!3ZlZj>Ti<2+!QVwXzAFK} zX}eg}a}J$8`EzUNIiDsU+iU03e9uklS8@J7>gTv2Z6E3HUj6y*5z2z}FW)_4+AbFB z-@H#6^%JDuINvsH7pr>u34Qvm3F%GSYyF3geuDH{?TM*XuQ%H#PPVGESjeof;v9Zw z=+)OO<-d#(E6&YZq@HBWd7S!m-NB}TomaOX`}_Inzj1yCRQvPw;{0*cS7U8WI@a3ggSICY^~d~Xl%J?_A9Zb% zpQ!Tl^@={qAsywS3))^U|Jb{u{6v-i16tP6{zR3ZuNTWd_U*VuvFzt*WvCVNcwq$7LGW%+rp%ij2iQ&hi9o~0sR)9J)+{i1*J`>X>!7c~1) z&1)jx%e&?ehqPTR>gktuZ!5o~`>QGcwxo^FHQpEPZ+?TOLxY#8L3G4!VGwNG&z`45V>8TB7je;@Vs4sEY|ih}l24y4?) zC(g9JR{r3ND({fuS7a~Fr>0EXy(d5XJ*~E+$&)MWY1a?NC;ipIyYhRh zGx6giF5OoL^4OSevuUt6=WIc=LFr;(cN**T_W+o#Ac)$9bF z(zH1p)A8mROZl5s6cs17Q8E0Rpnk6{<-%On=5oTO!6iTbyruKcyWsq#%bxw5r8AZ; zzWSQ|OPhC07#nSmwK;a9?2IW|IMQQxj*Hqed-;uPsh_w=^?Le-PD}gs+M3+o$cb@j0dG)-@X!Bg;lqq3>5QqDncfZbY@YjTupAEp0u$?XPjI zjFE6gL@6Vx&8<6coVB#li0bv$p80Yf3Vi zs9K=}jri$GI5U@UW?RC=@ax)QzBWjn8tQ@T}Miex;b()=m_S%gvtZj5qvM zsN1&5{Z;DCHs?`)?Z~}3obyi@b03K>4pVK%<-hlHok&}^N$W&StNPaBivQjIG;aXxh~r<}M`wk_?B9da7BaEd!+o16M=^iHWvw{9NZJ;wQY*~o758>yX!w%a)_ zpI(0zBSjTbsMPYA;GWyo@WheTnR1Vzy?L_PtP|Uely=7Gw*1Vcl}1X`xHs;et4+`N z`^n~|ty8t1QGCt5a&Fs(_qlOi>GbBfals0vt>?1d-0a>QdcGdvo&IFR6#8?ed8`*n zzB=2Rx$F5Ijw5swYiNOd0UpYZkclAwfT*-bJ~$t%x9{|8+T7_b6yrJTO2ES zufA^lPRqXSM9SG0mprUh+%WQL(Vb>i_HDJ9A#L2Y=pfXy&$zot{JGV_U8J|(T--F! zDZwzeTKzh$?bUMmoh~X_??aF2w$<%88_n;m*sXSYapLjIUb@Yw{CB3nf~;sl+Wa+5qA~NcG{drBhd@p;Tmm?p`xfNPp$Zd+&m&QvQL!+(tk<4%n zU8`?954OG8ZTGfb4Ao<@od-)fb$W1$5!~iBW(2ExliZ&=Be>12-^!^+a4Db82p-q# z-bv;$GH%D;<~-`xZ8@rktD+T3D4jpGF*#a7d;HYi`NoytNN*#jjl^!BreoSRp9v$U zlv5{i>N$1h9`5b!+M`>u?Y)>D*TTZQSjcUaGeaS_c4p9lW`3eOJ!PGG`)NOwc2~70 z$J=xtJlKCid|ZAvysBw#`$PVY!u9!c_2W`qzQ1W+@hWn=;p+YQd}v&{=l_5@lm48nS9^TyAG{{Hue-n3n;>hC^1^shfA^rr1%RsYI+LVwpyp*L+8 zi+bYj6`zdwd!@z<@n_mD7WLPBEcA(wG|jbtuHQ}No39u3seHZj?0O`_H6x(mQ(HqGAKJGA|zy8gEN zvR>(Lxgzp|wu{C7qukr{9CD)ap?q|SwqIM;-~9VZuZ~TW&gCZBzF5)U)-<;&Zf+LI z=a&C6r0rs{{*0fOJRI?R;ByhbrtM-;&-lM_Q;h!`uZ!{D()LYd{gtPNK2d#nm7bfu z(Ud-4uavVqJe#=t%6jT|!%L!`=qSIX?Jp_oulsr3Ctuw( zi678c#Oc}5eWvZNF6;L^BlL+MRouN!znjwM>&5m{?q1zDT#uxe4%#l(^`8no>8XE9 z+doy-Q@_0*iF%@Qxrw%aq^u`?ufHVXckk&DzozYCvHs{^{Ql5ip?|afFl`sB`pb_A z{qBcDZ`v+a^%ve0`im|Jy=l8x)j#!fq2Kxb(3`f4RsFWpLx09Gp*L+8tNKH`>K zLT}nGcJ;l_H0;`?_0~euBr0}xJ*3}F+ZW3Ea}H>|@*=HY#CPgZ=AAz@r0rs{{A<3c z`_+?m|ABv?`_H>OwEf9t{hs?Z-@ZoiE8hO2ieIgnOxwj``Bz@8`Ql#9AL5N?YyLQT zNZZAt{<_~&ng2)QPu%xLjRnm)rtRW#eO`aBy8p9&)%~CKtM31-Uv>Xy{i^#v>sQhL z52f#RoNqS8Up8sl*B_tMG_U=5)0pjraqFl2U35=;X48Cdche+l>^xEHzYm(W@9z0O zKL4Hdr)d61pD5jvekAmXwpa8|`b_8(r9bt`&?ictuXp3GSN>^7hCWgH)7}~SMCtSO zqJCp;f1>mobNdse&)1839^`t@p{9ZFy-57TkhY6O{kEG!57BSe9Au);*Ngh?9|%1} zcg6)nqR-ch`ZK;7dWinapBoZ=zFyRywK?<<{aLyF5PiO0)bEn!U7E8J-zEO3em89& zw|>v@cj?PCe_yNh7t|blnc|_P?c>(Zo%ny-aS{J-dm!S!rR~R+{YTuRPn4dxN1teW zMNfRAPn3?hN1teWMNfRAPn3?hN1teWMNfRAPn3?hN1teWMNiz{cOc^b{v#s(P20ty z|A}wXL3G5wX?smie3K5MBmPa>YkK0FbPyf!Z`xkd6W^qR=!kpM_L`n~_wENH{$95? z;?J~QEcPF9M>>d(xHE09>4`hiL3G5OX?smi+>s8VBkoMwYkK02bPyeJXWCxV6MuJZ zkNCUuQxShHZQow*KjIF3qV&Wc`b66+dg2a!qIAR``b66+dg2a!qIAR``b66+dg2a! zqIAR``b66+dgk3%=naX)&&2%u3e)!dEQ5{*hTk8O=g*rztMdb`I}<;z^8>9zZ#8W{ zyWIc8|Ni?U{ts-7_&04AtMN}d;vXIHZ`xkd6ZfQp=!k#Q_L`o!Cmlpb{F}Dd^u#^s zAUfjTw7sV1zIVf$>d(acA0I(=+Z!2hlO^OxtUE#vSP(I>w!8dreRL zFYS)_UwSCwzoqTF%l${(qfeBc_(z{;dqq#&qfeBM_(z{;dqq#&qfeBM_(z{;dqq#& zqfeBM_(z{;dqq$DU4AIyZ}&wJf2QqXHU3CP{GlWMOxtUE;*N9>9r0({UegnIq=V>) zKhyS_p130&L`VFYw%7E;-!qPj_4`h^iMCht#2xxX>4-b@ ziMCht#2xxX>4-b@iMCht#2xxX>4-b@iMCht#2;rEaOV*bf2QqXHU3CP{GlWMOxtUE z;*N9>9r0({UegnIq=V>)KhyS_p130&L`VFYw%7E;-?j%M{ph&$8vnx42L9YjamnYP#T#NBDzBmPeNRK#CP+qakd zkGMmhC_V9qKGF7yp14DwC>`;KKGF7yp14DwC>`;KKGF7yp14DwC>`;KKGF8R{`}$J zMp3*yTF(!BC3r~h8*Ms4&ktnUE_UOur{D5VI_FTE;d?)^Ie{0m=v|TLfDgW+kqx{!>A<8#x z7mIqzf8{5l{JVBU`KIk+QNQaF>Gd8WO#StxA#E3n`b&4}yy#f1pT&1xruFlAL)tDD z_4w_MKMVg+9{w|J7mIrOZ~rOLe+S+a{b$-P7WJ3jq4mDLGX_%M%d|-|Z5NCBn}1RJ zwfnVy6K{K>_HS<)(sr?|{|`;`a?QCni=@BhSBJD+Eb8g^8=fBhPkrfs({{0_-=p`8 z_i64-{9oF??9=b2?awUhiNEWAF5+*`KSunSwu|NRU#zmfs2`Df?0xBwwu?nQ{(tdT z!v9x1FZ^%XE*ACF|MCl>{<}XM^*3!7i+akx@ZC}VMaM_^rtM-;Pxe8s(d| zi$y)M8%!Pel0}cSQN7?c#F1&wpR2_Y0n)^2I~*T1Px#NZZAt z{*=E8Jw*Sc4-SbwUoYxUy(9Dx{b}b7i9TO1>Nld&|$^bp;dPZ|<^zFyRy`EckV`m;VXB>H^4 zsK@Vb{YLozZ66Q+o3@KZJ^m#fM2G)P+iQCKOFD=S|C_eg^!S%_5FP$EZLjI^`+YAA z|KIGA*F9|`}z?$zOc z({{1ge*8{4hz|dow%7FdopcZ#{x@x}>G3=1AUgbS+FsM+|2t0%|KIr+;s2JlpIB}` zen+1uJ^n|ZXnRGE-_a*ZhyT$h+FsG)cl3$U;eYgrwpa8w|GL&MFW34-yj6X1%PWVp zT`c;a_}PC)#Lt2AB7RKU#iE|LAss|V{Ft`a^u!J6AUfj5w7sS$Zb%2w5kIEwHT@o~ z*?3+m@oW0`v-D%y-hcil_D}i#OZ;8`rHH>hzY_6h+AbFRkGLZpL`U42w%7E;9qAxC z;?A_arYG)52hkCCrtLL7@xwPa!7Jt?eoWiNV*803(m`~@k7;{NPu!3Wq9cAx+iQB_ zhI9}e@nhOv)8qfk-xB`ceO371v|TK=AHS0hqQn2D?KM4qCmlqG|4rL#di+j0hz|do zw%7Fd{lagA|DW;k@V{xhSZqIjCmlqG|4rL#di+j0hz|dow%7FdopcZ#{x@x}>GA(L zFAV?hd_wr&v|TK=AHS0hqQn2D?KM4qCmlqG|4rL#di+j0hz|dow%7Fdf7?gG|Jz?3 z{x@wGi|xnnq=V@2ziE3-kKaiL(cyp7_L?5QlMbT8|EBFVJ^nxK#PI)Vf1$h<^}A{N ziRJd=cl3$U;eYgrwpaA{9etv7_#b_u?G-(KN1rGi{zso^dtd+b-udIK&L6)n|BHvt z*Z%k44r#mC^?y&l<;&Xtyg>V3@x6L(YKP8%Oxwkxo^s#%8&Uqjg(%;&T`cM;_rAwQ z`S6`<(syPMLp%e@{3XaT_;ERrtM-;fAayY_ioYp5B`kS zf4|+K?YGqRFMoR0EB$Lf9{EAr#cKI4*K-z>PkPF4X?y?qi=O}Kzx`)N{~dTu^q*5(4p<8mGv)sLg*7e8tva_N}sP+%ir_QxqPLk->46?U99W> zCiJAI{w;0)o3ftxx&F-&KYRW%;>WaIES69EID1S~`L1`O?bns{`0vGE5C2^uA29w+ z+r?t})c^7qME!TaE9!6BE*ABaf8lRL`4=rj`KIk+QBV2jJT}VTd3BU;+AbFLl)vrv zD1ZC!M){`gVo^`|r+zWY-*|GAZ`v*{*RTHkFUDWibKmtj--PFXJ^iV7Onv^>({tbT zIp2ime?2|-U(U%O=Vud~|Mm3TcYV(1b3fB|vDp9IcS#4)ao;sN92hp+aGHtKv@jK}tI{a_iUen`u(m{0i-?Y7^$M2kzLC($a zziIo(`B|_1_?>hR9sW0Muj%nS=^#4%Z`xkd<9E_Qbok%2y{5G415AUejsX?snN|49eYG5$^4 zYkK_7ITgHOKKyUmK5~B5Yd?M`9Ylx!P1|dF{7yQE4*#3B*YxH*K%!@jK^K zaQ9W=f7AAn^Q&I_@jK}tI{a_iUen`u(m{0i-?Y7^$M2+r=a`!glMbT8 z|EBFVJ$@%0M2G)P+iQCKPCAGV|C_eg^!WX>6T|=Qx!YeTPsKrNA9sG0_docZbcxd8 z{}s;Pdi{sr(I-le|5rGF>*?`3`b6pR{|e`C7j)0xPX3zu{+_0Rhr~^14Qczx=g)ik zEnf;fM889IG12GiY5yY^@%b6)$Nf#*T|cmu*S7RmEuP=RD}7Vb_HXE!sC&{kHC^zm z^I|Wx+PqGEOqV|b6e!sas9IM;!men{FRee o{+-Tv?i>5PP!Sio{FgmJ>wxR>`O`=H=Tf$d$uD|*X@0)>f3T#q5dZ)H literal 0 HcmV?d00001 diff --git a/tests/2041-xor-checker/inverter.klayout.gds b/tests/2041-xor-checker/inverter.klayout.gds new file mode 100644 index 0000000000000000000000000000000000000000..809000a593e56b6d612c38d47cbc82e834547028 GIT binary patch literal 47380 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 literal 0 HcmV?d00001 diff --git a/tests/2041-xor-checker/issue_regression.py b/tests/2041-xor-checker/issue_regression.py new file mode 100644 index 000000000..0fbd59531 --- /dev/null +++ b/tests/2041-xor-checker/issue_regression.py @@ -0,0 +1,21 @@ +import os +import subprocess +import sys + +args = sys.argv[1:] +exit_code = args[1] +run_folder = args[0] + +assert exit_code != 0, "OpenLane did not throw non zero exit code" +log_path = os.path.join(run_folder, "openlane.log") +assert ( + subprocess.call( + [ + "grep", + "-i", + "There are XOR differences in the design", + log_path, + ] + ) + == 0 +), "OpenLane did not report the existence of XOR violations correctly"