From 279a3c5788c5846ca89e9df7cf1c6d0bcb47b6a4 Mon Sep 17 00:00:00 2001 From: Alex Mykyta Date: Mon, 24 Oct 2022 21:49:47 -0700 Subject: [PATCH] Implement write buffering (#22) --- docs/diagrams/diagrams.odg | Bin 14545 -> 19782 bytes docs/diagrams/rbuf.png | Bin 0 -> 124933 bytes docs/diagrams/wbuf.png | Bin 0 -> 125800 bytes docs/index.rst | 7 + docs/props/field.rst | 4 +- docs/udps/intro.rst | 32 +++ docs/udps/write_buffering.rst | 173 ++++++++++++++ hdl-src/regblock_udps.rdl | 18 ++ setup.py | 3 +- src/peakrdl_regblock/addr_decode.py | 1 + src/peakrdl_regblock/exporter.py | 12 +- src/peakrdl_regblock/field_logic/__init__.py | 29 ++- .../field_logic/generators.py | 2 +- .../field_logic/sw_onwrite.py | 123 ++++++---- src/peakrdl_regblock/module_tmpl.sv | 13 +- .../readback/templates/readback.sv | 5 +- src/peakrdl_regblock/scan_design.py | 30 ++- src/peakrdl_regblock/udps.py | 23 +- src/peakrdl_regblock/validate_design.py | 43 ++-- .../write_buffering/__init__.py | 80 +++++++ .../implementation_generator.py | 60 +++++ .../write_buffering/storage_generator.py | 32 +++ .../write_buffering/template.sv | 31 +++ tests/.coveragerc | 4 + tests/lib/base_testcase.py | 5 + tests/test_write_buffer/__init__.py | 0 tests/test_write_buffer/regblock.rdl | 106 +++++++++ tests/test_write_buffer/tb_template.sv | 220 ++++++++++++++++++ tests/test_write_buffer/testcase.py | 5 + 29 files changed, 968 insertions(+), 93 deletions(-) create mode 100644 docs/diagrams/rbuf.png create mode 100644 docs/diagrams/wbuf.png create mode 100644 docs/udps/intro.rst create mode 100644 docs/udps/write_buffering.rst create mode 100644 hdl-src/regblock_udps.rdl create mode 100644 src/peakrdl_regblock/write_buffering/__init__.py create mode 100644 src/peakrdl_regblock/write_buffering/implementation_generator.py create mode 100644 src/peakrdl_regblock/write_buffering/storage_generator.py create mode 100644 src/peakrdl_regblock/write_buffering/template.sv create mode 100644 tests/test_write_buffer/__init__.py create mode 100644 tests/test_write_buffer/regblock.rdl create mode 100644 tests/test_write_buffer/tb_template.sv create mode 100644 tests/test_write_buffer/testcase.py diff --git a/docs/diagrams/diagrams.odg b/docs/diagrams/diagrams.odg index fdc1d82284c0a8708e205e5c87c67fdcffb7c753..5b42eb6c76134be390521086f32cee3d6a577d49 100644 GIT binary patch literal 19782 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 diff --git a/docs/diagrams/rbuf.png b/docs/diagrams/rbuf.png new file mode 100644 index 0000000000000000000000000000000000000000..34d77771c84d1d09543fd3593c35c7db443a8497 GIT binary patch literal 124933 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
  • gaHFuEMYl3cso1lN0pX#IO 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 literal 0 HcmV?d00001 diff --git a/docs/diagrams/wbuf.png b/docs/diagrams/wbuf.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e5e547d7f77bf164dca3afdc365feb9197423a GIT binary patch literal 125800 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%0DQ`vM>AV zP~n5(pEr5x1_UR2k5axCnjCQR2#IK|$|d!uZ$95y;uL=Fx8c%sZ}*qi*G2mda~@rq zQzL7?B^peLYBuq?h$EI!xa+oDNyRE6{atMa3OPwuQ)y+L zK;wSm0DZTI)A+1F_W>R@Yg^m-5uXJGAEh5Hc^Qo{g)RI$R(G&8Rm+LBO~jQ7-CoZLTrPDwIy_%x@R+Ys=x?$Fjtai1%r$&q=UzNAE5xYM)_w`uOjGgY3NQ zT?d{Rv6!iw{V<5cg!ikSH~+8EiBWAD`?1V;*fw8rE}|1Kb?BF3{@4*Q@Jo#ZXM;aK z)v`KE8f%p}^ArlI=_2x0^Y))zr(HTNJoqe=x*NBF=UtpfuPPqRZ}O#2nY~^|HO?yY z?e*zrN=YyC>?3|se=+KBYYuCaxwNtLDra-`S94G5jbAhAm!2?poQODet2(IailIIA z4=wK`>+oq|iy;q~0zq9?x#a;bBGLscC_K9n5 zqVBGl2p_8-TCCi#WC^YAakg8M`AXi_*w-EZO8-Xk%U0w89LwsNG42cisi1uGv!dKr z+jwDrj<>yQ9W6Vg71Wr;%=4*wN6w!7HJ6oJen5p)Dnn{e*pNilb~U#1?ey+!ZQ0SA zCchf$pj4UuWFycK@&h`wiGxLIV>iJn#Y_4VHg&%4`K zUBi4&P_b3X?s_O!bIT{5PLSMQ^kx!h0e{!ZC%YnE2m)yk?k!&Qthhb5%7~ZnRujjm+ff1`LaK%r0?k+`D_}~T&wQj@%+hlr&crGln4UWjZQIjs03!Ngys1+A)VE0n zUSqG2-Y@EBJ`Abeu(CRtd4Pf_Oi}n$+hBB9@2a-l=67ux0r9d=BhKzEtvQZ-O*wZO z)~0M}S~+TXt{sk+&X6nJnAE`e753R6bdG8VGH*>L@HaxUwD6{kz{eiyA zB?gz3qut!baJ@iGx8o#b-A+J7@c=@EOkcB`MiqQl(r0g^%f>>poOpJ@k z@LY;{D919Vt9RQ_LJGQrOBtGJ`P(UYjK2r}1uoI4v6e^chf3|ITostyCG*d8S^jKo z5s0_eXKG$?;aU5&I@rf;4hPJijqO;&27u@z)q^{1=%(sv&bB%qp}jnQTZaiyH=MgL zv?R`i8JVI!9^0mpk=!jA&F|bDIoVA^nY|{udOYG)lGJ-P`x;gAQseX6cmf!jQkpY` zC|WXEr^Zvx7Mg#$-EvOu!dP?MZOf*srS=~JsdZ9@gQD{7r@l|7AH{+DuQ^<4-X(irUeo211_gO#-T^YTGS@@5)5yA_T@Aey{ zvJW)ynA5x0!Lp;a>6@XbrcG>mxA`57myDeEI0EvmS`>u z@>mZJ4o)yz&#EkRocP5OmZ(u2u4(SD37(IWN`Gm-*y{K43sYyDH3n@~NTkVa&D7yp zf2ASD)3>O?*1lR@%Gcv`>975qKbUt;Q08qEzoi$bt**Gu*?!(w?6=s_&iZVI)>HY} z`$TfXqFX@?E)8v%@1n0vlJ|;=>KXN$kw2E+pRAzJj2>~#cvN+;r&!!VMNnt3SO(bigIR}Ay({LJV`prx&2hHXK;{b@6C7*n3fu!$_czHKuV zJA8g&VRgFz``XF=GWUw9wyIqirAulbrlee&X?wi>{&{HVtJG9QN1>1k2*kF1wvS;E zlP~cIV~O0V8Ff1*zo#Lcg5<;@s>-8LuLADyUthoAlG8RN5-wigGSQNeWJvQdWnovu zgm&jXF)HU%h;`ZEF$epIu$+`Eed>8q$_r2+vd_}0 zl!-cJ*7};xTC44`z9XC5$%8SJl$6lxttUOSAySe2Nm-J8srg3W%VbBjl|M(Iwa<3l zc|%UQjXTw0Sc_Bb;>U3D5~V>+{10YXwWE8q1hu@=(?#v`&z#f^dqv+n<8kfdPEcx25qChcg_-81 zgyM&!Y$s1_7DThop};mA`^AdBn8&=>?E;nR$2`O%xA8c|hV6 z`^zYABIe@(gVfZNy|mV1Hu3vf8&`XnhRqavGxmi!s}8JtE|e`)yMSL)HU2Z;ot}Fd z-hy>cffU$3!3jCq;O(cUr$d4+NEw5uIam=TeHf1lv3^C9rnej=a(m)KqM&!*CgU!$VG<9ycnPow$V;zYVG)cq zl66!f6)yJbZ7z&-S70^~o{9)c4-JT64eyGJ`js8*A!KNNwT&^qzWX=OszoO5BPI$bHLf~dki_woF>X&O!ihP47$9281yMg5T zfrz)72ooNjpkij!gcxgQ9MJQm`}#2%4hK92Wx?-gRxe%3THWZ*x_|#1TTWG)g<#gHtA$2IEOlGK z+v36MQn}t}mN(I|I@+BNM)3|=*4tU$8IM!Dz`b5`w9JT)pC4^xc$yKGRB^-Esd%P8 zcl=wF(aX;0Ho8~NGcnB#$rOv4v)&}nvo8c(*$sIn-SQ;d1pd}O|CTP%!l%Z>b9VWH z2I(ekzUPDVbPGr%9gH)cUoZxt_+fj4DF7&zG&+e}iQ4wV#}{^%t8VaSFUOaZtgknv z^1iuA<;Gm`wLy&W^Wbu$&%NG}zy=EUORN{MCp5TOk|E#u(AE|@eXh=8X5{tV`oE}V z*3w$iHGfCyB(fw4cXHe6@HI44oYSBP4Jydi2DU|_U^73z9_!3zWnv{kYutK|r5bVw zR@T~mled{XZaV)^6?(m~clCvHXnJHvMZvz!Lf7R6x+b@Zg`xbB40biK_aB#km^Lev zdc4M>KQSe)3sK67KyhyTD ze#yWc8eH*>X2ix{?q*&ejjQI+9;$|C%wd|JV_Tqtf3k=X3d`ZPVn_QJ<(gET_Z#`b`;@$Zu~vcdE2LPwZ1R;*{}ao_>z` z=#3r|D||e^b;mM7g(JL6*>2{WHtCrRO#8mj(0qBHhN94m;YxI=q2ZcJ2Bm7Z4J!Hi zPs^aR#fUpU;0omu-B2~Qevs1LMu!HGYy6iqS&N)XHq#XI+DS`&IvWY$!pCOzW=shL zvKEz|*~E>NbdH=ZAaIcUzwd8nPQ6b{3mPWC>u(ow3cmVl3yN zuP;7&Zv2c|63sTbpSwluq8FIST58fpM@%U#*`h@6_!#Apjk&~DiuDY_Fn&>n!S6lHp{gwsnb_eC70)z+lMkK}Dui`$$ zK7FcSXZLhe5s^lz34R>FZ{b(Z1C006r%P&Tj0Ps4xxaby2JBlZdx+#N9}=J+xjFHB zy;euH+*HG)YdPM-1CLM*CK9s?S|cj`l>rQDK#1j_%u8Ox4ztsG1Qo3AQ7k_-%e`SK-H8c)UN=jZXM z!eIjJLTCyhY(Mm4Zgv(#GyKaj@`)cmK)Qkhs5-NLi?8;bXYK+P9jC;_%fPsZBDd(u z{XxudYR@XaJt&7CqM*X5-w5MWNTY^_hUg{SKTm`G(+*HiVGz1BOiQ9BhJSh5svF+N z$?SiD?ZgQ*SIq$Q-i*Rir3Jng@{z6;@Dxqg$!}*}!~*9*#d+QSAB+ml<=#N5_WO0_27Ym}6fw5Rmwc$M6e)3f;b zH4|rs_wnbc?0$Uhb6Gxm=wxBKd{hLCWVE%3zA7o-S(}_@ze$nZhN*R@80(7xnnqKg z-qO6`etxQwl9Euq0*5N})`VK@bCB6NqlTFEIWhLJC$S0R%z zjjBI#vM|5Kfc~Ys-m3MDQ&6YMpBphuFFY<`)|B{yJ^T&pG(W_*s0QWI-g!l z!8Olj;ipx`ht9}`n4)WA4g1(h=l6W5pKRQ3%ffr6*=*(8bdW?j-(@q7=GpGm@_A!{ zdA}a4p+C+a3e%@&hd&xp_8!j%dycH&(#cNKBd6j&-Vb@URfQpYbgNV8!F*pgXJ);B zip$~#|1B=dF@y?}tU+FL;pa~@aBK?lEP4S4<$AYSV-Vpw!Ybuk5-2I>8*7hyBjF9v zf55NTReWImB+Pm18#i6{KlJwAJ zwN~lbept28a;y2G@q{L0cX_c>)3wGpy6=0g2x)aW&^NhBy$ij>k{0dPJ2EgtN4t1u zQbXs)S+T%(?yokOwmj3GoZCG^vhB*v7WG~yi{lep{CLyesu&1)EI*Aq!Lq3*N|ERM zy^sBAR`=N1@;Sqqp4;NZXC4L$Sapc_O|)(7;>l#%^z1&OoU|NzY?$;a=5|A|x147j zbm)_;#1iRUi5}AFx|uZ>=+@abd7>x7+*W_yXukIdykw*0Cv-(B?lrM~JyD|bNvBSq zOuW?oR@`O8rh)d(2iwZK6c0ZB6sEcJv}EdrU^LAYmzZ^jaPQ5vvj#QYdEF-JIsTL7 z*P7(!O*FC|ERB47G~}_p)#KR8xPEyMPN=P_=l7VupLb>+YvWpWMnY2J7e9~6Srl#*?85piec65qO{xIHnAsl!XkL= z2`hTCLN39<6mJ>yKMPb$lYi>4Z0LUWYsblJ`3gRR+Ff(I85$n_9BY2Mu4Xy$Td(Fo zYiLkV@6n&J%OQ{Cu=YCeOk(&X-UnGKE9f0 z-yWT;U;L{5S?4F?wII(AtL*P;GshaQH_M?8mSVIA0x^AWKvpG!F6~*oD;|`rhCnLPXabV=3Oy9 zg|?4n+_@IgbQEKUV;|QVX75U@nNgd4HF^JIQgAE!`k=T$%zcGefZYuclh-uQ?Dgaa%j&`_ zA#%N+&fkBZ34C+iN^HC(k6XZ6W}e<@HGY$hB^-*(S4qD*ot{-?`^}UEeDEri^^+um zml4jsFP>>eUSaSmu_=!J_8k`& zs>6pt&>$(Bh4vc!iIZB{4|81>$A>2-*1lD2lQMRNN!=gAip^(44eOH0`9S4pI#w8~UnzeAu`=WZ}u8Nkzvz1Bwti>%P6uwTL++NY~ zNkYbRFt}PL_vq4{sFiFOMLd5qahL-v9Ka z2>#|6Vf#8XX?4Zvn=#=vno2J}e01zI5}sGyAz&6N{cuAG^MQWQ82( zCt2wyZWONXz5aa?<^)5+?L@<2OoVsEE0(GSoBf>b)p@4{EAT%vVI#%5{*Mp*4doI~ zFMaJ8V4yG%X}k|P5%c$?!7aOwMLa6ny_1mY$!nMg)ueyinO^%un5CS{nlb5e6p#JA z^4orDfEuXgvK3Wta$8@;?ZLW7_qmqVBn+;6j+M!yI7~s6(Z?xc8C|?Mf1vP`r6B{; z$S}|1W%Yt^QO6puLXqTA?Vf_e`G&vRUbeTLwYYfRpA|Zwi> zl=p`w!ggl%ihqi-mw29^wfSKW6hPnro6O7=$6e$lBO^O^uHeZvm}YcRX?xu|xdkK7 z`Y7Z)559=PVT}d8F`q>f7X>LxE?hWJyTed!>M#YR*wYIJ_wET7TPX|K8Es124yzNOvag6qx_` z$$UNowlO!$$wGcmUK=jf`^tu z=WRGb_VCuGtx0_Z>%1bNj#*SR$|4=@&2!jEq-jya;LpzQ%PAe z=}XzpXZJvyDg@W;fy>y;o?@*e`tpy*Lk%$so9Hp=FShsH;NZkKtk>c3gd;uE)J|W1 zM~2PDm$7!;jwMIkCyf+syhDYDEWb4D8_IK1itZ3OE69FA{Dv0Br`?fxnQ)eIb}qU= zvg>rA9k2N(@wi$i!{#d8@`O)rptf?B9nE|h&qukBT|y&ra@VbC($`6Qfv=ZE?esNQ zdY@QLU_1>EZ6cA0HyqmC1bFe7YGl3m(6mVYBQw6F&eak^{R2mj9tE+R{fC!fdUiu! zeRgcW+1bV&LFUP+t(o25E-Ui>NVrdY=%C+dAi<--X#O^Qq{HJ$^||({jvQL zPnOT1B`|Gu9oNv+jk-H`xaxet=8hGHEA$~F`B&7`t{E96#>IUp2^l-WC!bw9ADG)8F3R?oWY@JiA+H5~ zZ4}N-1VZj9K0f3Cq!iu#ceHY!K60;mbTzPpe>@o$O}h0@ZoiLfvSMKP1Ih8P=bc5H(O0-kNF{&|h-;2kuglU%=(l|z)!Cz6A*M*s6HYx$z zweYJjx- zw+oRTD4Fw^(HHTkz8X8cD>*60_E{qcaLw&Ece?c1p4QPYM>D32dp5AbX;<@r=vn3A zabW7hKLd8>=MB1a*~K^L<&5ds>AV4s74<2ASauI_KD%G7XsG22Ji!d+>tFfWv#PG7 zWmeiol$7Ys^)gk~)Qp)pJ1E3nbS%ECq4Bxy6Zyxk9Wp!eYE0JT-#Ol%FLRiV8PpK5 zjAqkNd-+>lebr|@U?3ul)NIo9mqWzUg$}$RtQ6l8GLIj2{PrfKPCJCgwZGO$1#9`< zS)Pu@%6gDkF@56-Ex#3K*Q2mq_W9i~xc~(^x&+BK1!+Lr*X>s)bbUy8}o;$ zQg_RtX1yz2dygQIonc2aXV3o)o3IAOb8>efjK}3hv{6QIB!ae(4M5$0_iJ0a2jM9308UF&;_k` z9XF7$m58xk-DwgjrB_NhBXaasMMFiUWxZhP=EZdfs`E2d1#oIu6R^^@ZhRHg^8Tif zr9}47&j4Bx*Jpg;yifzYrc>-*21ZY)J$OU&#%rtY735vqym|A&ksi01r@P-|dVflP z%XfN@KY0l@8r5uzm<7XQ1m&uP zN1)-&n;d0%{=+9YIl(0MvZf$@2^n)?x?Dn1(pl4{1QgTPwZ*k;&^91xf&JC+HiA62 ztZd@ivO!McOX7zekJSx(*A+^46ufiXM+uSoC$wfTYHSR9M^8!54in1?6+8M$+42`!Z_hBDLCnMk6E}8lg7=RfgB-dUNPsy zzy*~!c9YmYN$E}jPZxjw+`4TWF3jWr?)f^7zk-Qg)!_bv!ZjRq4Ztx94+IfzAlVI3 zKjC3vS4!xcO#jJQpW_M?n}a14HcHyLZdn)?l)XhZ@)ba-hFEStX#e`!a7}&;pvDb;bQ1&>(;; zJgUWV8^UWaKHc#Md&+lytG`Lriw{8qc9?2AG4$HI5AJ~U3v~^Wu%R1**IJIKl7o%S zvF|>H0;)vwb8D-fg0J=UzA}=mtgQ1t;AW;65fChOy$3;Ha(?ud*RH8u3_!EZfA(x+ zVpwdbKm(&k7#?Y}S)Z5VJVMJws+ z_n{~M`ZYjo_Ct<5%#!BBPHj6>JMYuA}K=X@>ZnNL+eaitN9H|g7d&nS zviN80`1CGCL*<6>#j?~?GqA26P~`m6dG)Dj33&uq# zQJ+ImfarktjVtGBvV)=`Y2&d@r7_5P?qgSJaMhU2VvM-e+BoJi%Tfa%5=|c}Ee*+H77|gsXK8jaJv`)CwT@Cj) zeAQ*TKh_riv#G>?oFMq(KW4LmjLgi^V#Cq=lmD_KmBl|$K<_2Lm7;}XH_`s$zO?3p z?Ef@g)0dMQLFR$+pSU0(eaFQ9C!0qzUEdO3!4DmR|JzZ+!uG0mMn^?KlA;BBDQG1l;b~@PYs-8{4Z>B|B7ACr#wz@cz{Us3Gypvr(s;C}EH2^CpZhxiQ@M4E7z?`E zcrKCu_bz=bLQWz%`2idS5jBK-Ho)*;v#2rER##W!90O%Jfq%a3^Jk07ha`P{eR!Bq zy4>e+g#j3%YG8NAGzENX_17=)JF{^ug-{V75lSHyW|U4~Id`5ugu$#0=&5}TQ9^vK zE4Ro#35wu=QP9Qc$sCq_NK|SSf>;G(jkMHMl=r+>i5SvVb@i{Ut*s3WDzgP`NvaIA zw2=s@2weI%hUA@|3rQu;QH+&|Yfo(zqmHwXP9Rw`_~#Es$_9F6<$Bx$x0jBJIR~4c zT>7i-BG2JO8ltb$ElRmJv~Pt(M5qiHvDJ3qX!5{qgZC~WDyrLaLJ`S3BqZO7adjGM zY6n+|B`^gx%wamYbiLvwiOqH9s*-bib@OfneE!$JXX2|skZ)@+~y}W#UV5Q^t{644o zzyp9XCny!{>>q1tI8L7q_%q*zb%2+;nwq>khwuYS6nsQmR)Sh9(aY>kOa;-KG4PMi z_y36}G>a6JfzI12L48IZMGOprzxlw&O&Zr@h=~(~hfMqMdK-S@gL5ceIS(C6;PC@QYhp%f8=L#T z6_`_0VCiV7`d7lwk53D7!5vFRXw!O&bRFT zu&7t{%lskHyOvr|M8pL^P;qe(_S>1(RcsUtPmv50SU$>wQ&! z&N6jYAua&wP-Lr3K_VB(#&`B?65HC` z;4YVKS6qE@q4&N!Cc{b~Y=x-lT0SB-g=hgI;nGF8!e6sunrcTIslBa-F(x@pJmDx+ zqXa8#g{se{Mj5G{*H%is_pjfx7q-sBh(#HuU%CUIXuuY&ouHehW~-JX3*qTO^EcVq z!Zt&mkm;D_EU<KYe3o>^!1KEG;Zx{;)dH&co!jg>XnESlHMQHW4&#(V7|pVF?f-8yMbTxEhH^=)n48`~pD@Y?Nj3H5 zNrF1e1VH@bB9X4Bs32Y>tHwZ`aIe63ack#Q^d3k{kUM`KD=B7D8k;bBVQfoh6b1y) zA$wqiKE&Nf?PN9V3A?<&g*#R@-qso^8N(>m-PczRQBc?~j$htV?k(?enUMoNfZwsA zH9m9xZZEsjh>C$aUFyzw22vda_Sw^)XxDX(r(I*l?IuM=Kg!R_9lNmvN3Fz@2MOCX z)~z{KN6V2n#IjG+?N{*j{o1MV0XaE*#bOU0@xxIyIYympujbNqRZ0ei#=L_|*7oQ% zT#bi*4d>+N!rqnDQpm|lV|7_=YM_6|O$doLVXOY;dNnEFsJoxY`UDKFfjxX1U*A|eYk!DCRkZO#b?YGEr|=)*;I`h&?>w%VYaM4w zyKFy{H4AD6oI{=5>lQ7-2Wo!Xr8Lh*d8Z{|KO05FFiBbx)KXC(Gfh7du^sswNG~aL z^9v&@Yobm2j&qf5*%!}grj6H#KTk~^#~ml_$V5>4%Rf%eVfJA$PV-=jY?@Oj`(gc< z4;N`c1X{a2e9}nJurey@rAoriAqtTvCd!=_9_L8#^XHQ4>ky(I{+8asDy8|L{6jY8 zil5)Ti%ZxQLLj_uO;#TSPPn(NjhTbP6BisYfMVr9wsaJ#W7t_68bWK!jCsOc(r<)M zz;94Tv9mw%&?Lz0^+>t93tiX}^C%&X?8J{0nRCxS9ZOBzLbNjnH?0-1rA#q8L`mrF z!`ld=sH731k&BZ6m38VtBCYiAl9r%mkHN&w{E;pGHqbU9Lj%N^I~IrTRuOp7d$5K;_m=@^%2OkCf@%`}eb1mzI{+{`_|#ywp^+5J^bh z3km9vlP}H<^mKu7^Tb?72FJTORMH8zQJvu!Yg*Y@%SZAq`0v=Vou5``zf0r#BBpU! zN;oytnJmP_qk}LyxTS)Sh+G+q(?aqfG{HHsOd(qJ&{)A;e zCc=SRYj%1Y$~1k`jdY_-WyVQV6++Qr;{<=#;n+3nosoNqYH-E3YQqMrET!@_|qzczU%M6DVaUvm6?%IZ%eZjLaMvb5l6UdsHQ_3(;bgb48;pH z#D##FG*n?R$oPqi_p;K_$Haoz1ZeT}V3LMD~HJT=KGoQS{lG2O>dxC2Pa zv*--$eeV=Q9c#CLdQ@Wga#GVSMSxt;SuJ2Rn|>9@Qh zBkh&|s!LK7{gglcp3BRe%w}cz;bl>e!Mx0?1R9*glTJj9^~3}%71eo532)-7g>(HB zZ2ECGrQsUD)ytVzIWRG71A7igGcM{(qD+kucPoO@e|WS0ZZeJ!Yb-t*KI6UZ)Kx=S z!kxF0Q&I$Q*oufmjz_^r2cqZ8moKMOETMU#rlrM23Xk2uXbGl)F2ubdt5`Br@~sTM zYEbz51K;#aG&_dpztq){qHqhu{Z^3^J6Qe+LzYgr z*0wg(Wh^4Gn6nRsEezF?<61E5!!gpHcE!&^17V?x5pPyB!?I1A*|Pb0_rxBQo5eZ{ zJcOD1)g%=<-cAr954I%i%ci+ijIcRm=qb@?GgMV}0(DimPiN8ylhDGE>pZ@Vo?@ft zyR{U#LnbsW8yXr!!*&v`UshB5f=V6|{ic{Rmf8yJC0E#@bZB>Gb<4d z;&0boN&Abm9OEHH<3Wu+x;nk93!^#R8kK_v`g4o(|2F8QU#ikIpk#qN(r;OZ5zX|g zOw)NREG%ka;)hvmhfflANT1+`w;sDjw;F{M375%a&ofr{rgAH z)jhwbIdB<8?0B$WK%Hbr0yo+r7@>Q=Y; zW(z^>D^{@$9M8^uzIsv3998Zr=T?Fh5yB}ciDLSM2j=DBl~YFG%!k)7>0Hm&Y$H!^ zZ}_4dcc)(&U4@#oeT&WLjE;cU!df6$F$H5lf-g z8o8)xZGvP8@>LmSG;^}E2Z~k)wosx=5cSzD2~V-RX91D@k-zUC$iD=tH9Hx5);i|l zi7m;bL}>+Z@_%L#B^SXn<(wl4L5&o5=iSs3jEs_=YiaxFgf)&<69}q*U!BnSCl+tN z%LzaA|7~|kack8m!>i;&Rn-w{Y7+6Vd-p0(wIF2zLFjcwa)e~b!<7iyO z{(Yp+vuV1$=Zp=>{{8gWQ7#Wiace`%q7X}Z z(I-CsI@%W^DQ;*8)Qp1+41f@bMlS)OB$9pzkMM(`;54UXFvhQkX=t>Yk}kcv(D~-Z zu1!{4YlWb;<9f!Ks-moH*_1#Mq9v<$d^aiH+P#FMTasA*w6hu$8>6uvb%hU65Q8@L z@X@1yw=kMUUETH8^2Gf*Lc)WrtgM4tzUwXqZ>Gzi!#KgA2-;$qceTAW#=2W2Ry|ym!>yu;%bnOs(qaSx28vbXq8O(>S2D<4+gME{2mb!3Wfg zfHQe=|3jZVpqm#O+U7&ehY-N)*RP*rySBc0stUD0XZ{8h=~Kw{gpoc=kpa8pBTSJq zNdsDI`p0l;6R&?D6bI-r3dZGi9(ERpK`BYX8}DdUm+g4`06(?8MVpoYGK zYQxg7k@oOmBA*1p@Od8On`PjV29$ZY|BQ`gCrYLd*DQ@eXjWC^)MwY3o6^S{TAu8@ zVQ&5@M(&|YgBm^Y#=;o{Xm)yfI)UhFVqfOIQG~M_WzLYbc&(YMG5fuzlT{0Q&4N)r zff~2>$f$4V>`&v!k~G!%pEy zxR?ZfH*YJBXLxsBOrH0eX=y;3>g;tInr+15@$sz4mEDj+!wfsWcK%}`0hb>MJG{iA$u?tf(MivlS5_>zl zz5Dm;XB(2#nqliAjk5YI*WNbGhPE~bZ15c8`s=e@E&f11Xpdt+!7>_B#5z={f0EUb zw(zZm;b=G)NR`QVqSu!-I@>9G%G@Gd>BeK|hRY-9>u{UjSy^ArLGgz@?QLz~wG8Q5 zOa;wUQXkB$)SGYh-SZKnirq)K#=M2+ke{F5=s0zCf3=Ur{n|V8%zxv(h%pn*iL!ss_N6~AB7j;PVsvXpZR1C10k--+so_NW_*|l z37`VQml!HqF6pSZ>>z9cwk^lvA=W1MD3EMauu^&!MVqqT_B!&$oa?e=94YT9E5&Z4 zuAA?Q>s^@}d?XlGh%*yTIOWcZsW9@=%`e{)Q&)6|{JO~TxM(hXE$P^OxQ?KFCfQh4 z^L)o2CEH_usQ>y7A&o6+h01@uD8|4dU5A$GZP5KA^~b7w1Ut^5V_jMPE4unG15!d= z0w%Hu$5ZP>3;K0x1z8NW`tvAL3dAeR4oePe#++U(C@28C!M69xB<_cnjomNmDpksA zPAlrpKsH z+-(E;1yMx23e(M<6Soy0Zai{n%RvlgzP-SjWfeP1PPjYTdB`;;VLM^?PyXV+FzeJz zT)Azjm%R}ic9-E#u>l_yMYMe%s;e*m{FuK@gYoZb1K?Z1iv#~`)QM%w-=T=IQPI(u zb39mdt1d+yMStrlIlkrAtaUOT_rKAG|Me#RPf&b( z_5X`l$p4SOIZPL#!`?qw3-MhMG(-hSN&oyG{=>M}C!P47|NPm#joJL)|4*oVSM!I< zK>Ullr%q)P=Nfc`u&Fqtz+bsKG<0~&r@%l^)tg4o!8Oc@Z%ORO?*dVT!x z0o8=J1NXo|YU)Cp;W|ui1M5bl(V+F#DjE*GqwRww+H z$(_=}jN$e7hqSI<_20Mk!R3-~%;p^l1j&@YKXpdg0QkHUbbI}h z=S6}XxFFFCVf6IZ>jnk|W#!>0H(~;qYD_{GU=yJCPf$&)AoL5?K1hc<~Tu(^Y1MoAAlhmj_QUORKZrp zZ{EHwyY>A(AUa6uQhFvoQBUxu>;gpBtOy>N2d@s9>l@Pq*U%Z$DPO{T{bp6WebL)`KUCy&YN! z6tamuT(0XYUqR7BPc|6?Q09zTi>GTIEf>U7%+Z(+VxCQYeboZ6P{Ilx_Uk8mbbzcT zD3I?oKb$S9w385b%@F)Kf~1$fn|$^SFaU3iPhnJ0YsF-**^YQcKcH$B9j~E+&qUPl zM?Z!HTm0-vy_-mNOFabbyTjzw>_$XMb;0XKGfO|(Zn~#1Xj0=6xxd~-AnB3!fp7`Q z%2Hj#;6zSF#`8NE<~{7Or~W#Z(qG!L1Lb~1Z)jK;)$PK~YD44#GfuU%Xk1La+Gui* zGi~0I5@na*M^Z3nI<82O4b5o4*OW+=Z~|=I$naWvD=_+tMqHpHng=pctmP@T2 zuNAi3z4+I^-Wf`+$kNRVxmLZ--`?HB_12~<7yZD% zE+Gm18({nb+tK}<#mIYRy>v0m*|OvHJ#A$CWw6BZaR^G4xhOz@S+gD69HSNuKg=f9 zs*av!+GNH$&x8476CfQtxffYk*4S;Z;$v)EJa_rh>X|(lEt=$`K&}x=mve*Dpu`f1 z9omKErKMMox3cbxJPcz(xi;c4n&1fy=oP>0Y~JE}_nrN~S`kpCtk)ys5Kh2hWI;W#wNly&Ky*-mktSSKs4G@mOMn9oy+FF3#6{l*Nk zl|$3g^Q-qO-5j$;xNDp{*&pxby`jJ`7oNB>zeOgo$(qs=2R1OMVEdB@IHIT5Z%Ufn zC2|W|@dli*cidUNEj?5ZRrWd+RSYlhbXS+sL}u9N+WDVcXeoeXn#>l+LaklL=3OQ z7Ij!|-D8SdGjg)g+mPb#OMY+?oKO<26nV=1YHu_=>(4piqah?#{#_esa3aSBApC$% z8M*gLC`NObC=l=6OP7NBcyUw_e*dd*x{rawC+ti(vLUqxMeWm!{e%P=1Y#CGs-|l* z@DLEl!!rlE5j7nTuZ_R&bi!^xCC>^5L;jRng zyH>N_Gb2ljl-$~ABP@Cf0;ZerGybc9`;ztg|KjZ}qpIG%@8P4UD2kY*fQTTH(p?4! zNOyyDcc+1>nJ!0-TzGQ7@1GyhwPL;n35wThfgT2~k#0nw!H& zS!OkSu~X9fliz82GyGZ4`e zn%1*6=4JXyb zVuPqkHrB(r5V%&Lc{n>ceaMjmV$grNa1hL)EYSLXw%gF8%V@P&i&C~YQ%ozWvUqwi z!8=>lI|r~s$kYIbYiu?_2weX6kUZ~0LnK8d4$Fh&_uPM9OOHpdwg4d(B4v~_cFDOY>9jcNPetHPOS?6`L&c}R z>H8D%Ir#1YP&0vMi|Uiz8HDBEeS$!|hyKVb`StOEYz+!C@RjoZWQV&)I6`QPRS{O{ zy7uvX(0~lhe@XCeGS8 zJfT47SixaHp?LuzcmBT>@ze2mKQB-^rLFA>g`Qr`H(5Vc)h_uDSAxr6avYaadtIFl z5DNfQHSCH#qrQU>(DVAY4zIm}GxzA|C|HQS)jgYr{inJ_V9kS^b^_F|@hmusfNTN` zq8{~I2s!G1-{)!V1mjgJc2_-IQ7|RG#Jn-E-wa0g{;c^Zp)qpnt0QVHC`>05MzumN z00}tcF+J*d2)P^o{s3Z7T%4wzqYjoyi1Dn_Ar>Atx*$un2 z;A{qVM_dIJbfo`V!?h6EgAOC%xU^UZ$?Dz*(Sh)t*AO1EKJPlwC=bxtRza+({@L1hfzD`vpW>+5IS75g2i z3J{r|I!Gg=Uj6q{Tc86s68psa0U+P%Pvo<5bG1%q;?8!^Jb1wGI%=ChKlV&X(p2up zq}vD*Y2C^a3S#C$QWT6l9h{ipCnJl4jNl&aB}Dqwf4fRx$d-vIT_a0Hd0rIG{iddi z#w{Ew3;vd z>XOI^*%uhfL!WSc(E*^ zt(Sn4043r=Hs~7=i5LI=xMKk5vPkEix_6_F$CrxkBbPYM%*?v^ft?5K2T*s4-=Se; zTyqRHmjPCzZt)U+9_y_7c=CH>8u` z67D|xyZdDtQ^g#RPaJMP4uaW*9M)$Kn%kaF6uT?`sF#K6mGVTV!FO|S4;UG76$0>! z*9iVT#rIy;MN3<}uFahl>xc_sfvwwnO0G2w}(x}tMTi_w^ z|H*yIGg7U==5yHk*A=6u6P1-lJNNLuK;8gcHE`RRJZEtTE zK{M>Y*bVJ>?~IV<>ZxmJ&^wu!o1acM?g94?1mL#N zy$7P>_dkiIXJQfzsdk6~TU*s`bQuJEK#=o42Ww~;C5T=g1pn^i@t+;Wfn0Lx2J4Y9 zR+BG)*jHBajKP77@C<-=e-_R2hKLApV1fSJkH><7+Kb&uP{<@zT!SBJ`C!*K{|csc z&CcN_r2!xXP)Q*uBWwrGBkuO)lBz7qe^QtB&3q+*OQ-zx8tS=-a$K6ilX81~1nLFsWq>&ee@{87djE4+ znEWOCXN>tkMrAXAT?|%z_t>1emV_@oM7#DOq|$T~QJb12EK}AT(2-vc6==BJ-vj!Da z;uyq8bS-6~*g>N!NLcB1QmZ$LD9;GcnAv-R?(f_EJtqaE*2gP1>|;*uB`thvg`5uP z@C4BO9D63Hmz=J^yV{7Ooa}3C_pIC`P$S*U4v>N`^y;E$!r<+{e)doO>Z>)H}ngz3Q86o3gOEYRWqZV~!*-u5KA z{G001Y$7W9vAmp1{26cwlK^siq9Lo991sIn8Q@_EqtX}Y(cpF>F+6qwN9f!SgRegD zHGrN2=oWk_zY|gy`l866Kto06R6zcPw?VH`xBz9+7)pO9 z|5o(Ml9KDdwqaysgsz7#D!Kr?U;}PGkdO*CGBgYrfIkL}|oN7I=fJqq|d3@|qU z&ClxNy+zg6IVY%w2alz4Xzq$?HGO!(e1y@ z4o_QjrTiJZXtk}anclEIt@mhwQ%UJ-baaO<6R2B- zcF-hdlX1YPgB2keTB5VNp$zT)0o@x!&g2u%G&T8QlG7ikib9+c*s9fw-Z-SNN}3Ns zY;0_r83gY^ZHWGO_M*>;i$LH_1|%-l46ko&wBeJy%f!@OUytU1 z_hJmZ)X^Cm9sT-Z4muZUm!K=rv zVp<3KdULh_zk^CNSW=`DG=0F`VgW!D`Xp@TqhGgyIFba-(q2V$J_T1teG#&xyH`L( zx5NjBoH;C0C{aLc0r^E4Ov8ZwfJ^>E*<`dxVOtYAF7Wb!;)f>tMRMAt%J#j7o2YWy z(g$c5dI+ekdC6c(aZr3Yfj|UyNPw4^zN@&RA^_KWkVXJI6Ka*@Xl!FGtzYZw6EMPY zR~NSF9S+N1P~F0=L>QgYz_!F(o0Oq>eCnt@AVHH#53q!!!7}X(XGJ_Xpo6dUV--!h(rnd_{EUb^g^QFNtduch9Uplb#zstuXBLAjA@bZpXx=pKRzY%noLZ> z>XVxBRJF+14g^U{wrrl%m;b>$h`ZMcNZgumj;N*4taMH&B!N-~&G~M1Vg&a8{+`}9 zr;vs6qymZDU)0j6;s5)GTEoO4SLS8vpQ-PCA{3_KA3y#%y+cC>05Jp!%PN`%h4$rw zx(E&;ShoXkFn~;RAv4GKqX#iuEg~9#s;1@X#^%*4TwUsy<@7sace2oPdK4A)l0(_++{f2mBsD;KdZy22Tt4HZX`8GJ<|k2?0_MlpR@-wtz_wAm=j$VXRc; z0uV#YL2^`KyO@ z%Uv^d2iTQYi9cqWkU)hGakQ_u7r+jI-&IE~L=g~TfiY=HMFn>S^Zom}Ag;QMOS`eN zlSFUFV>R^yGD0Z5gv4_p@q_{s(0AzU8bU^1o8=7AdIqRMSx=nf9~4U*7?;OC-co$RE?;P2ar?b)C4S<)erGy!k?>>(I)D)81{SDG-`3 z$rngtc${t!5*jxn;i#FaK?6Vm?#x1aNAt@D45(``+IGfFTYEBAI`}J8{R8rBfYQ66 zc844~FO^@u9>!ne!8IK5P%)z#wY_TG=Y^vPlU{;jOy(ucH`F$!788<|?ce7Ad2vG3oG|H@> zEd&-JiFh0z%?sSHJ39vVRz~s$JsV9!q^P$^#nF+&32nwO&(hG)03>`^!Lw=e&@zPf zzu{1R5;OqA!jyqk51YtDOREcbqu=qmp^a`}Fb~KSEWaM$>;jDtkim`ZZD5}MfR-BM z)M9-=7c)kR-nil-ls$nyU!T`#8u9-I7nZW1TMCN0tlJ?&;PUQZu4X(|tk(Idt+kbg zmKLC*Yx455+negtPG%OmD$&}k#V}n4{Y)muB9IKC>AhJK?+GQ6vTr0sQ=nS`a6HHg zXP%+H10l|H13mUZQi^9rx}fQ^{fnYrics&@wH{M=cFs{?@c}6Oew#cPqZIH%Op4rD zSXu&mv@m06OzlH5d6V)*Dfr4mivRNEz4;HO#{df%17{I7E2K}Fc`v=t#^)gBMZs-? z6WcS~r1W&cJ9k!o{p!lo5#Ci(`?C!62RdS0caATGe7?G}5fT#2T(odP#rJO6xNBqj zJ2!jgT{1Md#JV$Vp~2%8bSoz|b!M_6B`WSxCj}nvtx|DP_`?cfbxoNI=J=a?=B(YO z-*vw@wb5^$s_zYbN^I&k!zN?_x%+d;N)LvU&YX@h=dzp$5z6xE62=I)YREp<+2=}r|iGIJpru*QmZ=+11yskjmat$W~2_wR^l zF)}d$5$6HJkDe`lgJJM3fSe~V^vNtH@Wg>a!3sPEsCyKMWMu2404IgqY#6plH@{z) z9yyc_K)8iO%2ZWVb!l5bq6rwI1BLJ2z6J4fL_~zohYx{=AvB8SgSpy(JoI`c0WF;M z5R>+);0Y;9??Gh%$%ET=CmW4$Arud z<=1N9A5%#vQf1$gvp(_8H~f);hk|6g$2$JePR|iVkB}*o`Y(sAOG9J&WmC^gUxeW~ zE-xMM?)pwD4Rl-Ytw|%d@GqBH2l`}Q>yzZOu^ObzY?F`2`)V0N#X{c%bUSuX3#TR~ zf`i69WGisuSy^qu8459Dvd(*=)ap$iTAm5jIH1Of;$UA5N*Z**XE1{%Gh6_F0D!%r zr3tYtkugew-(fBC^=q_+09eSPY{QjS;h+M!LU3BzB4o_)JIOFb0r==Z41wV=ppdvi z$nxG8TKIziz<`|!obAE-(DQ{_fCy?NIBbUoFjMK3m50!UMg+Tm+bt0b0E9c5n;~KO z2`3nr!`jN^q;%H!^KUZ`m>`k@#C?NW{^8xbxggL&)=kaNLnwKMCbq4kJ!%PyA_RTK zR;%4kpU?U#p)pvUrVvjon2_<$!__?%10sD`S_#vyup4Z?ydV;! zBwONTIou{qOyez7$K3gXqEfV$TflCp71yEcq?P4=87a73SFvZI83FH3K7rYk#YM$0 zKv7Qg;Bc|`I(tNs4-A4Ej5&;odUpFI$vB1o6Jbf(o`WHs=or3A?LJGe@w+wC$nQ6- zSD~Tw)b{kFT}b7Nj=<*0N<9-vm<7ZPbBcHL>lLyxDpwMu6S8l#A4Hi|S??}~GC+|6 z6!zY9c^Zwz^HQw3{RmI7;uj$$fk8os#|JhP*iF81ZJe3_6wF2_Gv*D<%+6ZfS*%Iz zt8N|0d6|B!1V<+@w?5~jNT}s}VPY`2ENjP|764BEb}pq%)W_Nc&3G`r8 zGdlGbRqgPP?^)Hp-q}Fb1W$6hRUd1rAoAC>pj+rb|Ti%u!8T7`_2t0YH#u*OD=Wa~~9 z68mm+}9ls zQ}dE|UEHi6n+m#DJNxt9*2o^L$my7F%5@QMUo6iQFZboOVC##`@JW8&(D$_~IK_PRCD#*gU|EFwh7uEMJ03rgQ0wHk(B7>b*uF`r4tXu(RQXr~{~8RvZC*9t4a-kj}ddy?)UJE#B_ z(qtitpR$ue^u1{#M6j5Hh+uM~hn}SrHf6Y3H;XRlyz=Q zhh;isvFH7)jGkR}F`bQ&S5mG{&P@$CCJYR;_&&)!Q93hsylXjpi_kS}I0~e4kZ6~d zI?f88VR-?ORUk^KQw|5CT{qqP)#?3v_g+(%R#Xf)&+~ZL0WMPk;Z)+0bOo?{RY3I* zNe*yworv&R=<(L7v?ik1JUEX&=)WEBb<)kKy!nRHXJ~zvf$IK@{jqh{TXvJUOGDHa zq&=vLz1=MGOY!mT}h9|DZ4) z9C;(vkgr7-Lan+Rcl}^vx38l;*+R1>kum3x#~L}aGIaaC$QeR%bgUu+R)rA*+c~M2 z4bocHV#9|^Mag!4U7~tD}^ZNC`h}QNSyojA&`y=SlGP}hrKP=WZLyy&(@7bv3JJAMn!Cm*mp`}XMI=O zE@&K|>hIe^V$m5eutn*~)l;itt7({bxX-tjW^c zg_Tw3ZT;1;<@@vP`n?}Bz-L9+)os2lOqQGM zEQ=iaZsF6**DqfJzW~Sr=pBJ$S&4m#kerN68=0D&{i#4aP6ApCeC~H-?JD@GnmV~l z8&41GyD7+_gLN$bU$Bh`b0j{G5Ev_WTdjQ+r3yKNVcV_Tni`K1^E>LSSGsiX7N83i z^rvrQ@x%nK$Rg;bQJcvZ9Ad6QV76*tp8rPl_mTj-=z|e+S69dE={BwuafA2~kmcvk zpKq{HBgP-=qpLymhq}(a&j2b2NNfQB?tnE-cn;RrpHJ*rz3jtnBvPf^_F>MOvxZ84 zuN96paC({{9jV!hkHIPO$>2Lf{R+b6pUAwv6`Szy z6NjsF3E6jrs0PUsx_O{h8Za=4V7dC=)gSj=xv~ufEDyjz4h{|=yVCH+==%EKBiK+J zY5K8Dg&?H(?`jc<(*Ioq0>S>@#Uc>DF8ue!9z|d%1RjmR5`n}P$%X4Fbm8wNMtIf? z@2+x_@PGOMlZn{a%m=cg0FHe3?gIMe@BHuYg&QA9@Uj%bDVq&4Zu^uMVKDLjI(Uyj zD$x~7_V+dI+~=HpGx?TIZpgUe=i9|6OL5-h*{_7vG18EJjYkwoKQg$fzG*&|dTzKF z-mZHTh^#jXRz?KJ#{L4_7C2l^H`Q~ph5avZvrnA-yv=5)Y8yl`@@BSzP)c}x_F)m#BWoL`PzWnzoNL~Jt z$@qvRTFHs1Ucovd5^q3~2O(v1g6YTMMqXZ8y8m`y4KeWsP@F_-0O=t;gidn7o z0)H3Ik_g3swL9udx%4q?8OMy=tP0)c+#@mB3X9% z^wZs<)OJde0Sr=}D}Gh`S~&q5q%}3?qN@vRwiwfS#wOfYH14#3%Gm@ zVN9u>&mpoeUA)+) zVJcc2^H4L2EkeEA7Up_LNJ&{jZwFxR$@!cqEOXD~Gk+K5ue{SY6=PM`pI})8^V1Z5 z4*c@4-RtM#Ht9p7d}KE?Uqbe}vPx8xnsj8IJD;x2@7X$e&B?imTsj%{+TglU_31V) zZa^cXrO<`bXgn*f3<_lNtD%Z=FKa}5zoY@9-re0DAibO<{4<19f1j6UL}I&s?T{B8toXVG%7md+6rZ(9lipn1MV2*?!TasNX?)nsE1tI)w_9 zekdj;vg3OVW7B9gF5ivENT}RxV?vd#!m>C^UTDgBbS+RC5Ys3n3{X(Ou zx|^plOzflUQ;T2Il%l(di#xPT+ynuLgMx~xwCP8U$V(~|twc?8P^H@ot8HOR?IH%z+_(P5vDmpUI2K4Z&vSr{sr)*#(t3L)P) z4EEc)OH`fNW}BmK?@#JAd)%R+S4Ouw;ID(JM%nR5t=#$Md{iXA(|&42!gz04>%fp) zx9Ql_Ly^tSNZwA{#UVp_;n|I(z8^WH57#6jqWPUZ|99|@?)*LY>29g|g>#rC$1!RK zi*Yv7P;zSxyMn>9W6?aq=jFoO${blT3u=m zw=L2yU>-8ptjHbdIJT2HrhL$u?r#)%xOj!%?PQ|pDdtsO*M+6UMW{IdCE4WS@+ABn zxMGJvtbz8m;^!s0d9!YBB8MGqjNs>&byONldo)=nl0x7$KVd{>VMsp0*fJ1AP;qW( zjPG@zGI``$53QYO4!&MgZof!0TMA~vU7B5sm|_Q`l<9O5XD>=KUqZ80Y!!1d9S13* z;gvPt*Gx7)YvXSWd)5^$F!<)j-=Fs7WK|vx&S6Q}=yr^>Gn(61N^uU$t{oi z4O5VEojog`xq&EJSWdy2$xE5@Buws8y6_3V1a7l6Wv{4P^~vtKO8i6(r-d@{ty}jQ z82n)k=lx#8vBN;VfN=pk+l#Uiguw^*!Z`Y^o=W9?h{88`C4DJ#3`dOFgq!p;pGo$U z<)NU!Ei4yFvCahI_sLl+Vn<&ED>hKGKT~h^8y2EQ6X=dH=scLkOVihL6Z-J|708mp zisM18<9jQO>P8MHk3_fPT}6oZt(xGCSBuip z(^Jk)M^~IXcOLT!!EF>vdRt$t;Jj;<{RkkdCdN2s^fahbJDI7il-hgoY!z4cy1LSH z4V*g}QYa-S-x{CSip$87;@8ZX(5#!u?fzFP zlHyqRNkfV^JL5^mu_@sQCK)lWk}+7omkGPJ$8p?YC(W4m=Cnk2_O=ouU^(Uck?VArOHYF1VNA6e-IaB;fJY9L_^CEL-nLUSXG}n0T9Wlx96XDSHq3_NV ziw2X_G*E^qhveLd$zcmu8@tOJ$)>|07luM zF6lKZAc|r%W--$ne&g?p9KWcdEn-wvk3!w!t0vFNI7@fRy(&()I%g6-f?_twyxHG! z?Pj`Hs>=Hwcf3bf#50Br;>K}LJP&W(CaH1$E|FfT>-Q>d^XYg)aOB2!%UaxY)1ooM z+HJB*Kks?-3+DqGEn@iB@=%hsskxq;E)Qlz1-!zFg!k41grg>P25I`Z9AwQV7RQzo zjn7*iIp1}*Jf4GvsWD?ob|$1Iht6FrA^of=Ww5Gx2WDp^@XeO z01w|w#K7>puUMv`8!AqGLGJRC%crPMj0_$pDdXDb%&tyHFwh;~P1i~qjCCJgzQlsT z-%y`|oGN@@Uue%%bPYowSnyk-d zkw%0*aV^!Tld5yy{9;;R*ciSOFDyfR&4%;o+;s#*6`RC{r#;5=GaQ~5D5!Z(Tgr0h zB{h;x+h(Q{nwvx%mdD(WKMT5H+S5&NKxN|Jm}DT$P*7lfOQq#1L6UZ<@l=nn2(H+k z40gxFNYbF_Cxt#v6N-8Yc6z>xmp;Du=n)gLsruq^p<82r0ws1=1Y2s__>RZSewyIC z#JOlbV^gC}jhM)5ssS-M;|Y>pp^Uq08Cx7oD;m$c3J+S9LnKMYQ2T3kb{P0v&QpFq z?uut!@c`hH7aFZ7Yq$1t-s3~3?O*4;7>6UdzmLBwwQBZn;FvIzvBRWWKV8kB>9@Fz zdtEPw%-_vU)T7?!ItJ%kQ-Gk+D6d6CpYzBVtAB7qW%Jno5WdA%;)p1TniY?>k-D6@LD*NgCMR zHWo=3vF!O~d{-wUz}QA*D*a>3Swm;j0p|;vA7fjLms)fvO@eEyBK$2hKHVjHxGYYj zTcvZo?=Clu!`$=MLd~#V^NCmLE<3B+v(x^0gc-WCNlI=X#ol*QKda8mVYL2GPAa*2 zwSToIEn;b8rn4l6&zUe}rm|UB$FqF-Qmcwv9Cj_zPF1zUXufDjJ=DSk{KF1tW*F0!Vce_9ayk!D4PK= zUWLmIkg_o7?->~ALDfm!)EU9y_Wep-NZ&{8HOH*&-WXN2tGh=Yq7r}%IzbEdA+!0x zm&o30UeCP18=DD9XN*iIikf+=1aO8XKl9qaT{=2wVW$D3Y=esmVg9?~my!i$B&hR7 z^OLrHKR|B|Y~sR8$j%^G?(8n(k#LPv~? zbnI&4E83)9?(=eC7<5Q!*X(eQCx~OWBN?Jz|Do0KamApb+NNUqf@#MzCEHBNh?Q_lZ2xQXu&^2i=N*rJ?f6}Px)7i>%D<7HOGo=Ndw6)L z?OYPaKwr@}B8)=Jr#z;wJ&N66LQJfd?2#k!Bdu@1*Fz&$EDA`hZqkX_z}n8w+f0%n zw?Y$7+hSX+>B42tH|xLb@n0OoKD8lHu5l7|=w0Uc?nZ~H!aDdy?I7-o*dmydte zHnWLzPDt~EmT*nUoLz-=B=A(lV) zxTxqYn;3wc9q6EIY+J>Z+W8)O@2snZ72g{5a#)0dQ$X#2B>$cnw_b7Dc6qIj!Q&|Q z1F2bJ%omu;Y_Br}FJmDUiNxpZZm|?~jByz07v--|M2g=odOd$BXH0jx{N|Fnn=NXW zd@lbh&wVN?mYyahSr@~s?JrRwlS^7Vzt+SFx8C-EvYdmH^U@`4I}*d!{~#%PVl=$r z;k;}7Iim1I!T1T+gu8p!cVtr*O&~;*d#Yjj1-O2U#o^z}ErzcoNarJEicP8(Y@L6l zaqA{5RcxD<48A~ZRA0W+z-IblqV;UPU-7B(qVyL<0kPrv(+LV_)QR8W0ZaYuawTjr!)4)TA zJ;kf5>RfcR5xBe2#j{t%)!xH6I>S2FP)yWZhYXz&)5|-&=Mj-j9W7B@wr&ay7KF?c z29FFJD?Vj;xJy>dIP5K_#IVe%#8miaPuqP(d<)p(9;vgM9t)u9T>}a$PAHK*w-*S99!kAxp3bk#JSkml+R--DFQ?*S5AC7k>0+T6^8dFkj`jI~PI#DiyK1UL*Z7I#~yIE9!;_k!|q@w0i zRiXSuc_7uNs8!6bn{84I7g!WtUo{+>b9M5@jJM(3ST9pN!wd0@|VcIJTgr1C13C+6?f=vh;{ zH^Gu}l%yx3Jsf^UZI`)yQ@E?Ug)MEfr5%SO2D1bK^0 zs6iBJq?GxsN9?Rc@}n69OH02}pTooiITu)3fuZ(9Q`7qrX*idz`DXA%v5i#` zJY9wHJm7sR|Mc8t;8Fj^hQ$L}5= zLX{Pl7_sn0d>nbCphe|C(C%!O*tZm-GH>oug#ogXm13Q`$CTLEeo&SG-F<_L1)5N$ zZmX}ox8{y3d1TglQvAVvAv~NAja>`;c>>9jPXqcT-W3DM^=U}|-ra;bbuP1My5VR> zU#5|VFAIA|QFr#Ki|o%Dl1Uu3mtM!tdUIzrNrd(4t&E&e(p;i=?pLOqH3fTvsyvlM znd#}&ckjY*94&3_?~U%FWC($tox@q5s0eX>H%H+X;DB#!?nZOkP@=EkJzRmO&^M4| z0;&uK9KhL<6E`*np1X*pr6qVchlYZ)p0;{pEZ92(zZ@5r&GOebLbk1)9q1I2n6Oh* zi^|GwN&1eG1fkagL*YYr)Y?^fI=XGC;}UB)XWl$3#J$17 z6_uy-y?Jn$U>HgT2}DA`v5(bcN`bl2iPyRCSESQONhd3nA1{RtaR{#h3gq|cNQCTg za!j3VIrA%UyKPU858(Z6aB(3#xdH(b8#C$|`_KRuxBS9Bx*r#NJ-4t> zt;U@fLS9BPFmIp>coiF)m`V2{4o1cY7*^us?A%`&1Gee_A%V~bXqe#g1EP5((B*;T z4TU_Q5h0IJoPlo$luyZUmWQAvaf^kL4(<&4Hj%C;8TFHdnJ^u@ z>NMG@?0m2J9-ndaX+-)+^Ywvm3E8jY4jQIUf@G$OMo5;vH`%k4V}~|MEIy_gSJ{;9 zp*ieq(z~UT(G?RdVB;N0f_|BxChw%QZ8!ih>J*e*8V*>wRP#}YwGYDNj+YWWIG zq=0!3>?)vT19=w24WO$6qA}2P09&C5NffXH%>_7QilP4@-(ej1G|-*t*9%%vd;^h& zhmEZ`^}W^7#Y>)7vcOg6aQ?nNSCj-L76>UQg5Lp;hs~tl*B1#e8j>3Hov8)o@XnjS zxB}FBFprXDPDC3$QNu>z?1Ogjum#(}<_z+jP~TK=V70Kw$;wja%LRM~#`6T@;orK| z3rc-ZCx9CA+n_TBS8?ew%v;p{t&3l;K+!esDETEPIiyysKTo``?e0^y}b70T89_@;& zRc@=1fEo(ipJ3RS$LWE=NU_-{HZQdGkPB;T64l)SSAo35$-fKIAfR3Vt$GNA|4Jdi zQ(Nkady}1Q4%SOUtdAaDynGq$F$0`)WiwEIw2Wf;1?xY4>`PMt4@^czhT1>axk4hE z=U}o9v%iE1IgXxnP?-T*Ufrat%}32#)XdCVK$e1X3Fyr(|VbfsY>E-X4-wTIU#W+^UgDhGHo4Jyv)dN zsQHQ@oAKzUFWDx-sAI0$w{KVX{|2f~WNr4$t0A#KmfqPs*6##|?9V6>4ABg>wWpws2kOz7GJhirOkN{RIj z8+r1Juv+ayv?^h%#8EMB4RWsw!t7#5>OSXog6&<7<^JZ6C+O z)06mSwqE}rUz0}$rSDTWQXC$J9zP~uV?6cq3(Kq;(laVjv8Dr#1WEss&$wC3*H7)i z=C$zf(1=ar_3OUsG4*A(Ro>3g*wD|ByY~EUz3Pggd3^Q2(FS8JnJj)3JXir8bm!GF z2V7Z@7iK#@$6ZZBim8Y2+88tikinAzg_9XP+6*Q-I&lSsFGXTW4_XY8QWeIjAkdk#hKB|<)Hs`2F$*ARK|&W zAw|y2?```Q(vB2q>}Jyp;SA}!zYn3T*w)I4d~B0m*cF%BL?VA8Vtl$Z`vC;i(y(tt62+Nl~cyvyYvCde*RIJ`?Favf1`yFnVc|gs8SY>zJ z{>6(cPHF}E*e@_3jq6I*B1tF`;v|%IW;-RyJnz z=BSxi)EJNLf)p|^E;jZX`hih@iH>%Mm;~z70#q{r;`ga*ISousI3&P%3QU)wgMSSV z&)?U#t*HqgoVWo&RBDHTS1`W>Ec_&g6O)qEt6e$S*#{uEs(XhmhXDqO3=9kw7VAHL zJnjA}krKo0@X2)(Xv}huZ)ItAKW_-Y^?3|WbZZ0IfgVa+S`+n+@zutXki0zQ@)@FiS6 zS+8ZF7wN57!pnXAXa2zF<|fvo!w*&j`T6NnVb@Yxa2~v1@3=?g=VY&8J=OSjki9cL z2(S?My(OPFv)cJl<#`F>E=k5k=RBR6^^q^~^%7IKEZ8n%V*`YL>-u#o2M5hcM@GP+ z5mY8W-Us@VGM`=qUtL4!n_daSbxAPbui;H35>*a`K zdVt4mq~@NA4S!7vx6+;XmJ>`n1G=lM=>NAKX6JiW!faECWKY?-#? zTZ%>m%}>s#syr;AdKjmgW9b&P{cyHba>R|s+kbT=&4eglJerl3p+w8IM!r`iHD)}8 zs>G~WTMW`y$H(PmnQw@u=Mo((H0($6v@Zq2X&@jV032XPXo-CDUbKcpv$Yg@j!+ylQLAUOOOf-{4qMFZKgg9^0D+k6k0wzhrCt zI^OB=2hK=DtKGAAHauFx6&?mMbCnbb5U7t`(rrD6ssbk4WguaK~MxQJgmVAV`cXY=imC zQYM8?jDe5kl6ERgZdrvzCP*s+aEuCQ2zE*Cp%9|SGN$n7*+Tgrj?}nN&;k; zGw+WHX>HK>&~N@7nUys1y5f^v9Z7D zfa?$O_wTH&eJznO>*9MBVVPCt8+pPv4i9m8;B=pDMot-cP zrXnQUz$ti5nS-oY%mbDv<+JBveO55>4?8M1_x(@7-{gY1>K6pzT;e;ye5c0Qxhwz% zUl$cWoRvfGWG$(`DA27grMw(1DKZ#_2rm6F03g`IC{r}&jfNd53_5y(x5v@#oIBn{jbJy$9mJT`S%D zUH@h)4yZXh9bM3pd%3GbY%8$RAn2pHR?)w)0@i1<9WbgE#sou60AjTzPS4bh{l3fg z3gbda>SD{pKF)@=sWAa?l@0p8Szz5EMvpq>2R%YgDJE^XVt_N+UG8~kY@4&SL zcs@N3sHo(E>j)G-tnI`x_TO;JwJ}+gkB2*iYUK`_snY7(i(MPPZ&dtC?t3Zdk~Awo zTBKF`g`I&P`mqdA#vW5k#rDLivSxtKs@E9qEhl32%iuFByCn3ybbr-7vZuTCdT2Ug7_ACCGuG8{LJgI@&8BG?S z(QY3d%}rUS1hX{YolmK)?~qE;3ToM(%cVXHtY1$HCK}l z-gj7+!Cf`C6v?@1Pvf{6PxOjL=Ya4~eobydf?r^T4;7q+SWcZPn|w9Eo@Fy182i(- zKFYLUsb$#V>{|Cs&HM7jcHh5NdaK`VowYuj-ceMmjJv6+ zj=t1GntsIlUDH>tW)J0E6atAPm)Y+xW>`w=iHhXwgRJ~k^5xK?PIeL~iTuglZQ{t&0qc)AoR~77H*LCRyK>$(` zxb?je#V{Nck{CV`&HYWd)*C;+=nQX`jIP;oO6>huaEC#L_CnD5ff>gil7BH3$!?`I zDm`+D;l5ev8_2EcY%cz>Y4XUsN4E|X)5ww#XWDvfR{B}e$+nV{k+Je-uvVHzguO|Q z&uP5H$@CXRs`Iq)5W@(2RPpM@;JO$yNy_!8OU1EG7Tlu`->AISw#~`#tBCbm+URYV z9bX`+OI-6mw3f4Pa76Fmn0`B%qM{iGd~#@@^rpRgwD7whTho>l=80JgBp@->>Sh&u%Gv*o z=JGXuhtnKeQgV*LD)yZ;lsn_tHC{KZh}Ae>?%9{`w$hROc?>O!)Ie2-AY>?-jum)m9`YO+CPwJ0h&3%Q-6WZi-c73WNJLG5<9G$e@S0@>^N9}R6+59=P z+@|Zr{cg8CO?l#}v>&#*((;>3@vry|B0etdVu{QPeb`@OQ`#Qyw0*aggh7CAC1UpD zgN}-@@kE0|{;b+e2Pk+HZL4*}>FDC?Ou+du^DazuZ=?FKci`J*><6yPEW}Y87V?{` zy{4s$LzU~DniM3g+jN7nVTJE%b7eQ zV%uOoniZW(-$CTbFw*kc@^1XG5PARf_hA&Ji4o+NG%i;5IgETbSggr|p$uDFo~+zY z1*HqL?d?XNe{PAaJ8rDaUq)l2=XiN>dBwz}RagFlBU8FQKBm^bK2i+5a>uXpYUIhc zUz_eP+Hm7K^CmXb&UPHYQEwRr#a^46*T9cD;>L6@F#bT^_cm?ofydX-Kg>%PS(}Sn zdUv)d^lI5bsz@?f+7}li^LeFQd7k(!t!&k`Tateo(dIV2Bz-T%rXvTE?IMDL1!O`g zekMQm_j6rqT|VQ%1!7!YsnWz)eCIK93k!(Xs!aOjRS^sErmQWDi!j0J^cx`4ExHAN zOk6gbqerTxeI~cdY0CeWy(Xoh;#5(pB{@Cg=S;r!IfhQ7k|83GjDZS+GoPdd^*0Et99gTV@~PgS4l>rTL01aB8E{ z@lT#U5ps?)Zx@f8U}X3fwOrkK;nPX4hTh;H^@J~e{8LX4zj@;=^W$xH#k&%pC4T1| zEq#FO?SP-pCwq#4fbp=F-)=pzV!jCOb9`R&iL57?wNkI}rt`WTa_+xXw%>A(Q_`cQ z?5{>!gLn3`dDUxm%~HjSb$8vCi%%2L981|`x_xzSBwLeW+>%#l9|=eBrKcX0Ir^BxNKJ0gp~uLEE+PsaC0A96ftS>!Oibmi>@CzvRGqXEgVD7-Ko6ZE1GhY z7o_?9KdsL)GnY`_5IcS5o93;XKc`KV>gc(5C-@#u=czv*U#k_N?ZnPVHGb~9RmUP@ z`t$d@N%qd=DFo8>PBc)+T`;iik??p!e5Vh zNF3@Nw7dDp22J9y6qD!SGL>Rl-6EGYt4!2%rg%ma)U_=(4J^bzTAIt;7cM%&#r`2EWk2xU3|tu=oU{p7;Z{mK>+|7bcOt^-$?>Nl3`Dp+O!~HxG~ndD{(v61>qaKQ;6?c}zYy@JK+G zzkd^E1TY7(V7cO1K%fZ{nuW$BBnu+CR`=Msf=5Q6Ed1`>=SWY_F=WohBS)1y+_zU& zcQR#6z=N^BRLW%9-y<_=TBz7HQpLGMLNjNx!YRGK)V-?jXrx?2Lk+#i)o_MA)Q^5s_czplJ*q&OYijhOYfL7v__~(xic2Y$_?1`jAkuJ zmXjI9I97!h0em|0RI_=MT`$Anj)QAVQ{+_1oz?R++M9Gz1t!^x6S8uMdRlq6s{t-T znv^{A_$a5Ipve4cfUI1U*8R&j?QToDOxScga2(X<-gy47oET*lKAum%lwX|c$r5B; zW@K`j>X-)`4_$vkvGLY~ozuaoYxsTDt%k4rZn7RR_x=*s%o`e57o^cK%N54g=h%D5 zwcRk~?d}qHms0)KqG+*_{52h`Zt*)HfLfAG*k)@D4miHC&%4GwdZ&#y?d1;!fxAH- znHk-MF0V`OFO!(Ed$jF(J(!nHD>Tp~le9`=AKpd!q%6(iUckAydTqxJhxPipWG7k? zb~ZXG%2>BmqkMz7gwWeLGoA8=XQ{V(%@$51j%Eq1L>uWkNXLf^k8sWyh^I21V5omT zUFI8@j+|d~D`|EbnB991@;Ywq%vooi&(AA7EO4VQi${fYb$oc#$hSEMOp4WWHx3W#!s`Jk3DeD`Hi@SeYWMsB(O$t|wQQIprm{a&Z)Xu*PUJ;m-yp4@j zNtGj_-0=%0kJ{}N-`EfE+6SG|0=z7WY?OL!GKcuSv?*+306K+S$W`e{K*n zRmSbm`B?Ao|m1WdvI&g>No1FfwOLy8lh)=<4gjKYn1EIlb{_ za?POFvYKCmMz&eKe=87WxB9XKdDrwE9pm08O|I6o%SRc1ZqRf2)L!?>emqfZ-HgG^o9ijhN3X(e*&FT?%F0yFYKt^#PjwQ@Qtb<0Y5WTEsH|S3eoBh6uGeR0 z^&qNbv2Xxuau?3I$GP1(NX2z)Db_*TDU(?lSP!|!nB-dZCw4Jr?x*H?VHL!EEG79e zZ(CZH#X8CT==>W;I}@@V_V$S_kAg<(_SW;nsRQR(ZMCFoNPJoK!U7_{d{=%o(Q^TZ z?3(Lh!X78{_Y;R-lKrzOt{NN1J$w8Z7Uyi*x!&!Wh%tS|SN|d{sgLmuPdP;42_X54jcc) zmwbnzKgMd_)Iw^Iz$ZLdt4gaNRgy!R*WKFb6+fRb{T4QGE-d=0J`5UGndI74L{kcT zP>y6d@JuE(z$Dq1f-7!xXa_g}(;KaMZ#idXiLO2>6{PhncqS zk;YC+M}M@ne0yCiQsv#h!jeVz9H4Q--!0i)lQqkmFfE781lN zQ^cDU{q)}3b|*@2IY~c7>-q!(TS2u;`LO0To5^nocRjN!jhKU9(EWp@=f~f4x%Yic z+y9o2p~LROtqhy!1uwrV8+Yy{W;GaN4K&oCs*2Cc=e0}kio4I!JnVnX(Y^+btb?81 zL5pL_+(a$$3{jeeK-8cSg!#s!1GMgwZLHV4lto~Ca$+7F-$*f!s6c0GIf=aXt>I2X zzQnAA(8{8bA!Io@N;ZlrDjVavR~tLeEm+ye_0`u^ICe(x-_*CPV6(1X%J_vgFWq50cUO0w6b@Kmmqi!aV{mQGyWo zcfYPxjfQ|SoC}npg5#h=B;0JoWeMFX^nIc6HpT`u`#D}3HU$n-6O-r11^m%i0O$iv z!*+2V1;zu{jNi77riW%&^&V+chPH{d(1u}_K11jJS&`^y^@POcOK($^g6>@9Jsh6r zR;07fd{0f8QC>#I_t6nAAMam_J$sVbWO`uK)od2UT+#Dq zt`?Dn6cpNm8mSpZn2XF{6l3?unnHcYr-Xa&ADnU3O7;GdOq$faSXXl}CCkOvQRnk- zE^gy(<9|cGN!9P{P>CHkYJ)!DGK0)s3C{QL6Jt<29PgYK9^_dwzNe z%dRe%*HE6)BVc%Nm>>(VAo%XlNgPtbR1kVc1oWaFy_<@%dRj*3?34~2ow)vsr`rW5 z>6jSU=&l9j6alVZ1&?-TUXs1{&b+}yFRGfcUu1Qha>6%ub{9A}|AZ++S zN2Ioz$LiAEz^c4@$f5Yqibb`H|G}-}Bb1G3^(H+%8Uwm&FcU&;I_OTE_%QiuA~+#5 zv~K1UWDu4P<|$v+$;rvV^aRp?qt>%H8*+&ZomC#z98 zL|Q)6lJz>WAd!aj9aHmlG@+(gj;R=L&oIat8KZ0A00zo%ehY+X0eqp62lq$1Qg$yQ+y@ zLWwTo;*xPW2??Ra^CXMr_93m`<=JkM)XDdDWZp{BbyTy#f&G(JnR4-|A|O>oJv&x{ zfpxT6Ih$Uk@#`Up9DLR$F2*-w;ckr9QlLM2?Xrrp;^2G=`=gO3Po7n?@Xj{H^n#gL zva=>CSg`>m5{(0CZ1wQ7)Yw3NAG^_kJ!Qn&30IS+CBc0hl(Hf{?Y%qgg>f6^c90&P zn4Xq3j3}lrv8&kX+uXAtc;;FYjo{iw@6R8$*K9PchpP!fq5H_$u1HHS3UbqQ3>Sr3 zQH*!0@0__Tc6)wwB))cO>dhyEe6pr#!5o@%v19x@BLR8H;ZzG>xyl!H{7fbLU&K%U z+UFc`WLs2(=b3k_PHtFMl0mwAfcV+LdRjJ$YH17W+N`H z=x9=3k=I}8ICRo5XYC2sBMrf0^K9qMdMIU0SP?-tZWlj(?8QAwT`~1z?VXYuvQg4Y z;f~b4x+D!KyR}P~0FOZDTU}MP*nQIln1|ccln1Wxg+%0-{ng2D-lHCG`ICh79IY zL4-$$l{36Yym%_{VJk^o?E7JiRq4cENX^e?bGkp1dYn7k;nEWOhfDKrRp%I1&c>|q z?uDC+QqJFx$-1f=x^FRGyL7m1FQ+9WTw^4CwiZUXm_U!~8Xjh1`?$I0E31Ku6&#F^ zz$32ww)u8n(=kkktN{qZ?>m1V6G)X$@h!fvxc1VN(0CSf&^GANRtgRZ;p7Z!De(DL zLq2<_I1N;7`k?Y)E)#YNX_DD%cf$DG4?D2i=G0eP=GGql`^bCB8{1%P8^M7^2v-wu z*(!MgrHdxd-)$^!ADsj3di-_ge2o{aA&=SNCX>0l z|8baQPu8x;#pNzTD3)B_I^30I{LIIP6r<#UsF;`-M5(Z_PKf9vzJy8I;llyQk6;~( z@jGM>ua&D)15XBg9~6pr?rB@?d=80QAo~rcB`;k<2db_22BumBAzM`%PNOSkW@f!U z1Q~jw4|ICz$$v0j&?tmn1`r>bg@7js9Y`H-%BIfwZ&;7WuHF9=)}upJHC0uk=_{w9 zPiuRa;H^yr`0-n7b`2-?fGN0%-JJ5S>+K%bks~jaM;vk&O?-1reB+DStdGd=5mFkt z6c?Z;?3xWo151rc`y^N&wf46Wtp4n$jhrOC4T<=2dkm|y2a)?PV{Fg zHL6czVw9eA_$(Czvpd^&*+}VJsG@YA4e92TjTYU6$;ru+s+_S;9y+v5cK7*`&oa@cHRT%9b8M?p zs+q8giFwQvIgiyx(HmEpG-*4!0ISp7%%ZbDGS#P%GI{3C+Ip|s0)f3cea)0FyZ@AoWLjst zymz-3Q!;ZDvE7<-w3t%U==0tyK^5}U?>^ccoJ{1PM22A8ARZ8S2)b@kB<3UjdQ5uC zEWX?8?Rry%h@+ZeZ#R|6Gu8NxC5|2vD5Xd&2RS6@K%JcB4X1FC8WE?+eZmf7>+LOH zi`8lNWvQ!LesMk^t13}NaB#MUMmj*jZ#lMBbMv|;zMJ`sWW9? zsl6@)8`RWR0Ko@{vuJAm)G9bHaffsa2ti-Ei<$)vDqC8 zC7SdJn7$s;K)LvaP>vyjL7YcZ3FJbDABsV@yeM<+|?c02>_jh!B)PgE*V-~fsVmegC0QckS{wNWBM0D)a?fWTxF#H>y?1JH8CCp=vH>Q$1l zor-{+VIJ%_(cV|P>Y%W&)s<;&w2KMI zlW{*m)oGlLh*GX!fx3u3zHvj#yJBNLysva?O-RTotDcgPJ^St{mwf53E$yX?GQZD@_KVdOFUD|#n-_cho_mYrA0Lb?#{+OlBZXvaw zM+%9Xz5G%?#a}qQKP3IQpd{DSTc=eQ1Hh$>Eee*bDrmN&cYhN+rsrDZUKt5!+e4hkL?~Eb!Epmp^g~H~x$L^t)dZejY(R;`cE;w})37#~{Agl~w-z zOh9n3nt}o>MUSUnFkrR2a67X1)@Y@VPqMlAslfo*ST)v|xs-nP?Y4>OPt>Xp~*Ocx6TLzCJSAk*%5 z>dXP9@iY2~A}M3_5|+pAM-^n(to)giYe!*R|E16yl8AG3CCIl+4em?9#%~AvV1e~`#oGd>-j}Vrt($WDzL8-C!GtUi} zw(S!Ex~+q|2t>n|0rP)OEtDm8DOJmpe&4UNH!!P`9+m^~Wx%O)i(P^O!=-ro3nmrD zY>FpMzklEJy3nc}a*ygir(PW#QnS5z=pd`e{h=wl2FTGckISY#{KnfpRGl;}y!K)%Lwr{9?B>Q+-HoR6NkwDdAEITc8OgF4bMt$T_5RC7)YqJ;*b?5UE)xG$ zQ(v8tr$KY@ARRk$B%PTMN7yNi?HL5xS0!LrbasBK^^FsswRgP>FH@}69RJ*T)mv^?F0P$uIKz0c$#~t zpbP0-wi69Gc}Qre2DyGsRTZ+qdI$xdKK;47ySt|+LeRl-q&kR-*9ta01Z#00=Tq4) zecvW0yTVun)FpyYFulVp?}`cH`mh}+TvI{GYC&mUvhmHDnpaj%Q;%J4C8MGW2NA=c z?%w_FIvylK%9goZ-QDdozcXkep9>;)xVEuvzJE205;N5yYK_yqTv*(PVGwplQBTho z<(u12xRWaj68&z8phE;Eyk!xxI`8#EcYxpB-u7Pdjq{Mvpo zv2D1y0PLx}c$dIA1bmzGGctMPZj#q(ph@I#>sDpsFe@_?lSsphq7AGev}623*iW6p zoB#>s1sX(tS{fR;K0c*VBpSrTPrzh*vCRu_@=VtsHgeCiGBOgRHjLHI0oyN!?xTYP zMX4Cz)nH%&TP^M$H#`;|5m7ssfAd$IAd;1dG;OO4nYJ6Mh~F|eo%?S0q*llDL9&CX zlj5BMHaei+L#4pl>4&k$)q?yf<{Im4vX^cy+i{livf^~F#g-JGM(bVg%gTA7pVwC` zce2pV_mrhbcDeTOE=ui=7p%iqJ-eTiLVER7&5{@ut|TB z=H?Db9eC~?D>5d|7G|*ht<#cn(W=l#?pco4a-g441QE}j_dp743lPHw!Taj&)YO5= zuz%yg)27&N-@A9uSWcdckB_~-_UV&ixI6d`UD=knaN$j@Pt}>DB@rVsJ*214o|VyM z(##i-8JWacY$yqjjI1kx@$vz==ghP6>5n&)lt|V|b{_!^qQA5zt>d=};~ZadS#1|8 z+7LEvwc4VX#t3@QwO_XMYIs~=XL|DFjBcr8k@y!&)yf=&;kiEro5Fv%n=+?L{zc1` z&ud`ySn_%F1p*mvWwa(DG&a^bx+3w=TnnA)si#k$L>5x3mz2mkjK9vT zzS+&zO=ts$QD`m;3yx_qu@t$@M;$>Mjwv?efq{(`%RCeu zB_2Q}l)7&mye-Jh=Vh1HjHW2$>ROC?>U&j;hhv-Ejr|vh8(2=hIe9g8?tlz zPDc*KLcpzlBj#;lYqE9{ZA4a*7X#g^G{TwOI{)YDCo_KieX6-#HYy|EUMo0FObqG3 zSG|@F2?G1!1GyM z0&(*i>2XDqVqv)%mo}LK0o9)nV_7xrKV5nqk?v?U-mcON5ma8Z z-2%HmI3Pc}L)kF-p4svH1{v*-XV7BY_!+!1XA_b1(jVfE|4#s)6Qy?O<|VFny^QsG zb)_BIlpJ-zir{!Nal@;XNGH|z57Ol z&L&*saD(j&HLLv+0w07Nr?QYNZh7N}mO3KRSKgZO4OWZfLjKfn>Qtr#N*nsVctvSh$HK1V8{|dbCDm)PFtO#^&5K`AFjCrBPx0=bKaH|aqrD^0iNHHY|$m0P6v2Zb0c zGqEXtdFgjc@Q%+5>6XnV%X&g*yG3>xWf}%6Sk5^|fug5CBrgr2Z1}Vc%=-YxIZA7ek=;SP$=anUuT$pUL`UA%p3w zZd)yVZc>siluYvAz`~aY9N8k0-M4>(AYZmC63u!4GcVonQn200Bl)sd$gSb_m&r3P zIkESEiJWUl@9XI7wC*j)S>T23$~j)%YgtB5V5Y1Z^ZIN2446}%f~KWgCsFw*AzF=qF z?xJYUH4I7)uS#EuFD$rP)d`w6)UUL2;9<8B4FrWnS|;dr!fg21b8?zB@Mo;aTwIVs*lhL8P$b0G)TKXMfa8}oSb9lxaf;(m7%hg zD8`kL1s0Twcvjdkhk7j+Eyu7G)GZOdEdNa_M`vK(+yJ%T9rWGc^BBma4Bv<`?`cMs z^y>fyb?=`jB27uGuCMMe$(&kMF6TJ`kC+1YO~J5U-`M&BHc5F~wq zyM5H^OmxUrHnk^Anl}OGRUp4fMs_5u-ig7Nd$j-h*<1>x>E$u+8xH)JNSO58r+aSJ z_SpQPO6$gS^1~0Zv7xlAsC+O_ncOy)?E7<-O~Or-m&qF*2-+^Zt`^!Ky1(s9>#LkN zaUD-IDV-s5i}Q_40ga~6+UOIfPZ#w$=GA9#pdUN_b8aQ5uInK{ZFI)0tf{YFoe&Vn zXZF3vte^cOi_>F!sL%TL6dZD1pE!kpz-#&Sm|-$S z%6eSgIZApKcH_dfXL9j-q6#EShe>gQ)oxjO|lW z`6nUT{Ey%`&-n0Q??9w>`;p2mE8Q7UvNnXU3{ zcXjexr3;Ba!^FW!gZ4EEm~KWf)j<)%bS&%++>LQsuP?}QzpACIxf$2k*ogKQFmD%f z=?V_xvLQQi=-V4UDDUXei=wlpu5N3j9?Ed~G+38@KlAHTA_Z$TPTVW6)uKUXc>dd$ z916XmyKkTW9%{a#JEeCie!ng>-NMUdswiqH`qB(1qx+kYR&B10Gy3GWjm^YN-lk?y zc|~W^c1FT$zpT8x2f{NdZRn54gMXUB4 zYyO}=-=N~(d@reViF!biqed^0{ih&_ei;T*xbx^<4&LUuSTK+3wQIh@pEf6`xau~O1ke$19@#6RK z@kqdsbN`T#4C_XLL^kMPwjBQ}tV|=U9QVT@0zK9^+3<3}B&h!V5JWT320AAZF*!ckLr%Mhe#$YDTo;6OCLoq>e~b9!0g zi+lInC@8`}P~Hz09l}+C%R<*MC247JIq&W6Zf9y@?!C7DVsnDH{u5-HYf}`V#{#>u zWsDtvQ`mvUvW6cqJc2`oodE_ulx|2kQl4vYdoM*`Mml_L&koW{@JEEZBn&b?6KILA z3}gkeC80H`m3goE5*<|_O#677Du4Z^&`>BrKaB{Sz;V-mY478X*g;_7{PXD{D6hZV z3*mZ8OG_@UY#8?`@jzDqc0#b;!|VyBLU@Tq-sx=l5G4u^hg3*mVIg2}zy5${DaQUp zjTbevw9@oSqX1G-ZT^o5D(3^QyT9YYdF6)$$(MtmtKGY|y&Aa!yViw-*RK_$_0b;> z4h)2DO3T=*-%s`7Fz|clsk<;rf~zLB@orMe)2B~^Z2clQm=|_=m@$HnjWl zpr*{q%zSeBG!f@JNL!4TR(leR^d={zKZOfBbE+<`EnD*N@El?l*gz*bB^a)G0v=lg z<2UrUL7bGjefm1~Jw_0&uC8$FmFuGwj1+}|EvU-=JF)ZN)5f*%G)nZ&)xJz9+u#e` z{3#bayNd2PCU3UgxzliQ!>}K()en{9|QhWktmpL{K_&t*M+OaAE=3Ei6Rr4)~>kB76fjc9;S} z4nC!p@`;|7)*Afs@QC{l9EfkSha>{rdugkdCR$mPhDJxxvH7%mJ`h7}RN0mgegQ)8 zx~l(vpU+w( zK&f&YF4fM|gl~4fnV|U75(L9tzX~*nvefHM4AQ^0x0^z25Wr1{yAcx;4+>_N^T0G5 z7&2EEmp*ty&JBD-!vijL?;|67Q#7-oC*U~MaS-AnhH=}KF>oZA`~XEq6~0tSQrsaz zup3+O2Z*pUy1KIRdXRt{BY^Q0-W2x851?>2)mL0t03KS;{l{mndHvdK3L=EP*2@g1 z>!Q1!p64HW&CSoZW|+=cb?4SWf2*_884r=0n|lE;x($Tu}64->h=)boNp+6+{h$hTK)1e1J1%@%K}xC$ zhHb5_4j(-K`1b7^Kq!#b!cH!=8`_;5cK5D0Ox<7?ClwAUBy44PZodo*v+l^aYjNGc z;2VB2JslYudWEuieCa>ikfBp;F2m5;I6aD{)#Cg-DAmeAJ9g|qJw?wB1e^!_lda*z zzIuMxp)OJgh^wF?HiTWAEHs@LequMm;cnrPp9`4x`}?JWK^Pw$9)_+!Jgz2~PNg^< z`u$xj$Pu;_Na3%(GC$v$XRC)=9l-)yh{e{nM#Y(mi7651NWJO2fs7A`cu$0x z!u9t*`#}0{?3w#J;gutTb1AZT&t zks`8FB_)74lo}*j%HIF}y9xw%7zM9f7y`p_9+#K+{oROixX&P~A{)U!4>L`uC*ULn z2M6PlRZr9TilFlKYgKJ6bc46nmRS-{?@Bt1D;IH%@Pik{i%`vnbNl6A5U-{!SDx?l zLltOiprds~6`=3&^KLM^PgjokCJIELL)|2*5{)1{!*t|n&c4_cl8jG1Lgw$ z9q?{EL_@3r?mXaNeSO!owZqHuD$B~sAn$}<$-l48$iCaDt_Ykas=g*pOG zK6p@l;2;%M&GNq-+c4F@1EJ3E}mGWg-cFBoQ`nQvCRMC*L(=1l`?e&gyRY)#rN&d%^i zV#+SKfYG({Y1vadsHi9+ zG7|IxD@#k3)2H8Ib1K>XPjlF{jORdvj2fJsND+YzI-W$W^Zh5f_f!Orc6=;$5jNs~ zjQ%iA4_Bo)b}RueH#L+6O2`BGP|WOVsaF7WGr`qM&POY5aDMCv1p7ok;! z?7d*Gww&Da0%159{~rA50AkUSu9JTg(m+CvQ-1#bCkqKqp0qW{NqT!Di^O2mKDCTy zHNlczmpR(;7vzh`^AX`74@hEL1xZCi=NGdh2<7D$6zo5C?!1nUFuEeAP8t538-ya$ zbsnyB=e~Dj#z67i9OHDy)rFCs9vvjBq*S~Lq(JK9MHLknLzzg*5VV7t9)VrE9xBF2 z?%J~_pjXSo;eWkRhL^D$gNu%X?{Snx4Qj1%qdRe1Li@9-rDX|BDtsI8R93-0ixhGK zxJ~LWLaDj>_wTo<;6$K?JRcq#TVGv;SZML>`Flyk`}eoCwx({J(T=O`z9JxGIt#Nn5v#Y5e~89|%eu8`BAefg;GEs&n{j z(0q%V8PPk8P>+Eoiff)JuYkM!=Dc9)m-CQu3(B6g{uO-ZLSWS~V0-y(Gqm$GRaBN> zIZktVXJbnuv{R&|`wJYNwcq{qe>u-eh}XwJ=Q&DEEgOV{ZFYG076!uAA-zj;a|t(h z{S($b8UDhupRqh~Sal0w3zxjEt}Z5mpSlx%KQ0j^B_YS)WYv0?VRX_Mi-{P82_rB^ z0a*zNXVPQ-`AY)?doE99R1-0%arXZH?eq74k%s^IQ+)p-@Zi7y!>0?fCI9EQi|m8{ z2E(NUE)OMnRdx0Lf*(V7ROl6Q|m|9w=QlZ zrFjhv${Za?zlTeb`=A=46Vkz94gmo`4uda?Bg5d;nicPs;EWX_*I97hd*BuV+ph1;r>arX}&`;>SXpyq=UGI{hk;g z>p*s#3(-rAwliq!2Zx`QjUP`$h4)l1!hJA5%vHzmYC zq^&W>Ql0bd3EEYFa0YG6lK2*^=^(sV%LPFn0kPnhAN>RxF?GV7l28pKRb3bt(uENm zIHQU4hS$WoYvKH`W6)p zji|xry$e?Z{QV&cr_qa(I$$eNayr0Q%fZ1x%_MckuVDnZJ@g&$mR_Y*+>=cDM67}3 z!(KZNax$CvxJP|%AtP%~)xI2O>bf%Z+DRuO9-nXABIR^56aV_eztK*kd*UDNaW(V|lW5J6>S_mAKl zqrpv>ewp3sFcmctyg2f@@^j*+a*UB)lSIg*CGkW~qN(!mE-L2dWd{YKYra|tM-C0Y zeW9RN>~e`@Vq(I$OW{c=r<3AY55tSlomxPO{b{vf*TC$rq=^{G*+P|U+!3VV@%60n zeg}q75u^CewrN(_a;$9GBNj%YP}tIcu9KWSrbT-~7KO3QElefX(AH79-Wniq72DLo zl?ud6fjNSTrr@pXs-m~&Jc~)kX8RrxAFhuOK*G@mpat?5PA)EP?i8CVg!_e*G;F`a zY@Y}l+YAz2oYWMUF9al8$c`oCpDBbvc4LQ0yy}0fjx6d(TpgzeIOqRXd6|O6KEA)= zzrG8hF|st>t*)oH-Ij``mKOJDFTJGqv3V%_t}OqF^95h&V$%ki37TY7Xwbzo`ZNe+ zG*9E#uXMgRF1?r`Ih3^{>PrPMsAe6~OwG>B)P(4*Hw70Ba$rcW_`O8V@8ACEk~+Kr zoi~1RILm7&XJW&yt*_%yn3$R(PK8ZGmpS>$lvc(-6B79?s8zlq^uhM-4dt;U8!vKSutcLjlGC^v z?dnSJVYK{lHxh6_><=Eunw&oo+_U$kjwSOFSrB5ptZmK3DZX)soNh2R?-dwSuc)&WE0+sKr;A>v%N zG8`@zX645|F+AkG*+TQP`xg4r85wf`4;X#B$Z(~FG7yDM7ajqJQL~O80hBYcrml|O zcX$rXBfrE^fUW_Iu9~`qcAt@B^;HKueglWGo7^_>_7O$zMDMIYdl~JZFHKFH%*;4qHoLvMPsT{CQ*V zmX>;iReO38t?05atWeJQ+th?rw*wkTecd2k*mdPBxkM;uP-0748@i5c%9>S$c~OZn z^kH0Jw%<62F3kB}y2DQv@~jO)!otRb z2We>PCka*XdqV$F#fp%VZ*3N$ahRMu2}09ts-uM8B1MDZaA-m=5Zq9j$MHMI%IcFx zXzHsFTwfJ<0HBg)P>O3FM`!EwKkiwwR#o zA|&}P$QLEK2<{5VD6U}|0DM?Bcg;8vdT(kt0W9-@N$*Z%oWE z2+7mGKL2Avzv1xPA{rJ6@)7)s?S=$0Rzkv+ix-E{DNmdvjA$kZt3dcDc#*MRJ5Ej> z|N8YoYU;Yle=kwvMSej+Ewn_!!lru*Lz1LqWqCL_Q0&#CMYFKLi3{OB^8elYk84au z5=xZwb(!)V|E&*3i8E1ss$^x@B!YjhfOegVZ?%cUwk3?ja zL|9OUdl1?t2!S=bZ*54?@NjcmG+Cnu0JPTQ$5(vrC1;Y9nVrbQdJw6Q$8qp{J>MrH zqwvQWLO14L1C%Pp$^Rp=5ugvqWnEldJvP^ZRQz|e;_&=$WTTijZ}4Kxw~Hy4aKw#Uc8H-;v5jF7G(eB6a?} z=d-*ozdB71jthZMj|LRdB?~|Jx=j932f750X zDVsveh`SNxP z`B&47&-*Gf;UrO(a5f*?KXyst(O>xpe3(`PkgE{{f{AgKVT61~bx%adL!Ry78y6`} zxs;$~-xP#w3F%26aL#}KtuR7&^wXb5|0%PpVg0rrM(Q5h?ki$-|KBG&X?i=JrKQb4 znH!-PO9F>6+di2qR}yU0;R}x{XIO;J{_M(H0&G8ugcs^>I9UP?;c4;p*R`Rjt{z`s z_{RV-zRqwz^KaGjaMffr#a%FxF#gORoe_y+)$7)oo%nq0c<%B_Z^YZoAe1&Ci7D0OP8w$$4bk}h*)a(y=Al)lX~;@DOz87p=pV-g!vJ< zJ3+s`VGA%0M7a$i5=S4O(@9CUVEFo8yWyR_iOtDDfm$|JV`%8|3g5%=aZT)*d=(V$ z6Fd@K5%>neY&fBoXNW~%m4wvPwy(Et4WjuJXvrm3xrj5{MtRf?y}1h#@jikrbrM3D z;fVf4LLtHqr@HW07<;l+%zV8)My1u7=s%l%3^))%O#HV%bIHRiY#v?B(CWvN0_jRz zs)twiUqC{m>TCg>2>^u_S*fkg*Z<+OOav#yd7B3h;z($h1Yh!ZrW@{lV46=INr53htL^$c66sidTYDH~y*sgv&b#B9@B;_gc- ziY5ZLBOH#itHnkFx70|6kw=D$ar4^=+%X_RepO)NF1#+d4(P-7@83TkEOEt=qlQfQOpNL)%n1RqlGwpy3;9S-~Iz zU@nDHP+oozY?9ZFsif#wp_X-%oZc^kG6?e}QZGlslEN9!#>0SZ1GgkSQC~j>@C=3n zIj7&AJyAf+kaA=A)*KCu%&aWeJu@Z=K)J%j{%y`jA&XsuX6tz5?fX!NfLJT?gL&%V z(iPpywq4)Yh-O38m6h5lkQnJ!q0l@Q+rq@R84aVokHZwfRcv#JC;gq5Yb-R`>YxDdR%}1+u1KA5_=T@mFJT6s;EFD4b@9OVT;kQ z9v~~;D8>yVlfh^!uqS&F2H@>MgyLVbplT7VruKmBLQalW=P6TvwN5=QJ=gNoPV0j~ zAc%T6@GTrQp?dQ1i!+cQe=6n9l*i(08}<)boYa5nB%UQ@08RjH1B$h!ngFxG(LAX1 zu>}ZwPhApJ+}NEM*M_NA*KgiLJ(D?-6w&k9##^ng`QCbNKL30w`&ll>vBfh^q$E^L z=WvRIbsg0UBbO&jA~Oc2Fyv~0Erd*`w-x&f1o&W^fFeM&ua`Sg;$CJE+%to3h&-Nq z6CJ{k!e(RYg+(92F+g#8rV2DcA2cBQY+dV*9y``6k?{CQ$nYgMTtaBHlC0%{pUO0> z-Eu6#j)@Ez3{1e2j^)*}dDipB{<95WvQGeCT~T z076xPd89FsB3ixAH7QwLd9A1=($06>7;hZV4Bag?&=V^ce1q_e^ZNDi#nl%tPK>=b zlg;G@BmDxXzrhC)<_?PmD_9r8#z)!oAFx|?GULQ)u*P_~$|@?j+(lrqjI${z>asTZ z;04FoGiL&SbbE3@YTFwIKdhsmtg6cEg509JDS@|9k*@+&hSxN+B-`v{H04@TlYQcx zwS{afam=GB?XK(S`S(ZccPEGG;$ma@t>ER%wSEpuy{;@0??yQyD7sQ6O?7W*DAtP0 z#wbpQDR_A42ERFAnoBqJS-8@i@(b-_GcxW0uxc6Ag`wLv7IH5Qwg&1IlL>vmWZV- z)>=M+iY!3n;qZJhcB^OMdJhkN^J;ck@;A?>MczY}0w=p54ggwOAQVULWmj3jk7n^7 zzv$~rRTgKM__i1)h(rKh(OagN8q=>3D6013YY;%`2EW=_Kcw?`x@3Ts$T0<0N2(xn z<=CUyl%t$_UQ+3_rKRooOFq=D|=3Cv*nXo2rWhWjC^>hxD<*-$`y+cT5qeR-1608;^p zNa;;*-;7n$I;IC79t|jTJk=+W?8Ay9^kY_GXt}2`G1QjK1R9U=}WlU976?@){ zHZ|ICAC|MH=R*kf?31Y;8yy@ARqkevI-8n>10+0s{?_wiDtCyjYvOY)76A<87%23$ z_40ZI@Vd3NGPUC;W%}FkX}mQgxr+;X4!s^c@ZFA%t6}{RYs^k!Tgos_3>M>NLyq;< zt@j|q|81btwu_%e|9e?!Y0J4w$N=wJ+uJ9sPE8@kgSlR;Tx?*#hb@pqXO^r&tt%Y& zE%eX;3pz16q%M%jh8D6HhjqBYq!AY4kwtrUAo|;a?!zkW`MMR*knlWm+X55Q#2)f# zX$n=Vs_1@G%PMf!~z!F2fku70v}asUueCEBB{5&N9y(jg5~lhqesx zf7`cU{Nv&j`TR=vvpuYJYLcYt3GdiNy1GMP2q3M|)h&Qkd|V%yZt?4}T^R%Cw_lj< z%p?-AVQez4KwWmA3znw3I#h2lz>K2zJGOdwa6L8yC4>bNo(pEN7Q8>D(IPr>U;}T2 z!{K0h6I9xSJ@KfDUlFNI;letDY-zybW7X!BmeMV+!~0H?k*i!24;Mu29kz79_HH}#}h}}Df0eHqv$Tqhp7(75Z#%uCucQ=(I>qJk*4 z8HQHbyj4m`N9O+Ir(f(TqaSLTX_RYL?r-SY38)52iB0iK1_!eTem2h;^!c!86s1E$ zn5zyMOiARfqwxkSSDuU#7H>k#;wIg<`H|Y@elYI>&odbJNv_Z+%AUk7D?>4E;>f?m zV>#0}X=!1AP!MWdiJr(=IK|pEM(7ns1cvj8wkV(d;r*Dx_#H5{Sym}h(O-}fx(N`*}b6p>Rx9uzZA=`B2 z%I10kN!1V_28+-vsjTEQXYWS3$lN z2ndLH6gs?9juK+v3aK^J*&*_`m*N|k4g{?t1RPhA5i#Yp6M^{I^|Z~;|Cr$nIlU5A zWtVQpi6rtTVYxLUR4yvNG$=LiL0VzCqs7PBbLS>ra-h8ORa7{1)nja;aOx96AMQK_ zVYa5eM#!t%*!kU|E0F~h_Fyr>q7R3M+?B#JN?O+4ghOFvB4SKN$|W@fy+L|S+>0A} z9{5_FB3c|`6@syXSLxkD+)3jK1APc@BIXz^TC~B=?rf^kf<$HHLV$(v?f7jAvE3tP zsN+}Z6K=9E5Pc=#gDMJe@*({a1YCG1&*b7oDlv2D_v52Za5SvweN0J73B>s^av}cm zZ}3)#zp|c(2Aa@eh+A8~mrrrVXEj6){NecDibDKVqqjfg8^D2JkpV<39bzCY5xRQ* z9YT2ni2n+uz;S{9ozXTn7BP!(2KfWT9DNGB6&P0Ox z`|;<6Do?(T&G?K>j~I8fzs12woKua#O!=3z<~e)2yjfEnxNEAn9oIu4c{P!IeldB0 zM(=5lZBK6|{Pyq1$LB`;`!DD#Kb-#|XN0};29HX7ysYJMgj$`d?x806b8qx%Cq8|$ zOpdh&WyqhmIgAtz>g0{6Vaeb~kUxn3<7rdgsECTYa$N|#k+jjyab3C1_LzSFxj@a| literal 0 HcmV?d00001 diff --git a/docs/index.rst b/docs/index.rst index 60b2da1..7713cdc 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -115,3 +115,10 @@ Links props/addrmap props/signal props/rhs_props + +.. toctree:: + :hidden: + :caption: Extended Properties + + udps/intro + udps/write_buffering diff --git a/docs/props/field.rst b/docs/props/field.rst index 7e3fbf3..7010f3d 100644 --- a/docs/props/field.rst +++ b/docs/props/field.rst @@ -60,7 +60,9 @@ swmod |OK| If true, infers an output signal ``hwif_out..swmod`` that is asserted as the -field is being modified by software. +field is being modified by software. This can be due to a software write +operation, or a software read operation that has clear/set side-effects. + .. wavedrom:: diff --git a/docs/udps/intro.rst b/docs/udps/intro.rst new file mode 100644 index 0000000..c35e710 --- /dev/null +++ b/docs/udps/intro.rst @@ -0,0 +1,32 @@ +Introduction +============ + +Although the official SystemRDL spec defines numerous properties that allow you +to define complex register map structures, sometimes they are not enough to +accurately describe a necessary feature. Fortunately the SystemRDL spec allows +the language to be extended using "User Defined Properties" (UDPs). The +PeakRDL-regblock tool understands several UDPs that are described in this +section. + + +.. list-table:: Summary of UDPs + :header-rows: 1 + + * - Name + - Component + - Type + - Description + + * - buffer_writes + - reg + - boolean + - If set, writes to the register are double-buffered. + + See details here: :ref:`write_buffering`. + + * - wbuffer_trigger + - reg + - reference + - Defines the buffered write commit trigger. + + See details here: :ref:`write_buffering`. diff --git a/docs/udps/write_buffering.rst b/docs/udps/write_buffering.rst new file mode 100644 index 0000000..69fd5a5 --- /dev/null +++ b/docs/udps/write_buffering.rst @@ -0,0 +1,173 @@ +.. _write_buffering: + +Write-buffered Registers +======================== + +In some situations, your hardware design may requre that fields be +updated atomically (on the same clock cycle), but your cpuif is not wide enough +to do so natively. Using some UDP extensions, this regblock generator implements +a way for you to add write-buffering to specific registers, which allows the +regblock to delay the effect of a software write operation until a defined +trigger event. + +Some examples of when this is useful: + * You need to have software update a wide 64-bit register atomically, but + the CPU interface is only 32-bits. + * Software needs to be able to write multiple registers such that the + hardware is updated atomically. + * Software can pre-load one or more registers with their next value, and + trigger the update via an external hardware signal. + +If a register is write-buffered, a holding buffer stage is inserted between the +decode logic and the field logic. This effectively defers any software write +operations to that register until a trigger event occurs that releases it. +Write buffering storage is unique to each register that enables it. +If a register is not write buffered, this buffer stage is bypassed. + +.. figure:: ../diagrams/wbuf.png + + +Properties +---------- +The behavior of write-buffered registers is defined using the following two +properties: + +``buffer_writes`` + * Assigned value is a boolean. + * If true, enables double-buffering of writes to this register. + * Any software write operation to a buffered register is held back in a storage element + unique to the register. + * The software write operation is committed to the register once triggered to do so. + * Unless specified otherwise, the buffer trigger occurs when the highest + address of the buffered register is written. + +``wbuffer_trigger`` + * Assigned value is a reference to a register, single-bit field, signal, or single-bit property. + * Controls when the double-buffer commits the software write operation to the register's fields. + * If reference is a single-bit value (signal, field, property reference), + then the assertion of that value triggers the buffer to be evicted. + * Signal references shall have either activehigh/activelow property set to define the polarity. + * If the reference is a reg, then buffer is evicted when the register's + highest address is written + + +Other Rules +^^^^^^^^^^^ +* It is an error to set ``buffer_writes`` if the register does not contain any + writable fields +* If ``buffer_writes`` is false, then anything assigned to ``wbuffer_trigger`` + is ignored. +* The buffered register and the trigger reference shall both be within the same + internal device. ie: one cannot be in an external scope with respect to the + other. +* Unless it is a register, the reference assigned to ``wbuffer_trigger`` shall + represent a single bit. +* If a buffered register was not written, any trigger events are ignored. +* It is valid for a buffered register to be partially written (either via write + strobes, or partial addressing). +* The software write operation is not considered to take place until the buffer + is evicted by the trigger. This influences the behavior of properties like + ``swmod`` and ``swacc`` - they are not asserted until the register's fields + are actually written by the buffer. + + + +Examples +-------- +Below are several examples of what you can do with registers that are +write-buffered. + +Wide Atomic Register +^^^^^^^^^^^^^^^^^^^^ + +Without write-buffering, it is impossible to update the state of a 64-bit +register using a 32-bit CPU interface in a single clock-cycle. +In this example, it still requires two write-cycles to update the register, but +the register's storage element is not updated until both sub-words are written. +Upon writing the 2nd sub-word (the higher byte address), the write data for both +write cycles are committed to the register's storage element together on the +same clock cycle. The register is updated atomically. + +.. code-block:: systemrdl + :emphasize-lines: 4 + + reg { + regwidth = 64; + accesswidth = 32; + buffer_writes = true; + field { + sw=rw; hw=r; + } my_field[63:0] = 0; + }; + + +Atomic Group of Registers +^^^^^^^^^^^^^^^^^^^^^^^^^ + +Perhaps you have a group of registers that need their state to be updated +atomically. Using the ``wbuffer_trigger`` property, you can define which register +write operation triggers the group to be updated. + + +.. code-block:: systemrdl + :emphasize-lines: 2, 18-20 + + reg my_buffered_reg { + buffer_writes = true; + field { + sw=rw; hw=r; + } my_field[31:0] = 0; + }; + + my_buffered_reg reg1; + my_buffered_reg reg2; + my_buffered_reg reg3; + + reg { + field { + sw=rw; hw=r; + } my_field[31:0] = 0; + } reg4; + + reg1->wbuffer_trigger = reg4; + reg2->wbuffer_trigger = reg4; + reg3->wbuffer_trigger = reg4; + + +In this example software may pre-write information into reg1-reg3, but the +register write operations do not take effect until software also writes to reg4. +The write operation to reg4 triggers the buffered data to be committed to reg1-reg3. +This is guaranteed to occur on the same clock-cycle. + + +Externally Triggered Register Update +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Some applications may require precise timing for when a register (or group of registers) +update their value. Often software cannot offer such timing precision. + +In this example, the trigger event is bound to an external signal. When asserted, +any pending write operation the buffered register will be committed. +The hwif_out value presents the new register state on the clock cycle after the +trigger is asserted. + +.. code-block:: systemrdl + :emphasize-lines: 2, 11-13 + + reg my_buffered_reg { + buffer_writes = true; + field { + sw=rw; hw=r; + } my_field[31:0] = 0; + }; + + my_buffered_reg reg1; + my_buffered_reg reg2; + + signal { + activehigh; + } trigger_signal; + reg1->wbuffer_trigger = trigger_signal; + reg2->wbuffer_trigger = trigger_signal; + +After software writes to ``reg1`` & ``reg2``, the written data is held back in the write +buffer until ``hwif_in..trigger_signal`` is asserted by the hardware. diff --git a/hdl-src/regblock_udps.rdl b/hdl-src/regblock_udps.rdl new file mode 100644 index 0000000..a85d9cd --- /dev/null +++ b/hdl-src/regblock_udps.rdl @@ -0,0 +1,18 @@ +/* + * This file defines several property extensions that are understood by the + * PeakRDL-Regblock SystemVerilog code generator. + * + * Compile this file prior to your other SystemRDL sources. + * + * For more details, see: https://peakrdl-regblock.readthedocs.io/en/latest/udps/intro.html + */ + +property buffer_writes { + component = reg; + type = boolean; +}; + +property wbuffer_trigger { + component = reg; + type = ref; +}; diff --git a/setup.py b/setup.py index eaec68a..d91cb73 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ setuptools.setup( include_package_data=True, python_requires='>=3.6', install_requires=[ - "systemrdl-compiler>=1.25.0", + "systemrdl-compiler>=1.25.1", "Jinja2>=2.11", ], entry_points = { @@ -42,6 +42,7 @@ setuptools.setup( "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3 :: Only", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", diff --git a/src/peakrdl_regblock/addr_decode.py b/src/peakrdl_regblock/addr_decode.py index 79eb656..48361d3 100644 --- a/src/peakrdl_regblock/addr_decode.py +++ b/src/peakrdl_regblock/addr_decode.py @@ -120,6 +120,7 @@ class DecodeLogicGenerator(RDLForLoopGenerator): s = f"{self.addr_decode.get_access_strobe(node)} = cpuif_req_masked & (cpuif_addr == {self._get_address_str(node)});" self.add_content(s) else: + # Register is wide. Create a substrobe for each subword n_subwords = regwidth // accesswidth subword_stride = accesswidth // 8 for i in range(n_subwords): diff --git a/src/peakrdl_regblock/exporter.py b/src/peakrdl_regblock/exporter.py index 76a07cc..78152e0 100644 --- a/src/peakrdl_regblock/exporter.py +++ b/src/peakrdl_regblock/exporter.py @@ -10,12 +10,13 @@ from .dereferencer import Dereferencer from .readback import Readback from .identifier_filter import kw_filter as kwf -from .cpuif import CpuifBase -from .cpuif.apb4 import APB4_Cpuif -from .hwif import Hwif from .utils import get_always_ff_event from .scan_design import DesignScanner from .validate_design import DesignValidator +from .cpuif import CpuifBase +from .cpuif.apb4 import APB4_Cpuif +from .hwif import Hwif +from .write_buffering import WriteBuffering class RegblockExporter: def __init__(self, **kwargs: Any) -> None: @@ -30,6 +31,7 @@ class RegblockExporter: self.address_decode = AddressDecode(self) self.field_logic = FieldLogic(self) self.readback = None # type: Readback + self.write_buffering = None # type: WriteBuffering self.dereferencer = Dereferencer(self) self.min_read_latency = 0 self.min_write_latency = 0 @@ -143,6 +145,7 @@ class RegblockExporter: self, retime_read_fanin ) + self.write_buffering = WriteBuffering(self) # Validate that there are no unsupported constructs validator = DesignValidator(self) @@ -153,8 +156,11 @@ class RegblockExporter: "module_name": module_name, "user_out_of_hier_signals": scanner.out_of_hier_signals.values(), "has_writable_msb0_fields": scanner.has_writable_msb0_fields, + "has_buffered_write_regs": scanner.has_buffered_write_regs, + "has_buffered_read_regs": scanner.has_buffered_read_regs, "cpuif": self.cpuif, "hwif": self.hwif, + "write_buffering": self.write_buffering, "get_resetsignal": self.dereferencer.get_resetsignal, "address_decode": self.address_decode, "field_logic": self.field_logic, diff --git a/src/peakrdl_regblock/field_logic/__init__.py b/src/peakrdl_regblock/field_logic/__init__.py index 38da2a4..87afb80 100644 --- a/src/peakrdl_regblock/field_logic/__init__.py +++ b/src/peakrdl_regblock/field_logic/__init__.py @@ -1,7 +1,6 @@ from typing import TYPE_CHECKING -from systemrdl.rdltypes import PropertyReference, PrecedenceType, InterruptType -from systemrdl.node import Node +from systemrdl.rdltypes import PrecedenceType, InterruptType from .bases import AssignmentPrecedence, NextStateConditional from . import sw_onread @@ -186,19 +185,35 @@ class FieldLogic: """ w_modifiable = field.is_sw_writable r_modifiable = (field.get_property('onread') is not None) - strb = self.exp.dereferencer.get_access_strobe(field) + buffer_writes = field.parent.get_property('buffer_writes') if w_modifiable and not r_modifiable: # assert swmod only on sw write - return f"{strb} && decoded_req_is_wr" + if buffer_writes: + # Write strobe arrives from buffer layer instead + wstrb = self.exp.write_buffering.get_write_strobe(field) + return wstrb + else: + # Unbuffered. Use decoder strobe directly + astrb = self.exp.dereferencer.get_access_strobe(field) + return f"{astrb} && decoded_req_is_wr" if w_modifiable and r_modifiable: - # assert swmod on all sw actions - return strb + # assert swmod on both sw read and write + if buffer_writes: + astrb = self.exp.dereferencer.get_access_strobe(field) + wstrb = self.exp.write_buffering.get_write_strobe(field) + rstrb = f"{astrb} && !decoded_req_is_wr" + return f"{wstrb} || {rstrb}" + else: + # Unbuffered. Use decoder strobe directly + astrb = self.exp.dereferencer.get_access_strobe(field) + return astrb if not w_modifiable and r_modifiable: # assert swmod only on sw read - return f"{strb} && !decoded_req_is_wr" + astrb = self.exp.dereferencer.get_access_strobe(field) + return f"{astrb} && !decoded_req_is_wr" # Not sw modifiable return "1'b0" diff --git a/src/peakrdl_regblock/field_logic/generators.py b/src/peakrdl_regblock/field_logic/generators.py index a84b70f..a163c10 100644 --- a/src/peakrdl_regblock/field_logic/generators.py +++ b/src/peakrdl_regblock/field_logic/generators.py @@ -85,7 +85,7 @@ class FieldLogicGenerator(RDLForLoopGenerator): super().__init__() self.field_logic = field_logic self.exp = field_logic.exp - self.field_storage_template = self.field_logic.exp.jj_env.get_template( + self.field_storage_template = self.exp.jj_env.get_template( "field_logic/templates/field_storage.sv" ) self.intr_fields = [] # type: List[FieldNode] diff --git a/src/peakrdl_regblock/field_logic/sw_onwrite.py b/src/peakrdl_regblock/field_logic/sw_onwrite.py index df2ad3d..1a22ffa 100644 --- a/src/peakrdl_regblock/field_logic/sw_onwrite.py +++ b/src/peakrdl_regblock/field_logic/sw_onwrite.py @@ -15,60 +15,104 @@ class _OnWrite(NextStateConditional): return field.is_sw_writable and field.get_property('onwrite') == self.onwritetype def get_predicate(self, field: 'FieldNode') -> str: - strb = self.exp.dereferencer.get_access_strobe(field) + if field.parent.get_property('buffer_writes'): + # Is buffered write. Use alternate strobe + wstrb = self.exp.write_buffering.get_write_strobe(field) - if field.get_property('swwe') or field.get_property('swwel'): - # dereferencer will wrap swwel complement if necessary - qualifier = self.exp.dereferencer.get_field_propref_value(field, 'swwe') - return f"{strb} && decoded_req_is_wr && {qualifier}" + if field.get_property('swwe') or field.get_property('swwel'): + # dereferencer will wrap swwel complement if necessary + qualifier = self.exp.dereferencer.get_field_propref_value(field, 'swwe') + return f"{wstrb} && {qualifier}" - return f"{strb} && decoded_req_is_wr" + return wstrb + else: + # is regular register + strb = self.exp.dereferencer.get_access_strobe(field) - def _wbus_bitslice(self, field: 'FieldNode', subword_idx: int) -> str: + if field.get_property('swwe') or field.get_property('swwel'): + # dereferencer will wrap swwel complement if necessary + qualifier = self.exp.dereferencer.get_field_propref_value(field, 'swwe') + return f"{strb} && decoded_req_is_wr && {qualifier}" + + return f"{strb} && decoded_req_is_wr" + + def _wbus_bitslice(self, field: 'FieldNode', subword_idx: int = 0) -> str: # Get the source bitslice range from the internal cpuif's data bus - # For normal fields this ends up passing-through the field's low/high - # values unchanged. - # For fields within a wide register (accesswidth < regwidth), low/high - # may be shifted down and clamped depending on which sub-word is being accessed - accesswidth = field.parent.get_property('accesswidth') + if field.parent.get_property('buffer_writes'): + # register is buffered. + # write buffer is the full width of the register. no need to deal with subwords + high = field.high + low = field.low + if field.msb < field.lsb: + # slice is for an msb0 field. + # mirror it + regwidth = field.parent.get_property('regwidth') + low = regwidth - 1 - low + high = regwidth - 1 - high + low, high = high, low + else: + # Regular non-buffered register + # For normal fields this ends up passing-through the field's low/high + # values unchanged. + # For fields within a wide register (accesswidth < regwidth), low/high + # may be shifted down and clamped depending on which sub-word is being accessed + accesswidth = field.parent.get_property('accesswidth') - # Shift based on subword - high = field.high - (subword_idx * accesswidth) - low = field.low - (subword_idx * accesswidth) + # Shift based on subword + high = field.high - (subword_idx * accesswidth) + low = field.low - (subword_idx * accesswidth) - # clamp to accesswidth - high = max(min(high, accesswidth), 0) - low = max(min(low, accesswidth), 0) + # clamp to accesswidth + high = max(min(high, accesswidth), 0) + low = max(min(low, accesswidth), 0) - if field.msb < field.lsb: - # slice is for an msb0 field. - # mirror it - bus_width = self.exp.cpuif.data_width - low = bus_width - 1 - low - high = bus_width - 1 - high - low, high = high, low + if field.msb < field.lsb: + # slice is for an msb0 field. + # mirror it + bus_width = self.exp.cpuif.data_width + low = bus_width - 1 - low + high = bus_width - 1 - high + low, high = high, low return f"[{high}:{low}]" def _wr_data(self, field: 'FieldNode', subword_idx: int=0) -> str: - bslice = self._wbus_bitslice(field, subword_idx) - - if field.msb < field.lsb: - # Field gets bitswapped since it is in [low:high] orientation - value = f"decoded_wr_data_bswap{bslice}" + if field.parent.get_property('buffer_writes'): + # Is buffered. Use value from write buffer + # No need to check msb0 ordering. Bus is pre-swapped, and bitslice + # accounts for it + bslice = self._wbus_bitslice(field) + wbuf_prefix = self.exp.write_buffering.get_wbuf_prefix(field) + return wbuf_prefix + ".data" + bslice else: - value = f"decoded_wr_data{bslice}" - return value + # Regular non-buffered register + bslice = self._wbus_bitslice(field, subword_idx) + + if field.msb < field.lsb: + # Field gets bitswapped since it is in [low:high] orientation + value = "decoded_wr_data_bswap" + bslice + else: + value = "decoded_wr_data" + bslice + return value def _wr_biten(self, field: 'FieldNode', subword_idx: int=0) -> str: - bslice = self._wbus_bitslice(field, subword_idx) - - if field.msb < field.lsb: - # Field gets bitswapped since it is in [low:high] orientation - value = f"decoded_wr_biten_bswap{bslice}" + if field.parent.get_property('buffer_writes'): + # Is buffered. Use value from write buffer + # No need to check msb0 ordering. Bus is pre-swapped, and bitslice + # accounts for it + bslice = self._wbus_bitslice(field) + wbuf_prefix = self.exp.write_buffering.get_wbuf_prefix(field) + return wbuf_prefix + ".biten" + bslice else: - value = f"decoded_wr_biten{bslice}" - return value + # Regular non-buffered register + bslice = self._wbus_bitslice(field, subword_idx) + + if field.msb < field.lsb: + # Field gets bitswapped since it is in [low:high] orientation + value = "decoded_wr_biten_bswap" + bslice + else: + value = "decoded_wr_biten" + bslice + return value def get_assignments(self, field: 'FieldNode') -> List[str]: accesswidth = field.parent.get_property("accesswidth") @@ -92,6 +136,7 @@ class _OnWrite(NextStateConditional): raise NotImplementedError +#------------------------------------------------------------------------------- class WriteOneSet(_OnWrite): comment = "SW write 1 set" onwritetype = OnWriteType.woset diff --git a/src/peakrdl_regblock/module_tmpl.sv b/src/peakrdl_regblock/module_tmpl.sv index c9bd456..3c0207b 100644 --- a/src/peakrdl_regblock/module_tmpl.sv +++ b/src/peakrdl_regblock/module_tmpl.sv @@ -108,6 +108,15 @@ module {{module_name}} ( assign cpuif_wr_ack = decoded_req & decoded_req_is_wr; assign cpuif_wr_err = '0; +{%- if has_buffered_write_regs %} + //-------------------------------------------------------------------------- + // Write double-buffers + //-------------------------------------------------------------------------- + {{write_buffering.get_storage_struct()|indent}} + + {{write_buffering.get_implementation()|indent}} +{%- endif %} + //-------------------------------------------------------------------------- // Field logic //-------------------------------------------------------------------------- @@ -124,7 +133,6 @@ module {{module_name}} ( logic readback_done; logic [{{cpuif.data_width-1}}:0] readback_data; {{readback.get_implementation()|indent}} - {% if retime_read_response %} always_ff {{get_always_ff_event(cpuif.reset)}} begin if({{get_resetsignal(cpuif.reset)}}) begin @@ -141,6 +149,5 @@ module {{module_name}} ( assign cpuif_rd_ack = readback_done; assign cpuif_rd_data = readback_data; assign cpuif_rd_err = readback_err; -{% endif %} - +{%- endif %} endmodule diff --git a/src/peakrdl_regblock/readback/templates/readback.sv b/src/peakrdl_regblock/readback/templates/readback.sv index fc706c8..29ca77d 100644 --- a/src/peakrdl_regblock/readback/templates/readback.sv +++ b/src/peakrdl_regblock/readback/templates/readback.sv @@ -3,7 +3,9 @@ logic [{{cpuif.data_width-1}}:0] readback_array[{{array_size}}]; {{array_assignments}} -{% if do_fanin_stage %} + +{%- if do_fanin_stage %} + // fanin stage logic [{{cpuif.data_width-1}}:0] readback_array_c[{{fanin_array_size}}]; for(genvar g=0; g<{{fanin_loop_iter}}; g++) begin @@ -48,6 +50,7 @@ always_comb begin end {%- else %} + // Reduce the array always_comb begin automatic logic [{{cpuif.data_width-1}}:0] readback_data_var; diff --git a/src/peakrdl_regblock/scan_design.py b/src/peakrdl_regblock/scan_design.py index f2960bf..946334a 100644 --- a/src/peakrdl_regblock/scan_design.py +++ b/src/peakrdl_regblock/scan_design.py @@ -26,6 +26,8 @@ class DesignScanner(RDLListener): self.out_of_hier_signals = OrderedDict() # type: OrderedDict[str, SignalNode] self.has_writable_msb0_fields = False + self.has_buffered_write_regs = False + self.has_buffered_read_regs = False def _get_out_of_hier_field_reset(self) -> None: current_node = self.exp.top_node.parent @@ -69,19 +71,7 @@ class DesignScanner(RDLListener): if node.external and (node != self.exp.top_node): # Do not inspect external components. None of my business return WalkerAction.SkipDescendants - return None - def enter_Reg(self, node: 'RegNode') -> None: - # The CPUIF's bus width is sized according to the largest accesswidth in the design - accesswidth = node.get_property('accesswidth') - self.cpuif_data_width = max(self.cpuif_data_width, accesswidth) - - def enter_Signal(self, node: 'SignalNode') -> None: - if node.get_property('field_reset'): - path = node.get_path() - self.in_hier_signal_paths.add(path) - - def enter_Field(self, node: 'FieldNode') -> None: # Collect any signals that are referenced by a property for prop_name in node.list_properties(): value = node.get_property(prop_name) @@ -93,5 +83,21 @@ class DesignScanner(RDLListener): else: self.in_hier_signal_paths.add(path) + return None + + def enter_Reg(self, node: 'RegNode') -> None: + # The CPUIF's bus width is sized according to the largest accesswidth in the design + accesswidth = node.get_property('accesswidth') + self.cpuif_data_width = max(self.cpuif_data_width, accesswidth) + + self.has_buffered_write_regs = self.has_buffered_write_regs or node.get_property('buffer_writes') + self.has_buffered_read_regs = self.has_buffered_read_regs or node.get_property('buffer_reads') + + def enter_Signal(self, node: 'SignalNode') -> None: + if node.get_property('field_reset'): + path = node.get_path() + self.in_hier_signal_paths.add(path) + + def enter_Field(self, node: 'FieldNode') -> None: if node.is_sw_writable and (node.msb < node.lsb): self.has_writable_msb0_fields = True diff --git a/src/peakrdl_regblock/udps.py b/src/peakrdl_regblock/udps.py index e06de80..dc754a5 100644 --- a/src/peakrdl_regblock/udps.py +++ b/src/peakrdl_regblock/udps.py @@ -3,7 +3,8 @@ from typing import Any from systemrdl.udp import UDPDefinition from systemrdl.component import Reg from systemrdl.rdltypes.references import RefType, PropertyReference -from systemrdl.node import Node, RegNode, VectorNode +from systemrdl.rdltypes import NoValue +from systemrdl.node import Node, RegNode, VectorNode, SignalNode class xBufferTrigger(UDPDefinition): @@ -13,7 +14,12 @@ class xBufferTrigger(UDPDefinition): def validate(self, node: Node, value: Any) -> None: # TODO: Reference shall not cross an internal/external boundary - if isinstance(value, VectorNode): + if value is NoValue: + self.msg.error( + "Double-buffer trigger property is missing a value assignment", + self.get_src_ref(node) + ) + elif isinstance(value, VectorNode): # Trigger can reference a vector, but only if it is a single-bit if value.width != 1: self.msg.error( @@ -24,6 +30,14 @@ class xBufferTrigger(UDPDefinition): ), self.get_src_ref(node) ) + + if isinstance(value, SignalNode): + if not value.get_property('activehigh') and not value.get_property('activelow'): + self.msg.error( + "Trigger was asigned a signal, but it does not specify whether it is activehigh/activelow", + self.get_src_ref(node) + ) + elif isinstance(value, PropertyReference) and value.width is not None: # Trigger can reference a property, but only if it is a single-bit if value.width != 1: @@ -54,7 +68,6 @@ class BufferWrites(UDPDefinition): name = "buffer_writes" valid_components = {Reg} valid_type = bool - default_assignment = True def validate(self, node: 'Node', value: Any) -> None: assert isinstance(node, RegNode) @@ -64,7 +77,6 @@ class BufferWrites(UDPDefinition): "'buffer_writes' is set to true, but this register does not contain any writable fields.", self.get_src_ref(node) ) - # TODO: Should I limit the use of other properties on double-buffered registers? def get_unassigned_default(self, node: 'Node') -> Any: return False @@ -84,7 +96,6 @@ class BufferReads(UDPDefinition): name = "buffer_reads" valid_components = {Reg} valid_type = bool - default_assignment = True def validate(self, node: 'Node', value: Any) -> None: assert isinstance(node, RegNode) @@ -95,8 +106,6 @@ class BufferReads(UDPDefinition): self.get_src_ref(node) ) - # TODO: Should I limit the use of other properties on double-buffered registers? - def get_unassigned_default(self, node: 'Node') -> Any: return False diff --git a/src/peakrdl_regblock/validate_design.py b/src/peakrdl_regblock/validate_design.py index 377d585..94ac16c 100644 --- a/src/peakrdl_regblock/validate_design.py +++ b/src/peakrdl_regblock/validate_design.py @@ -77,23 +77,30 @@ class DesignValidator(RDLListener): def enter_Field(self, node: 'FieldNode') -> None: - # 10.6.1-f: Any field that is software-writable or clear on read shall - # not span multiple software accessible sub-words (e.g., a 64-bit - # register with a 32-bit access width may not have a writable field with - # bits in both the upper and lower half of the register). - # - # Interpreting this further - this rule applies any time a field is - # software-modifiable by any means, including rclr, rset, ruser - # TODO: suppress this check for registers that have the appropriate - # buffer_writes/buffer_reads UDP set parent_accesswidth = node.parent.get_property('accesswidth') parent_regwidth = node.parent.get_property('regwidth') - if ((parent_accesswidth < parent_regwidth) - and (node.lsb // parent_accesswidth) != (node.msb // parent_accesswidth) - and (node.is_sw_writable or node.get_property('onread') is not None)): - # Field spans across sub-words - self.msg.error( - f"Software-modifiable field '{node.inst_name}' shall not span " - "multiple software-accessible subwords.", - node.inst.inst_src_ref - ) + if ( + (parent_accesswidth < parent_regwidth) + and (node.lsb // parent_accesswidth) != (node.msb // parent_accesswidth) + ): + # field spans multiple sub-words + if node.is_sw_writable and not node.parent.get_property('buffer_writes'): + # ... and is writable without the protection of double-buffering + # Enforce 10.6.1-f + self.msg.error( + f"Software-writable field '{node.inst_name}' shall not span" + " multiple software-accessible subwords. Consider enabling" + " write double-buffering.", + node.inst.inst_src_ref + ) + + if node.get_property('onread') is not None and not node.parent.get_property('buffer_reads'): + # ... is modified by an onread action without the atomicity of read buffering + # Enforce 10.6.1-f + self.msg.error( + f"The field '{node.inst_name}' spans multiple software-accessible" + " subwords and is modified on-read, making it impossible to" + " access its value correctly. Consider enabling read" + " double-buffering.", + node.inst.inst_src_ref + ) diff --git a/src/peakrdl_regblock/write_buffering/__init__.py b/src/peakrdl_regblock/write_buffering/__init__.py new file mode 100644 index 0000000..c71ab48 --- /dev/null +++ b/src/peakrdl_regblock/write_buffering/__init__.py @@ -0,0 +1,80 @@ +from typing import TYPE_CHECKING, Union + +from systemrdl.node import AddrmapNode, RegNode, FieldNode, SignalNode + +from .storage_generator import WBufStorageStructGenerator +from .implementation_generator import WBufLogicGenerator +from ..utils import get_indexed_path + +if TYPE_CHECKING: + from ..exporter import RegblockExporter + + +class WriteBuffering: + def __init__(self, exp:'RegblockExporter'): + self.exp = exp + + @property + def top_node(self) -> 'AddrmapNode': + return self.exp.top_node + + + def get_storage_struct(self) -> str: + struct_gen = WBufStorageStructGenerator(self) + s = struct_gen.get_struct(self.top_node, "wbuf_storage_t") + assert s is not None + return s + "\nwbuf_storage_t wbuf_storage;" + + + def get_implementation(self) -> str: + gen = WBufLogicGenerator(self) + s = gen.get_content(self.top_node) + assert s is not None + return s + + def get_wbuf_prefix(self, node: Union[RegNode, FieldNode]) -> str: + if isinstance(node, FieldNode): + node = node.parent + wbuf_prefix = "wbuf_storage." + get_indexed_path(self.top_node, node) + return wbuf_prefix + + def get_write_strobe(self, node: Union[RegNode, FieldNode]) -> str: + prefix = self.get_wbuf_prefix(node) + return f"{prefix}.pending && {self.get_trigger(node)}" + + def get_raw_trigger(self, node: 'RegNode') -> str: + trigger = node.get_property('wbuffer_trigger') + + if isinstance(trigger, RegNode): + # Trigger is a register. + # trigger when uppermost address of the register is written + regwidth = node.get_property('regwidth') + accesswidth = node.get_property('accesswidth') + strb_prefix = self.exp.dereferencer.get_access_strobe(trigger, reduce_substrobes=False) + + if accesswidth < regwidth: + n_subwords = regwidth // accesswidth + return f"{strb_prefix}[{n_subwords-1}] && decoded_req_is_wr" + else: + return f"{strb_prefix} && decoded_req_is_wr" + elif isinstance(trigger, SignalNode): + s = self.exp.dereferencer.get_value(trigger) + if trigger.get_property('activehigh'): + return s + else: + return f"~{s}" + else: + # Trigger is a field or propref bit + return self.exp.dereferencer.get_value(trigger) + + def get_trigger(self, node: Union[RegNode, FieldNode]) -> str: + if isinstance(node, FieldNode): + node = node.parent + trigger = node.get_property('wbuffer_trigger') + + if isinstance(trigger, RegNode) and trigger == node: + # register is its own trigger + # use the delayed trigger signal + return self.get_wbuf_prefix(node) + ".trigger_q" + else: + return self.get_raw_trigger(node) diff --git a/src/peakrdl_regblock/write_buffering/implementation_generator.py b/src/peakrdl_regblock/write_buffering/implementation_generator.py new file mode 100644 index 0000000..808b9d3 --- /dev/null +++ b/src/peakrdl_regblock/write_buffering/implementation_generator.py @@ -0,0 +1,60 @@ +from typing import TYPE_CHECKING +from collections import namedtuple + +from systemrdl.component import Reg +from systemrdl.node import RegNode + +from ..forloop_generator import RDLForLoopGenerator +from ..utils import get_always_ff_event + +if TYPE_CHECKING: + from . import WriteBuffering + +class WBufLogicGenerator(RDLForLoopGenerator): + i_type = "genvar" + def __init__(self, wbuf: 'WriteBuffering') -> None: + super().__init__() + self.wbuf = wbuf + self.exp = wbuf.exp + self.template = self.exp.jj_env.get_template( + "write_buffering/template.sv" + ) + + def enter_Reg(self, node: 'RegNode') -> None: + super().enter_Reg(node) + assert isinstance(node.inst, Reg) + + if not node.get_property('buffer_writes'): + return + + regwidth = node.get_property('regwidth') + accesswidth = node.get_property('accesswidth') + strb_prefix = self.exp.dereferencer.get_access_strobe(node, reduce_substrobes=False) + Segment = namedtuple("Segment", ["strobe", "bslice"]) + segments = [] + if accesswidth < regwidth: + n_subwords = regwidth // accesswidth + for i in range(n_subwords): + strobe = strb_prefix + f"[{i}]" + if node.inst.is_msb0_order: + bslice = f"[{regwidth - (accesswidth * i) - 1}: {regwidth - (accesswidth * (i+1))}]" + else: + bslice = f"[{(accesswidth * (i + 1)) - 1}:{accesswidth * i}]" + segments.append(Segment(strobe, bslice)) + else: + segments.append(Segment(strb_prefix, "")) + + trigger = node.get_property('wbuffer_trigger') + is_own_trigger = (isinstance(trigger, RegNode) and trigger == node) + + context = { + 'wbuf': self.wbuf, + 'wbuf_prefix': self.wbuf.get_wbuf_prefix(node), + 'segments': segments, + 'node': node, + 'cpuif': self.exp.cpuif, + 'get_resetsignal': self.exp.dereferencer.get_resetsignal, + 'get_always_ff_event': lambda resetsignal : get_always_ff_event(self.exp.dereferencer, resetsignal), + 'is_own_trigger': is_own_trigger, + } + self.add_content(self.template.render(context)) diff --git a/src/peakrdl_regblock/write_buffering/storage_generator.py b/src/peakrdl_regblock/write_buffering/storage_generator.py new file mode 100644 index 0000000..6b48472 --- /dev/null +++ b/src/peakrdl_regblock/write_buffering/storage_generator.py @@ -0,0 +1,32 @@ +from typing import TYPE_CHECKING + +from systemrdl.node import FieldNode, RegNode + +from ..struct_generator import RDLStructGenerator + +if TYPE_CHECKING: + from . import WriteBuffering + +class WBufStorageStructGenerator(RDLStructGenerator): + def __init__(self, wbuf: 'WriteBuffering') -> None: + super().__init__() + self.wbuf = wbuf + + def enter_Field(self, node: FieldNode) -> None: + # suppress parent class's field behavior + pass + + def enter_Reg(self, node: RegNode) -> None: + super().enter_Reg(node) + + if not node.get_property('buffer_writes'): + return + + regwidth = node.get_property('regwidth') + self.add_member("data", regwidth) + self.add_member("biten", regwidth) + self.add_member("pending") + + trigger = node.get_property('wbuffer_trigger') + if isinstance(trigger, RegNode) and trigger == node: + self.add_member("trigger_q") diff --git a/src/peakrdl_regblock/write_buffering/template.sv b/src/peakrdl_regblock/write_buffering/template.sv new file mode 100644 index 0000000..b2d01cd --- /dev/null +++ b/src/peakrdl_regblock/write_buffering/template.sv @@ -0,0 +1,31 @@ +always_ff {{get_always_ff_event(cpuif.reset)}} begin + if({{get_resetsignal(cpuif.reset)}}) begin + {{wbuf_prefix}}.pending <= '0; + {{wbuf_prefix}}.data <= '0; + {{wbuf_prefix}}.biten <= '0; + {%- if is_own_trigger %} + {{wbuf_prefix}}.trigger_q <= '0; + {%- endif %} + end else begin + {%- for segment in segments %} + if({{segment.strobe}} && decoded_req_is_wr) begin + {{wbuf_prefix}}.pending <= '1; + {%- if node.inst.is_msb0_order %} + {{wbuf_prefix}}.data{{segment.bslice}} <= decoded_wr_data_bswap; + {{wbuf_prefix}}.biten{{segment.bslice}} <= decoded_wr_biten_bswap; + {%- else %} + {{wbuf_prefix}}.data{{segment.bslice}} <= decoded_wr_data; + {{wbuf_prefix}}.biten{{segment.bslice}} <= decoded_wr_biten; + {%- endif %} + end + {%- endfor %} + {% if is_own_trigger %} + {{wbuf_prefix}}.trigger_q <= {{wbuf.get_raw_trigger(node)}}; + {%- endif %} + if({{wbuf.get_trigger(node)}}) begin + {{wbuf_prefix}}.pending <= '0; + {{wbuf_prefix}}.data <= '0; + {{wbuf_prefix}}.biten <= '0; + end + end +end diff --git a/tests/.coveragerc b/tests/.coveragerc index f664bca..05e3012 100644 --- a/tests/.coveragerc +++ b/tests/.coveragerc @@ -2,6 +2,10 @@ branch = True #relative_files = True +omit = + # to be covered elsewhere + */__peakrdl__.py + [paths] source = ../src/peakrdl_regblock/ diff --git a/tests/lib/base_testcase.py b/tests/lib/base_testcase.py index 97582e8..7bb6489 100644 --- a/tests/lib/base_testcase.py +++ b/tests/lib/base_testcase.py @@ -86,8 +86,13 @@ class BaseTestCase(unittest.TestCase): rdl_file = glob.glob(os.path.join(this_dir, "*.rdl"))[0] rdlc = RDLCompiler() + + # Load the UDPs for udp in ALL_UDPS: rdlc.register_udp(udp) + # ... including the definition + udp_file = os.path.join(this_dir, "../../hdl-src/regblock_udps.rdl") + rdlc.compile_file(udp_file) rdlc.compile_file(rdl_file) root = rdlc.elaborate(cls.rdl_elab_target, "regblock", cls.rdl_elab_params) diff --git a/tests/test_write_buffer/__init__.py b/tests/test_write_buffer/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_write_buffer/regblock.rdl b/tests/test_write_buffer/regblock.rdl new file mode 100644 index 0000000..ca267bc --- /dev/null +++ b/tests/test_write_buffer/regblock.rdl @@ -0,0 +1,106 @@ +addrmap top { + default regwidth = 16; + default accesswidth = 16; + default sw=rw; + default hw=r; + //-------------------------------------------------------------------------- + // Wide registers + //-------------------------------------------------------------------------- + reg { + regwidth = 64; + buffer_writes = true; + field {} f1[63:0] = 0; + } reg1; + + reg { + regwidth = 64; + buffer_writes = true; + field {} f1[0:63] = 0; + } reg1_msb0; + + reg { + regwidth = 32; + buffer_writes = true; + field {} f1[19:8] = 0; + field {} f2[23:20] = 0; + } reg2; + + reg { + regwidth = 32; + buffer_writes = true; + field {} f1[8:19] = 0; + field {} f2[20:23] = 0; + } reg2_msb0; + + //-------------------------------------------------------------------------- + // Alternate Triggers + //-------------------------------------------------------------------------- + reg myreg { + buffer_writes; + field {} f1[15:0] = 0; + }; + + // Trigger via another register + myreg g1_r1; + myreg g1_r2; + g1_r1->buffer_writes = false; + g1_r2->wbuffer_trigger = g1_r1; + + // triger from signal + signal { + activehigh; + } trigger_sig; + signal { + activelow; + } trigger_sig_n; + myreg g2_r1; + myreg g2_r2; + g2_r1->wbuffer_trigger = trigger_sig; + g2_r2->wbuffer_trigger = trigger_sig_n; + + // trigger from field + myreg g3_r1; + reg { + field { + sw=w; hw=r; singlepulse; + } trig = 0; + } g3_trig; + g3_r1->wbuffer_trigger = g3_trig.trig; + + // trigger from propref + myreg g4_r1; + reg { + field { + hw=na; + } trig_vec[3:0] = 0; + } g4_trig; + g4_r1->wbuffer_trigger = g4_trig.trig_vec->anded; + + //-------------------------------------------------------------------------- + // swmod behavior + //-------------------------------------------------------------------------- + myreg g5_r1; + g5_r1->wbuffer_trigger = trigger_sig; + reg { + field{ + sw=rw; + hw=na; + counter; + } c[3:0] = 0; + } g5_modcount; + g5_modcount.c->incr = g5_r1.f1->swmod; + + myreg g6_r1; + g6_r1.f1->rclr; + g6_r1->wbuffer_trigger = trigger_sig; + reg { + field{ + sw=rw; + hw=na; + counter; + } c[3:0] = 0; + } g6_modcount; + g6_modcount.c->incr = g6_r1.f1->swmod; + + +}; diff --git a/tests/test_write_buffer/tb_template.sv b/tests/test_write_buffer/tb_template.sv new file mode 100644 index 0000000..c202570 --- /dev/null +++ b/tests/test_write_buffer/tb_template.sv @@ -0,0 +1,220 @@ +{% extends "lib/tb_base.sv" %} + +{% block seq %} + {% sv_line_anchor %} + cb.hwif_in.trigger_sig_n <= '1; + ##1; + cb.rst <= '0; + ##1; + + //-------------------------------------------------------------------------- + // Wide registers + //-------------------------------------------------------------------------- + + // reg1 + cpuif.assert_read('h0, 'h0); + cpuif.assert_read('h2, 'h0); + cpuif.assert_read('h4, 'h0); + cpuif.assert_read('h6, 'h0); + assert(cb.hwif_out.reg1.f1.value == 0); + cpuif.write('h0, 'h1234); + cpuif.assert_read('h0, 'h0); + cpuif.assert_read('h2, 'h0); + cpuif.assert_read('h4, 'h0); + cpuif.assert_read('h6, 'h0); + assert(cb.hwif_out.reg1.f1.value == 0); + cpuif.write('h2, 'h5678); + cpuif.assert_read('h0, 'h0); + cpuif.assert_read('h2, 'h0); + cpuif.assert_read('h4, 'h0); + cpuif.assert_read('h6, 'h0); + assert(cb.hwif_out.reg1.f1.value == 0); + cpuif.write('h4, 'h9ABC); + cpuif.assert_read('h0, 'h0); + cpuif.assert_read('h2, 'h0); + cpuif.assert_read('h4, 'h0); + cpuif.assert_read('h6, 'h0); + assert(cb.hwif_out.reg1.f1.value == 0); + cpuif.write('h6, 'hDEF1); + @cb; @cb; + assert(cb.hwif_out.reg1.f1.value == 64'hDEF19ABC56781234); + cpuif.assert_read('h0, 'h1234); + cpuif.assert_read('h2, 'h5678); + cpuif.assert_read('h4, 'h9ABC); + cpuif.assert_read('h6, 'hDEF1); + + // reg1_msb0 + cpuif.assert_read('h8, 'h0); + cpuif.assert_read('hA, 'h0); + cpuif.assert_read('hC, 'h0); + cpuif.assert_read('hE, 'h0); + assert(cb.hwif_out.reg1_msb0.f1.value == 0); + cpuif.write('h8, 'h1234); + cpuif.assert_read('h8, 'h0); + cpuif.assert_read('hA, 'h0); + cpuif.assert_read('hC, 'h0); + cpuif.assert_read('hE, 'h0); + assert(cb.hwif_out.reg1_msb0.f1.value == 0); + cpuif.write('hA, 'h5678); + cpuif.assert_read('h8, 'h0); + cpuif.assert_read('hA, 'h0); + cpuif.assert_read('hC, 'h0); + cpuif.assert_read('hE, 'h0); + assert(cb.hwif_out.reg1_msb0.f1.value == 0); + cpuif.write('hC, 'h9ABC); + cpuif.assert_read('h8, 'h0); + cpuif.assert_read('hA, 'h0); + cpuif.assert_read('hC, 'h0); + cpuif.assert_read('hE, 'h0); + assert(cb.hwif_out.reg1_msb0.f1.value == 0); + cpuif.write('hE, 'hDEF1); + @cb; @cb; + assert({<<{cb.hwif_out.reg1_msb0.f1.value}} == 64'hDEF19ABC56781234); + cpuif.assert_read('h8, 'h1234); + cpuif.assert_read('hA, 'h5678); + cpuif.assert_read('hC, 'h9ABC); + cpuif.assert_read('hE, 'hDEF1); + + // reg2 + cpuif.assert_read('h10, 'h0); + cpuif.assert_read('h12, 'h0); + assert(cb.hwif_out.reg2.f1.value == 0); + assert(cb.hwif_out.reg2.f2.value == 0); + cpuif.write('h10, 'h34AA); + cpuif.assert_read('h10, 'h0); + cpuif.assert_read('h12, 'h0); + assert(cb.hwif_out.reg2.f1.value == 0); + assert(cb.hwif_out.reg2.f2.value == 0); + cpuif.write('h12, 'hAA12); + @cb; @cb; + assert(cb.hwif_out.reg2.f1.value == 12'h234); + assert(cb.hwif_out.reg2.f2.value == 4'h1); + cpuif.assert_read('h10, 'h3400); + cpuif.assert_read('h12, 'h0012); + + // reg2_msb0 + cpuif.assert_read('h14, 'h0); + cpuif.assert_read('h16, 'h0); + assert(cb.hwif_out.reg2_msb0.f1.value == 0); + assert(cb.hwif_out.reg2_msb0.f2.value == 0); + cpuif.write('h14, 'h34AA); + cpuif.assert_read('h14, 'h0); + cpuif.assert_read('h16, 'h0); + assert(cb.hwif_out.reg2_msb0.f1.value == 0); + assert(cb.hwif_out.reg2_msb0.f2.value == 0); + cpuif.write('h16, 'hAA12); + @cb; @cb; + assert({<<{cb.hwif_out.reg2_msb0.f1.value}} == 12'h234); + assert({<<{cb.hwif_out.reg2_msb0.f2.value}} == 4'h1); + cpuif.assert_read('h14, 'h3400); + cpuif.assert_read('h16, 'h0012); + + //-------------------------------------------------------------------------- + // Alternate Triggers + //-------------------------------------------------------------------------- + + // g1 + cpuif.assert_read('h18, 'h0); + cpuif.assert_read('h1A, 'h0); + assert(cb.hwif_out.g1_r1.f1.value == 0); + assert(cb.hwif_out.g1_r2.f1.value == 0); + cpuif.write('h1A, 'h1234); + cpuif.assert_read('h18, 'h0); + cpuif.assert_read('h1A, 'h0); + assert(cb.hwif_out.g1_r1.f1.value == 0); + assert(cb.hwif_out.g1_r2.f1.value == 0); + cpuif.write('h18, 'hABCD); + @cb; + assert(cb.hwif_out.g1_r1.f1.value == 'hABCD); + assert(cb.hwif_out.g1_r2.f1.value == 'h1234); + + // g2 + cpuif.assert_read('h1C, 'h0); + cpuif.assert_read('h1E, 'h0); + assert(cb.hwif_out.g2_r1.f1.value == 0); + assert(cb.hwif_out.g2_r2.f1.value == 0); + cpuif.write('h1C, 'h5678); + cpuif.write('h1E, 'h9876); + cpuif.assert_read('h1C, 'h0); + cpuif.assert_read('h1E, 'h0); + assert(cb.hwif_out.g2_r1.f1.value == 0); + assert(cb.hwif_out.g2_r2.f1.value == 0); + cb.hwif_in.trigger_sig <= '1; + cb.hwif_in.trigger_sig_n <= '0; + @cb; + cb.hwif_in.trigger_sig <= '0; + cb.hwif_in.trigger_sig_n <= '1; + @cb; + assert(cb.hwif_out.g2_r1.f1.value == 'h5678); + assert(cb.hwif_out.g2_r2.f1.value == 'h9876); + + // g3 + cpuif.assert_read('h20, 'h0); + assert(cb.hwif_out.g3_r1.f1.value == 0); + cpuif.write('h20, 'hFEDC); + @cb; @cb; + assert(cb.hwif_out.g3_r1.f1.value == 0); + cpuif.assert_read('h20, 'h0); + cpuif.write('h22, 'h0000); + @cb; @cb; + assert(cb.hwif_out.g3_r1.f1.value == 0); + cpuif.assert_read('h20, 'h0); + cpuif.write('h22, 'h0001); + @cb; @cb; + assert(cb.hwif_out.g3_r1.f1.value == 'hFEDC); + cpuif.assert_read('h20, 'hFEDC); + + // g4 + cpuif.assert_read('h24, 'h0); + assert(cb.hwif_out.g4_r1.f1.value == 0); + cpuif.write('h24, 'hCAFE); + @cb; @cb; + assert(cb.hwif_out.g4_r1.f1.value == 0); + cpuif.assert_read('h24, 'h0); + cpuif.write('h26, 'h0000); + @cb; @cb; + assert(cb.hwif_out.g4_r1.f1.value == 0); + cpuif.assert_read('h24, 'h0); + cpuif.write('h26, 'h000E); + @cb; @cb; + assert(cb.hwif_out.g4_r1.f1.value == 0); + cpuif.assert_read('h24, 'h0); + cpuif.write('h26, 'h000F); + @cb; @cb; + assert(cb.hwif_out.g4_r1.f1.value == 'hCAFE); + cpuif.assert_read('h24, 'hCAFE); + + //-------------------------------------------------------------------------- + // swmod behavior + //-------------------------------------------------------------------------- + // g5 + cpuif.assert_read('h28, 'h0); + cpuif.assert_read('h2A, 'h0); + cpuif.write('h28, 'h1234); + cpuif.write('h28, 'h5678); + cpuif.assert_read('h28, 'h0); + cpuif.assert_read('h2A, 'h0); + cb.hwif_in.trigger_sig <= '1; + @cb; + cb.hwif_in.trigger_sig <= '0; + cpuif.assert_read('h28, 'h5678); + cpuif.assert_read('h2A, 'h1); + + // g6 + cpuif.assert_read('h2E, 'h0); + cpuif.assert_read('h2C, 'h0); + cpuif.assert_read('h2E, 'h1); + cpuif.write('h2C, 'h5678); + cpuif.write('h2C, 'h1234); + cpuif.assert_read('h2E, 'h1); + cpuif.assert_read('h2C, 'h0); + cpuif.assert_read('h2E, 'h2); + cb.hwif_in.trigger_sig <= '1; + @cb; + cb.hwif_in.trigger_sig <= '0; + cpuif.assert_read('h2E, 'h3); + cpuif.assert_read('h2C, 'h1234); + cpuif.assert_read('h2E, 'h4); + + +{% endblock %} diff --git a/tests/test_write_buffer/testcase.py b/tests/test_write_buffer/testcase.py new file mode 100644 index 0000000..835b5ef --- /dev/null +++ b/tests/test_write_buffer/testcase.py @@ -0,0 +1,5 @@ +from ..lib.sim_testcase import SimTestCase + +class Test(SimTestCase): + def test_dut(self): + self.run_test()