From a2877358a57c40e2fd35622cf7a2377b274057a8 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Tue, 6 Feb 2024 20:53:17 +0100 Subject: [PATCH] Renamed new DRC options to: without_touching_corners and without_touching_edges as this is more consistent --- scripts/drc_lvs_doc/create_drc_samples.rb | 6 +++--- src/doc/doc/about/drc_ref_layer.xml | 22 ++++++++++----------- src/doc/doc/images/drc_separation13.png | Bin 6171 -> 6282 bytes src/doc/doc/images/drc_separation14.png | Bin 6195 -> 6284 bytes src/doc/doc/images/drc_width6.png | Bin 6427 -> 6525 bytes src/drc/drc/built-in-macros/_drc_engine.rb | 8 ++++---- src/drc/drc/built-in-macros/_drc_layer.rb | 20 +++++++++---------- testdata/drc/drcSimpleTests_90.drc | 20 +++++++++---------- testdata/drc/drcSimpleTests_91.drc | 16 +++++++-------- 9 files changed, 46 insertions(+), 46 deletions(-) diff --git a/scripts/drc_lvs_doc/create_drc_samples.rb b/scripts/drc_lvs_doc/create_drc_samples.rb index feffbc2ad..bbc97987e 100644 --- a/scripts/drc_lvs_doc/create_drc_samples.rb +++ b/scripts/drc_lvs_doc/create_drc_samples.rb @@ -206,7 +206,7 @@ end gen = Gen::new run_demo gen, "input.width(1.0)", "drc_width5.png" -run_demo gen, "input.width(1.0, without_touching)", "drc_width6.png" +run_demo gen, "input.width(1.0, without_touching_corners)", "drc_width6.png" class Gen def produce(s1, s2) @@ -448,8 +448,8 @@ end gen = Gen::new run_demo gen, "input1.sep(input2, 1.0)", "drc_separation12.png" -run_demo gen, "input1.sep(input2, 1.0, without_touching)", "drc_separation13.png" -run_demo gen, "input1.sep(input2, 1.0, without_coincident)", "drc_separation14.png" +run_demo gen, "input1.sep(input2, 1.0, without_touching_corners)", "drc_separation13.png" +run_demo gen, "input1.sep(input2, 1.0, without_touching_edges)", "drc_separation14.png" # ... diff --git a/src/doc/doc/about/drc_ref_layer.xml b/src/doc/doc/about/drc_ref_layer.xml index 6a349c45b..c8f124c5c 100644 --- a/src/doc/doc/about/drc_ref_layer.xml +++ b/src/doc/doc/about/drc_ref_layer.xml @@ -2896,14 +2896,14 @@ The following image shows the effect of the separation check (input1: red, input

Touching shapes

-Like width and space, the separation check also supports the "without_touching" option. +Like width and space, the separation check also supports the "without_touching_corners" option.

This option will turn off errors that arise due to -collinear edges touching in one corner (the "kissing corners" configuration). +edges touching in one corner (the "kissing corners" configuration). By default, such edges will yield an error, as they form a zero-distance situation. With this option in place, no errors will be reported.

-The following images illustrate the effect of the "without_touching" option. +The following images illustrate the effect of the "without_touching_corners" option. The white line at the top of the bottom red shape is actually an edge pair indicating the zero-distance violation of the separation check:

@@ -2914,16 +2914,16 @@ the zero-distance violation of the separation check:

-Another option is "without_coincident" which turns off errors that arise +Another option is "without_touching_edges" which turns off errors that arise at coincident edges. Formally such edges represent a zero-distance situation, hence are flagged by default. Turning off the check in this case can be helpful when separating a layer into two parts (e.g. thin/wide metal separation) and an error between touching regions is not desired.

-The "without_coincident" option is a stronger version of "without_touching" and +The "without_touching_edges" option is a stronger version of "without_touching_corners" and makes sense only for two-layer checks.

-The following images illustrate the effect of the "without_coincident" option: +The following images illustrate the effect of the "without_touching_edges" option:

@@ -3443,10 +3443,10 @@ each other is more or equal than min and less than max but is more intuitive, as "projecting" is written with a condition, like "projecting < 2.um". Available operators are: "==", "<", "<=", ">" and ">=". Double-bounded ranges are also available, like: "0.5 <= projecting < 2.0". -
  • without_touching : With this option present, touching corners (aka "kissing +
  • without_touching_corners : With this option present, touching corners (aka "kissing corners") will not yield errors. The default is to produce errors in these cases.
  • -
  • without_coincident : With this option present, coincident edges will not yield errors. -This is a stronger version of "without_touching" and makes sense only for two-layer checks +
  • without_touching_edges : With this option present, coincident edges will not yield errors. +This is a stronger version of "without_touching_corners" and makes sense only for two-layer checks or raw-mode input layers. It is listed here for completeness.
  • transparent : Performs the check without shielding (polygon layers only)
  • shielded : Performs the check with shielding (polygon layers only)
  • @@ -3555,12 +3555,12 @@ space_connected = metal1_nets.space(0.4.um, props_eq + props_copy)

    Touching shapes

    -The "without_touching" option will turn off errors that arise due to +The "without_touching_corners" option will turn off errors that arise due to the "kissing corner" configuration (or "checkerboard pattern"). Formally this is a width violation across the diagonal, but when considering this configuration as disconnected boxes, no error should be reported.

    -The following images illustrate the effect of the "without_touching" option: +The following images illustrate the effect of the "without_touching_corners" option:

    diff --git a/src/doc/doc/images/drc_separation13.png b/src/doc/doc/images/drc_separation13.png index 0a18eac5058560e17de7f670cf26560a73ebfeef..00de3a91ca65a755b2a59805afbb52b299e4c448 100644 GIT binary patch literal 6282 zcmc&&c~nzZw-2I4vBHO1u_}WQ#X2!)l@Lg(pb%7`h@v8sAgMDNLO>t^6%p$vlNJJm zXhkVwP*jLuLWK&Hn5Za22_OoI2m}Z+1jx;IZW1PkwcdMcz4!jex>@(!bN1QOZ~yj= zc5<+tr@llTfk4c|+1WTF5Go(x-|QLSjm>?#Ch(Z!Z?~U-KxmZ1Kb7liG?v0I1Geo8 zus(eJxGBQL(aH9Bn+15O55IIi>=S@kwa#q)k0$18!NbJF3~j!CBg$;8`Fa$}{D+_| zR<;O)_9)I~i%U>ychk>-Z}-LKy?A%P%EYfW7%!lEtJsC*kuPth* zow^3uPk{u4SD`~jO|2Fbjnwinh)2%%@r}1RbY*9}-Ibs1;X5M`IX4T2^l%1GZIC$R z(@JD?`C=+EZt<;aGv%xMtnoeAc$+KHc3?{!Zho|>8P33T`ww&A)ur!`Yi^6bWU4js zekC|#)e05)*4pO{qcL9=TXKg@k)70OZO9{68y9J?kG7uGB{opTSXW2>ZH%AA0_U#V zY1TiID}LF0SD$@)hjj6~VoxKwF0c1=Tsxzh0sRuD{Z5Rl`}gVK2a;Km$J>$)29vN% zcDLd7n{3-fz7#>q0VHoF51nZ_zpHj&%(7pS-8Uv+i6oJ0^r}qvcAV%$xQ6C+H8wT| z_jPx7i=T&viQ5x8Ju%ho+Uu)=zaO{ zG3q#-AwO2d6CqRHd0ufFrlf5b94$Y-4r=_Y`TeN1y1` zd7t6#A>}l_u5La}r;upWDAzT`{VlaBCwrTWUp_IeU-5nI-;(>pASfkKjq*FD;y5Ga2>mc?Mi9b?Z)1H$4_qGUGv ztq$9y>XhsX@#HIq_)8VqZFlI!J!CSPvBRipWD#UV8ep%)7A@~>O618NoUXbq)XOW< z=!6^&1U*n2GF|Bz1aZS~Y3-B~o>Fr0(E-cq^HxFZFnlikS2uRciiW(j0tvdHqWg%O z08MJy7i0OCj#X#jsl+|C-q5_!11(S5iCnDs5hs5v7>nh*4gb(`sy@p&2l}nOPw3va zqxLbRa&{;N!gnHeCpP(4ksE}rVQH2>ICxY`9C?YBJ#ERZbke~tq6enKywg@#XPi@Z z_*Dx3ewxsme9Mr>5OVZuNXw0kTJCb^(%avSxzR}iOv#7Z(G$=p4J#`i+i|A(tn>kw z;=c5x<}OiI<@VQyucQomi2MiCJM*3zF4x1|dz+F|*$on)_Hy6wv1Za!nx|hG4fnfFjBk>WX-&izS#~}~xv>C@CIjGp<6x#e4 zFbEmq%9AdQW>1(PYf{3RwYC5D+X@8%jjA~uY3l%KST&XF8BpZf5 zbRXX}!non$Y;`6~qw^?1miLamwdoZ4&1`k)#yxfX2*cq~Ax|Lx-?}M-QxXPaVW@40 zpEPvKCQi)}Q5<^GvX{yHt4?b5^cD0KEEjiz+EuTY)y`po36BIC%l;IL1`UYMbWYa5 z*cV;?p2MU&WNfAMY#gf8nFP;mk>unoQZl+!%3(TwNJjh5q@jlF+zC;Q0S}`L0Ki%h zL-epkXpdzuMsLMRd++L} z2s=KJDBv3nI1to|=%^taeCZn-gt`pXu4vRyq>*YJ5jMMAtgCk0bs^tyx>#6H?D)p# zj=L2ag4mL4NLhagHKaMsM6g;kfrdYpAe!5W2sy+JYpp_ryrdFhUj0Za+6C7Xls}beFt(A?M%PAS7GR)TQ9;X_|dEawMzyhzK#XL5RsbCMwkm5bzC&&uH3a4Gk!Y zIpG%xm1l{3-PY=hekINef0}S@U>|H_b?L{lwtil&I3PKsO=F_mUN8VIKbyf+o%%v7C2wdbF_%J` zQJQwJ`)~@WeqLuXnt!K&w-h+^bVIeePGA}Exb0NG9H{@tBSRjNZuboPoaO%1!`it3 zyovGH+nK(!cG9yxcW72j;M+#Qr^z12Z65co0$v3C0)i-ClQxk>U-Yha+PC>e0={;w z%3!%N2%k?+*;_T<*hRkmmNbDb(^_f#RV!{*g0Gc%bdsxMeuJAD0z$a#gdFSR7K03^ zo)z5pSu{-*2 z5(~eA77A!$`$aY7!+AETV#unmp;Dv*QUFxS0frcE)xlxf0^|nn9KWaR;J*kWy=j2G z%_2nM%yE24BJjA(GDgbOf__x&&w4=XIq&(nvOU9R~j(ba+d!E znQ%nt1HbTQ)+c-(7**$vr{M`-D;{#0TMEif?yKVm>zr~^ds8?j&5o1)Ubq>HPL~$` zy~iR%22&s3Z4+5kYxlOP!aG<9WtR}t7E@$n5>VVpQG{}>_MJ-(`KudHC#!)~4)ci925V1p*^`Yxg*Q-E);*nsVHWynrL?KiXQKtj#M zdeWE>3GYERwmm!R_CM~cgT8@JS=b>rO*jQeliSD+f6EAN|3HRwAV~a(QvUIC#VS+L zr7G^5%3av3%sgiQR=H0A#S`!yJ!N4vVRd~GA5O_B-EE{vMn7w`?-5CakimDq0S;ab zSKOCMs%j=AGxgn`F>O7PC#sd#RTL>))$9{H3M0qK;>UL0tcFmomH6cZm6$<*Z5Rvh zyUbyJYDiaY-voe0I~Gi|vy)zuE3<7xth|+?g$1`_={It}b}PVJJafxbh%k98Pcji= zv?fZ^sud9^*!feA)pLMUAoGlOP0&3P5GF9dO*%L*Q`xHfa-}|7)Cr<# zky8`gA`NOnlfo(T@BwA|I*3fn&cHzK)Odg%4t;QSmy)&vx?GZwrk5O0&$I5YV_V+u zZP`roloeZpKnaQ36nZo>Fit(~&uN!{Dd=svi;IWjU=}|jmI!|*c~)Q#jm(4da9T`$ zeAn2l1E`3H9UefdB8pzmYViG(lMQBdopI~ zz{E3j@E$ir=%?f5h&j7IHvxvU2*ac!c*cJCkFxG5Z~M&dbImYo;77X#0V0~c2!hc)9aX_A9~V;sC8Hw%a3&w@@|WDaqc$#j%_g9 z9NY--pj0b~KnJk=X7;2`@1v2XLRK%w=vTh()aI6D0^a(DTY<%V4fs+D;!6!2Oa_ce zktXvy^6A-kgVXE)W&U(CCes!)U)CHZTn0fdKG_g)A8syjAeufLEfE8d{mg)opy-<_ z+l29(CIbeius+=Ffk@>-o;w-^(V+K&=L8c3sdX+vB;ZE?2xIl`47UPbk^pxAzJ?hG zjCe~jugXF{H@VROV6j1SMa?bM0)9eI>PaO4K#$~N2>&E(`y}KhIz@Tk2)2z9 z^>gJ71(iV0xd2i*NYR!iVd<<-); zd%|6B0IKl(MRJI*&!-c(i<&N2;vnA;7p_f;)pS9#{lL^dr~fJHYa?+){zWce#Q&p# iobjo9Cn%qLZbZh`l)W$gb9O!)$+&F}HhEjU&ix1P=Fx8e literal 6171 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 literal 6195 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 diff --git a/src/doc/doc/images/drc_width6.png b/src/doc/doc/images/drc_width6.png index 030ec7c395822032c8f3ef690d7d3843a97b3776..50c558bfe3add5b7243b7be7d54eecb3e5704064 100644 GIT binary patch literal 6525 zcmcgwX;@R&)()jDwboGSfEEG@h*~C*B8DNU3I&`{umzzEiZxa#Q)CQDw5?LAH4Gvm zLuvsLR6?boAds}sf*KM8nIsUXkbr?i2qBR1?sEVIiucF;o_;^_B+oh7d+oi}`>yq_ zm9%fK>x#EOdK-a2tZ;X8_Cz2wCZNw-uYo7dzq$2*uVvwG2k{65vL536Cn;wi-Ez$I?lj)D`SuqSCh?FV>TShJw{Pp0hu<>0 zao2_PeVm*rkb~m#AY~wQMt=UkB zwoB>{)+=8;HwAlaSf>Fmz0}+#rz~x@x-gJVx`jG)Nq{CN=;C{MrpP~;$yu>hF+Ky! zYr-xtOrt6ikDA6!#!Y?@Jifh z8*2C(mA|AN2@Yrtq9|JRU}o6lNSwn#EME|{k)19Z-o?IeBewVwjftV29(gcqD~cGLIzHj4 zl$G_Q^taHt;Wvz&?Ttmx zq}%0-PoM(^`&>I*K&x8B3oTGB5l?oLUg z7z&Bqy13I2AZ}M@stw4KSiT3%NAxgmIEtn&lQslleUJDZ<&eNxJ7o5ljci4bb}l=E zlY(P;KWmUWtnco!t@tY7=&tU~862f<5bFWW@6#C0@_1!j!bWvRUPdTFHI(wS^kTW} zkMC9pSJUqG6`IQx@iDHUzPt&YU{-B!2X2q)j=k!HL9Y+*SM~`4j_0M_D4uTMuSQMF zI!>tMIr=x&6Hy)=Tv=5{dtjtsIzg!n2qbS*XJ_BRs67Qmei4LYk&~`liZA^*))&<* zSw*XEeA3l17*S5GApB$&wtl<-0DG57mqOZBUh!4{FD@*coGA1ZbvAb^qC#s)S|Y(6 zWlp5yBZrZ(nmWS3Lz?jk+`$%BFA{{ix-F*Af9JrG?GNMn89lSbi7C4=Jz|(!* z=g$hfcfSEs;Nr>XF=O}o%RkJ~$~X;B@M0?Tvh-WlcHZDE*$*OMaEv zFPggyeq5TeVB`OmDNcQGvLeyw6<0+ty0b#M4VU&3<80KH_*bq(>>3(Ty1pXE1ig_n zdi8&E65`allas1{AvQOEE^~VSe@mx!(_8hCR4O&l@P(_ISs;6`$!~Irim2UN#y+_C z@pv=g+Ao3_JpJ+C+*08^RH;^Ajd>@|E9#U5TKH8tscNS`UTZR_<)J4rI=zaAq(wI} zyIoVwb%IGTf)27_vKEy;#xp=W%?Fja=-REMnCtf~?qFhkQ0L$xndLi;rQ|lHm~LEo2y6##0~L#sp~_Q1RS@ z{`f?10aR(s@9{}7zk2vmSQgcI=)u+nCsL zi0Jn{2}143hL?s3!gJ^5YVG%fnc%|yz+e!IcoY@13wZO(cS_e$*p;H2C6#qIq9Cm1 zPWY{LAWpW+jOf&s6>WdI%oTFT`yS6qIH#R9Otc<=;@>xhmgc;){VhRAnV7X*sC6VA zEo~g0DdaN+`%oN@gKM9?Cc^J9aO2KX7G15`awBk&&`n(xSk?0fJH+0#<5zPE>@E*@Rt|TF1&Q=dJo)Ub2HNTFlZ%$ttprfr3(h2&E&`zw^YB7)yev=&0ucR6 zE6%$}O>9zuS9SJqw%*mVk64ZE{Y@1o@grjg`|lO-IL3ty^CZ{zgEiu8dH?rjF+uBl zV_3=|Ofk4@69BN^O%Gw-abfATIVgE!vc0f+!RZ*lCgD9wRmeZMAU%s07E1R+pb~?h zxQZuDm6{H%BXp0O)O(cpO@JCqu(MuqU=>C7c?ajv8!$gy4m)D_B>iBC@{&Nn7M76( zqR{J@Z7=GNxroT)SdErh^>Q@Yr5L<0W3me{H4$R!XUb>910Z)~*=6GC73@$Js=W=; zfCo+f0+tfHu)4AlS^poR!s=Q!$tRxW6d4ao(b?kV6OeC(rICn+M?GT(kt6j&K8Gf% z+YJ&(>3e_)g#xiKPvs9%k_1jk=jvkrQYx(#T%1r2 zej3tRJp|Bhgd98-pF{HP;GE6@o7DKwC75C^A8BTP1R~mpNn^2CB`U9(OGh>`1rx1R zdd2K_UuKDJZnj(jJvNKEdmr15WY`+&%H-_=wV0|_h<=i^8ik+X1$YY{N*}ZRPja7d zPiH0QBNN$dHjP5TR*yF;(rF3Da7C7*Q6X%)TFKW|OUY8~eY#2lekw(IaUWqWklLAD zmTfkDl&^WDiHA7jGIt>BxzHndYTguNIH%RvJpZ&9{yEzf`tk? zk0%Jj2!@h|^yWy}od^q{YV_|#v6PB5^G7)COrpXKM0M?~ZeqCDu`BIlA}>J-4;fC+ z;&IdoJAYPV%0aHqvLmyU-MCvlWGaYj*V!3$)xcv{dSD}lG2PRum0t@}Y>v#Tth>i} z+45=jo`4uE4fqSs=L8emvmF?=c(CbBa|ySw9l%=5V^*qbwzkgg2}`F2QZ}AiLiVL9 zmA+?G1`Bo_l7U@4mQ8@=@V&9jN?H#{1t)|Io_{7@UACrcZZBB2kTW zEzmsj>|A%I>wg7LwLB*|h!-L{zPy6Rmfd~~uRY!5faT{7m)(F$q?O?s%K?Xb<6ECnxyXmit6p@PbS4yWmTB= zUKKt7l4hnJ2WgkQqprdE<8gZSdQPy4=5c5vBKlnr${ZULs7t<>%CKFkBxZ7ZdVw$~ zTQR53@xnAJ*4Nr2zcPlE4E4yMt?qbV_H{AX3!x2!2o!k(XCB8P>IHACS7zd|PHW0* z)rS|FvwX8t2QReoehuiT7`%{ybeUT>qk;Di6+RtMdoMNzi6sbZYv*)FV>W?~w3ySz zAj;Z}4(#~{1S=|aAeE5?N>$^m*4Z~ySOmPiWlk3}D-8|b#S8OJo`t&%Po2Aefq%~3 zs|;DXE(I;!3%e0gh=+GWyN>^9k8^`22^-d(KC#sP$dPSFST$ZR!TKK9<-UeBzZbm& z?sYaU`!aZe2m)~^c^z^LkJFVu*Sw&mT&?_Ou5nWh{>AaG0qH7n!)wL<0OSOug4S&2 z_X7Vrb~p5gPbm}%+0;~>nRZj)^n*nEB1PMvtD!5_w|uzFX}rZVhtxQ3B-M6^;*Oqr zA)^?|I(Va*@5DX!M|h*g?j+8I*geXLV~=I3b1r)+Fp_7dB3x!=#?%+^AsX{D3S=W6 z!$NSnXLJw9!XcheXJ)dQPkK(cU3+e!c&*(Cw3|~4N5cTfFF@wgPMcn$M;^827Br^O z0mvbI(i^w9bWVZLK#KeDi~yYpOyZtrkc@d>HoVpTqZ|CB#VV*@51<#YQPUCVby)7s zs!t=lFbAlhtjAFChQ##XKkhlBt&?XRJ=-*FDT3Gzoe}d9kK@XlfJaHQx%>G~;LmgS zo2PN%@V3AT2^_nw|J`9x%HsYc0U*MY@=468M2K3DFn>1_F9PYWGapLx?nhX}$WNG+ zu8V>J0C`Xgrj+hXYhtER0lW`kqSPH$I{^Ely!}Hw zzF$*cW=5u=i9-VXdTkVzKei*SHV!CaO*(Iyrk}hg;SFOei}V8&M=aE2ylhYQ&9LE6 z8k~#HknHzPO1+uyfxNx2!LkG7UI1>;qA=|lmtepFkOAKVd_cs$+> z4Wc@-?JD)!0x%{3*HM@Y8iEDTfXqPLUNzH~EX#+h0su*(NKJ3~G0v!Ik&uJXIFl$K zOwVH?@H%MNQ-Rk9j$K}?)@lLLpsWG_@iGyD&_c-qxCa_|0Dy2^fh;rrhs9TM|E0y@ zN7p6FC0v8SThCnYMMB)L03zG5C|B2DiQ|6(C2$Vhtpb-Q?UUP~8A=kflIrx4$Z>It z3n3Zmt(FW)b>~uvYT~w+AsLl64?*w@C^@20vFY>w?@7+THIMl}46Q(`U^_d!;(DM0x>}Wfm&p(bv{0%UMHH~Z1KIwvVn>P!e zO<*ByJ=}MYVA0BP$kMS%Q}nvU z1>h+9$@AytGwpU)YSx7(=}yvJWQ0#o_csq6BY!U;YWj^`usg8cN!AdcE?0@gUSzFK z%^v;EU+ikG%0m7*>WhB3_DyiX2lfPASi_{w&h_DPbjfYJnWh-k{{cy7BQ|v2&nDy- z$U?Q8t9v}IzgDf;gbGTWZ08v3886~${L9`x;h0IeXGX#fBK literal 6427 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 H@8rJ#m#1B% diff --git a/src/drc/drc/built-in-macros/_drc_engine.rb b/src/drc/drc/built-in-macros/_drc_engine.rb index 5b9296ac9..14eb0c842 100644 --- a/src/drc/drc/built-in-macros/_drc_engine.rb +++ b/src/drc/drc/built-in-macros/_drc_engine.rb @@ -322,14 +322,14 @@ module DRC end end - def without_touching(f = true) - self._context("without_touching") do + def without_touching_corners(f = true) + self._context("without_touching_corners") do DRCZeroDistanceMode::new(f ? RBA::Region::IncludeZeroDistanceWhenOverlapping : RBA::Region::IncludeZeroDistanceWhenTouching) end end - def without_coincident(f = true) - self._context("without_coincident") do + def without_touching_edges(f = true) + self._context("without_touching_edges") do DRCZeroDistanceMode::new(f ? RBA::Region::NeverIncludeZeroDistance : RBA::Region::IncludeZeroDistanceWhenTouching) end end diff --git a/src/drc/drc/built-in-macros/_drc_layer.rb b/src/drc/drc/built-in-macros/_drc_layer.rb index d8de4d8c4..ffa80b943 100644 --- a/src/drc/drc/built-in-macros/_drc_layer.rb +++ b/src/drc/drc/built-in-macros/_drc_layer.rb @@ -3687,10 +3687,10 @@ CODE # but is more intuitive, as "projecting" is written with a condition, like # "projecting < 2.um". Available operators are: "==", "<", "<=", ">" and ">=". # Double-bounded ranges are also available, like: "0.5 <= projecting < 2.0". @/li - # @li @b without_touching @/b: With this option present, touching corners (aka "kissing + # @li @b without_touching_corners @/b: With this option present, touching corners (aka "kissing # corners") will not yield errors. The default is to produce errors in these cases. @/li - # @li @b without_coincident @/b: With this option present, coincident edges will not yield errors. - # This is a stronger version of "without_touching" and makes sense only for two-layer checks + # @li @b without_touching_edges @/b: With this option present, coincident edges will not yield errors. + # This is a stronger version of "without_touching_corners" and makes sense only for two-layer checks # or raw-mode input layers. It is listed here for completeness. @/li # @li @b transparent @/b: Performs the check without shielding (polygon layers only) @/li # @li @b shielded @/b: Performs the check with shielding (polygon layers only) @/li @@ -3799,12 +3799,12 @@ CODE # # @h3 Touching shapes @/h3 # - # The "without_touching" option will turn off errors that arise due to + # The "without_touching_corners" option will turn off errors that arise due to # the "kissing corner" configuration (or "checkerboard pattern"). Formally # this is a width violation across the diagonal, but when considering this # configuration as disconnected boxes, no error should be reported. # - # The following images illustrate the effect of the "without_touching" option: + # The following images illustrate the effect of the "without_touching_corners" option: # # @table # @tr @@ -3934,14 +3934,14 @@ CODE # # @h3 Touching shapes @/h3 # - # Like \width and \space, the separation check also supports the "without_touching" option. + # Like \width and \space, the separation check also supports the "without_touching_corners" option. # # This option will turn off errors that arise due to # edges touching in one corner (the "kissing corners" configuration). # By default, such edges will yield an error, as they # form a zero-distance situation. With this option in place, no errors will be reported. # - # The following images illustrate the effect of the "without_touching" option. + # The following images illustrate the effect of the "without_touching_corners" option. # The white line at the top of the bottom red shape is actually an edge pair indicating # the zero-distance violation of the separation check: # @@ -3952,16 +3952,16 @@ CODE # @/tr # @/table # - # Another option is "without_coincident" which turns off errors that arise + # Another option is "without_touching_edges" which turns off errors that arise # at coincident edges. Formally such edges represent a zero-distance situation, hence # are flagged by default. Turning off the check in this case can be helpful when # separating a layer into two parts (e.g. thin/wide metal separation) and an error # between touching regions is not desired. # - # The "without_coincident" option is a stronger version of "without_touching" and + # The "without_touching_edges" option is a stronger version of "without_touching_corners" and # makes sense only for two-layer checks. # - # The following images illustrate the effect of the "without_coincident" option: + # The following images illustrate the effect of the "without_touching_edges" option: # # @table # @tr diff --git a/testdata/drc/drcSimpleTests_90.drc b/testdata/drc/drcSimpleTests_90.drc index c0e50e5ca..eb85f24ee 100644 --- a/testdata/drc/drcSimpleTests_90.drc +++ b/testdata/drc/drcSimpleTests_90.drc @@ -14,21 +14,21 @@ l1.output(1, 0) l2.output(2, 0) l1.width(600.nm).output(100, 0) -l1.width(600.nm, without_touching).output(101, 0) -l1.width(600.nm, without_coincident).output(102, 0) +l1.width(600.nm, without_touching_corners).output(101, 0) +l1.width(600.nm, without_touching_edges).output(102, 0) l1.space(600.nm).output(200, 0) -l1.space(600.nm, without_touching).output(201, 0) -l1.space(600.nm, without_coincident).output(202, 0) +l1.space(600.nm, without_touching_corners).output(201, 0) +l1.space(600.nm, without_touching_edges).output(202, 0) l1_raw.space(600.nm).output(210, 0) -l1_raw.space(600.nm, without_touching).output(211, 0) -l1_raw.space(600.nm, without_coincident).output(212, 0) +l1_raw.space(600.nm, without_touching_corners).output(211, 0) +l1_raw.space(600.nm, without_touching_edges).output(212, 0) l1.sep(l2, 600.nm).output(300, 0) -l1.sep(l2, 600.nm, without_touching).output(301, 0) -l1.sep(l2, 600.nm, without_coincident).output(302, 0) +l1.sep(l2, 600.nm, without_touching_corners).output(301, 0) +l1.sep(l2, 600.nm, without_touching_edges).output(302, 0) l1.drc(space < 600.nm).output(400, 0) -l1.drc(space(without_touching) < 600.nm).output(401, 0) -l1.drc(space(without_coincident) < 600.nm).output(402, 0) +l1.drc(space(without_touching_corners) < 600.nm).output(401, 0) +l1.drc(space(without_touching_edges) < 600.nm).output(402, 0) diff --git a/testdata/drc/drcSimpleTests_91.drc b/testdata/drc/drcSimpleTests_91.drc index 0425700f7..0b79b7773 100644 --- a/testdata/drc/drcSimpleTests_91.drc +++ b/testdata/drc/drcSimpleTests_91.drc @@ -11,24 +11,24 @@ l1 = input(1, 0) l1.output(1, 0) l1.space(600.nm).output(100, 0) -l1.space(600.nm, without_touching).output(101, 0) -l1.space(600.nm, without_coincident).output(102, 0) +l1.space(600.nm, without_touching_corners).output(101, 0) +l1.space(600.nm, without_touching_edges).output(102, 0) l1.space(600.nm, DRCZeroDistanceMode::new(RBA::ZeroDistanceMode::IncludeZeroDistanceWhenCollinearAndTouching)).output(103, 0) l1.space(600.nm, projection).output(110, 0) -l1.space(600.nm, projection, without_touching).output(111, 0) -l1.space(600.nm, projection, without_coincident).output(112, 0) +l1.space(600.nm, projection, without_touching_corners).output(111, 0) +l1.space(600.nm, projection, without_touching_edges).output(112, 0) l1.space(600.nm, projection, DRCZeroDistanceMode::new(RBA::ZeroDistanceMode::IncludeZeroDistanceWhenCollinearAndTouching)).output(113, 0) l1.space(600.nm, square).output(120, 0) -l1.space(600.nm, square, without_touching).output(121, 0) -l1.space(600.nm, square, without_coincident).output(122, 0) +l1.space(600.nm, square, without_touching_corners).output(121, 0) +l1.space(600.nm, square, without_touching_edges).output(122, 0) l1.space(600.nm, square, DRCZeroDistanceMode::new(RBA::ZeroDistanceMode::IncludeZeroDistanceWhenCollinearAndTouching)).output(123, 0) l1.data.min_coherence = true l1.space(600.nm).output(200, 0) -l1.space(600.nm, without_touching).output(201, 0) -l1.space(600.nm, without_coincident).output(202, 0) +l1.space(600.nm, without_touching_corners).output(201, 0) +l1.space(600.nm, without_touching_edges).output(202, 0) l1.space(600.nm, DRCZeroDistanceMode::new(RBA::ZeroDistanceMode::IncludeZeroDistanceWhenCollinearAndTouching)).output(203, 0)