From 49621aa13acba06dddb9f5da0e0164b3cd58f817 Mon Sep 17 00:00:00 2001
From: Matthias Koefferlein
Usage:
++See Netter#antenna_check for a description of that function +
Usage:
@@ -42,6 +51,15 @@ cell("MACRO") l1 = input(1, 0) +Usage:
++See Netter#clear_connections for a description of that function +
Usage:
@@ -60,6 +78,15 @@ clip(0.mm, 0.mm, 0.5.mm, 0.6.mm) l1 = input(1, 0) +Usage:
++See Netter#connect for a description of that function. +
Usage:
@@ -79,6 +106,26 @@ for two layouts (i.e. take the largest common denominator). When the database unit is set, it must be set at the beginning of the script and before any operation that uses it. +Usage:
++In deep mode, the operations will be performed in a hierarchical fashion. +Sometimes this reduces the time and memory required for an operation, but this +will also add some overhead for the hierarchical analysis. +
+"deepness" is a property of layers. Layers created with "input" while in +deep mode carry hierarchy. Operations involving such layers at the only +or the first argument are carried out in hierarchical mode. +
+Hierarchical mode has some more implications, like "merged_semantics" being +implied always. Sometimes cell variants will be created. +
+Deep mode can be cancelled with tiles or flat. +
Usage:
@@ -146,6 +193,12 @@ In non-verbose more, nothing is printed.See Source#input for a description of that function.
+Usage:
+Usage:
@@ -228,6 +281,15 @@ verbose mode is enabled. After using that method, the log output is sent to the given file instead of the logger window or the terminal. +Usage:
++See Netter for more details +
Usage:
@@ -459,7 +521,9 @@ predict.In tiling mode, the memory requirements are usually smaller (depending on the choice of the tile size) and multi-CPU support is enabled (see threads). -To disable tiling mode use flat. +To disable tiling mode use flat or deep. +
+Tiling mode will disable deep mode (see deep).
This method produces markers on the corners of the polygons. An angle criterion can be given which selects corners based on the angle of the connecting edges. Positive angles indicate a left turn -while negative angles indicate a right turn. Since polygons are oriented clockwise, postive angles +while negative angles indicate a right turn. Since polygons are oriented clockwise, positive angles indicate concave corners while negative ones indicate convex corners.
The markers generated can be point-like edges or small 2x2 DBU boxes. The latter is the default. @@ -584,6 +584,18 @@ The following images show the effect of the extents method: Applies to edge pair collections only. Returns the first edges of the edge pairs in the collection.
+Usage:
++If the layer already is a flat one, this method does nothing. +If the layer is a hierarchical layer (an original layer or +a derived layer in deep mode), this method will convert it +to a flat collection of polygons, edges or edge pairs. +
Usage:
@@ -759,6 +771,12 @@ is composed of multiple pieces, this method will not return true.See clean for a discussion of the clean state.
+Usage:
+Usage:
diff --git a/src/lay/lay/doc/about/drc_ref_netter.xml b/src/lay/lay/doc/about/drc_ref_netter.xml new file mode 100644 index 000000000..cd82c10aa --- /dev/null +++ b/src/lay/lay/doc/about/drc_ref_netter.xml @@ -0,0 +1,174 @@ + + + + + + ++The Netter object provides services related to network extraction +from a layout. The relevant methods of this object are available +as global functions too where they act on a default incarnation +of the netter. Usually it's not required to instantiate a Netter +object, but it serves as a container for this functionality. +
+An individual netter object can be created, if the netter results +need to be kept for multiple extractions. If you really need +a Netter object, use the global netter function: +
+
+# create a new Netter object: +nx = netter +nx.connect(poly, contact) +... ++
+Network formation: +
+A basic Service the Netter object provides is the formation of +connected networks of conductive shapes. To do so, the Netter +must be given a connection specification. This happens by calling +"connect" with two polygon layers. The Netter will then regard all +overlaps of shapes on these layers as connections between the +respective materials. Networks are the basis for netlist extraction, +network geometry deduction and the antenna check. +
+Connections can be cleared with "clear_connections". If not, +connections add atop of the already defined ones. Here is an +example for the antenna check: +
+
+# build connction of poly+gate to metal1 +connect(gate, poly) +connect(poly, contact) +connect(contact, metal1) + +# runs an antenna check for metal1 with a ratio of 50 +m1_antenna_errors = antenna_check(gate, metal1, 50.0) + +# add connections to metal2 +connect(metal1, via1) +connect(via1, metal2) + +# runs an antenna check for metal2 with a ratio of 70.0 +m2_antenna_errors = antenna_check(gate, metal2, 70.0) + +# this will remove all connections made +clear_connections +... ++
+Further functionality of the Netter object: +
+More methods will be added in the future to support network-related features. +
+Usage:
++The antenna check is used to avoid plasma induced damage. Physically, +the damage happes if during the manufacturing of a metal layer with +plasma etching charge accumulates on the metal islands. On reaching a +certain threshold, this charge may discarge over gate oxide attached of +devices attached to such metal areas hence damaging it. +
+Antenna checks are performed by collecting all connected nets up to +a certain metal layer and then computing the area of all metal shapes +and all connected gates of a certain kind (e.g. thin and thick oxide gates). +The ratio of metal area divided by the gate area must not exceed a certain +threshold. +
+A simple antenna check is this: +
+
+poly = ... # poly layer +diff = ... # diffusion layer +contact = ... # contact layer +metal1 = ... # metal layer + +# compute gate area +gate = poly & diff + +# note that gate and poly have to be included - gate is +# a subset of poly, but forms the sensitive area +connect(gate, poly) +connect(poly, contact) +connect(contact, metal1) +errors = antenna_check(gate, metal1, 50.0) ++
+Plasma induced damage can be rectified by including diodes +which create a safe current path for discharging the metal +islands. Such diodes can be identified with a recognition layer +(usually the diffusion area of a certain kind). You can include +such diode recognition layers in the antenna check. If a connection +is detected to a diode, the respective network is skipped: +
+
+... +diode = ... # diode recognition layer + +connect(diode, contact) +errors = antenna_check(gate, metal1, 50.0, diode) ++
+You can also make diode connections decreases the +sensitivity of the antenna check depending on the size +of the diode. The following specification makes +diode connections increase the ratio threshold by +10 per square micrometer of diode area: +
+
+... +diode = ... # diode recognition layer + +connect(diode, contact) +# each square micrometer of diode area connected to a network +# will add 10 to the ratio: +errors = antenna_check(gate, metal1, 50.0, [ diode, 10.0 ]) ++
+Multiple diode specifications are allowed. Just add them +to the antenna_check call. +
+The error shapes produced by the antenna check are a copy +of the metal shapes on the metal layers of each network +violating the antenna rule. +
+Usage:
++See connect for more details. +
+Usage:
++a and b must be polygon layers. After calling this function, the +Netter regards all overlapping or touching shapes on these layers +to form an electrical connection between the materials formed by +these layers. This also implies intra-layer connections: shapes +on these layers touching or overlapping other shapes on these +layers will form bigger, electrically connected areas. +
+Multiple connect calls must be made to form larger connectivity +stacks across multiple layers. Such stacks may include forks and +joins. +
+Connections are accumulated. The connections defined so far +can be cleared with clear_connections. +
+;xkOniRv=3A;1x&m@gJ20_aOjF!&KH8L z{mCHB9DR=#$%Ii7L6t`<*np$S-1=Nb61>)2)ntMfzy18&1Ja6Vs8QQ|6#BBGgHRxN zjii&|*~%{NYIb$?rZ7Z~Zhew?Czdk2-~&%Uvc~u&HURiEPq;pABBo*!u(Ev)GMP}5 zJJQ3wO10EIGFhaNL&pPZ;-iXRL}@U|ZAY(i7vL-%H@@d#bn#4E)+u)4Gr_V5~?A-`Goq2xQ PZ}gx z;u=xnoSKtk$PnTm;GXlu3MeQ55)4XBE@9BnHPX>Fw6@T()Z|*-8_B@H9pmZZ7*a9k z?d`z4*(U{C1B)NDX1=^N^Hai+2{P8fLiOgqljnaHC=qa 8Yn#d8BrQI4K-H#ALK5QMc&UoTsOrGO_W- zYAH@gOk|Y2w?WJ@_gvA_BF5%6y{Q5xHf(6%$&cusW0t tcl!yq2V{e~6 zefst5*X;k#w{PF>ZO>ECc>C?Q?aJ?NO7jQDMBLj@k#{uOa=8$bB+&kc)ldVr2j`qV z>3BHeW7xTsEe>t1tSJ?Tqn?1AwR>(-v>%_;v99e!eyS`+Iywr6rLQS1KO4F3&Rdb& zMMW13!uCupMss7{@*C48H@9tkw02G~XCn_c_lX}L+P>cWT>bseoT<+rrI(eJ?Q__u z8~^R};b}+)e}{SzQ~QUuttT>zr)ig4AKf-b#-v9y|LGivf7{I0xcbfB9JBMb=C-F# z79_5z(0+~ Z-HzCL{TqH+$mcXFB2U%DQqbEi)vv@13$l3)0aL84Z!qG(ujk zx&QWUdEL+Xb-&x?zf}I*_55G-?|(1&4{&Y2{r337w{PD*|2h5tuYZ4*+w=E7<>fvB z%-kN?=j^o~PXGUL)z{yr);_tn6jXlfJEvcty5A=D@3-?8KHaIWMHDhOi_Zbg`uBX5 z{*!;UMf0t{>yc0_*zHNI{r2act$q5_oj+#IojX@QAm{Y-zn?ZNMHE*bY=>y6LRLXJ z8Y1Xb$7qO*h6uPhg{OJ3?|$UOdB5k|FFdjP_~#GhoUn$P|3BL`)Bi_J__}_+%et7I ze=h!>`OoHm*@gOFlkLy_%S#YGAHx|RAOHS8r@p?v{lCvm{495#&lJDrZ$ItaVtdwt z_3HJ9e{DOvt?C!3Rk-(G`I`Avhkre_Z#-W0% |7HBQ?mPF3|N86Y z>o5Jb%6Yqm@6Y ^2J=(FtvSe;@oFjwzKUl`rnqNT64udab?Q~ zhke%=z|G6E%3qd0d9@^F=lLnsbC{>=*ziIdPXF~Df}4e4^Or)~m(X^Wp148Aiy%l# z5LQA>=aw)jfi^a4Dh^vc{Bw_Q{_&ePE9?I8KYjD8>* %v2InG2AjpElo|VQ89B; z3l|EvG*>c9EpR1r!7L3W(+o6G^SyDVndiLcdC&9Veb0H`5A)$ZocrRwujRhB-~X3< z%-IgSRdp)}1OnS1wLJj>Nn96STO l^?wm-RL%a)-xE@Qy0bl6dka1coD ziTIMp)|FEe3vq{0IGcdr;C-NzF30SG- cE1JN(StubdW~C4-3*M!zB#%D#E3^rw7`xr zwr8B9Bs+Kof)v0o19fQ$KV|Vtn}Se3JbZBgn=AwNyCd=R@~)jASt;U15aSTo!L}w^ z+W=cA;b_=W7q)vtJi3Jj@>4EFCqFyLe4=Gw7@xdJSt%_E1e1Ls%a3iY6_r*LaF(+y z&&1hR?m>*lem)pqVMs-LSF&qI*RaD@vw4vnG0ogXSJB7aaq^MUjWp@i!EOw-T;82A zWZXhAO79xF=lIdhH>7RCUG3AHa8f}|iV)`3WfUx_k%GB|$4e|nYC1pj5Olqy-N?H5 z<>hKRNQxf4LQdz+w-=(8u9qZGe7dz+hEA2fL#gbgQ-aP{#^%4$nK@4LoXSljqt?o1 ziX)JMr<$5QTwm1c3rutQ%0Ne7Z)hgRCBdd!M8k)pt}IP5bHWEx3zh-|#EUge+y=Lr z*ITihi_WvYd?_7xceHL>PIByOrq9|6gByErft{Y@yUFaTaB%0gL&^0JYTt`F!p_Ni zcDTlCL#nODIi2?M@XyQ3>92-+UHIm?wb`AM7hXSJ5+0hc8;}}kXIRD&uJZZ+aN~!4 zAo;2`nJjcgW?hUnG-}e?;Jb%;XCi-W?!$=i@n _~8zhT)bePziB)ycE?U|T2kfPxkGQ}GLaSyHO{-{;m5CU{yKpHlKnO2f5`US zF-GTH{S$_8?pOBX*wqNL6A(?mFq7?)EigY6kYK^TNV>8jP%1`x+c=ZA>YiNQ1nU94 zZOf1c5hWOs@#xz`tsjQq3ORKwkhZFy*I%0YX}12knDOmOsx7usS7q$10k>pjK*R)9 z@|FKU<%)w~%>MFgNbS(P4Uw&-SwUi-^X0x@%Dl?w?u@w^H?f+Vn5>Enlmqj-+a-C@ zU^69UWUx9uC0Wj@g?7r7gG=h~Qy~w4fu>vVdz2s?eQ?zs%I>5^&87O?IZYpJsaUXD z72wRvg8fhrehl@~q4c_S&=N19+b7$>N0kxz=m08K-uS{Wn+iWCT#Yiq-a~IBC8vQ2 zDEY0jx(DSD?Y5*Hz`KPIT@y}_`jcxKITm_g_?N@59zZ5zoq%p9TIg-rNc>(+L`%#n ze`+=S3OmK $`9d{uPQjpkfj<{eRBk>pz3zqkzw%G=Wb(5{nk#Bc|e5ezke;I4toA_7c zf0$&EzR%_M8IFY1PLO0P*K&&;_A~3hzW4?5nY$eE+|Y>~-NgJHK{1|%6oo!LYq8cT zbdn&LJwOw7ekT|H(l$M%Hu? 3d7eVogrMxq7&WR@x0|vLE~qrSXz@RFa)FcR5A!( zqXXm16o%al*T$cG{Ney##`k#ip3D7oEknRoo{=6Qq^G1PK{x=6( uF`hq*HewXBUSw zMYaWUzyh4LE|3Ez8o^9F@1{Vqjx`77_->RMQS9Si>-uR|)P4*x j)(igQE|7@gxC(cvJ%GmPOhKgK=KA05$!L?Ed7k0U!V|##pY7IFK?(L<4Qo z9#Xjpv@vHsrH-``5cnyt>%I+<@$-9_p8)jlb^XdKGTwjyL~JcAxyb{;K!9$sTQHz; zA5MIaEtL6Y4A|FD#g-O-bE!Vk-JPC3+m!0ZXb}F_9L)lz9H6nA83-BQ)ybELmze7# zMR0p|84x!XKD)4KfkmpWz2E3ro#Fsat;-lMX4F8ar`*JP6{!|wHq`C? x-!AG_PuPKk$pj&wL5fJzL0 zIhb=p-@vGB?8`pAP^Q0Nn@~KlP4?*(aMCUE(f~!5(6=zA_}}NX)-5%%Nf%wH6_Dxx z)-@5J3+;OQW@rzspo;k28jP)JOBwPS-nU6wp8C(T(b5l1J$+Bq05z2OwuAN 0<_&1Lf${^Gg?(pK5i#X5KDN*qdI$#$HI=GrKS&$w=we W{2N z5rAZo-*wV{^ BV^)Q=QkC@@Qt0PGZWBbbm zB}E}7Or#kxJ7XE18#M^$HcZc2Bp~V>byu?!7AbL|d^K|L>M@6dJOrPa)0ZxCss19< znAwVv)(=w%u {oEbv@2MU1e7hW8R~U&c@gdA z?1;%Rtn%4cwyLH+Sc0$IYddDq@quC1uPZ(Cf?&Z~ETZnw fWwT^;F|~ zgG$!NMOS+1omE)_<_pp@tN_*NAysk--W8(3NMT-ZMc|=GH}38#mz-ZpXFK>Mqy09_ zKonp#;x4Ia^kgEw^L~!B{sjdm=-?4c^~&N3Tc{%L4GXz}QvL2${pj(Fb{C@1tpfTd ze5r9nkHSaV!@{-LFf=9IyXb6V5ryUKRb1$!QW@QNkCcXPe{aFmrUaarE!|xOeC1Mh z2Os18^OOo$7Xx;f_2>c@-z!=1dTMViGn{0hXXO=y`s9)0^}%B~PodvjPT} <{^rUb`C XkLKzp z<{cHE9F=2(8Vj?b)Jo%l;?d&^vxe-hq|yHDg;~gLXqr2Wi4;Ah{V|B ^tEh !E?~)d7Z*0ER8s$Jz4H08 z{h$4XX-?M5xLZU3&cseTAp}>6*}tP&zLQpINg4hY>y+`2%S3-Hq=R}-ccw%4?_&LX zu>8AmdDe$*@+B=ehxK65Yl1gCkXy!9BK{`Wb{CU9_3B;)cJCK@VT>bp9-Nzgo@W8& z4SmAjHzriZ(VJjD4LL>JwkTWPmD7 mE2$4G@bTfVwfcTfDl ys}Uo@gl7HJ^`b@6p1Q%^`2uaOe?t&7uci|M9o>8zch-blnZJH zm56rYZoJq}ap4q{ z(A8~xIe!omQ92vpSu3dl;Xc}e;Ah*NV&FSG^u&uJZW<{wDgIklS7yjM^9lVY tbm#l)#~9QE$dhVG_(xQmfaWQ;6g2wu>rlIRzJa%t9rU$n$CrW+Xi z4Avzw1Sb&!RNDx488WgXE zQ1j(*L9L+W^VM}6oKL6?psYR+UjLl;lJ;;Qvm5M?Hxbah9s9QZE&ydc8S`_FN78>= zSHPmJ_yef x|GkwEth7 zMsm^Krl~ v5;j9aXSF9_5^U1#r_Pc7Ow#cg|n$7=z+E%wcg z^UiEGNrABNa>D4W)L7CpySAa3g;gELzN!^^>qd!|NZW&D+3mQpN=Z _Fm&hQgYLhv}NQs rtuxZ= }*?M?U(ppy2uGg diff --git a/src/lay/lay/doc/images/drc_centers1.png b/src/lay/lay/doc/images/drc_centers1.png index 4237e55f91a1315f64a55f8159883f8f0e23cc61..f08a8d4d6f1d4105f2fbf266dff29a23adbe482a 100644 GIT binary patch literal 3037 zcmeAS@N?(olHy`uVBq!ia0y~yV4MKL985qF{<{lj11Zh|kH}&M2EHR8%s5q>PZ}gx z;u=xnoSKtk$PnTm;GXlu3MeQ55)4XBE@9BnHPX>Fw6@T()Z|*-8_B@H9p~xd7*a9k z?d`y#Degk8f!hyr3tL}5H-r5UALop1uK!b>FSmNWGKuZ=HX*IEYbX5w@z_9LU;q3+ zjsyC?KHrpQc(8xdhK3&d`Jog2R;MjL8@Vn @@AjNES{!4om;}B zWMzv(TPtfy#bK$UTXUYCddkGc8>^)_Au*9r^4^BFIcDiQi*`0RI#2iFNQsDWIQI7G z)2Cm*e!c$h;rjUfalaBD1n<0?x8M5F#NW|pYCQ@QD-S2ReJp#k9BR{Zs1esSw|#lC zfK%&U-`@}?g~NxKjP@k*TIQZBdb%z+=jBO9;gCJDztNl$yZpwb$<1mjDy+W+b2jpD zbD#LoX8L4{<>{%r{WdODXZH<2SoHB7@9V|Sx6A#sn*97xdRbZ7K8KA< DpRmG<9uHwx23+V#9_8p8N=BzuB8(cD@#gt}42~BAS1^4lS^$6H*o5 z+rD1>9Nk|t_hj)$V{2>c_yspE>HmKAa2=8d&QmoC26ag7sXqMc#m}|w`_4Vt`D5nX zxpVaca$Zia{ag@^NJ9_ll~@NsNZs3;So`JAHRbs9PceVaoI7_;Tw~jp)B7rStVYUh z#dJ!nxU)6>kUGBq{(Ae*cmIFA9RDZb-FnNn=cnFj0A EH_ %%B|m;=A3i zwxhv6bbrY10T+Xx^0v=@uEhs(P3!&l{n0PKZI`b )IjfzG6`+FPgs_I@(TyI>dSC^Ka{+wGR`d8|Gn>(S1O7Mr}fY%}9W=m2-s;4|Z zLf&@&*Av%g+KAh4-n{uUYnSfdP5E-~keUmBWCn3 2}C+@|_?vYzkt(|qR0|Gzw+oSORE=XCV1+cWoeE A$AwHt3Px_^IqPjA8R)30x@uc@uwx;bI}WvdVS!w#Li!&vmRZrPp3Hra`c zH8bwA#LoYDQT9iQ-T(86x`pr- |HPYwmTce?m-<^N01HF8UZRo;@m zmg!fWJwf|>`HHYZ>3?~>Ra?|QCGI&O0_v^&ac|fc~0U)L;ByQmel+w7FI9Z2@ll zoo3~c+J)ALEMjbK(?e@w#T;0$&>N!n@m=X_oX@wL)yM%e+yA >|6`*%;tC Oyj3vToEN$A1y<{CFl2l5JF(YP@N7fQ$$yy9jR5DbS@JROQSCgSg zGvvwGT4od?X@-&rlZ^1*Gm_{1z0dPpzw3Ih_x)q8bItwzp6@yLIiGXR=f0B;9 I`JTKY&WJyRp3@n*@=OD+(I{CQie zosOYdBiXn!-ObWgI2Yy2FMs4;{CxbkN9q^+u@RYah*a&*vsbL0R_47?Y~F!DV>O?0 z!!NlBLmoY=91?{ `)??TCEP& X*L1v*@eIF2970 ^zOuJ%oN>42L}@JK>AR1nBU|_9Hvc&4 z)Dw0k PWUM2Si>RCk z8JO@jn){%h8#dP);ufnfwnf%3fqCWQdAIo=&u1nh_a{e39m{6686}pgRv~O^(w%22 zopG7#o~t8jnc1olvjfkkGJ-$!BQ!xwogNL6&-C_)^-by2(gJsRH@SXhJ~p}Da^kgT zrR;0j^&h6DGeVmuX6e`1?bV#-!&i~Hk0#Dp)N$&ly!O<-wzKmQTtoZa^RJwv_l8DT zgzQ%2?E7&|*6izN>p= l05Uvi!M zh%PLPV0_3wH_6U*2!fE()xIAG*5Hc3n%CcWP_O)dVj{sHQnpqWE`zlc7wJCd{Diz3 zZU#-E3yg(r{K7sJ=3qj?N{nVu$54L3YPYxLD~T58X~gN03ef|2=$UENTF9QgWxo4f z-uLl3nAO)g%#C_%q2@@<8Bh+Xc}s%Es1m#HGMdgAJZg8UWUM$%q}+(Y8DHP&ZjK*c z{|u$_D&d|p{JbMEzHR_r%$j~6ee%K%dNawcpI7I^b{Slu$}cq)8^3sVu3hTPex=Sb zv5Pf*o9HDZ8@BifiNj3MHM}UNbgyikkB%6;C6z$gYOGl3I~g F^#z7!&7+3p(FYX9g1Fw=!Hy3}qTsNN0LZ#UaooHIUkj1M#98j1Vl| zM$+IPdXp(8M9~eQt5`L-ewPa-d|as+B@wn&F6mMIC*8u>!!AS8KX-#|?%6eZM +#R`6?B~|LeaiD~4;*jqTkm!U0XP-NxgXp%L_%F8(6JjO$ zi4 }Q@n*_?A_M5T|Ilts{oHM3)QAaiaqqRRJFXWXTQg_XH0!77G5aX=Ojk=w?JMD?v zEWBJ$>XBBF0hs>L?ft{2;(E-2FysGVZUs}Fbb+Blis;!y-;!>lAW=znV2Tda25$it zddS!tDj+@{05;3%KE|hDwFSS@*s7U9nzD0+W*dMvQwfx1r-j0GvL&JW_IP5nJih=Z zg$`V4C1dMU1kvFK)gZz8=lhRnd!3YSO}!`v_&7=T@m~0Htb{VGl)aG2zsTMPy)x1* z?H!|q{MZ-6N()=eLC)(p|4SLo$nY3CF$4z p$Z@j?bHoEzJ%&_I z^D&LbFcO9eh6Nh$))Ofum?0)7FO&Wv1(#w*q-f-)-dV5$J>n*2WPOX^$ 9b_AZLq78_tLPwd0I%5cR3 z1ep;*-pmrCs!tUQX~LqmzNqSHmKvOq0x(h6{@HI%`iH1a5a%W~t{%#I96jsdhI+ue zJO6UzO!Zrmdqy2^puM_{(s 7Vt78OPQ)^AUMg&+)G7*T%2$GY|5A&?_D8W)P5JQXfyI7%eM zio#hN$3ZVRUbN6Tl1f#lzJGKWR6f#1t`|1MA~@t7k}$g^(NN41k#{!L4#IQ=GM?=A zrK>3Ji6wad5+oy#?e{)Sp3-)v0miS7`)AUHH|rvogj^9;W}oW_RZx6lh;peQ%xY0$ z;gWa{8W?aRL(q%x1r&lb^!Ix5{a?Z^%g0 G$;SVUvwWnub@B@tM{t#4qafC>X`i~PJxH$l_^kNGKR`_v;gqYR{ysrW{- z*lJFA&+tc6cizZ@xgSxyGy?mLeC_b5Yjt7XBqEpV%sQ>8pa_p8*y@*m9g( 9SFD{z{sB-X@4Wd-H<8JUday5x;2j+qdx=Hxw#CV`nkP&0-#!-ljGRe7 zx8@1?7^bVCj;2Bq=Eq*LiCbJmGV#LTMG;yT?ae8#KtY2XW)2!4tL6uwbm4WnNCLWz z{M`(x$B%?U%0nL&wfQC`pt201)j|pcghF= JFx_bUxI{M@DE@E#m5FAf C=cmfMwk1o@WtIM-}w>_t3nSczv!ntCx;s;&3IG3H!@O_wi|kn zy;Ax#>uQFx44JRfg!~*8ElU^P1$OwYmG<(U8*aOb0C4?OcVhpHX?rZu>C-T7g&{Vx z+I?9#E4g&}>*aJg&NF>8iz2|D<$)rJ)IaK?gH-Cp=hV9fnNM=le9a~kI+3}3hukkQ z`1QEA?~w`4Q#v<6wBQ`Ud*Fw$l*K1V5di7+fGXJ&G;&trUi^Ex&U4W(mw(Ao@We3d z>ev9u)2nuc%)u u;hwRn z>QA7ZdM{s9)sPduwRZ|p)cJ$BjPtubQfl@VF22&h>gQl7L`~Rqqtkt|S^QbyDD0e! z*rq;7bx+Gp9zi>u37q2I0WA#B4J|@R%{%|d#!`ohm;3p1gC *aJTO2xi%DyTk^&kC_JSq)^g0yHx0aRa5p7(i|u&LSnE^7*_8_z@hY`fg @ayfHeP=O>p{CoIy>wh2Z%YRLgWS+#Z^iRrcbIk@evp9P#E=I}9tGLlYHM_-2? zILLDA?-BtW|3xXrBsHBDbp%QK$ySf)mXX#qb(nqvL}X$ar)!A!jLaECG6oA$@3c#4 z{+QhmaU|vPO)qIXw|_8~&!amCS|!30Q#gKSZNI`2JqA?SE^UeRXxS{#N4|@;u+lL0 zi}9$W1-kUVqE~-IOu=Z`s8_~GUy6hoktz3Tkzg)m&)SggGkpp+E46^z78S)ntzf_l z;{F`D{5pe{z7E?ZvgkW48yWm(q}O(ttrXCOD^27FR+B6E Dy>1WYSXJi9$NRKQ~$iQDo~<|}G* zJ_tyhNrA;fg WS|&zNs{EMG`O;6~{WL zr4P6sorYg#<+ca8dUDS4!fI=t PZ}gx z;u=xnoSKtk$PnTm;GXlu3MeQ55)4XBE@9BnHPX>Fw6@T()Z|*-8_B@H9p~xd7*a9k z?d`y#Degk8f!hyr3tL}5H-r5UALop1uK!b>FSmNWGKuZ=HX*IEYbX5w@z_9LU;q3+ zjsyC?KHrpQc(8xdhK3&d`Jog2R;MjL8@Vn @@AjNES{!4om;}B zWMzv(TPtfy#bK$UTXUYCddkGc8>^)_Au*9r^4^BFIcDiQi*`0RI#2iFNQsDWIQI7G z)2Cm*e!c$h;rjUfalaBD1n<0?x8M5F#NW|pYCQ@QD-S2ReJp#k9BR{Zs1esSw|#lC zfK%&U-`@}?g~NxKjP@k*TIQZBdb%z+=jBO9;gCJDztNl$yZpwb$<1mjDy+W+b2jpD zbD#LoX8L4{<>{%r{WdODXZH<2SoHB7@9V|Sx6A#sn*97xdRbZ7K8KA< DpRmG<9uHwx23+V#9_8p8N=BzuB8(cD@#gt}42~BAS1^4lS^$6H*o5 z+rD1>9Nk|t_hj)$V{2>c_yspE>HmKAa2=8d&QmoC26ag7sXqMc#m}|w`_4Vt`D5nX zxpVaca$Zia{ag@^NJ9_ll~@NsNZs3;So`JAHRbs9PceVaoI7_;Tw~jp)B7rStVYUh z#dJ!nxU)6>kUGBq{(Ae*cmIFA9RDZb-FnNn=cnFj0A EH_ %%B|m;=A3i zwxhv6bbrY10T+Xx^0v=@uEhs(P3!&l{n0PKZI`b )IjfzG6`+FPgs_I@(TyI>dSC^Ka{+wGR`d8|Gn>(S1O7Mr}fY%}9W=m2-s;4|Z zLf&@&*Av%g+KAh4-n{uUYnSfdP5E-~keUmBWCn3 2}C+@|_?vYzkt(|qR0|Gzw+oSORE=XCV1+cWoeE A$AwHt3Px_^IqPjA8R)30x@uc@uwx;bI}WvdVS!w#Li!&vmRZrPp3Hra`c zH8bwA#LoYDQT9iQ-T(86x`pr- |HPYwmTce?m-<^N01HF8UZRo;@m zmg!fWJwf|>`HHYZ>3?~>Ra?|QCGI&O0_v^&ac|fc~0U)L;ByQmel+w7FI9Z2@ll zoo3~c+J)ALEMjbK(?e@w#T;0$&>N!n@m=X_oX@wL)yM%e+yA >|6`*%;tC sAcH7i3yJ~)f=Ejc zGhiV^GU6y*4QNn`lu)FXKxp>_5S+E<-fw+(*80}>BWve<-_!Q6dcCPW%aT(+vWf z1t1W}hNDMJPC_6Y$?P8=6uc4ont2ZxPCuigR(yPXt(_Jf;F15r5j#H!1pWv6$8lR3 zzJ>kL{}9^W_^g-LUWk>&2~)3bZSYc<{qp2lSAWPZq#6RbS4R_}r6f>r%?<()wK{5I zXm$DiP?|$v>tSINUVSIYiYL3269VI~CvM0?9~{K6_R^T)-H~Una3|7o`YrFBFOn>4 zMY6;p9Xl$sd?ApIU0mW2K`J3n{IR{Kjd$AEYYA !GtE6+>oxvK0MVqty0bV z%vAI$?LB+v!x_QkrEA#P`i%SGueLkuM=($sxo;Iq^V9mRCc= f=Ok?xbxgZ`FI*n_C{VWWY1_N~JwiClp4St*xWAzHI2(;x(6mP404D?6$C& zfuhGoC;VnP1A|MH^n >iEkY#&foPo(uMcqXxE1ysWa;fMm+7Y zv)AVw7Z;q4*8&&9#u*J6$+h``xu@#NwwOM@Z97M>b*S1t%#3XttcQ~qFESZr{@tDN zI{aSzO!B}}4T{K!R-t11lQ%kvT@n7eC+H=cLZ_0BzaZ|JYG=aZcc}I-r&2EGO)#!e zSxiS%PiJe`LbsyIOqZv=#DU8BnN}@k&pqFXthp4jO=A0d!|arFtqBLC@ yIl(z9!!mxBj~7ly<| zQJ|477 h%XB+sj&q78Vv3A5=|=ShUX$d4sPee|lJC C&d( z;Wd@`;St-n%-Q1I0}F?_ZAjX?O)sPFcx0&ECttVL8ontben(gqjeOpVYo3^l9QxF* zL{U)VYG%o^EcJ$&kqrS*0JYwQ8x*<~VsdKkb&C;05O(}eQFQ1w)^FN62vvD&OlHj> zBn1P9eKk@9gf(-j<6;T1^-^HuHj!Mq!~^F0&n{8?ol&&+A0 bBvZ{5$`nf z+JbJa$Ha+Rm-BP@?YhL1L$Jos{_jKz7lT5dzg)XRBd*O-5j-|f=;q35DDa=XE=B&r zUTYMsH}ekl{WKESYGlyrH0vh*{MULojEyDo>`-RVM~*$6qUa=@$3>oMsG}<#-|#fg zFD%WCGiTjMR^GB#v=H9ymoyQR)v^O~&u;s {6DT+3?8jPBl?{d$u&)+ZfS{nbmuhux14T`98a3rUc3Kc!cZG*B4?UM ;T+k9a>sG+jN!FGopJ?zpnwu#G}81MSU*2P z5zk#qYML^}ARFwO8%*Uaoq23#nD<5lw2azx{m|p9w2^L+aBY^n HV{RYB;-)7*U({%kfbV@Uf}k&O|IqFq{H^HP?*(ET06R9j?G zy9!xc+a0t_r+DzMb<3xCD0vE1WWz7SdqvU4X_74dGzz;{t+e=R`x&@0jSQ(sVH3e8 zREW>5Zqyk75GKnL?GrZ}kL0c3cazIzB7YqU3k->C4m#=dAN&E);s%E~!_w42r2Y(@ z$-*z_aAU>CdnXgMqquke!dEzDJlXV@XkUZe0y7lfw|#(3u~k&;9s;N1HdW#ing~0V z*?vgBp#IFzONHYkz-pGkQi>pi!4KTYUU3I~U7px1)P!s1M;PQ!QI0}APn9$l)EURl z@bE0}%ybG}G;{z9Pe}qmTm=ys$eK?ZoofOeh*?$A%`dCologs|W`S4Y8B}@|H7F+~ zmHJH(R> s{j4?%W=`E(Y4DFbKnjo&+ zd3*5-v4aZrWTqdJ@PXMwRc4h>p2kh3e(@>mKNUO^+Fz{lb~LOw 80m3G-FHbXd3l*3jfT*sz%uN0+Bz`ll=Q z48laAVg&uPkfX=Yi2JUR#-nP=F_qaowJuQ*F=#=NnldYJo_H@PG)uzK{X*6e%vUA! z5t|90S{H>(d!eg@-$$zB%fs9*#&O#a8|kVz?vujkb)#TTl9hD!c3#dKuZ%pY(&9%9 zG3VC|UXvDr!IHx6viCbLtZ0KDdMkHS&bs*qHsu&?8U%c6nKa_*ez2@fT=;bpf2xSL z+O{=idBgwD3xJgh!h4AaIiRT9vpUzb5W xxg0~Pc-F*i_Fnbp(6DJ%DAf?#nDf%aS9bh3Qr4d_HUBI-YiV&4$wMQ z8H{Y6OWppi%oZf-8^##^i5;4EsL}HB#F&e8i@i9pBY?96-=IZVyRl$&7JGrQc09Zp zIBo%9bd~NRKDmJ!-2_^Ho *$yu-on PKP z@GKh^8(%RtzHMxLRRO-6x$x_ze;MCT0N-G?hgE=J4=~-D$+1|T1`ymG#-0N(n`emO zUo&`pHcGL8;2TUpFmiq7|FZ?uK!K*oB*;Z~6}PLOU6@Z~<*KxZFKZl{3mo=wD=}ux zpfd8H)e`N)syKxa2e`PsBnXxbP}I7aeB8|0rTqPc6o3+c!&eJ^&gBjjs= )RwneeSk6!ERyLk7|a$@;kg!@0 @>TB;FmXsKF=6Va4Q7^hD6I%)iV zHnU-9cf5t3Ixc4jz(p5b`g8^kd$^T&|8p(k1sx>zhr+PJ3QbAqP41Ems(ss1n>4;Z zw6J!hb!d8VF+Ac#XGr{`5hn$!>JT%ZvewDz{goAFzP>^cDz=lAOoN6G`@GX%sf@_a zhdT8?moD4Kc`fuC>Umdqo`Fout5eRE33Y=wCf|iPt0-&3rM*QrzA#X%SD?sqM@j&- zb)V#(@9S<&p3}`VXw|-96KEoKL8Co+_QCXQIH$YP0Z(+t!cP7|j{vL0QM@W6Jd+Uq zFhu 6k{X%m=gn4So;wf YF_AmHrisj68>y%Xi4E5P#g_cH;;Vt-|75*ve;*0$&hYs}JNZMgZIoRX z3DJHS?+E*ot3?|V?T+z&Bz8CFZwolpJ2S(ZfK`WmHDs%qhXRH8C)1$tLsCZh3*V%D zY}UA&^Khl|yK;IiE-uBf=CGyf`bk Y208L+NbCbG|{MF zVahEbJ;R~Qj7A`fKn@OG94oazTHnK+Sx))E&;o@|KLqMyXhBY)9?%06g(uuLHMXwo zL6+687iP9)-CHvC7`whNtF|i6f}Ec;#A>C-i-N2`?_ #9+P|X%Z3E (nW RKob4gga3#3iCZg{PSus+_h(=6D;QprmfOQrin=d4 zF%&H#$;T(N^yej>)Gy78Vp5|bmZq5V6N|&X_SckHJTISp^%*%!F6m8E4+zeE{N+I4 z#&FYih@_g?2PZen_p002mo#2?bI+^ad*?&OoC`nSaPf=ZlInIW+8m>tH9AUezK8 zB+qTT;{KMYUZWAciE!j}&_s8T2js1#4?jV!xU#acU8w)ITEYiqNr@f`E9;{#PZBYR z$ek=bre28OStL?CF&SS z!zLYP-V>n8%)6rc`UfH8nccJa?YoH(h*O*w6pU^h1Q9llfGhL=bYtY0dT9@OUMjAa z
FkQglw+se6qD^;oBpGDX1N>K5SjOCG(ur~tt2T&NeVNm}!mlB%POMly;vsKCl lC}XK%oM-Vf{qO|?ZjCQ5Um7-S0(Wnaqle5*ij6SQ{{n1$VQ2sV diff --git a/src/lay/lay/doc/images/drc_corners1.png b/src/lay/lay/doc/images/drc_corners1.png index 52a4e8f4d3ca1c1c4017d04ea077f6b81ca0781d..71f72a4353ca0cab989c8b4c89d95d5778b26fb8 100644 GIT binary patch literal 3083 zcmeAS@N?(olHy`uVBq!ia0y~yV4MKL985qF{<{lj11Zh|kH}&M2EHR8%s5q>PZ}gx z;u=xnoSKtk$PnTm;GXlu3MeQ55)4XBE@9BnHPX>Fw6@T()Z|*-8_B@H-Q(%v7*a9k z?d`y#5KA%Fz}-!al`rPa{N0?Pl=~v< +d-mU=dSd88=u0&orfPqik^S0GgaWkh7Aoo?+-^k* h8Ho>3)1tY$6D$@`&y^X6ZYNwg 4XF ztUssDx5-&nA(swye1$y3<9FVQSQi&vFj#<)+Cev`wpp)n1;@y3&9Y}t79=`+v^j?s z;N{jw&&`oB;nA3PJW@+>LLx9K-)#`H%sp51G;jHhnUkB_7>|CoK#NT*o~qe(cvkJc z((}h7f5z0DooD;|);@=g#_``y9!^69UE6n@p-M-m(l7i+lghebnN)s!d?9`y{`>L$ z74h-$`Ty6?xBv60yZ*0A&LLoN$3N%u>-xQW_S~@p7F&OQJ)Ca)^|ybW^7nVw^}^pR z1r; 5)|>4E z=Y=B5lOG?yef#$B-@mu_>kpMLJRn~Fj`!b#Z@XSy|1AH0!@uk6|NMM&i`(qunW-QC z?Pt7q|9<^H-=y?|eDf+3|311MUcq<%e?F)A%`ks^V1sSv_4mnhcOCxqY5##_+hWx} z$G(S&3BP%Bd~y7N`=z@Z{?%6g{WJC5^~CJur4Rl`bA~_DQwV=&{8a9FAUAiyth+3+ z=WAZ_+01-iFMmx9-Y|Xrb>97&2M_N*^!;40=GE^F`}SJA`#If;T`%Ltsl)F!_!ZxZ zZI0Pl@4QvW?v*vLbt!k^wp0VCiCR(0X{#Ep{`6GsvOAAucBDMaTmfmP{@C6EX<+Vb zaCDvyX(Yn4HG#J9$CrGsTb@T-?~yw{&$i$GKl_y1N5bSqU$Ft(> Ez#a3l?fflFixE$Z7IbN#$=-$axCLCGdbkY8 -*zd@B7Cr=9%lhe%J4J{jU3Yo;$+C z*g#xNMht==al=!`&qI*FUEW7z9k>GTN{$DA1ig+LUJwxx>Fhh(3%-iFpR(|RAc;!e zN8q87#5UeV?-LmBWA-jC2cQdQO$=PVXo8E9yo=}U?YyBq`wt@bAJEc3qV|eq+_8Y5 z%>#zV^)KKPCK9fC4ya3>986~_eXH(IsH>@tlb>tcdXJ R;U3^{P`>Mr?^znIO zaaScK)_zU_Dmy`_r$7+N@)QQ@y@kz-J>_I{D1Z2jRsT^zd?Q4_8HzyHcHjg^+uCR{ zAst@3l|7OL&{rTTdDnXA$Xzm2CO(c6KRSWh{HUlAk~>VoVi4;{+j!Z8=g7jza|sbf zR#zanOqmK&RG>_J7ZP$8^v497_|q#Dln;|Oi1$jzh5%>>QD Kyr| zxsixcn5uD}c4lE=q3LkO{(3Qv|J ~Xt682)Z;Zi #{w!we?<}AZPCoDn8Yous|P}DT?W)U^p$6~Rh z2^m9Q78=sgUQ6#Yo#$_=r3%E^TW*i_*eC6W)zVUPq)@306*)J9_R;1Xw-i?4*p+kP zT8RFSQJw#MlHZg**ts07=24qeoIOShCiof7GE9?BCw4pBDc<6iH(ghwgq|&dmbO}l zUChIN=599jKp9$}qI5nUOgFLD%z*oR_Yn}DVT{R7sUFztQ!vpvHSx9??VY$(9STP; z)}=B`R~~EA>$Kl}Lj_b%yXv6d<>CTz>B#^B7rK;xw%<0#ZnQGjgH1Z$&8Z7#CbkD9~bPIIvz zo|lT0ZHhFi;6z6=(J% @cNpauEG1yD#rn@nz#PJ86Csh>%t(H>AQ)a zETBY_OM)z~&v6Ma`GzdRUA~+s1W8rfD|kvladu1dI~)b@CtSs?=%<%FW7m9s=^!tt zwVi<*r2pzDQ1*w!7}+!RULNF gC7hgl^R8o1 zM0Lk>ZO49uw2XT)Nb}fHKo6Te_=*>-XP^uU;swisVDnKjonRTcR { z`a06b!|4FbQ%Vop+*+13O7_&@n6AyY%#Yw>oy-R_Uy#rhy%~NzZw*| OjJyI)ILdm{*+;R5g#1i7j4J(u|j}=f5PoG~?W%DbZ zs3=%3k7)OboEe?P@;O64?@z6~v)w!@0#IxKPKbIO&qvsBCTEpvnHS(H1%$C_QA&G{ z1!Jcac5kg5-8Q}+P=MWQet)XcvTkPan&}3b*{$MXSM`u)3s@d%SZ7k@aE&J(>97Nz zEjzeFrp*)lNWK3v7QYr-N#INK#r@nWPZJ>G_)CD%FoewK7%|&C2Hh`!U+VIp3*^Va zbU%=H{UlG=1ffV!gEnYK!0$iUNu=`G?Knu_LrY3A_$}Q6$aRBjyhifVikR@zKF1wm zyqyLLn}qO59zW?SE}ITY_?+~buY&=ZuY=@GJU^TJ*-xu#>mP2)Ppg i z2yO#)(`m0)63jhgElYk=_P(i^X$n}Cok^o =s F%>`TZG_XS>_U*>;p{v$FW)CvZjt09IW$O19+9nok 1(xx zs!YC`>UE6WU#LR>RZqob&X>g-9RQ#S!vCoU_MJ&<%4l-thu?{>SE;mVKCJhR^a1vM zrf@Ynw|)4%KgfGX?p;j14y!9B@0s+7<%K>xwIMghyn;IE#kG+2TC8~^8x~AmTi1Kh zWo{x3z_1ZYpayLe%<`afpoY@5V(HnLk>w~$<~`5{?Til(?Z(jR!#mGu&mc)kDcV&I zJyD}TlT_cY>gwDZ7tYdy%)t)E;?~7c-chmjMen_0E&a`ID^=mb-k{_oM#0|Hd^r!E z!6Uu}K&gWcW 5T&>gkMIAs36 zPOCT{<8-cO$< i93|=P$08Rm*bQ*NF_WkpuLMyoa{z;{u zgf^-VOXESjZi;rf1NH;huqeJ?h1I$HfF8Vg=LFiG>6tmtThtDEnAp-^ _sY4@3ahXxP4#s7+OLET4E)D6Cw#Oz5`bkx}~r;`~j0coQFFf44(Y + z>BZQ%SbIY+DN&`}JY#6MPL1f)E(estR#a&no~_3!avSF~2uql#0sGL$-`6c?660`# z2q}^g^4o!cV@bO+D>lN)6o9I4&^-vJ13aTl`Y6eFS2Zn3_p5(ft>%8WxlDD#`HC+A z0>q9^@Q7zUZ%1vl?4eP|y@sKpFUk6szS_;-N(|W|o3F;E=tqwjak&cD;JQk<^x2)@ zY0#tXS!x4}orOMx6bUWYxh3B#V0C_L$dmwDR7nGD@zcfzy7Cmcnp0MD F?RM;g3?&vlU`d9Wq4(#)~ZTjIietw~HD{rr7;`UA_(& zNwMI-jk;xmMJcKx1A=&jnLC*3!KYCKn=H9VO(b}*O(Z-G@tJrGk~ImtrbPE`^Fv65 zJonW5s5QGQvlrN7%tyP!FW+y^C^;M^t})w!=zi*WODI{jt%@y(CK-tZtLl&xaYA7C zvFaZAI@~gvoJRXi`Ec+5Pr)h9=RybG>Zfv%+?gr4rR610*%3_C-^<~U1$X?=#qu5} zcF@40%86k|1!O*9*ZZ8q_fxToeb)X!#K^b$+eTKqDU_Thdw0rMo8O}a>*xXkky<&? z*G`KBH{rjB`7c-fe`S;I7uY0^`4Ympk{*M<^l-vh?c9#X_?wkrudjM>$kn?Sm)4b| zd9~ySgTo$PYCZSJ-XhlieGe5LbfY(n+ZFCd9Yr7ZGYy0j%VWrwdssXF$C&3yz3TyM zSRB@hx{l7#rAJH_gBT`SdlWn7fvlR!t*8T2+nRbPDvP7zZ3| Tm8`_RkAQyx8-KbWTAW$ z_w>&1k1gY6b*EC7swG?|7qog*=7*w}jGSFJMeB}u4eLqD*^ook!>X`zo}xxx@C+Bf z`K2YqqoN$Hh3IYVOnq5O@5sO|IbwZnJ-J!6ZHPTTBo}0|^#L32W220_I*GgEcByYH zIb2IY*&kEhZbMG@KtxlA1|2X?DJpHJ;%Nga{$RTIZP VdE$?;|4hqh*|5py z4A?<}yyk;aqhs)kYAQ!)=V`VeKHgvCD9)r}pv$*7 |c7-Umz6G47vYlrlFOi3fvtx5-~cLiI(XeTD}Su|smL^93*eik=Jl{mu`z zI|Iv4cF4*R+hfQ DdkeDiqnkeVpStBW6t)u;en~SC5m>HPV9jD@h5)|(waHj zms!MpxU!t89q^8&XVqUYorj41Mrk@#AnoFmP&ts}Tl`C`%m_@q3G}ZP?EMKf0%FlV zeX9kUwSQxSTY$0$mh&H|R}+)AFJ8_jODDX@u0J {l5tI=Q46GHJaKiqM0A?VIq6nZ%q+%-}?NfiUu_*Dm9RM#%G43zY!s AkZKzXP-sf=hMdfXdDLeNFfWG!8n$aut~FhnnN!a*ZlS5wPTnNh zBm|bLS6xIecY?ce @S?jL!rGZ((TT+*$9dYOT1Z%@9xln~*Z`tpwc1i^r9 zU2A@>@V?H{#Qa$8qirl 4*eW9*zyOU;l5XTD~LL=aS=#QjtRfe@t11T}OG8P9M3x ze)D0{-d7X2^yC5taQa-?*nRibjkgtkEjzx)8CpB-a&tMFRMF*mzo_!gKg=b{cfllu zdFNNc0I}#M)ks6+-(da^hiA8R=g9wvGDTX!S6` PZ}gx z;u=xnoSKtk$PnTm;GXlu3MeQ55)4XBE@9BnHPX>Fw6@T()Z|*-8_B@Hz1P#lF{EP7 z+uMP8vn_>MFRqx_TKV$c%;yJZIGk&_9QdRClKZ^R7ak;B(%UE`R>b`(|32U6Z{NPX z>1X(}uzucOMuxiSjjSnuKCkI0i88TXd;Zm`)2t>^yIh `&ZZWXU8s!uuqc}v)0^qP*O>8LSh1= 7qeEO|vno8{X+w-cPFYGm~QL$}ed1;7E~(aA=dgrnLNP Z0Q{>4sF0-zLBU~6gB_q-RMvIj{cdGW5R=Eo%I@5 zzt@|0ReRstK4bpm-nPa^(sLArm?YW6CM1rA&S>b2rX4!utom1v!|Q(Sulw0O|4U`% zjm-U#_vim*{L!7a{r2;Rj~_oi{&V^N%6hrKRTY9|km9G)?te$i=lZ=~cgmZ0ou33L z4{YBqzrS*RSor=wrYdv3?N&o%WACp&%XY`^SoiDiF77#D-y=yYBzp9%*SMemo>q76 zRPje+YwO>iYZ{a4_PzP^feEQld_N>g8R{3IqoISZf*B2+(a<5cankdCvf#@t`zIb+ zz47UdnfGH~2tnFdH~v&d 7GD%D*<)I=j|p-2F+AhH4?VzTs$kX`9bN=Sl8SwR7HAqbJc zs-S`pi1ZFZq~-$Bq}NC o=GqUk~55WUr+xT`sHrY@1+$SO^Z zQDbfg;czxsF^I$xtwS9G$-9Dtqz#iY;;;0?JM|<}3P*kyP&|DS9v=!xJ6|n$Qk+TF zdOWKc1wA1 4?TQVG@nAw${Bl(?~B}t?lqA>Bnty zSa!!MCSvlImzSIe>hsf|9(NPUXAigGm9iT;MjI?_NTO~9y$DYigQN8wY}>N>4w{ZU zp`1PCmszyL+ PyHnMn3hqMY^I0@YSg zsgQ=Af|sw3%8~lZX&qhbOH5{YdxPaAY2!X0TWe=x4y4C-G2+$L@$@^!I-HIvw*6B@ z%K%bA1>ya*6G(4aa+RYm@;)W!ENZE&z|4DsM$$DxccP1hG#A+$or83BTF;#>Dn4`8 zlc;6k`eF8d;nV9Bi_ax6t ->c*ZOW2_A66!3 z(mLWM#lefY_wIF)!9Y<9o9>Pe>cYC2gbn;i5Z8?g<*+wZ6eq-bn>RMu%Ny@s1^ir2 zQ+2oUSV@G>r*9^fv~ZZTi3O}15k={FzrNTOWmz8PUW8>x!n2l2vU6MGr&d2nJxg|O zb)-mCFmYGP>9zgIFRhk{B*MV8ER^?8Yj@+c-ELh@*s_gFp^JMy%vV1<({&MDJZJBi z)aJKVUZc~teZ-;CAZb-w|DccXv-XY}o9@9FkD2bpoKc@X+(z-ny6=iLL{E6I=W2`K zNrBY^@kHS!>donzjFA(Rn>1n^zfV0(%qCEf%jjpRV=%}CMr`sJ%8>Bxl z X&H%(5^?!tA6FV66YSjGa!myetbz%?NbW<| zQ-Hk@k+*u|%xyl@yps>bed+=aMB$V@B_Nbdi(uAwfP%Y%Mg4p;YJ0kNfd33=i&YlM zH}c$SJg(up-T0U utDr2Ws?mOnYl82--}6%)BshI~JfRRw+>oLW4Br>2FttZ+c=n z?T@oyGwA2n@>ij5Gli31toXcb+ADZ;A@D*zZ#$))&Pw#w7WwKXi_NS@^$cVe=8UF| zR%>NGQKt!#Tk?wDfb<|xD;wa!OJ*U_#d+x4DKc}Q #P_TfWY zUhvrHqdXDy?*c3u1Y?zHLVMYJ)$jKC{AkY0P*0|=={%;4DE!i{7^Fa;#6AXu4*)63 z4}&)16E@^4^J`Nnzs&Z}ig{JJ&Fu{)FoSQL*>?NQYmf;8c2L$~BGCfS)&Dk)2fcW> zS5||o8+ ukCws`A~- 1{xJSMn`pvN*@X0KWi z^_TccU%tqf!Q*w!=LIhr?xZ3WEWk9svwjeD!!%;04Rq*>lTOk5n;TJ;QlNd80ZN&N z+VC9!ox=?*?29Y`HSkaY9TKQ1R=C?2xucXAb{!0oMMQ@x+R^#e$jDzl*()$7P UZ%HoB zcD_jLSCBUV5o;5$xVv0bio~=s9G$uYGLgNuLnWp+%{5bk{SHvv z4OYM)$fyGjfOWi8o=)kpxw~*J8hq6+m#-P!#k1XWUfZF?;P*fVY)G^*`IOUO^wc=a zPF=F!si|C{qY>p#0G&zKX;07A!4DGo+Ii;}P9kSdZri2AtFb-Kf}C#leX@TvJPwoR zHfTu!k#6uhLiYIF0ZphSrbR|wVb%DDiPA$!U|{o+%-C(CONzzR1gu69fnsXJ?UKPS z?WzVDz|JiLsER;GB}I2ct8LpU9-w4{@g`SaQ|RorX{nasRc}OF*9-CKXU{>dyj*UD ze&K5LeL&%b2uG9sJd=f_2)C0?w&UZlOt6JHeLL2d%TQCPm!nG5f!ws7ku--qp@*6k zL(P=f=W1*qjQ|v+(>ys2 H5W?<&ZxEb{pMPP6ZabfIvB=#JDI> z=2;6|a*Vm;nV kYr;#!f9|6>~M9-=0Kh;63rjk!9~|(8Xdj- zY6C`9i*C=+5{=Qc9g_5a3Jd*frB0pSLgjBRyQ_mBaC>3?;w|t)(-@6d8BZGHmP)3} z#*vkBGm|;-z}Eo+gAGac-~FXg1aU=aR4#C*Sn6x}Se9W~=w2e=w{9Ji4;FAFCcGeG zFW4n_H{O3Rp*NGIA_ds{2dji` 1WNhf+2_%Wp!~oizDV#%5{@?>NoP7CMQd}< zOSVzh!fmScj~v@^8)pVcfgvu$b-j2;vyglxVPtjMuFJ%T<1?^ZEOkFQW>G==q>9}A zlS-9F$SN>;0|S#9G;~IUS%k_7*@Y##GVYFhc$g_nZuubgq5BsVSm^IwdK0QE(iR?I z{Z9KKKCip1m`;&DToU>}PM0^-jUr`z=l~rOsa3bamiic|Ii0S8)8eMMyPLWup_uUG z(fI_)A(hM_{zNm3sSI1%!hcuOW|R2AWR@$9<9)@KF^l45p<$-x5+6A)ZK`*H-t^eW zGO*m@U~3UIy)}^v>Ix;epGMLdT!n(M59f#O9qrj4%7XC03ru5bfQ}{NH!YZFYcN4q zb@2w~6lkuVlpT`}K^NelW8#E<(0xN7hj2gQR7|&a{-F^0AJV^VDdaxyL!?tWF1)Fc z-Y4$Q@|M=kQ?JoK5-%PYt5c`GEG?sdUGpI0Y2Z$%1{m~}5=B?+9}V^Iq)TcYw8>dV z@!rL@D`8$xcwZSz&PPQHRbHtls8^7cM`67i9@v<{`S}Nv4BiiOWreL*tq)O@-7v+* z=mOcSU|qi-h$bAz715T0bacbEC`|VHx-qh1tB5guYX+~FY%(+IlL?20KZ7q|HoU@p zNjBI`M2+mQj>*z1-S0$&@-;UVY>SjjIXdSs-`G2tj-Z!UDx{+Ww%pf!c24s?S>X$o z=3JeNw!U|3JagT*T5AQD71#ns{S*5tf<^gl|1ZR`7&c<(bOT$Pnx16u=)elu@r$=M zz8lQg8~GG}+%D1y`|-Y-&u7tV^m%Aj;XDR|tU_U{2r*B!@l8CF%Cl5PGa`hnc4U#` zqhnp&P!!Qo;To15A-(#fkVy{l##dc<^e6hC1aMh7Kf-+AED6=ffUhliKB333d`@M$ z?CzfMFE28XIxC`*OlnCtLTav(*9+c#MX&DD{-jaQpavBmus9nJ_m2gHBDkBXK_HTz zzA!0m(Spcy^$w?5C@H& L2IonFTihy7V01hxc?&fu(V79prQ#?+}_eOP}cF5=>?J=k|hRPMes&4k{rl9|yN zajO<NOn0`^2CmPLH{Hc5rf?5wa8yT z=*j+&2heOW#XH0?mV-|JZm3-2KJ6<>qpTY44jG5kGH$H-?1a)4JM%Sb&>51_1twPi zVoy2#i7u)bO06?Y)}3f?Cg e1skUyI34!c2XYZPHD(EYv|5pjn z;>kL>?=Ec_F|pq!lWc8o4GJ0`vJ4UVe(}HF(RBMFNn7a`G6{a)XMt;)k4w)6Vs0t< zOg7Cs%!}*~{b*F3U4Tch*4NiL9L}cSeL2Ae#m9R(pU=Pa249=~2}2m9Zg{=LFbQ1p zj94ctO=lr8Bk)3n@xW5Z8~R}9{%82?@_XK>!zr_4E7-IRU%Q{dd#UY-otV1W;KGs1 zkx9`R(lU^l%Wi@bDobhSg6%$J*T{yt&`?&Mtq@7s1VW6T4w1}=F+DB$(y>!3v*y9* z^DQ$~`w)@vkz7Qk%k5rg(3htYd=33Ob~iqeDwJ{*-@ay2I-BaJ*6(Fz<$0*~nnAU) zSZLJ~smjyb+o>wNQTKzdLG~HxL)s783nYkOkk3CdiM4z8i7%ww3&>Ia=A^i^Oz rgW9$vvD{~!-PFpQHwch?Hf(XAD<6oHydi-TJ>h~XvUi&^@1A%6#*yeAm| diff --git a/src/lay/lay/doc/images/drc_corners3.png b/src/lay/lay/doc/images/drc_corners3.png index 061cdf486e9fedd936f892cf7eaa4a4033b5f22c..71f72a4353ca0cab989c8b4c89d95d5778b26fb8 100644 GIT binary patch literal 3083 zcmeAS@N?(olHy`uVBq!ia0y~yV4MKL985qF{<{lj11Zh|kH}&M2EHR8%s5q>PZ}gx z;u=xnoSKtk$PnTm;GXlu3MeQ55)4XBE@9BnHPX>Fw6@T()Z|*-8_B@H-Q(%v7*a9k z?d`y#5KA%Fz}-!al`rPa{N0?Pl=~v< +d-mU=dSd88=u0&orfPqik^S0GgaWkh7Aoo?+-^k* h8Ho>3)1tY$6D$@`&y^X6ZYNwg 4XF ztUssDx5-&nA(swye1$y3<9FVQSQi&vFj#<)+Cev`wpp)n1;@y3&9Y}t79=`+v^j?s z;N{jw&&`oB;nA3PJW@+>LLx9K-)#`H%sp51G;jHhnUkB_7>|CoK#NT*o~qe(cvkJc z((}h7f5z0DooD;|);@=g#_``y9!^69UE6n@p-M-m(l7i+lghebnN)s!d?9`y{`>L$ z74h-$`Ty6?xBv60yZ*0A&LLoN$3N%u>-xQW_S~@p7F&OQJ)Ca)^|ybW^7nVw^}^pR z1r; 5)|>4E z=Y=B5lOG?yef#$B-@mu_>kpMLJRn~Fj`!b#Z@XSy|1AH0!@uk6|NMM&i`(qunW-QC z?Pt7q|9<^H-=y?|eDf+3|311MUcq<%e?F)A%`ks^V1sSv_4mnhcOCxqY5##_+hWx} z$G(S&3BP%Bd~y7N`=z@Z{?%6g{WJC5^~CJur4Rl`bA~_DQwV=&{8a9FAUAiyth+3+ z=WAZ_+01-iFMmx9-Y|Xrb>97&2M_N*^!;40=GE^F`}SJA`#If;T`%Ltsl)F!_!ZxZ zZI0Pl@4QvW?v*vLbt!k^wp0VCiCR(0X{#Ep{`6GsvOAAucBDMaTmfmP{@C6EX<+Vb zaCDvyX(Yn4HG#J9$CrGsTb@T-?~yw{&$i$GKl_y1N5bSqU$Ft(> +SVDoTz2!bF{8|yO{Ac*HK=OwTUtiT3xv%ni~pt;Q@0Re%JL-q{tQP9uYIS_)xnmI3? zdun2GoW&qZM39Atx3>;-$=<=rd(;ptigOk(cw7sDj%u7x*U&LCP=_BADo%EWAjw&q zGp8?MaML)i0G7VQ57V7fY74DnKYR34o@j>|eP3oBedv}|2zLC^Gm>FO=RThA6(>ih z&)uPnRIE!ukJE^bbO =vZrdcb@Ny_tPS*t*xyN7TLEwn}%LL8$f5TX%#%*o<1g-9VolCrdr_JPn-fF zRQD)jMW?zSMYT%Ts_WJk0tc~AvXFr{bxYd*NbI-u9o$|z3@e{q+Q3B^D;Ci#TUy8) zru8kYL6t ey?W*S z)qhT?3Hz4YW0_7Xp7gCq#gxx%?Aq#Tp$x6v`4sz;5IUY|QCJ;rkZdGdMHndjpmueD zM^CF-*r+O#KQhdAnH?B-bL@ug>Sj7w`VYDrhM8X;*ynTHl=#l)IMO*ZF>_G(SS1TD zq!EOb)cJFbWp$Me%aJTw)2(^kdF6TcfgVHA^baeo3x+d4znofiGhmvsO@}>xahQ?+ zSYG?F?ZRS5?}oJWsku2_``LnRU9E *dY|6!egiZVzgu&l#OwZ3tn0XuWRyrlHbWW+~F%x9GbYnN{~GE5SG8yB4197QJ^r z@_MB2+o_)Kshzs&Rebn9_H^ur#BTPRw^8Rt<_? zu&1Fm_8`o@a5{!v`->g*0@u6@Z5>X~Z==s8;KI<`^MygGXdZ->56qSNkCA|kFNZ}d z7*Q*Yr|ybgo?_tx%D+SNH2o+BuC$cUJiX>VFkCUYwc)wb*QAdf67MaRR6_2e%>F+X zK~+T4FA9#-^h&7vNi~025&7kMnQUjauK#Ueg~AeYYiPGKq@B8MSb_t^o0K)XP)uXE zu)C;dIHNci0mtg0i%ihN64Hk6z9v@psXaE{0(RXU 8PIMFoQI;OSwp 3PnryPmhQ!HVUExPKh*|280XmA?H%6Qa z$YD?2MM&sV#4LS=sg1MgAwWeh +)Y+1{M+Q=c>LBXcG=RvG(v=+5&FcLnorReHNGM;pX4pxzaQU)=sgVzHr-J z$mRAP|G+COG(gJiD5-Nt{KLR_DVKoA6UZ(ug1seN1ZNJpaeLe^`Fw|&crsT;`iCAH z%Y_{kS1=k@3~q}V`?KI4FF+#*$`L#J4(%#lNh}^d4(be3-#UA4B@wiDr+o<){L*5= z>1R8+8T)~oqDrVOdpBn5^k+T+j^($6EyTYZg6@h3Mvee>^e;bgsb)KT |=g6K_=*E3X_*jh9SxMc6k8PJnwF5h!HB)fR zS4GEIf{t~fy0BD^Xq?I*@ONMwyu>8FEG$5(=|myfb8b`}AKRyR->?J@w=G5Pl}-S= zD?yaDTvlz EqN&!q_^sN oq}9rZZd{0-c_%dGwk1B|MA z<;k9)f&(a}E(b0&z$s~a;(@DifO%-l-1=5XB8w%a2f#f(V`%Q3g3<%<{#rO;%)N|t z0qxqT&_SPdDF&^m0fUuA^YmvL$RE(}QSjt6SWTaD9HjSa0(Cxu3l*?~d0vNlr3`Ff zgTb(~p?A;C_GLa!JZ!=m4|kj&Rgd;{ONeQ&NCKkhaM&EUue(y;Y2o}^IGD1_=qf^h zycm?l5(eYPfiiZ#8JI^5b0LxWH=sX#&KKr7vo%sr2|McL&(R#~_?sG~d%~woX%5W$ zDC_Y0cAeY6AQ6il13oD>VAiDoi_C7U<8;Ov6kA>T!Ngs!ba91?8NF-|-VKlyUJINW z0*dk*7m<^gIcWJt>H0sb`88>8M yc>WrAIJL>Tos)?_dq>x}Y& zvs6&dpTb?~#EcQl71Yll-z3rzQ5(m{kPyBmLVsT%Sd1s_@@oN3L1ZHZs}LNgu QxdfGk+;cFYad0cp#r|)+4Ohw@|ha)-RSp%To*cWHSXv{SlN?=Qoy*T z=Z@dW-(suG2oR5>ijtMUJ*9tdZf3dgT!XQix N{l%JC^H}kJjmpj5N6{NsjaDl1n(A989gm}^m3ptr Fz2TeCs<5Mz_*=pX z23v5!*}h6rtV5nc-(LsFAxp~Y0+!6UJ0X+Y=$@RgrDe}$hfdU9X+yt>0+o6r4n36L zogq~Wl)3K+DgxrRj}XzJL;Xf=f@Xv1$=)v&cX;~U4{r`MK2Zf|j;sDue-T96?FeoZ z#1;Gry+*4it&B-n`deb~5jvhPSKHvtoTPEItx&r5sc6tRbl0}u<^C-j%67RDaEW=p zf7E5t1v#sZ@qg&T|1Aa^v$p+vvvo^){r^Q7jy|U*4vcqA<`$9 jgEAyiA8|FB; x#LAqhEF>YRDvf87b&A4Rd-OxgFkdew8JVlU*sENoXImCjEZO>0t}4qi=Nc zHYEomCn$Vmp0bu-)p(17T&nFc6L*vCHP0cBWHq>wI*iH3v-U=Pj=XK#zX5DBEaD}R zC|Vzp-8}NKzF){z^d_h~JM*1Dyp3RL$T(9XV@#%dvvGgpsapiw;edqwxYC$&?dh0^ ztjsH@qBMPc+Nng!$#4Mjxav{k!T3yD#6vW~Lzh(C#lJVi4$Ohrz}}{|aU0{t_O?=d zr*`l7-0F;Cti%03<}e{{ny6p0QSGx=JeN;5Ka$MUEn#?zdV78all&qkc?oXZ_#qu1 zdl7zmXkN4aD+9Mu04Q(=5P6T=Df{7hAGaIv`3bK8oDjBn94Rl3Qnwf&XuBxl6-B>L z3_Co7BjCW<@p8YosH{jIV>%){^F+P#XhZYu*>U@Et%5?SAwxTS9Y5Te`zIiI{keru ziB#Xk05x?zkre=^F7eR5BPzy&kGNzPH!@rz#r?;dnIdWiS9r4?s?M+KYt@i0DEYW6 z?Wm|+!nkDTfT 6Fb$aO&ec9P zG(Q6vyKshi2yv1AIXKRqrf|!)-wi0YBYJn!)3L9uwU+C(=BUgWf%hc$DbAAGRMgvb zOP %s-hQ5Q%f1EIBX`JoAVMBk!s(pBo=i@tI1 z*rVS8#QT{uv6#E#DRpx@?Jf5H0aLYpXqbAtO~%nrOb)YVe4A1eTDw0(cF%^qB7ML@ zTqs>aahA$OvleOlPwD jb<$_GQYj)G-ar6q#9I_qw7Dt^a5TONtcP} zS-9L;nrDx#+g_h%CRg*=IwY!`ewZMH9U%UW<8$Y~ZNa9D%&)E0u4_UJ%~v%1;M<>y z=XU-))=eE$yJ8Lz&kRcFmy}wcg)-J?lX3@aA4a#fuvqtUa&o{wp*nEOXkQbjJ7O12 zXinbelyX^67-F0lJp%Tf3gVA;Z!RaFi2ZMmvHI6d&kKk}30p2g&oQNBPdoXLZCiy` zyG7lTJkSWw!bf^wyeZASRB^2${b(zI7jKmXkGzyQ56g@a-(~vMJW|&5S9*QVLc3*G zT#Uwd5FsXx54yo1s^I=ZPs_*$(FmcQV^TATUS+jq#BI|F1=nAhae>FcV?oHq((X)| IxqIw?0f&w(ZvX%Q diff --git a/src/lay/lay/doc/images/drc_enc1.png b/src/lay/lay/doc/images/drc_enc1.png index cbf117d9514a632ee64f7db4aa560206d92e4e73..1190654292634dfe34e96a4040c4bf5659e2c014 100644 GIT binary patch literal 3132 zcmeAS@N?(olHy`uVBq!ia0y~yV4MKL985qF{<{lj11Zh|kH}&M2EHR8%s5q>PZ}gx z;u=xnoSKtk$PnTm;GXlu3MeQ55)4XBE@9BnHPX>Fw6@T()Z|*-8_B@Hz1P#lF{EP7 z+uMP8vn_>MFRqx_TKV$c%;yJZIGk&_9QdRClKZ^R7ak;B(%UE`R>b`(|32U6Z{NPX z>1X(}uzucOMuxiSjjSnuKCkI0i88TXd;Zm`)2t>^yIh `&ZZWXU8s!uuqc}v)0^qP*O>8LSh1= 7qeEO|vno8{X+w-cPFYGm~QL$}ed1;7E~(aA=dgrnLNP Z0Q{>4sF0-zLBU~6gB_q-RMvIj{cdGW5R=Eo%I@5 zzt@|0ReRstK4bpm-nPa^(sLArm?YW6CM1rA&S>b2rX4!utom1v!|Q(Sulw0O|4U`% zjm-U#_vim*{L!7a{r2;Rj~_oi{&V^N%6hrKRTY9|km9G)?te$i=lZ=~cgmZ0ou33L z4{YBqzrS*RSor=wrYdv3?N&o%WACp&%XY`^SoiDiF77#D-y=yYBzp9%*SMemo>q76 zRPje+YwO>iYZ{a4_PzP^feEQld_N>g8R{3IqoISZf*B2+(a<5cankdCvf#@t`zIb+ zz47UdnfGH~2tnFdH~v&d e zzIFtGSp0Rj^)`o~ls@`_faMsq9kE;T*OxxJbJ%SF-5t@ZMOvP*Fov;xs9*La&4(~+ z?t+9nIu cZ6LF0|4FA2y&IiQVo(d5qqo1$(`rw iT@d{qxk>i26zu+lx&kHz!`CqHmg9SLBLih`m;M)chRJ zY+A46W_Mzk|EMTc+P-3CNwvkUF`|o2o;t6S7~DH)#L5<1TTT$eLNB^I4;1G_bK4@_ zN2^FDraC|BhK_Msk7vH(a5yoHPE%Wr{QeTxqD9*G&>6#4dE$@-{3#Fp>?eWI_D)}< zd0Cd}5wvq&>KxXHUz)B_b=N?mYd0nI2HlW2%FxG5wfpdeC4#X}^@`Yl3f`;Ml+J5e z=0P#KOC&=tzdBY-xdjnM2XuteXx-AWmYwY-jjKzlag%S=qbSl^fkk1rY^Rtjw1rB~ zY84-*)LfG_1eQvYxqTd6Tp?6rD=Mk>>Hpbo(u_WvaT1Tp-fYpeBDy(x<%P%-UHKxB z%zJcb$ghi0M>$_qcea^#=0(k%OukJO-P}w~2Ui_!bCat7N@!CR8!djnqo1tC B{ zEXA4*^%`$DHOw|LKkpd%wxE( `?y!yS&f43zOe%(IGrhqSR7o@=D!jqrwE(aWDqqakw^+# zEImb>cDi3J0ok*yQ84Zs7pkB%m(HjxBA^