From a176f99db539c3b2ace8e8d975aa9fc2fbddb1e3 Mon Sep 17 00:00:00 2001 From: stefan schippers Date: Fri, 16 Feb 2024 16:44:33 +0100 Subject: [PATCH] svgdraw.c: avoid setting stroke-width to excessively small (invisible) values; print_spice_element(): in format string if @param is given and in instance atttributes param=value@tag do a round of resolution of @tag looking in instance attributes, then in parent symbol instance attributes (in case of per-instance implementation (schematic=... attr) and finally in parent symbol template string. Doc udpades --- doc/xschem_man/developer_info.html | 7 +- .../instance_based_implementation_08.png | Bin 0 -> 41656 bytes .../instance_based_implementation_09.png | Bin 0 -> 42516 bytes .../instance_based_implementation_10.png | Bin 0 -> 44828 bytes .../instance_based_implementation_11.png | Bin 0 -> 38021 bytes ...utorial_instance_based_implementation.html | 61 +++++++- src/actions.c | 2 +- src/scheduler.c | 21 +++ src/svgdraw.c | 2 +- src/token.c | 136 +++++++++++++----- src/xschem.h | 1 + 11 files changed, 191 insertions(+), 39 deletions(-) create mode 100644 doc/xschem_man/instance_based_implementation_08.png create mode 100644 doc/xschem_man/instance_based_implementation_09.png create mode 100644 doc/xschem_man/instance_based_implementation_10.png create mode 100644 doc/xschem_man/instance_based_implementation_11.png diff --git a/doc/xschem_man/developer_info.html b/doc/xschem_man/developer_info.html index 454e918f..3fdea1c7 100644 --- a/doc/xschem_man/developer_info.html +++ b/doc/xschem_man/developer_info.html @@ -547,7 +547,6 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns" -
  • abort_operation
  • @@ -1393,6 +1392,11 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
        Translate string 'str' replacing @xxx tokens with values in instance 'n' attributes
          Example: xschem translate vref {the voltage is @value}
          the voltage is 1.8 
    +
  • translate3 str s1 [s2]
  • +   Translate string 'str' replacing @xxx tokens with values in string s1 or if 
    +     not found in string s2
    +     Example: xschem translate3 {the voltage is @value} {name=x12} {name=x1 value=1.8}
    +     the voltage is 1.8 
  • trim_chars str sep
  •     Remove leading and trailing chars matching any character in 'sep' from str 
  • trim_wires
  • @@ -1506,6 +1510,7 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
     
     
     
    +
     
     
      
    diff --git a/doc/xschem_man/instance_based_implementation_08.png b/doc/xschem_man/instance_based_implementation_08.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..4c70553babf18c8c79bce23546c7873dccad7320
    GIT binary patch
    literal 41656
    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
    F{V#CA+cE$E
    
    literal 0
    HcmV?d00001
    
    diff --git a/doc/xschem_man/instance_based_implementation_09.png b/doc/xschem_man/instance_based_implementation_09.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..b44c183be65e70d1efe31b61309a64971570d9c9
    GIT binary patch
    literal 42516
    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
    z
    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
    
    literal 0
    HcmV?d00001
    
    diff --git a/doc/xschem_man/instance_based_implementation_10.png b/doc/xschem_man/instance_based_implementation_10.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..e7963b5b8d62c8a6bfa74226251f80802f0bc271
    GIT binary patch
    literal 44828
    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
    VUa}%+uz=ee8_u4dBwo7b{{mXysIUM4
    
    literal 0
    HcmV?d00001
    
    diff --git a/doc/xschem_man/instance_based_implementation_11.png b/doc/xschem_man/instance_based_implementation_11.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..ae7d39e79e14646245d02b31227434bae6b84404
    GIT binary patch
    literal 38021
    zcmZ^L1yq%77bS{q`Og(1_=pi=?3XeMOp+2X({QH&N}LzVSRK_St8j8?2-#jdh3g4hjki)>9b?6%-UyKNOVf*tf33JK;so
    zsNl~H^Ct>VP*BPuFwPBc!v709NoqN%+L}4J8akMwXlYQpm^wIG*xFEYvvG15vRXP@
    z8`(-(xG_uGyri}@qvqn^;OFGxd`Qh`VdG@#U|~(e^!c~f8x$03l&2C;)ZCIcrro{d
    zHLuWj225rp2x&ua(BRV2$-KlZW0$nTk!2N)8B!Y2D9npfIU9|W)lrv|TURz>u--HZ
    z6{fin97InWB|$scw;i!gVr<5hAaBO?p>O#ja4dy;IrXfmVrf0u^E-j0gajQuy`-dM
    z+shYC9t4j+JW$xDxV0+rbh}i7mWho`BiFyZUChzZaU74Eo7>u-LH%0VmnVK`7bnYU
    z1?$7bIyJsmmp^k93e^kawrHcGh1b`|N@wexF&_J&VXcjo+FDxPY5n?Df~d2}{qLU;
    z0%jEX1g?(G&RltW4NJV>8?R;PhKwx0*&O5}tRKDu%3wxnH-jgGsle#xGvwI7aG<|H%TOI>nDbH{%Eu#341
    zCab|Ovhr@DkRg?3V_gI}aq=mJmR=pty*MdU7dN$8EI(+Hg=p5%=8(raR(XSBc
    zM_CjdxH27PCvtsJ=~_iq>7>-Eb1gB&FzKOnwbl6i>T3S@*1sFQFUvJJ*z#VnC5e)l
    z@|US4Q99jPZ(gmqz460v`yD&}nuDnxO6KLS{cmoF;#|2)ECvNokcterrMht`uQsa;
    z{7hpWMZe4Y2w|q$_nW{^7*&{R#*GoTrSalhx@n+?&rHQ6!?e-EZ$)HvTS<>*wbUzy
    zeq*MI`m!~J-}tvE?}xVORU>tFj(S>hJLO%ET+x3RdqjjjV%MATu2bw4#0&n~($J!d
    z^#~mYJ>mgn!KC})N`leF`SQsib4KUo!-pI~cOQp)@MaxcG@Q96592;Qp4#!%yh?Hq
    z$bOQ9wj`jA+#)Wz=2BE@Zj6?&_WiAfrT+N@{xF52HigW$l_T}^oDqbTw^
    z8z+83aI#1Epsg9lhO))od3I#l(PjJ0YhxTTT2^61$S2F
    z;o3(&+nGQ8N&cJj^YfI#9=9g@6M4_Trblc8k!N?3c7I@LX83^3$K5(x=RO}k_lLr>
    z(rVIC*^MErM3y#?NbNa>Yh)6=5|F5g}32kr67vT|G%I=rv+PF#CpW1>XE8$Gv5
    zjJ)L@^}he`$R?ptk~Yo_%{^yYmYEGH2-rUfA;)PBwggNYD3?orFM5a
    zd}V3yMBs!?gl+rsutb%Dp~L$p-p?)FTJ+Y5ndcT4I|6eLavtc2{MtKT{Y!daxt})M
    zLOYO#T-1F@aNVewm`aoGXo}HC1r6$Bu0m^qhd;~M1%0lyj*aor&^(dsZ*6T&dE{EK
    zfEr`T_hr;GVLE%NUfL_Y@O!3UyzIR1G!?S;VuS)_lR
    z?oNbd8;er>)FfXjb6(f*4t$J!+w{Rcmw<3mUd!P;W%%>1-G1TQDj$ND
    z_DiRHOpuIY@$;%g5%2oIz(9!6t}GG~u{hGp!9hIB^YbbVF4h*Lh$xwTG8|mxrFIcG
    zcRv9U5d%Fv#CH7_AKl}luBiK`*dalAL&&Gds%!E*+L~_AoK?PytFF-}5!`jx`|9Ed
    zA}qX}^vIPBg^DW8X1dRgS
    z#`FUN0%X&yf9CW@(un(99E@!@pOv(uGSFslA@32*`gDKQ`*gp%x3|G*b*RF8U}}0A
    z_4;*`{neigtgM^4X+EcOfmEb?Hp#KE&PzS9%L8d+g_;AMozir8uz&~w0RaR;cGetr
    zhu#QI7|=U8IXO1wI@|0WO32#t{X5~ES+BqS*>drTNl7>qf|XL?q~KdKpAEm@h@LAc
    zDN(E4!of-7eMR{CXvWhP76$TSwE{djA0Hpq+wPv8diTF(CyHP*dS76RFyj*v##evl
    zwj9r6jE_VqrV5>m>HA`l@^np12nq>#ogHq%CPz=dTK=9w@yNyMXHIx%s2pT?HvMLn
    zGpka)CLSHfOYk9hYiL6PyojlU0l5y~WFetWvYN7Zp&e0CQ6ZibB3@d*UjF)=&X#$f
    zHp9U%jS-imBsrNpTlM$$Yzw;;-Gc`r?t2oFH>IVe>vCPTXS^@Z-T&S3kO4a_t;(AO
    z#%D
    z8!fcg{gsdi@PivruH&(tnd+18wzZIv336(vt<|b{uSJ_t5dQBUS#+xVzJFIN^8z?A
    zwAt9$=(0JXZlDBak7~|>blfPP&(C1dl_ezJ$HogG@I
    zw`WR6I1yzT^u#a$Kq*)c>M+s`d?KO71TbqK%>O#}Jxb)EcMV+y-;e3GpK{x$`FxMI
    zm+PACpY%u?DI;clZ)2@>7;+$p)r2r}=rE;jIxlceAU8Xl^IVqrivS*Oe#F@SCr-4%
    zvzlnRkd2EL}WF;%BJOLG@j+282D?{ohr9^jZ|AOlDiRik1|9%4br
    z$*&{SC^)E9L^%TyW&!6Q;fGC7x8LyO<~gUjjvI9kP6#V4^Z!Jv-_98lYG&2d)v2ke
    zgoK0%2?C=Y
    z%u~LP($UdD#IDC;{z^jPD?Ih^(&pwgcp~hDyQgQU1Z_G81B3bYOcR(TTtN27!PyxS
    zf#u7Wc?k(5C}mn+TT^u%p+vKFj?$rJV8?}$p@gcrirzcF-!SuO11*;sc?tuqGpp8T1BikL>tpDVadB~pi3q~b&5aE-EYkf++m?|MT^;-QiKc(JtgI{}(-nY420@{yxOHQ56BQLzztPS9bl;+XUQOD-zyQKn
    z6#+Lc?i(=7ERkRdJTkHdI0rt1;;s7|8X6i9w8=z$8bd>SHTAuD&H9MzbpL!$SzlTC
    zn3yQ&zPH%mx_v!QyW&qzEVH+_HxY{#he7M>_V)HY^wAszGC<34rp4vuSA^#IEG#T$
    z-;BShGntzhLVMDnt-;EAd&DHcC-=;`UZ
    z;~L#|=aJ
    z+89@LsZ+JJwUw6cl#Zax&dTbdsE4b3|Nh;=!lHaruIkkoc5BpqX`WD33gd5K`8qXQ
    z@Wkci<+42zyzkS3x?b8lrRJ@zPu6V13g4%tg+*++JcR{VQ2?MhQOP7Ic)AcFT3ueQ
    zGDS~K{RuX7W@e_`-(fXH&B>|q^W4%Bz0ORXqd7{A?W~CJW#fxS?HnHQY`P}Bo$o2Y
    z&L-ZVq9Z7cV1HkYm3S|wxZX?S;^y}J+t1fwvtk1)UIgJ2Fkk+vD(L(hS5gPh|F!AHZTe=al
    zo{autWMpJSMDd*wRIj{VqHIpqpxf=QDEH5^jC^|Hcm4YHjLghu$^7XSVc_ZH;J{)2
    zGIY=D9I|<^ZrUC1%<21_+-&`kF3!rrV!|xywnGgTAuQZ9Y&JbT9f(7P{X0VRGIH}(
    zWkm&k{c~3k({`$r8ymF=c1H)4A2LMqJ*P_Z~
    zAwCfB5{6
    z!`z+0w{Nc>Bmr*GYW8x6Gz}i{Kr#8_$B%hh%MidwNJyZ*Eh#Ap85k{4$9OG48`Y%H
    zc;~?b*~>`?r&G1|3q?gm(Kgpg6_e>nxJ-gReE11#|7xUwUV=GKr-lthRaJHFbT})E
    z&beGCdlw%U7irGv`)u(LzHDr4P=?c5Z7eM6yiWEaBk$5Q$wA?o4~EJoE+z(;FzYy`
    zrA730Ow7IUG6%!hY|D`XrcqZ12Nf1fEG&Xx2?oVvMm9FKXUVd+o2pr#SH2v~@Sm?3
    z9UbkBXGgzFLc*kLQd#uhtIn;htt~7#{{5pc-VPU&laoV|Boh=~xEQE!6{IA)&>Iva&MVtr0qD
    z;zZ4QAJv3;H3X0tE-BZTG&MB=FO_MrIDPFoT#e)Pp``^VW+IUTw1dSE-Ku&7#COPx
    zDBn|s&vxd-#}mQBA3l5tD5M;97UD6pM$yah^6bbN0J4Q5Q!`DT;8eE8#@s&V$6%*V
    zd!YnErmow9$p
    zwHFm&FNhovs7_B#2nY%9p!S!GoUYvGS=QK6@LqMeb{P{B_CFTD8`(q`#
    zo`7K(7;*t@X%s)FfAFBEf6I2HAQqem9M05Jhd1=+;Gq5YWC0XpP}-X!YL-WCF+eer
    z2)Ki*FW`(vW05`N=jX?y
    z5^010DeQR|69=(ht~y>VGA&K?)o2me#G^-#d@oOy#SEW3Y1>D@`jcwY9gmH!_<4
    zp7KalMP+Jg%E;I_TYQE#O6FsI$v*91`L~3$H1-#G1w1|iI8-8G;o+0U#>gM&OuU!&qiJwDA&;=35?1F
    zM3j_1@JMjxJCmo_Q1`D8=mCz0+p&R3aShR#H&2c*z_)DECLTV3JnSV1Kw?X
    zP)!6NY7BWZ!(lE`7#G(f44}NlwZ8yuhfpBi4UzuIL^5%JZG$Sq{(V{j0FjI)e>PxP
    zwS^TS+*QKBjo_d>I(R#emV*lJK@$0L{@+V&9e594n%@DKIENpIUvt7
    z@DXl@gcY3DLpuDUgRvFisXT&bV{
    zo}ZEof;AuJa2%lZYio-Xnq+PN=r}@0(f3ZxXa2
    zzd7{po7s#hLpSuqWF<@@f59!N<2T3z2Vqjd8Wi;WyE882mk*F%=8{J~Rm@N45{+FV
    z8;zZU{}fkYr?etVo!eL&G5Vmp_(#
    z7`J~`BGb&S6x9>`qYgC#hIWFC;@8-UpoZ7yM5fqUK_`-I
    zPi*HEM33EDzhJxgGkS&OM(iGwe@|)8e^i_Kq!s0k@-gN>>hErGAr@Xt&DztpXBVGK
    z=hyIslv|ol)sk^v8{IRfVMZl6vU_$tnC&{XFk}J2-(#4CR~~iVYgF>2S~F5=T|NPi
    z`0SR*zf*Rseqm(!v8aV2HevirqH+u6XLQRw_qw2&H!Tl;?~!1kvaz)n^OK7PU6ph$
    zs9}j0KNggY#-!_y?Uzm;VN>C)(6K=DnW!1h&QCskdEct#4WH3n)$dZWDq-`JwcaH0
    z5p%!THtNGCNy%@$=1#tUmlMrcXf8iv!t}-EZBgsi0CTq-?be8$6*|R|&eQ2%tN~gU
    zDO)R-7(U9P$381HsE>wAOGTW&-)iL+dgRBQ^m!HMeD^y25r$HB`?^GabfE@?f;fj2
    zt%g-w8`<&Bt6?Wr9SpWDtpjw8EB}YOYT4;1Mb-U6z5
    zye5HILuLuiDf%nQf_##hB<$^gkGpJiA9JE3JSY>S9!cj3+U&O;Ty9%N#D{R
    zidX#PpQhX#SZMqfPE1O5Ox~V8vqBO6(z{b^sY5;n;a4He>D^ZtNQ-M#nEu?EfAqDl
    zBag+K$U}}Ax09l9RuOHKD{8M3k*__SS$dZDg0^eEO#D&rK3O<+CiqVAp(Rn3PAv1W
    z(~AESV?!M*6nV8nm9CqZt<|KBjkpu2bK9-$d!~kCm$ihU{e|kh2cniPNu04v5qt6$
    zh=GF~B$GENBP{yRbcABsl>4EamSAhTV8K~iDZz7RiB7ba)ZQ90+a4Lq7RegZ8&X!}
    zZ)t`CwY#2&b+jxTNznC-IK5TH*(VOPPrpSVt9BIJbJGgjk*Ky(YW-+OkNUd5n9i@Q
    zb~gRvKh(KdE;Ahso%Sydw6mxsoo^OLKDv+chr{))D#~>%YJ1-je4{)lBztl|roXSZxh3X)8
    z{+BvWBC`e(ONywk&(i@&g*(8a5D>o)=n>4$KmVDU)tyJEo)Hl~cQ@y(D{iXO8->B%
    zfnqe6dM&_)n?qcXXX8fh#V@M2kx8}MDoGzWo<78y4xhdXykfRk8&DOR4(m@Ut7GtB
    z>ljiozsH1jj)KEBHxzMf&q?^KLoNLWmdyuFcM;ihn;hyT!IDA|jSeND`zSa&ze!81
    z+u}r4DzGN|46$1YN{l&ONa9xS%MX#ly3h+Lh%btrQ}|1^WPHE!V7cT*%f(sPp;g_cjG)>K
    zMDGdPYm30RSm&-84o||9vO(J0bZ2E()Yv}$rDg^Jw`ftY?S8#wZM&r*$eBly$l8Xt
    z`ek-!QYMT=OgX=EBD6``-br}$6=4DKe8jH3D$i!vcd>3eOwFiZ4MOFhQ^HwU?v0uq
    zLhiwy_X&*ZG{L(ce-I_%wA61ou8r~g+?BlZs`U6cv#`&~FFUO;Hb6Fo|J|#y#7=ik
    zw0Ol#?ZS8*ooZEX{9*}cKk!)n;^^2bD(c~TpVPo}C?&TlCM2ez$rMDB>aT6aafZo$
    zB|Smje}!{(#OCUm?j~$M6zzn*JyKY2LdD!yY5}g
    z>u-kAPfGha$v`E81D{h{xH
    zU8qOJM%B8-MB(PzdyiX>t%2DQcHNo+unz3WVk#-OSs%bMD2$a$^@N+gYV5jPM(l8$
    z`|gtwtV(i*5E;DLH#Fw4dH=`38JutEL@M6?=j~V?xUmc+ubm0R<&WuVzbD!PaC}^bqrT
    zWhw#GwI$B$qtGY)`=|e`TlG~Q2#x0jhV&y*4HObhetqYx%r(Z
    zK-{KFFSK$dXMWkF^E(CCz@a3;T5gena!`Gs=TOHJ&ri}UdJQ(YsDd&zy_Ertgx!Cv
    z3pD-s{4FSk?cd0W?EQ?oM8Ty>+y|
    zoE>!MKCx|_X!fA&SktSx$=b~C?5$`0isy&EA-=*_qg~)g92^{=8s#x;zmfjq+c&eB
    zMt2}qfoPhpwkEr$M`CWi3{}|IuV0g)8?@bWrB`n9R7OUo<3RcQLplqk_Jw@)LyqqN6jV
    zUZBQSY`wv(Me^PJ7x|yR6ngy)6Ssx+%dGiJ0TmPHQAF$>29plILq*Fp?GAQ3yf<>i
    zhpj$vRJD8ht@QFC^_Exy>FD=RW7F_zU47xOmb@oqA@~{oQJP5o!@QeP_RRN
    z>vg;X3?;ORY$hr#fG$&f_AKp@Yl%`e`KHW&wE)svwLq!DKN40$0Z9q32??vc&kk*y
    zPoy%=V$Yd3xQjwZ1gnS}@21X6(@*HQ*eLNMT&k4_)_sNjRc#ln4I6MtyG00s9#>pl
    zM6o_@Gkw9P+WY*34zsL&!O*6mvC~<*V1P!
    ziw?WJPDD?VYEPJbMr>u!4v2n!di!Q#m)Q1!tooFnXDM`Y=TokuCj{pmeNftc(C@QZ
    zqL_O*D2{3B1dj^LO5?$(j^m#`?HU_hAW!M=y5seI5~8ALG`X3XUjgL;Jd>iVtjFGB
    za7v1TBpv~!|dV;xjEZONIe
    zy&#AF0lxl7GuO#jsJV~S4@w=~gF~!>f5!Gr$dTgm1%UaX6E4`A0oyo#KPiY
    zLbW_N|2@~BNAt(S(}?D9*2c9=`yYkfD(!>uFYCp8{CoTRbw3-l)y(=}P%|;DHf%Sm
    z`p&+6`xXce>tCPSdU^`rm0+lH;G%QxRv4LHEeqIpBWK5
    zgZG7^MR@$Q6^5<+H5@1^MdzhEFw_@tXUUq5j7sMd&j*9_g8YSlED)WmU{t+pr`IYc
    zYarNGdfv8{*(`eA^t)qKRvndFxgf)YA-A{KNKH+iXFIEm
    zQ*68Ctdbrr6z_S+kV2EBBpnqMk`n8nhzNEB0?1s@r+8kT*V$Yj4(>_yTe~n;t?K?R
    zk52vQob{2N)onS7n;dsh<%%mvk{FCKjOsQ#@?;<_uL?s*8-b8;+L{6>3UowA3N>vZZe>b^N3*S|LDQ5DPrdy6
    z=khG%Z#U4L?ouAKy9n{q*{%Ob4Doeq-9mu;(fWWmY)2EaOBIGf#iKC6!p7
    zkY~la8NL35MZ%DL6;eRnCN^Q&5FJ(K_Wr5Uds&QbH%
    zcmOg~=l6>g4+xq8sSqhut1ESV;=s=?==z3TWx93xA@O{oBLC^Ftk(dA3`8JmP*_-BfB(p2LLQyxtYTe*N5RvI
    z{C#G4ZxcsNk9jO0=*^=AD>I$0Ab&+z*3-dESwVPAeeZMJt?f9B~$}jfxrsy!PD)G
    zn9wOyerioabQc-!K^kH%0##-=LuKnIUHrA%sVkg#Z=41--U#n=9>r9?1B5I<<@?w2
    zHiJFq@_kqt>+hK6%Uo^xY7
    z^Xx~D9ql1EhcRi6`pcLJ
    z>bH4-v#5IXt_s-ocA~u*9|?pZD4@)!!i;zvan{Er*$C5JCd|GfET
    z&}UB`-=Gs+{V{)xUrh>H%!QDY%B#SQ#y+3$Vi
    z%?dxfsoQ7YSXXH-X_FkkBrcb0rd!{kw9*cxS1Yi7_)wsd+^&<|ar|W;@TyD`HU2gQ(P}!kbWT`f>6TmbH@}k0@WDV6(JE
    zOKQ=%GSFyK{Fo#2y6-vZT6_lO6t%X$`j~xFmZ0vBCCzh03X6W&Jo|3;mKY+Ir0+EI
    z%7Ml8?FS{=HzrUra?&A0%`&o#n-w^&%$=FpkBPNOWP6ru7TECGMzLK+<~FWV`D!sv
    zNwEvyQnjd_hVy88y?IW#veTlRD)lC4%D-^go{N;oIP#KsAho@kH2GC}D*J?sq|Div
    z4XtcIartcahaO9|KRNfC_B~ofj~VcyWYeM>!W-yW3N!0b$w@QPr>cTc=pw!RY|V^v
    z*1k-)r2yfC(Xe5_P$_`Q{lI9Razo%X>TMYr@#i#mUZux9n)-5g6r;&&uJC(sOdxNO
    zw9(=X`P#S4gF($fp-*Kz0?hwm7Dt}#Kp)%RSmU}m#va$5M7EW-SnvL7A4R2P{UMg<
    zcPGv;f#wD4<0W98o%+Ua>YnB6xOcEDCFBX#*b_B&eTl0&cE7zhtW{Z_cQ-Bk+gSyN
    z(DflQ<%bq;9cBO{$=hL@*ZoxurZgc^9(~PyLZ@PBa%Q*%;
    zw_}7tXcsuJ18Mi4ooiDa_~S|QH~YEHv^^?tZG6987NpKi*M9?=+t;!+biz7@F!Y>d
    z`)eLw?{;7z8m-Bd1!ai(Z6nTk_W9o~8>hPNY&y~Nv_*;GUpzTX*%AxNwkm6hJ8|Y3
    z1Zs8X-3V849hHWv7~BBk@EM3}o8#)X`schn6%a`a>mE@m9zJD~(GD=3oof)gXGvOw
    zSYyXXd>eDL+dRh-fOxY=b^e#WS?K-3>3e@9t-t#CkXv0-r$C9(k)|<3DkMZnEhw2K
    zOH|5|3xZ_TukxAh3*Ptv11CNpqe?DthbU)!N~be!KeoXxN$sp#_;vA!G8bVh@$h%j
    zSj9$s>*#lnLA36fsH&_*|Y~}HZR(<`M+8;R(i5I
    z0NgQRp?vqm`^U0EBNN{!CiOK4d3!C#+aepx7PRlJS`lmy)vakC*mR64t_v9JBT1JbGyf>sab`^dpw=ytIvhM31YGg~)e}Qho&6_7Oio>pV)dUqoa(lKoDamBo
    zk8V7}ocr_C-7UBM9yD=!As)q))PAps0Xz{8?VsdH&pTDkvdA
    z8-#4{Hiw6Yp&zVX_`r9}mX_8S`S^(E?x#;a{5z^BqUw`VQbdn``$2mTI{ND=t}}zR
    zDWGKl!5y2(zk`{XnTx9&fX(x;4?%h5Nc|l_?zwA-rl2ts^adFj83hE~p{Ye11uyeJ
    zs0d0y0G;MrWYXhCVJR$6C(!Lgy<$sb^7TIRaQ~
    zVR13*$&LzAQ&!gs-I5;Ul>~D;LZ8Hb*Sdp^4W!jRJag%bx^mF-h>D7?svd36UhRCr
    zv7K#ZWwij+2mnPdFE5dkMf{FKC{kxY;{`j&EJ8p^Isrt_uV26N@}Q9`W#M%P#PrC`
    zcFLn=pc|i@getHe+Ktc}^#wHs=#=VRHrM9n%0OM%=7%olDRs0tIRc?c1PQiTQ30
    z0+cZj#tI1wi;Ihc`p3Wh1H&^wz97+XS{q(1ZMlrLh9)OA^ykON$DyGe|H^A`u^Srr
    zq8Ix=p%?1xO$+ULZK_)nLX1!er?F-!^sVpClI
    zktvN+H|-w{O?#cKp&^jEUS6CrFfc$*RnZlx+@nF>C$C4}lWSAZdH$nt;)!#IzNDmd
    zTFnmRkSI`Vf(6mDIypGNUxIr9fBO6T%|X0`7fi^aMIE1xhpQ|A!l0naPv;-zd$(b^
    zLi|A!fdZlj6AX6!X0PoT;b+eVfDJ}sJ26A(UMnalK(8Fx>>cm-VY=TWLEqF
    zInO<0KQQ^pG)+DT|H_oWu!kt
    z$U@bj&u3uA@8o&FGsWIQe=-r-XGH{XFzHEiad8330R$B{P;n^Gt_2ZC;pa>oVvbKf
    z7pLvjxw#A|qM|KGqofCI$4rZ_um4SPi7a;H(gh>NZx_6Tn*})+CpWiWdAfUwCF~fm
    zKBjUI(cpMz4JU-vF~LM$Q%HOZy~$xo*2H8H?$HzjR029`YB9;lMOs%NoCfh9IH~5u
    z#N3y_>@VwA=YJzk4R7_wnWvwDI=Hi=BX)lSw0yia2|;;W(CA$O3%^M&v-OABqtigP
    z-9U{a&&>%}z813y{r*_MJweh2r=e$7zjZ{Cnr7+?~xj>W!)-=Ba0-xjhXmLnzU{Kc%vPUnQX^E+h;d%%9
    z$cAy
    zetpsGrOjyXfzK)PD%40M6;;cl&7$!p!DLMv>3{|{d#fHWSr+-EAYO?#>PmY
    z70*kh(O)7EgCPp`CvbOmcjspbLZT?pZ@B~&48a-8m-coqZ|{YLg$RmAIklOQ!IT0H
    z5^f+Q`3gd|IzbT2o^Lg5i=1t6gY*eJu(p=}OK=(_x`iqCi~@FkemBsHf&Cxt?EI>=
    zHwKTArt;YiVdmqj|DfGYf+Oz~P{@{`|?!!XjVY
    z2*&s1$rBW0;p`&>YA~Q(wV{><;+*%<{gD~3zY5&k6(HIH?W&lwf~Tja;eBCY-HStK
    z3eo?FE~3g_Ld+5qYlmqB*irvz=p`0wSA2sD@bK^m3f2!3f;19@@?>~;bA49
    zGql49rV&1W=7^H1gpC1(Z64JCsM2&_yzn_)%>_xWrHfR-ZSlVlyIHHu;HgoB-1oBN
    zdj(bnL2!lyL|s9^M(894T<1rY{T1dQdrac9Ws47{6mt8~);0$YR_+fZ3S?o3a8w)y
    zkHIOjjC)pBSD|NwRF9rU-9SS-+@2K$AOtqQ#Gj6rkeG-RUf~624a-*oKL?o=?K23e
    z4|19RUHCo}Q(apB5^jHzgFlQ0VPa#uI6KEOUjg`weK^0kIQ;1eDoAx}{~cgK`uel5
    zbx6EJ#%J@Q$}$$F{&?{m9see9n}NEa@F=7tizTLHA87q+tvx-mDTJ`UpjBE1{kQKWGD^txPF7k}SdEuM
    zflCI&nC_
    z(bdS-qg&hBq9h?%ou9`eBH{x_XlxYX)hYRil>FWRX{?NHyP$;Zc8L4s`3Zz40A^za
    z>g#a72-4M&!uYy6cR=4@PNuyV7Z=yGw6s83coV`~*wk8*tm6xAZhBE8a4Mu{C@8S5
    zZe>Ed0H`WwXXhrL3lESyK_m@%%`5_jvd~8LgjOXK#G~QiSSZ;)J+k}(p%qMWa&lh#
    z4eqqOoO@gZ=+7=UV`}P!#RCSGFN-THd0Mmm{R(BDq5Z>HCte8>I5>SVm;;#k*I@jL
    z@^Urw7rRK$L#C0eIFPQvw?SqLC=IFx-7RfH;lcTNqj53|1i^nWgBB$*F)<#VijvZ2
    zxJMM|O2v!NJC!45TD##=wVNNv4OLo(3c2~I&V&1)b*QH?t%q(cP
    zL3B*8y?HY2I$Kv;i&6_%48}kRaPCo1u#)BKA&nG)ggv@|={%37UCsMG4pv(H1Q9pL
    zWW`R0!8Bkj2^8

    +`jE!HYkiiRyv~7%(N&2Z(zR8C@Z0L4^}p$nt`&!0F-vAZtVM ziJ)YNJaG&QEKd{udyRr-5cLxh5YRI)FpD_v&UbWmbwSIlHx|US+b%9HfILA36C4aR zO9|voVDsUD{(~N%EkW?=dKXM31r&_bh34FS`V^xBwBH6m@PhmnwgGr*_$r`s+|UkW zcTPbew%XRva1bg#&^1Gafq1yr%ifZgTFB=5EI%Xy3}FTA`<83{&nlQgGfWN*LImLY ztU|1V(ya~#_f{U=RUn=_la%-xyBVCfro{OQrgkvzf-X95?IQ^3A+R4%+=LmqP!QU| zkwvuu;A!4%l?LWeSpF+sgfX1Fo{2ig+-7lV7%uYv?`QuDmH+|#e?^V}VD^!PKOC#* zWB9yM@SOj&kq8+vvA1wS1n8vik5s+V{5NGM=n5n~yvn-6t-KH$6O*-l7rEemJ>xPg3=o%AdioaqZ4}u2EfWMVbUR0$UURsceWuE(K5#OX%XEJ zR)_Peq2z=(zi!G-D-LjvV?C7Jgz9?=x3mRC_7eR#l(C@v&c^95DjTu{fjZ2!SUxm0 zH%AtyaL!9e4{OpHoX$pY!U%Be*!^Mn3W5ud)*F29<0JF;R$K)io#J@0ZUXq(fr*B? zc8`NK=hdN(@$nOgogk3C0j2E-zzSeE4xsEE8L5J@5|q~vY&0i^Ly6b{(eZj6+d=Mu zj{m#Bz%&8J8~~v(PhL}2whB-RX6&HX2Y8H>h-mrGA3~75f*7A~)=QN(>T72wm7o(8 z;?UhG28Vxgh zmJ<(q%Pn?^NGd?Y-9>6XZYw2(Sw;pR)B$7ChzCeWOY1jzRKblxnGvsR7(G2bC}SYp z17d##Ri(Uq-=pnDM{qtsa8TL8vgc%HcR!4cj^=V$G>`a8{a-DB3=JkAow-`TLm{5p zI!H+D0VjcRDBXJ4=ImZDot`TMZd93aqDa9CGl7c*AY6#Y@4OQNRI*|F^;8nWERzEc z*T!j?d1Rw_t%-@$vCNn;sSx1`C?>k$9Wyo`l*ih`RREeHLhjh`E(LBp;HnJ|n&J z8^$@2Y?Mgfz<@10j)zBmeO?@T z1qV4P$Vj#E#2^IBGWJO=t|PLtNEtFgvM~U=$O`kAFqjf00vyIrEz=vI=&E0|_;_2? zWo8`RM4=rJo`-T`U@TN)s<*9;hL`tX zC|eHHEx-~&iLO`gWC107B7>xan&J?)@+yb0vgubENsn+VQUvSZCkhMm4cuKlk8#N_&CX9Wo7s!3HULHQEE3@S}Yk)aZ`2z z`hqYJ8kfp=K9);S&@X8AKI@5P(Q9<;jbm+JOa+Grj~bqy)~#-b;sYMu!q8B8^wBVM z!K~mTP-(0IDh7%Qdd{%-(^FG>dwYP5Ie^ha+1=fR{ACN5y(Z3>I@|vir>~yM zK*OD*QAe4C0bnmI+XI+;n{m}!omVKwsp9f$Zm+GYgGIFJj;24weiu|w4t1xDW|C$~ za8JoY_UXdm1Buuzb%bFlB;7k#nQ^*#@49|KHhPWcA>2F54dQDdo|R}5_6LwduFGz1 zo2)&BBvuczx&=94Rdz2^gAlE-$yi?h3BwR>#Nl$0dYu*@Jz>zYWFDFH{;BpeA3`Sn zPYO~VCD;wxe+#XMO3-qxJ-R_lE8a$V4XHqXigVm6CvgKt&f`P9qoWo;Lk>q4)&I_f z(S(>#WWo=01pJV>$;k8_c*=|OzXJqR5iaV7u1|!mm0&J@Ns8 zAQp@KH#2*!6#ymN;V&3bhABAzz`*UvnrF@zARN)rX~}{rce2T|Mk8@(dl0ys_4W0_ z*qq_?*)av~SWYtmf^)XssOHy8C)X`^dv$hYvGiJO@BSmPnuek44fyo}AR)~8K+n4g z@cB)09%kls2uFZ13ttLJx68MtO5D@Q)J(+S+=L51wfgbryG( z(%@R$gfNj0JS(7XP_;q%1T5A!7&%0Nsn-e^MhD3blpbkN4ndYd@dDZbfF2Opmhf0G zdG&7k@7^BJyB`1_gHZr*YO$mQN5}+61W(l*l+n|hfoZ_Eett0B$sqr6XJznyy4R0S zPXJY3Kx#|^WCH*TPX2(74mm#pYym_NFAa@2rQ+IJxAAgQcp?mV6IK$yUkv3%>l;+? z1mI-c7Q*>*6jKn>t}w;|6gFHF80llU2lcN^d^X5IbWY=Ml>nn*k$`zs(bZFll+9G} zn!XW1C5nxWeYx#>#Vj;cX`u?ucwp%&9bD)o^ZqnYlU2Ow%uk%EwS+0Olq8j}LAz%cUFscLE56K-g>mz1}XrqAwUksL@g>ijg zK2TuC;MS+%xxw;{jf_T1bTJIT!yp%@fh-KrwqlwH>&C&~0a5fDH_m~QfHVfX@eEKp z_HP(yw}x@75MvlYuLTBsC{UIx0d^9C2h8AJz&gR`nD0&-`p_v*|8jPAJ1~K?3JMmW z8cUl`ktG8Zw(^RKgkm>8!%Pqq`0P5>EC@saAOP4jpTmuWsX?FyK!GO+BVI6e3KcCc z9i2qpXQPe~_>eb9x*$KKz)vB-kXQ)+k`*u|@E;UuU}_&>_*hmpB*Y>6N!-2I`Sk~O z_Vy?9q3nMK($W$W6aVug5m3YM3kq5;ZKySdtub3@DC;TM9sg#`l;|}&ur)gB#`g++h zK1w4(xFfv0mlFsqy{+1E+0#YF?0?$>Ys?OWGzdSz&Vji|gCMJx>>olL6owB@qX5HI z(BA-0FMT!hAegfK4$qA0EGn)wYI)a1`|LrF+3(+kw7fH ze*GHCYpD3q9)o{D76PpVF**6h(h{#>`#Y!^u3&*2q@T&j!7up0T>yEvcW^)fqmG}q z*;~%JAg6%0dU$vQz^^)pt9z6?2)b^uI88cj{NkjeGl3*S9~*x!YbYaa#0Qar_7{c!pm9Yj$@t2@6v^{x?0hp*_R~J*x7uGRT|C zgEEjVp^8;fic|s$Wov#ONn#>5Z0GM^{2u5E-u?vbw4p%YR&Pee#Kfef%@%61k1yP5 zdQ>hAyXynJ10**O~<>`4Cl$7vU2hAva+$o`QQPV zu>?)mXazNwS)aseHc*s4$8&)|9K-Vhq(Fkc&Tz7$tIcW8$6@2}`&rxyuG6o?)#%cl z#5-J+>zSq(Rct~tKIex!1dq~JNql`UT4j1v$buNuW9b>Fm#TXg6jrpTp(fVfw;f^L zQt{V1ku%%lL6g3(Feq3B(*6n!2zd*drzU_6BL{4q4}IKZQ1i$5Ergw>rk ziOa|i=gA-N>@wisC)ge>$f5lAm0S73l@~q*f8`g~fM|)=;mgD-q``0p+sX2x4lFAT?Ql>~K zNzz17BB3&rL_}7i5=qHWhLoWJ8PX^%$xxP2f z``G=#%BuH$-sidR>pHLVJg@5(Y4++k$##3GPgCHI9Wzj4zkL3@e*a5?2(fqD_U*3A zmybL+vsGuAvhqQjw)!{Azg`P9tA6)xOzauLuVNUEOM2-n0MpJ9FolCkCZNrq1pyAwF4*5RC~Y}o^j)%GhYSTmh%B~ z+SzYt4f_5@LHOXtA=`%;=LO~EH27Bjunjxswug}wd-qyVZ(Fz06g z4T)0Nn2sHV&d~I%to(8$4pfi`P9?Zl;U#DdCLTcu-RbpPShV zQ=esQGYk!X+jZcq z-gxnYyoiCZ_T|f%vu8oK7QuFpfS4-$f6$aR;C2~wItaY#ShLW)s_ z&`=bR^W<%Y4>Q({)>MjoxfyM3=-|QM5eg*4fEH_8TdD5d&m<)g>w(T)yL4&(TqGG1 zmNs#C)WSRA%1ejNr~2S|(}IpzoP)wgeD3%@XnjAO+b>?cc=|N@T1DMG<*O=>Uw7AN z{XVeC&dEvQNPMqey%zO2eqzc>!#of9QR@wFsbBHy7@V%iKm!H}kjJOam@#DV;9$GM zzwWQ0S{FmAz!g-lgjhI5N`<4~BBD;hDJW+cv)7fCu~c`JJ)XfQx0(#x%w{1UNvB@8 zF+xp^u%<(Db6d8I=?HmDm$MtagVhnAlq4|AOpE}76ch+Sw~1u(eWUH1Ihm^~a#@rt zsHcz-2r?9_hQ`j$suB6~sq$GvY_z!8*u2^?dU{O|Qo!HB;$mvU2)glu8eF!XK66H4 zXAKC>?CVny1kh}%gg#{rI1A8uVCKmkI|@Ksx!0~iJwH*4bJH~(xo&F2V$Jg&sfGX) zpzp(E#}}_P8s+LIy6yv=0!N|Zb$pATMW4v;J-elGdflY~+tt>`?$8h0*JEDTxmOx4 zb$iWy+H_4HUs}dOA-P>lOS84Kog%AKuImL4Z9nz;Cu(eHhcerhgc`|Y@=7-Kr3XFshKbi5IIHWh<=$@xH6}eBM@d(VGwR4o|6%?w z|7VPxFji8uK`gh;do?q=XT7Eb{R1a8_QH%iUgA3kYBn;0f*QqVOY)yKZS? zqo}0x7;5~$0i{iwev+E1-n>~!G(>OwSTaylD6uAX5(a!rD=QfK6{}WZ^JrtI@+mIx z!#H3fva-e{+fA9Wb=R)DtjJjs2houj$;BLtIXgHpudLI5mPA4Zjrn)0FMZ%Tw5Wsr|y;R$3TIwpU!ISBGf0%1+U5Y~7Z=Cl| z=?lvrs1d*&ej=_CodygXxOKx^3kw+qg~)yTZYK4?F`P4J zPN!~4eG`;tK}e*+!x9GfkOea{GANg#hAh4K1kuym%WE{`R$ZN* zPlKv8gG;7CU;Z-3$oK4-_F`^;jCXf=-9IRoPz_w~?#PsA?<*|dcMs1*`}^lo>OFDS z^~*?0`^NGD^G}-q3HWxk9>K2U8pxhB{1YL9%5^?92bWIqC9vVBvqE`(c^U)B1pY4~ z0`p1$EmLpMrvkzt&KXuhZPizAb=+D3s^Q{Gcz~9j!`3=Nl1{CkkA-B zIK$&rC+iB@eZGA80?|-%4Yvin=QlXixmz(L9YO)7z~v75!J)9cWDV8KkK9>wez?PB z<5Fa_s?~azbz$17U%p%oDGJR^)x3!*bb$QvBz0J@oFAXE_JvApQ3T~7>>tu!qZX0> zS|PNTP9k^`;BZ;CN1&jd3b*_719LvH`=j;4=ch}{%jflz5*sa8a9Fzd@#FM`SN#ti zI>bzdu04m>Il5x57{fb|QK`GAa5FQ<8d4@S@Tf5LU@oG3m~klsH=Zye>REa{xD0j@ zmVkO-WsZ!F>0_PQk42aegaKY;Qtr|cY6NbDN*}FBKPIbn3CMTe%u*zzq?|v05JH3; z3mZ6D!ou2Gg$U0kwbrE3>&}6ZOu8wVf(DI>)>~N_dGq|-(|`OisdMMfOta!28_iG5 zwYN8q)-^LXUqw3ylqjmWj*brLlsb&Lu!3y@E)_~){r9s6kR4G)!PpGH%6GXah}1B! zOPAh^?r`_kt-7yYPd=<9ob~S23&vVK_9|)LGh@D#)NY(3DC+kPjtZ2HJ$9@D&Yl5M ziT9u~e{0{q>hxg;Q*WsIZFA6(D`puee*c zZt;o4jERh{BnfnUH27J9oZ5s`9y^;X-PviwS^)LS-=gqXMH zf{~wj1?C<$Ha5P>4j40{;d)O;X~XqNj~#vMucN}RFQxJ1dm2~@RyWV(qNb*1f+4_( z$i&lB?C9?7Y_vj4shgSEUEW5-HU^& z{!lTAi8YWHQKt`iof9Y?3a)|zS2zqbqcidGFDH~@G;!T}bzyu$0_@@i?%uIuSIf$x zaylx8d};l;k^I)KZ7oBIT+f`m7L?vecig1JiM9TVU0l=#ZOeIH_x+D2-P*z;B2Y}D zX+QV&MsWE`ZjuzUH~82@X25YRo`7xJIwoI9`P}yG(~bYC^^y-6w8=HDI-(bK`kBRq zSqHQ#C~^hD3YJ>0&pq~+q!>x$?CH~^xj$5{`}UnpN{S{oUc9&_qSJ}v$C;F~n@i^X z&|`#oV$2+N>2rV+OB9G@t^%fA_B5 z7U(|?VU?-HWnVr&eDGkgmJ%7Dr*9%pM^!bixVQm|EgKZhJAFUZDOz>u{NZU&y56Jy zmlO-5_$o&6>#2RGy9Furr^;O5L|BQMFKRbd$2qo8J|h1^dG@%q*$kL2NnUGlG;Y;Y zx4()p+^x3e=DYKqF)_~B22bb%*>>)Fx?)jrF%qAZ@VuwpAekgA@nSmyy?g%L@9%Hu z>)S$<@8CFm&>$Vp*SEN~1v#6uPoLh|yj~+B{}7}hS(Fc9Kuj~2lARO_-Y2o0I&q@j z-22GbwL7jaLMd%{gpaW-YuzejATna_R@=c!%v8HeV2YY~#m3q?a{vAu%w?lTTbY`M zk|BDp^i`Qz8TnfWwuxUSQqNlxvtKSYFwSN=?^BLi>W-f4qj z=VhIn6xI8KQQ!rX4K}ynh&wRT1wIQBG4j9x;|cE>U;6Rm-HO$^Xe>K!j98GF;@7sB z=m!xA*RqMy2hc?)Hm<&q-McAJkZu_Fxhl!t1GX99FmJ&ErWa05G$JW*(YBLk%t%~U zTYh=lWvmR`m`&88EG6b|9%oeRzI}>1CklRye+FRoyRyMYR^|NE)zZ@H-@m_}UOEYg ziWiDBJtgHc9!v#!d1CXcPoEs@>y@7!qipWr&q5!F$unImiSwqlL{O!*+%ye?h(Lbxz`9ut$C+z%D_)vGBJ-0-`)yPt+Kh>Lr$;|4+V z{^4^UUY3rufS@2nq(S|9S9(r;A^=duTKRCUXw4rMc z03d{8hw=^KRX$hBx*KoWeb#s8m%yk~*N`RctP%K1zIX zfbqfr(f9*$9W4N%sP=AdZV6d_nK6Q2k;uk_IH=|H+w=2OH@+*wg8el}cf1nBCG3*d zO+zUX!Mu4-Xzs`VU#QZR(&%lcgBn3tlqRi{7@c(X?8$Kyb6f5!e#-f?B-^lXmb|J; z+x>W6@sGD14r&;WrXH)Awvg|eS{APD%ip4Ep|tz+Z)(6T_bsPQ>-1dQB4rYC>WuH% zSHD#&-TJd6WP6?1+ySg>H-1Ic8kL@t0{XvcY)8EFK&^WE2Gq34l4+Mhq zP|ulhTl|b~%^OR#Ms_MvnffTVZI=71QT>4v_Zo z`A!oueA~@y*WxBD+IoM|&{N-N8{^NM(Tw#BDKCLZ zqZ+lfO5BK@27N#>234&m?pmm%heB8M_od5b29=tpA6HLU1O|52xjQXeckI|QEE{+4eq>mrmDAr8I*GoOdBNPmpXAI5%++gc1|aw7+Lh0; z#@oAebE z++`}%!;KD~09mu;FE`)q8})VE#&I7y*k5wBhMAV?JHEQ2!ilH6bm@K;gtGFJ;sbuo z@6;Kv=x`A(8uO0-k26oE47-=1YHV%2R=OW87z0}3>&r|0Yrm--nYc;trBKs#+UikN zppbYjKZy{Y_dG|G0`s>b0p|+!#w-()<-A9O6=|RR08*Fgqc_{qlEH%FrUnLnQ|DgK z%X|Ii4Kw=ojyaE6VPJ$p9vKZ>3fq3-kk=elRMgMdJD@D&iuxtU;U zyG@%WSX1-}n3b`KuK@B4{iRBB$l0u^^puQ%MVspC92FNv*zucN4m^5NBbB=8 z>u2y#Btm0P9NUqxhOQle^?K7xa)=*7BOaP+#k`^q!KxNZmvd9VI>IPKhK`~YhS=r= zf7KJ7Qc_|f^}Zo~tB6QNB#3=CaOnQz^591-6j%!SeR`}-taJM+?N^zRR~t9o?DLPq z(m0ep(h?ODqeW-}Ahs)v>EZDGjGA|uU{|--5H<6MKe~GL7}XW|jxDpO-?fLr z_)ox*k52}1=cR_7d}7nM>Gt*;v0#;`YKT>7*5~CJE??PizEcNt)!?zFFG%?WWPs5_ zdf@W%n0r30&S27vjfb*Ty!{dGgKk&#Qc{wbSXz7lur_^HFJ5}8HSvi_Ks!&L9_AN) zw{NA*QB&ep`=&$V*3D{(Q_Gy^sJM1B-I{WhFrmR}!|EPU_0WC={*-fI>3P<`Px zFeq5*w{dS>L%i=%;t|__+#T~`w65+EJG%>y#!{ATipJUpB4U8n88VP!6>o9SX;4i5%NX;)#caS=NSzI zKBLy%x_@8r-ZJ3T`}Hju)V+~$D-sa%1$%RT{=4exx_%>CEmAZ}6h9s!;LxnZxe1nX zYfJhqA1SpmB5MLl;VSzUx!^*NeLT2`s|&f6b-m=hPc3AXK>@0)@n^j=MTv*i=;<|5 zXPhe(hYC@MvM~$eMiRxv?XWxlan~6RF8@E1VSm3q%J9muK zx*YCFru=AeaS_sU%Uc*8cz_q1BuO1!_x3-+D@CcJ#*gcI5aI1F>Q~D zCr(^<)=r3=E%W&cLr{)`Q%ojY-tC(;0>InD2T>(A3< zSTuI?z_Q-s*_CI44(2<930#&gwHy;6>HX+~cxBNOjVPAS;~ziyWiF--sq8}AP)>b7 z0iyI#s2?IS*{*M~tS93Cb98@b;+0F6PM7#wfzKym)psaksP1OiNWDIx=g*I%r{v<3 z%TvqMGS}6fjfq)Jy|`}OH-@QGaR!GXs9eWf4`Yo$zb8DLA`q<+ZV0g#48csRg<4AB z35dq==m6}b^+V5$XLUg|t?~3^WdSqF(>>xAj))B${Mf%KTh5RP6aoc~ZU$4q=Wacw z^Hd`Gt}r5<8j0IV1)|?4lzUyBT~hw%7VRO?9mbhs&h1s3?6jk6`W-Mg^+GODQSbiYuJ8aaEXD&GAE< zq4Gcx_^ygeOIM`!lo0^I$c^d&9XfWzTzu>L^{EyX=kq_N+|`{!USW6?1Q^>Sl?6q3 z53kdC307-4JVnA|%^Ld*&m}l{r|nb{XJ)C5z(W3&rO5W+$>J z@XB95|yZr0A*<(W}kk_wY-}0jE=h5mBQEyOG zVt4Pp4}Wg|{MD(nLZ^wfQ(gq8d>*DSt@vJfsQy)>ygUD-IZn(TXhK_q^_)3|bw@hp z3p=m;?Yb&3-?kb=BkcoL#-Ic%wfzY>A5tu%Kb{UL{fW zwwdyoJE;1hktS?znM}{vT{H%&I1}6#u-Q zzWbOm@V`!OW7}uNn4wL3FIpWq>+`isNCwRR)`9IrMgLG6onwWfaMJFx(ZO@RHJC~S zcj-iFderFW9z(5MV=FDA59>2Oy)_zC^W!*@pGXwu%so?i7WXeduu`oHn$37YK@@rD zj~y#(I80OXJC3Wa(RD0dhRRl8Sm{9sQrNg+OnW$}p;DSX@$!lNtPIwz6 z&xumlvy7)5ivVX+way~|SoG$fK2Q6taI8?{ipGvCmx^CxCqH%|mE1A-T4i76ny00% zXhXz6-{6J2b$SKWxZ%cT-0Q#GqS`AgIM)CLnQm78w6e0I(?+oLCJJg8j|P4Rvj9or_{yg(H2$G$ zY0*rE(SUS z)VS7E^mO!fs&|A<8&D=Avs(+b6F(Fh(V|+hNF-V8{NGoWL-r3lbf~4}`x>krh!wN9 zjc~Y3b4EH%3n&mkjO_LGixSDGzL=-T6}Ve(b1V>`m!K&r<{5yyc!)$`A^?Cg04tUJ z_AN*fn9JabR-n29ovNy;Fq)QKT)I0ds#ocCI95m`I%sKSzEkBnwet)2@wv?_k|#)r z3V)B9`Rg8cy<#rks)GyzHj^`iTk-z%%tV0|+%N=lFOki^OrYgJap%t`#K&tvn~WUk z)6z6D`tB^c2=3lRkyQ_%W`U|X!HUw-D!g~^tjRhIHv!TcH~!!gbne&@_d1S8n9Ilw zu)=F-BoVlNK73D2JJk^*43^&OBXf03@7+P0d92AU>PCZEKX+Z?Md6YMHCjw8SNu_)-4Yri)vNjy$GwaVa4#X_4~nuVj|{YB^D(p38NX^LLLX-283mk-YB zs}^Ch0&;+vlOG6jV7|*s1-{?)+Kn4;F!fXM_dFb|+j}?C&#(8VCqm}_4rA+fs$F0M z9p}txJ0f+tbT#uDrcAkp8EtjOGYZ0O*D547>emh$rWkVjCjJL12kqZz2b^B&2hAz4 zlUIDdvjAP}Q_r2#7%^hiyVdFQ&sGbcFoC>2Z->#kEuuFWK;xhDJc=eKH?yJ?>c7HXHJaB-x(T8$JsHK8;Z7xNj~@#Cs-_4=ERB8 z52mO&T)1-2o;RJf$&Q&UQc78ND5W)b01*bL#;w}Sfm&yR9F1~tu#nnt{D=dD(*}_# z$qpp(Gu0hMF|UG~w3bl?QFBl4)V|R5meFMS!GjY}mMD`(%)4M@YdeNR6Zkl>ju+gY zXzNDP%+U&b0?jlvH}8n|B?6Pm851&x1_kMGaEhDT`>LuXD_6EcoV^#kw{@%6r3gW!y&ksv`GP!|=mike!HW)4Zr>qiOV0_`?#iv;Vn>09&01{j= zL?}-GUIOd-u}@l zbmUE&vYVE61j}CDxSig zLr9>3E!93qxNWOWLaE8EG@mt#R#RJ{9VW#K%*FZu+o)>IDpFl)&|c)_aX@Zcn+Hd{ z@O*dMyr*fO;`N53C-9TkAHM%RZLl&j6}YToV;8x({V3AE2LXaI-JNC(Ebg#t8pDRQ zEUSeLGBz;@4heZR!pp;BUY57!rNc*#l)uT@S5oY87%+rq8O}?vL~}zx$P>%1pW1Dj z=YbEA!kx1(rj(YH;5xzJ^)R!ENSeLy>TkFUY;7OWp3fw=iwYh)3T-@gOuGFYM)xkM z>x>h38|J7r91YUW-hPx)H^W;vg*cW7_yvkShatp}K|)=oh`t2AAg@!Bo;>-6S`9|6 zv93<~xz7IE-Fx(KNLzXM!UfN)UCBP0y?W-5E?}yPcBSQ~Puwt{9_uzTfvZ!tLVXSl z0j$yG!HpmbCbOP{y)JDx=KX_L^1t6`?93x{THDu72veA_0>S`kw2{N{IAnNUzj0&x z20`Yfc}GnsBxkR2Au*s8n)NCwDiQ|>&K!&vydq) z#a$t9NfX3GN`8gs>!Wv?e)g#U_HB%=u37*MXp}Ng4=JNt0fNZbXdDDg*jL)tOI>@hGdBwf z*y_e8PDrUiZ(86A_kJ)+3%1e9($cM1A|hWkfVy}Bkqbt7rrIcg*yz!pZ}#((SA0tZ z$Kn+4ob>9_viW=YcszW(P7Lk~S(b6;#-QeOnv3gnAG_;@Tqjd4pW4Ek;qaph1rkiMd`<>=#Ad=+igN|Mhbc;%k(yv*a+@_7D1^qv86UhJ zM6x)quy8eQhSz?LVkSSWsoWisXh{&{EG~Qdrx;^`SN{4Kuoexg$Ta(IBqt=~FVw={ zu!o`{Dyq4rbf{s_zI`^PujD_nRJND@S}L>TCB#OsGdPQ+iRND*wq3j1bpRH$Yv0Me z{PL5cA`1tHiO_*m1Xk0EhdCuB5xd!#msPjS_`)){nbi0?UoJPT$9sgf`SWM4fcC;M z+e&vd@lib>J~5G}IL90yOl?6m-eKul-)bqv~fjxo56%xN4$lH^6~-xGaLNn zPw))DS1y=bKx)Fx zpbyI#qIUB;V;9aJ5PBPQ3RS$&)iske#Sk8@tKo&RS^X<1c07HWG$0Zb@wp&9BsBAh zo~q88k#)pCB&vIdaj$JL{1bIpWeJuQr;ASj5LFOn$4{K_G5td`k`Y)Od;^R7;RAIa zM?RKjdSm-|#694_{Ag;L$yDzqcC@y{ zN@%L=4|*lrr_W`EW{}e$iU4RQ*4F!R3>m5bGEOh#W12t|M>sso)Ej*F(_7u(izn=Q za<#q#rp=wJ6mp#^e|hZ@rh!O`v6y^(F5|nG3YX(pL#~&dbDBaKU~DY$TxN0>js=_? z?4a0jVY{n`dHhyLbdSa2L|WC=g@en=O|($p0RqD%!~5YXp8Re`nXK-O?KA)kH44g0z`kVeQ`7=@7D=gC0~(Nh2Ba91!(V6 zX3;m29=LzU_MqI2+>7=3{H05H>AP7oZ1(2MQ5!xlGrR>pQ|@+ysn8~+gEcjmXeohy zK2C6OGWrk*uf-0@CL#jwksWXX9UCGsw6^32K`v%3#YS5?Qz9saC)(Xb?@CG8+dO!x zA)-VnD1;#t5@I$u5{<65Hl2qhtVPO?__4VKl4A0Dj=;glsl&{Cs;aWKu$V0Ignla8 zI&fU$YNaj9)pba6D>w?MTeLlHrH;%GClE6i2o;ATnb-}Xf4oLwsQO_ao|q`5hqgsi zKX@pHdABXQggW2_?7=9y;lRcv?fI-$3B5?DiJBG~f;>UvdrPh49CAwv@tZAPkF$ zi7C9e)Vwu$PETUO=J@1f!M{b@EzCk-H)Yvgy)sF|hC$~%dwnBLT_Z>FrW7fxc?^<< zr7|`>s35mPow`9CBmE4q9uV-ls*3a8Fhs4%cxKSnvL-h`(yXTI&{c+j{(R>ver*n3 zm(Y%n`n6_UxpKr7Jv~=i7*qmv5QvEPA3nG{oXRb* zPw5AljLTqs)%e_k<7D_lS*4Rpq2pD3;rFtE&gLmOACzx zhQ@?a(mbw(C@V#qd&%fTuB#ExVzWM>$YW#e(RV!P-ZYXqD`=-W3E0M_NRVpj?nP7| zB36Y7dGX@t)rEhiP{atdsf57GFP8SSDUbd6hqE>$uP);e7~P(ko=(OGl?Q2@@-P?= zaPVtuMYtLiQ2qXWqr;%neORa6e?|n)G3fH5-PqFur7M6LW;005kUNs%K0N}Zxl4u; zFnx1VmhCw=4Wz`j`TF^tCFz0CXSuF;cD(%buyYN74q_B)02LtmxRSE+CNBvHX+qiM zZZo+?GqW=$DwJ3f%AB{y6k%j8oGdifvi`rgGlJ>NnKKKGa|^b~r1pc`dh_w);ppg% z4X;h;ie=lbe0*-Qk^X`oPH2|o(X?MN^y^n9aL6v`Av)ZnwZUKYTFrQALt}V89L0RW zL=n5zKONwJlg??$lE|Y+{eYOPGuJCzkC}-9$;Hpfr`m_Y?l z;@{(dM0RvF_+V}e~HZqL_pK`UQ6Yggy6M_RDjDEk{XtFv90#Lxg;Zd1FJc^9m z#0sIWcm1}qvNGW%_!&wH6pIWhcu$$A=TcBT^lF^r{8G+SJ$cfF_FG=NY@>n3kRh<4 z93se6pfVguP&2W&NgQR;12HsQUxd{&Wu5ul!~6UEWrlHs*@ZKsu=kn{)z;6JC2naM zv1gA=@7{t#)2TGR3&b>)WPr4cPP=8aK>Y7gBOwQ`QCbn)jRVkYsP6mDe zz_=j8bKAEPY~X!VREV~?zLgaet`GG?7RQ;#F|ri*!i+)7ZSK0`Adh(@EV7$7-$E4y zgb8FnA|WL}EoLqnVZmLB-0T$BdRMz}_lS2i^KZarz+R}mIv5g*yZ=7>j|2{c~+3;L9CDa_@*VnCGtAc}= zq>aS`70qYF6YdBDg<5OdT9a8hbQM`Sp%1XQSrL#NKzo|ltU*{;IL(C=2KmUP2t^G0 zBOnY{6V#m0KLk`|Oa+y}NTI9#WJnK*6mX_bGiY$xqvnB;ssFgygSZE#N3sPUBXR_j5FJY%{ZR&Kr4KjzG@&zoB_ zzU39U6zQEYC>mlTN5`YK_=OUalaEG4&DiAp0ORYoy$lNE0wu*{3mgdp#kfP%)zoM> z{ZlZd{U4Y($H8Hi#K`|37>`XHq};1lftwcG(DfY(XF_tG=wVRAFcDQ!QdA`KyaWeD zC#k+OCGg8X&RC;vU0qvy^x#4LwKZ0T#x5==IZm{+i11Fhz@|b+0N1 zTDr-o0d5^BVO_Ko*3ZjI>plRVq)SB>D+%Xib;qLhC%<#HkwP| z)1Ssn37jMeiY(?QnN88V$ccX@MKiUC!I^{qs&9Afkk(%LOb<(3bMpqZ2pH6Qu!rHT zU-c|Dx@VaOt{17@gr}OMP1)Z%lE!6#7SIEh6Z`{?{uVc4&%V}g2Fg6&r&u26PxQYS z-ZG-Tv61<5m$5(a*sJzCV)<2;nb{~uJ+y!*rI@7nR?We3`S6P zElxvT;9V$KAr;v`0n)%S#c_LG z&T07mp&zNlJ4LY8cXd#7iwgSw)4@vvaYZu=|+gBa}|@f~KC3;KRw;hQ=Nq z^)&T19Tn*5J$v*ya{wS>(5zx|_lDqn6mKcmVDALg!VP2hB)AXPK!E~6*to2sEoYZNnjEc(Pqeso3cWr}%w#j49%OHzzzmPT!TuU^HbU0~o z7#5D>SLXb|$;)`NskR5yq?P`8v6FU!Y868wIqA22!uRH8S;P1rK@$M7Tv)6!MRJ%(*Jtrjyv8PY;G?{JSr@tBfYS+6!`$38r|)XfhUJ@G}4x{ ztUH<;gx*_>*V~!RjL?e?Lv6!Uh#FfBD4*Va`kZDZ#>Q$xUQr&^3_|K*66)Ul`-zmx zmM86{&H#$X{5}-glqrkBtB*t_Lb44*p?%q7)kH6AUf{72GpR~e-^<}y@fv~3MbfI7!2%qA|1u!4f($Ucm zaS5;injN?C>oBo1leLk)3pk|&rJtH}zoz}PQb4CK(MmVc{l`65TdBu(Tb6#DjPcAKPd^7wJB4yPAneT|C)!D1B0 zlEu6QTAPts0$ar(>Pfsqsb zxrG_3o}Oq@d< z?-8irY+(Fpn1Kr5bF8njQY-jJYOyDnpSfl94{56^F>#2YF|J5SF^Qi!(=V?tc6Xn- zBo-M4aBOC`Q2StPmPEI1pjD<6IM9d&@@APlDDKZAe`(3y34o)F9cpaa)_9a#*Ue8q z`1P-lBWaGU{8lIF78(%2un^Lp>sIluUzpC{{rBy z_VM|xiG$VE$1Ew>3nL5p2O-Klb<9iq1?H8nQumg>mBnxi2ove*>))Y^qP!n6RYW&V+&L0h(n9Dd?3rnO|;`0>vkKi1RM z2J?pHT!N`@Y4If!!A?3HyKtd_>Wj}T*hDKTCQD%SnL&fh?%lN@3FvC-%=M81G=#Ci zbBQN~Rt>^$aA?lCb2OocXKs7(kGy~}5uLhw*RE^GSwJ^{qEA`{CBdXXr+*UF{?@8- znkiRsI7~b#RIwNeciV!t#1QZp+O)TXLeKqOwNv65_Gjj(8SkY{5ZXW=I>szyBB6f? z?qZ!0E1_@({)q@5Y)Q=JySC^&Q#7gW=pwHUmEeEdAs%~aQzVpZkmFk~@Be{v$IpwZ zi`I^^s2OuqHQ?{tr6c2Cs6@su{rz)9E7GEc<18m#Y#3Ev`zRfAuc&;4(NUS}sgu{e`HgZsB)a zdZ(7GLN}RlNBC7Xok*087AySyk0$&7*S|mhu7{`^ieWNS0@y(cV!4ksRO4i(>QL^4 z9kl&c1`L#mw2Ov!@2M@?a<7`r&ZZOk{5ypOd#{a6UP5guXr2uXHRsj~Fs%HG(59VR zgLQ~`AQcz79qkS>8(*W1f;9bv&_Q-$+yHuD=FtPQ%JpU3_iAK2(o(>sDH3$qt_W0W zSJqeCV%d(&-v)f?Ad2a@_PdU@w(Q~Ey_A(Dvt}=@=sQ-%Iks-Z>ll$pwlePfvWpL5 zn?4(OVK4e!`pZC#Q}S z3$~)7v!Ttk2QxQ!?9ic51;%;wb<>d@-;Rr(8M4SweyoZ!IIjVYC0KPp=M#0meo3DE z-c$HT$@-!`djrR4?vS*o-U(4{+45aOh~D*UW*6|G;>}yydrc!O`IIPxty?=~Q5R96 zlikRyV1E2~=1Mg(S@hwoD@we@E6H5<$`fEPlk_Cd*<@U3`A7S7#p9M`C-x%dFVR7uG)4FB<-7w?S)+;MNjV z*Br0rbMciK-`4q=bm~;^_uZ%QZD%hNv#Fh{f0LGy={|P&i2lNlm`t5zbk=a8|NjDq CwMJI} literal 0 HcmV?d00001 diff --git a/doc/xschem_man/tutorial_instance_based_implementation.html b/doc/xschem_man/tutorial_instance_based_implementation.html index f6a27a70..f5b9b561 100644 --- a/doc/xschem_man/tutorial_instance_based_implementation.html +++ b/doc/xschem_man/tutorial_instance_based_implementation.html @@ -196,7 +196,66 @@ m1 y a VSSPIN VSSPIN yyn w=wn l=lln ad='wn *4.3u' as='wn *4.3u' pd='wn *2+8.6u' duplicate the subcircuit, since model names can not be set as parameters.

    - +

    Another example of spice models given as parameters

    + +

    Consider the following symbol instance:

    + +

    with the following symbol definition

    + +

    And the following schematic definition. Note the model syntax for the p-channel transistor + (the n-channel transistor has a similar model=modn@modeltag definition):

    + +

    The following netlist will be produced

    +
    +...
    +...
    +x4 LDCP4_B LDCP vcc vss inv4 wn=8.4u lln=2.4u wp=20u lp=2.4u m=1
    +...
    +...
    +* expanding   symbol:  inv4.sym # of pins=2
    +** sym_path: /home/schippes/.xschem/xschem_library/test_parametric_model/inv4.sym
    +** sch_path: /home/schippes/.xschem/xschem_library/test_parametric_model/inv4.sch
    +.subckt inv4 y a VCCPIN VSSPIN     wn=10u lln=1.2u wp=10u lp=1.2u
    +*.opin y
    +*.ipin a
    +m2 y a VCCPIN VCCPIN modp18 w=wp l=lp ad='wp *4.6u' as='wp *4.6u' pd='wp *2+9.2u' ps='wp *2+9.2u' m=1
    +m1 y a VSSPIN VSSPIN modn18 w=wn l=lln ad='wn *4.3u' as='wn *4.3u' pd='wn *2+8.6u' ps='wn *2+8.6u' m=1
    +.ends
    +...
    +...
    + 
    +

    You see the @modeltag will be substituted looking first in the mos transistor attributes + (but there is no definition there), then in the containing symbol attributes (and there is + a modeltag=18 definition).

    +

    Now suppose you want to place another instance of inv4.sym but with a different modeltag: + Since we know that spice does not allow model names to be passed as parameters we need to specialize the + inv4.sym subcircuit to a new inv_1.sym subcircuit. + Therefore we give the attribute schematic=inv4_1.sch + to the second inv4 instance. We also set there a different modeltag: modeltag=13

    + +

    The netlist for this additional instance will be:

    +
    +...
    +...
    +x5 LDCP5_B LDCP vcc vss inv4_1 wn=8.4u lln=2.4u wp=20u lp=2.4u m=1
    +...
    +...
    +* expanding   symbol:  inv4_1.sym # of pins=2
    +** sym_path: /home/schippes/.xschem/xschem_library/test_parametric_model/inv4.sym
    +** sch_path: /home/schippes/.xschem/xschem_library/test_parametric_model/inv4.sch
    +.subckt inv4_1 y a VCCPIN VSSPIN     wn=10u lln=1.2u wp=10u lp=1.2u
    +*.opin y
    +*.ipin a
    +m2 y a VCCPIN VCCPIN modp13 w=wp l=lp ad='wp *4.6u' as='wp *4.6u' pd='wp *2+9.2u' ps='wp *2+9.2u' m=1
    +m1 y a VSSPIN VSSPIN modn13 w=wn l=lln ad='wn *4.3u' as='wn *4.3u' pd='wn *2+8.6u' ps='wn *2+8.6u' m=1
    +.ends
    +...
    +...
    + 
    +

    This way it is possible from a single symbol (inv4.sym in the example) to netlist multiple instances of it + with different models, in the example using a modeltag variable.

    + +
    diff --git a/src/actions.c b/src/actions.c index 24c23ff8..5e8b748f 100644 --- a/src/actions.c +++ b/src/actions.c @@ -1887,7 +1887,7 @@ void get_additional_symbols(int what) my_strdup2(_ALLOC_ID_, &sch, tcl_hook2( str_replace( get_tok_value(xctx->inst[i].prop_ptr,"schematic",2), "@symname", get_cell(xctx->inst[i].name, 0), '\\'))); - dbg(1, "get_additional_symbols(): sch=%s\n", sch); + dbg(1, "get_additional_symbols(): inst=%d sch=%s\n",i, sch); if(sch[0] && stat(abs_sym_path(sch, ""), &buf)) {/* schematic does not exist */ my_snprintf(symbol_base_sch, PATH_MAX, "%s.sch", get_cell(xctx->sym[xctx->inst[i].ptr].name, 9999)); dbg(1, "get_additional_symbols(): schematic not existing\n"); diff --git a/src/scheduler.c b/src/scheduler.c index 139201b8..6ccd9e78 100644 --- a/src/scheduler.c +++ b/src/scheduler.c @@ -5265,6 +5265,27 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg } } + /* translate3 str s1 [s2] + * Translate string 'str' replacing @xxx tokens with values in string s1 or if + * not found in string s2 + * Example: xschem translate3 {the voltage is @value} {name=x12} {name=x1 value=1.8} + * the voltage is 1.8 */ + else if(!strcmp(argv[1], "translate3") ) + { + char *s = NULL; + if(!xctx) {Tcl_SetResult(interp, not_avail, TCL_STATIC); return TCL_ERROR;} + if(argc > 5) my_strdup2(_ALLOC_ID_, &s, translate3(argv[2], argv[3], argv[4], argv[5])); + if(argc > 4) my_strdup2(_ALLOC_ID_, &s, translate3(argv[2], argv[3], argv[4], NULL)); + else if(argc > 3) my_strdup2(_ALLOC_ID_, &s, translate3(argv[2], argv[3], NULL, NULL)); + else { + Tcl_SetResult(interp, "xschem translate3: missing arguments", TCL_STATIC); + return TCL_ERROR; + } + Tcl_ResetResult(interp); + Tcl_SetResult(interp, s, TCL_VOLATILE); + my_free(_ALLOC_ID_, &s); + } + /* trim_chars str sep * Remove leading and trailing chars matching any character in 'sep' from str */ else if(!strcmp(argv[1], "trim_chars")) diff --git a/src/svgdraw.c b/src/svgdraw.c index 9f04979f..6513661f 100644 --- a/src/svgdraw.c +++ b/src/svgdraw.c @@ -39,7 +39,7 @@ static double svg_linew; /* current width of lines / rectangles */ static void svg_restore_lw(void) { - svg_linew = xctx->lw*1.2; + svg_linew = (xctx->lw <= 0.01 ? 0.2 : xctx->lw) * 1.2; } static void svg_xdrawline(int layer, int bus, double x1, double y1, double x2, double y2, int dash) diff --git a/src/token.c b/src/token.c index a7c9b09c..e794bdcf 100644 --- a/src/token.c +++ b/src/token.c @@ -2154,35 +2154,17 @@ int print_spice_element(FILE *fd, int inst) my_strdup2(_ALLOC_ID_, &val, get_tok_value(xctx->inst[inst].prop_ptr, token+1, 0)); tok_size = xctx->tok_size; value = val; - if(!strcmp(token + 1, "model") && strchr(value, '@')) { - value = translate(inst, val); + if(strchr(value, '@')) { /* Symbol format string contains model=@modp, * instance attributes does not contain a modp=xxx, - * look up modp in **parent** symbol template attribute */ - dbg(1, "model: instance=%s ,val=%s, tok=%s, value=%s template=%s\n", - xctx->inst[inst].instname, - val, token, value, xctx->hier_attr[xctx->currsch - 1].templ); - if(value[0] == '\0') { - value=get_tok_value(xctx->hier_attr[xctx->currsch - 1].prop_ptr, val+1, 0); - } - if(value[0] == '\0') { - value=get_tok_value(xctx->hier_attr[xctx->currsch - 1].templ, val+1, 0); - } - } - else if(val[0] == '@' && !strpbrk(value + 1, "@ ")) { - /* value = translate(inst, val); */ - value = get_tok_value(xctx->inst[inst].prop_ptr, val + 1, 0); - dbg(1, "val=%s, tok=%s, value=%s template=%s", - val, token, value, xctx->hier_attr[xctx->currsch - 1].templ); - if(value[0] == '\0') { - value=get_tok_value(xctx->hier_attr[xctx->currsch - 1].prop_ptr, val+1, 0); - } - if(value[0] == '\0') { - value=get_tok_value(xctx->hier_attr[xctx->currsch - 1].templ, val+1, 0); - } + * look up modp in **parent** instance prop_ptr and symbol template attribute */ + + value = translate3(val, xctx->inst[inst].prop_ptr, + xctx->hier_attr[xctx->currsch - 1].prop_ptr, + xctx->hier_attr[xctx->currsch - 1].templ); } tok_val_len = strlen(value); - if(!strcmp(token, "@spiceprefix")) { + if(!strcmp(token, "@spiceprefix") && value[0]) { my_realloc(_ALLOC_ID_, &spiceprefixtag, tok_val_len+22); my_snprintf(spiceprefixtag, tok_val_len+22, "**** spice_prefix %s\n", value); value = spiceprefixtag; @@ -2197,18 +2179,8 @@ int print_spice_element(FILE *fd, int inst) token_exists = 0; /* processed later */ value = NULL; } - /* - if (!strncmp(value,"tcleval(", 8)) { - dbg(1, "print_spice_element(): value=%s\n", value); - my_strdup2(_ALLOC_ID_, &translatedvalue, value); - my_strdup2(_ALLOC_ID_, &translatedvalue, translate(inst, translatedvalue)); - value = translatedvalue; - } - */ } if(!token_exists && token[0] =='%') { - - /* result_pos += my_snprintf(result + result_pos, tmp, "%s", token + 1); */ my_mstrcat(_ALLOC_ID_, &result, token + 1, NULL); /* fputs(token + 1, fd); */ @@ -4339,3 +4311,97 @@ const char *translate2(Lcc *lcc, int level, char* s) return result; } + + +/* substitute given tokens in a string with their corresponding values */ +/* ex.: name=@name w=@w l=@l ---> name=m112 w=3e-6 l=0.8e-6 */ +/* using s1, s2, s3 in turn to resolve @tokens */ +/* if no definition for @token is found return @token as is in s */ +/* if s==NULL return emty string */ +const char *translate3(const char *s, const char *s1, const char *s2, const char *s3) +{ + static const char *empty=""; + static char *translated_tok = NULL; + static char *result=NULL; /* safe to keep even with multiple schematics */ + register int c, state=TOK_BEGIN, space; + char *token=NULL; + size_t sizetok=0; + size_t token_pos=0; + const char *value; + int escape=0; + char *value1 = NULL; + + + if(!s || !xctx) { + my_free(_ALLOC_ID_, &result); + my_free(_ALLOC_ID_, &translated_tok); + return empty; + } + dbg(2, "translate3():\n s=%s\n s1=%s\n s2=%s\n s3=%s\n", s, s1, s2, s3); + my_strdup2(_ALLOC_ID_, &result, ""); + + while(1) { + c=*s++; + if(c=='\\') { + escape=1; + c=*s++; /* do not remove: breaks translation of format strings in netlists (escaping %) */ + } + else escape=0; + space=SPACE(c); + if( state==TOK_BEGIN && (c=='@' || c=='%' ) && !escape ) state=TOK_TOKEN; /* 20161210 escape */ + else if(state==TOK_TOKEN && token_pos > 1 && + ( + ( (space || c == '%' || c == '@') && !escape ) || + ( (!space && c != '%' && c != '@') && escape ) + ) + ) state=TOK_SEP; + + STR_ALLOC(&token, token_pos, &sizetok); + if(state==TOK_TOKEN) token[token_pos++]=(char)c; + else if(state==TOK_SEP) { + token[token_pos]='\0'; + value = get_tok_value(s1, token+1, 0); + if(!xctx->tok_size && s2) { + value=get_tok_value(s2, token+1, 0); + } + if(!xctx->tok_size && s3) { + value=get_tok_value(s3, token+1, 0); + } + if(!xctx->tok_size) { /* above lines did not find a value for token */ + /* no definition found -> keep token */ + my_strcat(_ALLOC_ID_, &result, token); + } else { + my_strdup2(_ALLOC_ID_, &value1, value); + my_strcat(_ALLOC_ID_, &result, value1); + my_free(_ALLOC_ID_, &value1); + } + token_pos = 0; + if(c == '@' || c == '%') s--; + else { + char ch[2]; + ch[0] = (char)c; + ch[1] = '\0'; + my_strcat(_ALLOC_ID_, &result, ch); + } + state=TOK_BEGIN; + } /* else if(state==TOK_SEP) */ + else if(state==TOK_BEGIN) { + char ch[2]; + ch[0] = (char)c; + ch[1] = '\0'; + my_strcat(_ALLOC_ID_, &result, ch); + } + if(c=='\0') { + my_strcat(_ALLOC_ID_, &result, ""); + break; + } + } /* while(1) */ + dbg(2, "translate3(): returning %s\n", result); + my_free(_ALLOC_ID_, &token); + + /* if result is like: 'tcleval(some_string)' pass it thru tcl evaluation so expressions + * can be calculated */ + my_strdup2(_ALLOC_ID_, &translated_tok, tcl_hook2(result)); + return translated_tok; +} + diff --git a/src/xschem.h b/src/xschem.h index 06301905..0cd8accb 100644 --- a/src/xschem.h +++ b/src/xschem.h @@ -1557,6 +1557,7 @@ extern char *find_nth(const char *str, const char *sep, const char *quote, int k extern int isonlydigit(const char *s); extern const char *translate(int inst, const char* s); extern const char* translate2(Lcc *lcc, int level, char* s); +extern const char *translate3(const char* s, const char *s1, const char *s2, const char *s3); extern void print_tedax_element(FILE *fd, int inst); extern int print_spice_element(FILE *fd, int inst); extern void print_spice_subckt_nodes(FILE *fd, int symbol);