From 1ae109f90d5c7efb9d0d1acbdde6841b3bdc8b7a Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 21 Mar 2021 23:54:13 +0100 Subject: [PATCH] DRC: deep mode region input does not flatten the layout on clip --- src/db/db/dbHierarchyBuilder.cc | 7 +++++-- src/drc/drc/built-in-macros/_drc_engine.rb | 8 ++++++-- testdata/drc/drcSimpleTests_au32d.gds | Bin 4578 -> 4002 bytes 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/db/db/dbHierarchyBuilder.cc b/src/db/db/dbHierarchyBuilder.cc index 66fbc8a41..838e93243 100644 --- a/src/db/db/dbHierarchyBuilder.cc +++ b/src/db/db/dbHierarchyBuilder.cc @@ -534,9 +534,12 @@ ClippingHierarchyBuilderShapeReceiver::insert_clipped (const db::Box &box, const if (complex_region) { for (db::RecursiveShapeReceiver::box_tree_type::overlapping_iterator cr = complex_region->begin_overlapping (bb, db::box_convert ()); ! cr.at_end (); ++cr) { - mp_pipe->push (*cr & bb, trans, world, 0, target); + db::Box bc = *cr & bb; + if (! bc.empty ()) { + mp_pipe->push (bc, trans, world, 0, target); + } } - } else { + } else if (! bb.empty ()) { mp_pipe->push (bb, trans, world, 0, target); } } diff --git a/src/drc/drc/built-in-macros/_drc_engine.rb b/src/drc/drc/built-in-macros/_drc_engine.rb index 5b60a23e5..69bf9f69a 100644 --- a/src/drc/drc/built-in-macros/_drc_engine.rb +++ b/src/drc/drc/built-in-macros/_drc_engine.rb @@ -2536,8 +2536,12 @@ CODE end # clip if a box is specified - if box && clip && (cls == RBA::Region || cls == RBA::Edge) - r &= RBA::Region::new(box) + # TODO: the whole clip thing could be a part of the Region constructor + if cls == RBA::Region && clip && box + # HACK: deep regions will always clip in the constructor, so skip this + if ! @deep + r &= RBA::Region::new(box) + end end end diff --git a/testdata/drc/drcSimpleTests_au32d.gds b/testdata/drc/drcSimpleTests_au32d.gds index 414bb2ff4f43aac1025f1958cdbc9b0b97da65c7..c899c06e9b69da1a9cace7b87ec24cf27caa9244 100644 GIT binary patch literal 4002 zcmd^?O=whC6vxlJnR!X3Nl8LJ)DA^3en)D;P_>j`99xqZb%>*cASgk*5_KgmT)1#k zS0XM1vyg7uMJc6pA*H*P(v@`4m2}}kODQf~hzNc>|L30fpLgH9m>CpTK1hDUx%ZrV z&bjBDc_X0&!Mv1nLB|8h%b*NPMaKNk(iw!a(|be)^2LeCuXpVKW$A9k`yeN|YPlWWA3VqVh4-)+-dcI1e@49jL zoJhxCA|&N~*TvWG_Vu6r3;o3?QVxG32r?n%eT$~wAuGn&Z*h)PXQyk&k50}d9%mx% z`rTqQ|E@AV z(3J6!@g(P`5}!qKk1cK`V-$n9fwk(4)8*}0VdRaDt_=!3(5qsl4? zDF^-Y&!qI>H~pmFB;}y5e>SCm75BAd=MUb)##!XSk#a|;-=fM(an8pY{g}$Mdc%hv zl9YqKr(UMtsGq$|qmO^qOdGSA=DMBVI@0RY^z2@ETf&v~+Z5~W%}3G8ZWoJ-!dna1 zibcrvwlC4ag8bbe)4L| z+kubNBfV8$KUG`N9i8<02mL2F2-Dt3xm$Dktz&M=@3_nFKvRBoif6j4h3%p2-Nm<8 zimi`jZN~ZbCM`RAxn9(4aXpo9Z_=U%ze7Hjlr~}UPUR+TFi*L%tzOK=G~PNU)N2y) z+t+Dl7}gKfYy!e=JP%{L9~CFpYF6-I=IwSL^s~;qjlCiV*IJy`L+QI`53OY5$fJ}E z)JfU~veAYoYUQ_D!;?(4q4V0XvTl>e(r({MlP}{Icbo)%Gh|NlYa2P@zM*Vvh|XnF z-!t&Ev2)AQ7CW_m8a6+>v4YLUPPNIMald4~@2hsM>|2G)zb|t5xsh_vdB2?g5c*`t zfQWLUEVA`jLdrp3pYIEw^Y_Edl8akv7etEqBMF%E8y_t0$_b&s4wZlazzLKHpzlJUUw|^EP9@_{Gf%A*as6-cPU_ll#Ee*faf^ zoyOWf$PfNV^r!TE?|RIU`(}2g?0NIig(bY#Ht(DIr!~L&ezU%8tl{2QpM*a#_5L>( z?EaN1AAOim^;Ax3eW*T3yP%&B&gY80x#?SQ6~7mi`|x8{>$QHx>ZE?c$n|RacO&gs x9H{k?+lT|ydRzTx!ih^Fn{FYFn7Y2LX6s7T({=LGA5EX6UC_mW@4iAoUI7ewlt=&o literal 4578 zcma)<&ud&&6vs~{$+Xr)lG2z|(^|B)X^j}Q*ik}=R&AQ5b*x#`(1nVMi=uHO7Fuwt zxC~fm7PBbWMZn^!h)a?F0bRJr!iDZ!bWy~G5YK1M`}*z+xi1-b`GoWC=bm$a%zg8$ zX^qB38}DiC`qO%C#73=YhtmITccZy*<~6f@z5O$m9skEnRNUD&T;tP+`oYJ8iaWFZ z1uu&Bki75yR#Nf0{CMP1Klpf1@$K?ozZm`xcf%7EcV_D+$Leh4!eiW`;?C4>r1Sr{ z=l*=o3|=#{7rYNqac8angy+X6H@>L2GwaW{B0nVW`?pGxzqnuPlZSTX#TOOdF8|7M z_??OHMa7+I{ypjZG5@;QKjan_cV_)`|KO$j55Ksd^=YGZ*1C&|Z(9FK{q(PWhDUx; z@lE^h;dJ~@{$i%<%2l&xF8TNiD(+0{ulR4@3?JexO_#(k?q_}4+*pr3Zcj#jQE_M1 zr~mIBL>@fyi;6o_e;^(IW9}aG{E)G~SkwR&cV_)F_o5xd|6rgbesMqRlXv-#$bap_ z$S*4H%=+|CJBUYqQSt5k6?gDE--a(L?o9K4l+K@jOib=&ecJMYT>E_vMa7-9{wvqRY5O?vMa7-9 z{?p^((;i<`+?n-{^--l6r0&VTN-FNG^~r}%-T0#7&RU;3@oA4QDqdGVH69(}ui3Qk zKh{rF+?nS8xY&Qw{QlrGzZz_RY1Z$Tc_5{ADxHIdsXK*3)Pu(l2cwPN?)Cs8@UsSxVemv@g)QvAHUROUW*SZ<&H}h4j zpQyMq9sj4re!k3p<~vMosB=W*T%;CJ-&0XFi=3aFC!+dwZk4~g|EXN(_72Z;)&IXA zqmMD{;5@GQjGGVS+QE5T@tGe!5Pt{fVa3PQxubJPRD9EU^jT&7#>@`i@!U?%q5XGD zvJWOYzJ3L{|7<(%Lp<(_FWnAbRKL!2{gnU2Q18aZ#;UL1O7OJ5?D0Ha{3g!9#rJ}` zf2w+ps2^WPd|f`4-_88pvY_JK99z}V-3KFM-TU2nz-JzUir4!SooL5=;4wcz#q0cN zb7UP7^ zxghesIk*<@olx!kooK86iuLhxaw_^8^)sqD>*r)a#fPVIK5lv89q_#-CigP=V~^5~ zJ&E^xtEA%2tWO($`@>_OM1E0mXVxb#?I0fcMaA=e%v)