From: hadeshyp Date: Thu, 28 Apr 2011 16:42:33 +0000 (+0000) Subject: The FIFO sbuf implementation for the Virtex4 X-Git-Tag: oldGBE~120 X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=7a70fe9ad5172e9cffbef161cdc295561d691b8f;p=trbnet.git The FIFO sbuf implementation for the Virtex4 Boris --- diff --git a/xilinx/virtex4/fifo_sbuf.vhd b/xilinx/virtex4/fifo_sbuf.vhd new file mode 100644 index 0000000..26d31e5 --- /dev/null +++ b/xilinx/virtex4/fifo_sbuf.vhd @@ -0,0 +1,59 @@ +LIBRARY IEEE; +USE IEEE.STD_LOGIC_1164.ALL; + + +entity fifo_sbuf is +port( + Data: in std_logic_vector(18 downto 0); + Clock: in std_logic; + WrEn: in std_logic; + RdEn: in std_logic; + Reset: in std_logic; + Q: out std_logic_vector(18 downto 0); + Empty: out std_logic; + Full: out std_logic; + AlmostFull: out std_logic +); +end entity; + + + + + +architecture fifo_sbuf_arch of fifo_sbuf is + + + +component xilinx_fifo_sbuf IS +port ( + din: IN std_logic_VECTOR(18 downto 0); + clk: IN std_logic; + wr_en: IN std_logic; + rd_en: IN std_logic; + rst: IN std_logic; + dout: OUT std_logic_VECTOR(18 downto 0); + empty: OUT std_logic; + full: OUT std_logic; + almost_full: OUT std_logic +); +end component; + + + +begin + + +the_xilinx_fifo_sbuf: xilinx_fifo_sbuf +port map( + din => Data, + clk => Clock, + wr_en => WrEn, + rd_en => RdEn, + rst => Reset, + dout => Q, + empty => Empty, + full => Full, + almost_full => AlmostFull +); + +end architecture; diff --git a/xilinx/virtex4/xilinx_fifo_sbuf.ngc b/xilinx/virtex4/xilinx_fifo_sbuf.ngc new file mode 100644 index 0000000..4097e59 --- /dev/null +++ b/xilinx/virtex4/xilinx_fifo_sbuf.ngc @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.4e +$3fe41<,[o}e~g`n;"2*447&;:%>-*>;1;8456789:;<9>40123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?1:30?4(79=1:97GAPTV9EABUI5;?6=0>4:36>LHW]]0JHI\M<0694;753831EC^ZT;fjj97?294:86?6:NWWTPR=lf0<650?31?64=AGZ^X7JFA=12>586:2996D@_UU8GMG:493:5=>5<2;MVPUSS2MEJ0>?50?30?64=G\^[YY4KOC>05?6992>?79>?00380?OIX\^1HD^N<283:47<<3CE\XZ5DHRA86<768:087GAPTV9S@G;;3:5==5;:HLSQQe:69MKVR\3zycjQjmqvz[qnumzb7?7>12497>LHW]]0{~biPelrw}ZrozlycSl}|esv?7?69:<1?6D@_UU8svjaXmdzuRzgrdqk[kc`i}o7?7>11e97>LHW]]0{~biPftno[qnumzb7?7>12597>LHW]]0{~biPftno[qnumzbTm~}jru>0>585<2>1EC^ZT;rqkbYa}efTxe|jsi]mabgsm591<3?=;58LQQVR\3ND\L2<:1<26>2=G\^[YY4KOQ@?7?69911?6B[[PTV9`drfWje~by2<:1<2f>2=G\^[YY4}d^fbpdYdg|d0>4?>0`80?IR\Y__6z|Pd`vb[firf}686=0i;5to|16an8;?4 ??1:41?3G33?KJM959FG41?=6331:34?57209:0>?789>05=>64:;:4<4GCL[K7==06;@FGVD:69730MIJ]A=31:<=FLMXJ0<=1b:CG@WG;9=0;245NDEPB842902KOH_O31?:8EABUI58546OKDSC?7;>GCL[K7;364AEFQE9>902KOH_O39?:8EABUJ5:556OKDS@?558>3HNO^O2>1?;8EABUJ5;9245NDEPA8459j2KOH_L31583:<=FLMXI0<:18:CG@WD;9720MIJ]B=0=<>GCL[H7?364AEFQF92902KOH_L35?:8EABUJ5<546OKDS@?3;>GTQGIT^HI<;CW1<>DR[VCEJB?4C`9@EVEFLLCEMl5LARAB@@OIJk1HM^MNDDMVPDd17:FJE9766>1OEL2>2?58@LG;9:4<7IGN<06=3>BNI5;>2:5KI@>22;19?2NBM1?6>79GMD:66>1OEL2=0?58@LG;:84<7IGN<30=3>BNI5882:5KI@>10;1808;EKB8709?2NBM1<8>69GMD:507=0HDO328<5?AOF4;4<7IGN<22==>BNI59:6=08;EKB8679>2NBM1=16:FJE929>2NBM1;16:FJE909>2NBM1916:FJE9>9>2NBM1716:FJF969?2NBN1??>69GMG:697=0HDL313<4?AOE4895;6JFB=37:2=CAK6:9394DH@?53803MCI0<917:FJF97?6>1OEO2>9?48@LD;97=0HDL321<4?AOE4;;5;6JFB=01:2=CAK69?394DH@?61803MCI0?;17:FJF9416>1OEO2=7?58@LD;:14<7IGM<3;=2>BNJ585;6JFB=13:<=CAK68=7>17:FJF9566?1OEO2<>79GMG:36?1OEO2:>79GMG:16?1OEO28>79GMG:?6?1OEO26>69GMUG;87=0HD^N<0<4?AOWI58556JFP@>0>5803MC[M1=17:FJTG:76>1OE]L31?58@LVE4;427IG_B=194;109;EMB85803MEJ0<>17:FLE9766>1OCL2>2?58@JG;9:4<7IAN<06=3>BHI5;>2:5KO@>22;19?2NDM1?6>79GKD:66>1OCL2=0?58@JG;:84<7IAN<30=3>BHI5882:5KO@>10;1808;EMB8709?2NDM1<8>69GKD:507=0HBO328<5?AIF4;4<7IAN<22==>BHI59:6=08;EMB8679>2NDM1=16:FLE929>2NDM1;16:FLE909>2NDM1916:FLE9>9>2NDM1717:FLEZTBO?1OCO2?>69GKG:687=0HBL310<4?AIE4885;6J@B=30:2=CGK6:8394DN@?50803MEI0<817:FLF9706>1OCO2>8?58@JD;904=7IAM<0<4?AIE4;:5;6J@B=02:2=CGK69>394DN@?66803MEI0?:17:FLF9426>1OCO2=6?58@JD;:>4<7IAM<3:=3>BHJ5822;5KOC>1:2=CGK68<374DN@?74<76>1OCO2<1?48@JD;;7<0HBL34?48@JD;=7<0HBL36?48@JD;?7<0HBL38?48@JD;17=0HBLPRDE4?AIWI5:5;6J@P@>2:2=CGYK7>374DNRB86<76>1OC]O33?58@JVE494<7IA_B=3=3>BHXK69245KOQ@?7?69?2ND\O2<>29FJD5<1Mma}j1:E0?BHC92C97D>=;H31?L453@937D@FTQ]34==NF@^[S=?7;HLJPUY7:11BBDZ__11;?LHN\YU;855FNHVS[53?3@DBX]Q?699JJLRWW9=27D@FTRVBP@18;HLJPZ66?2CEEYQ?269JJLRX8:=0ECG[_164?LHN\V:>;6GAIU]322=NF@^T<:94IOKW[5>03@DBXR>67:KMMQY7I>1BBDZP0C58MKOSW9I<7D@FT^2G3>OIA]U;I:5FNHV\4C18;HLJPZ76?2CEEYQ>269JJLRX9:=0ECG[_064?LHN\V;>;6GAIU]222=NF@^T=:94IOKW[4>03@DBXR?67:KMMQY6I>1BBDZP1C58MKOSW8I<7D@FT^3G3>OIA]U:I:5FNHV\5C18;HLJPZ46?2CEEYQ=269JJLRX::=0ECG[_364?LHN\V8>;6GAIU]122=NF@^T>:94IOKW[7>03@DBXR<67:KMMQY5I>1BBDZP2C58MKOSW;I<7D@FT^0G3>OIA]U9I:5FNHV\6C1>8;HLJPZ56?2CEEYQ<269JJLRX;:=0ECG[_264?LHN\V9>;6GAIU]022=NF@^T?:94IOKW[6>03@DBXR=67:KMMQY4I>1BBDZP3C58MKOSW:I<7D@FT^1G3>OIA]U8I:5FNHV\7C06GAVDPW[FJLWMEIS_KH3:KLF7=KG?1GCLJJD69OKBODIE>0@XZ=4:NVP60JR\=UG96CZXG7`?Hgmg{\n~~g`nb9Nmkiu^lxxeb`=;O30?K77;2D:=>5A1318J4543G;??6@>529M535==4N330?K45;2D9?>5A2568J700<2D9:4:4N3520>H5?:>0B?9:4:L1322H1;:1E:9=4N770?K01;2D=;>5A6918J3?53G=87C9?3:L456=I?;90B:=<;O577>H0=:1E;;=4N650?K1?;2D<5?5A829M<556AD1:R7?UGU\h1[ECQMURKG\g=WAGUIY^@NMD18TWC63X<0^LCM17d8VDKXMQ^NB^G@N^Ce?WGJWLR_IC]FOO]Ag>TBIMU\EIZG_@a8V@GCW^COXEQM6:PFCFCF>2XNKNKM1:Q;?VGQMMK_M<=4SHO\GJJKAZCDBRMGEBI5?VIRZJO<7^\YAM]B3>UU^HFTN95\SSC7?VUUJ=1_U]K=9:W3+bta&{l$ka>!re-dvvu)zz~x#ob_dosp|YajVc8=6[?/fpe*w`(oe:%~i!hrrq-vvrt'{kfShctx]efZoXe|r;<=><4:W3+bta&{l$ka>!re-dvvu)zz~x#ob_dosp|YajVcTc>?01122=5?3\:$kh!rg-dh5(ul&my~ }suq,vdkXmdzuRhm_h]lv5678:;=4R]X02:8Q5)`zo$yj"ic0/pg+btt{'xxx~!}al]fiur~WohTeRa}0123740?WZ]:??5Z0.eqb+ta'nf;"j gsqp*wus{&xjaRkbpu{\bgYnWfx;<=><5208Q5)`zo$yj"ic0/pg+btt{'xxx~!}al]fiur~WohTeRa}012327553\:$kh!rg-dh5(ul&my~ }suq,vdkXmdzuRhm_h]lv5678>38:6[?/fpe*w`(oe:%~i!hrrq-vvrt'{kfShctx]efZoXg{:;<=96_RU377=R8&myj#|i/fn3*wb(o{yx"}{s.pbiZcjx}sTjoQf_np3456>::<0Y=!hrg,qb*ak8'xo#j||s/pppv)uidUna}zv_g`\mZiu89:;S`o1415?P6(o{l%~k!hl1,q`*au{z$yy} r`o\ahvsqVliSdQ`r1234Zkfx;<8:6[?/fpe*w`(oe:%~i!hrrq-vvrt'{kfShctx]efZoXg{:;<=Qbaq0;63=R8&myj#|i/fn3*wb(o{yx"}{s.pbiZcjx}sTeS7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|:8?7X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{6368Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkr>;;1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQwos>3:47XAG\Tn5Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu]{kw:568;9o6[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^zlv95998;m7X> gsd-vc)`d9$yh"|nup,gjsi|5:5=k5Z0.eqb+ta'nf;"j rqlwv*eh}g~7=3?i;T2,cw`)zo%l`= }d.psjqt(kfex1<11g9V4*aun'xm#jb?.sf,vuhsz&idycz33?3f?P6(o{l%~k!hl1,q`*twf}x$ob{at^22a>S7'nxm"h gm2-va)uxg~y#naznu]25`=R8&myj#|i/fn3*wb(zyd~"m`uov\64c<]9%l~k }f.eo4+tc'{zex!lotlw[6453\:$kh!rg-dh5(ul&x{by| cnwmpZb64949>6[?/fpe*w`(oe:%~i!}povq+firf}Uo=1?1239V4*aun'xm#jb?.sf,vuhsz&idyczPd0>1:74<]9%l~k }f.eo4+tc'{zex!lotlw[a7;;78:7X> gsd-vc)`d9$yh"|nup,gjsi|Vn:S=<>;T2,cw`)zo%l`= }d.psjqt(kfexRj>_002?P6(o{l%~k!hl1,q`*twf}x$ob{at^f2[7463\:$kh!rg-dh5(ul&x{by| cnwmpZb6W:8?7X> gsd-vc)`d9$yh"|nup,gjsi|Vddx=>?1348Q5)`zo$yj"ic0/uq+bqt{'}xx~!l1.flqqYn9>8=7X> gsd-vc)`d9$|~"ixsr,twqu(k8%ocxzPi4112>S7'nxm"h gm2-sw)`zy%{~z|/b3,`jssW`?>>l5Z0.eqb+ta'nf;"z| gvqp*rus{&i:#iazt^k\idv59;30Y=!hrg,qb*ak8'}y#jy|s/uppv)d9&ndyyQf_lcs=76<]9%l~k }f.eo4+qu'n}x#y|tr-`khv6:?1^<"i}f/pe+bj7&~x$kz}|.vqww*tfeVkmyabPi3f8Q5)`zo$yj"ic0/uq+bqt{'}xx~!}al]bbpjkW`Ud~=>?0228Q5)`zo$yj"ic0/uq+bqt{'}xx~!}al]bbpjkW`Ud~=>?00266c=R8&myj#|i/fn3*rt(o~yx"z}{s.pbiZga}efTeRa}012356543\:$kh!rg-dh5(pz&m|~ xsuq,vdkXiog`RgPos23457?WZ];>k5Z0.eqb+ta'nf;"z| gvqp*rus{&xjaRoiumn\mZiu89:;;5?92]PS5543\:$kh!rg-dh5(pz&m|~ xsuq,vdkXiog`RgPos2345Yjiy9:?>5Z0.eqb+ta'nf;"z| gvqp*rus{&xjaRoiumn\mZiu89:;S`o3211?P6(o{l%~k!hl1,tv*ap{z$|y} r`o\ecskdVcTc>?01]neu0502_;#j|i.sd,ci6){%l{~}!wrvp+wgjWog`Rm`mc0b?P6(o{l%~k!hl1,tv*ap{z$|y} r`o\bpjkWjefnRH=a:W3+bta&{l$ka>!ws-dsvu)z~x#ob_gwohZehekUL>55Z0.eqb+ta'nf;"z| gvqp*rus{&xjaRhzlm]efZo5=2_;#j|i.sd,ci6){%l{~}!wrvp+wgjWog`Rg=4:W3+bta&{l$ka>!ws-dsvu)z~x#z|Prrv\`47c3\:$kh!rg-dh5(pz&xjaRy}_dl\m4443\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|d>95Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu110>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|?8?7X> gsd-vc)`d9$|~"ynup,Ifirf}Uhcx`{9208Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXpfx7<3?>_HLU[54d3\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|dSua}<0<257e<]9%l~k }f.eo4+qu'~zex!BcnwmpZeh}g~Ttb|32?326f=R8&myj#|i/fn3*rt(yd~"Clotlw[firf}Usc2<>032b>S7'nxm"h gm2-sw)pxg~y#naznu>3:4`<]9%l~k }f.eo4+qu'~zex!lotlw8486n2_;#j|i.sd,ci6){%||cz}/bmvjq:568l0Y=!hrg,qb*ak8'}y#z~ats-`kphs4:4:i6[?/fpe*w`(oe:%{!xpovq+firf}U;=h5Z0.eqb+ta'nf;"z| wqlwv*eh}g~T=!ws-ttkru'je~byQk1=2=67=R8&myj#|i/fn3*rt(yd~"m`uov\`4:66;80Y=!hrg,qb*ak8'}y#z~ats-`kphsWm;7>3<=;T2,cw`)zo%l`= xr.usjqt(kfexRj><2<15>S7'nxm"h gm2-sw)pxg~y#naznu]g5Z6592_;#j|i.sd,ci6){%||cz}/bmvjqYc9V;9=6[?/fpe*w`(oe:%{!xpovq+firf}Uo=R<=1:W3+bta&{l$ka>!ws-ttkru'je~byQk1^116>S7'nxm"h gm2-sw)pxg~y#naznu]g6969:;1^<"i}f/pe+bj7&~x${}`{r.alqkrXl;6:2?<4U1-dvc(un&mg<#y}/vrmpw)dg|dSi<32?01?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f1868592_;#j|i.sd,ci6){%||cz}/bmvjqYc:V:9=6[?/fpe*w`(oe:%{!xpovq+firf}Uo>R?=1:W3+bta&{l$ka>!ws-ttkru'je~byQk2^015>S7'nxm"h gm2-sw)pxg~y#naznu]g6Z55<2_;#j|i.sd,ci6){%||cz}/bmvjqYig}:;<<8i;T2,cw`)zo%fi`!hbl,dfha)okglm#`heba-fha(jeaTahcPgdlfvdrhz&|j`dj!crvq+wgjdfe{W=S!r`o-v*p3&{kf#^J_.RKMCICXX[CF"^J_1c9V4*aun'xm#`kb/uos[wgjW{nTic?l;T2,cw`)zo%fi`!{mq]qehYulVoe=4U1-dvc(un&xxxobd/sf\vvrXizxnkRj>219V4*aun'xm#}{bmi,vaYu{}Ujkh_e02g>S7'nxm"h rrvahn)ulVxxxRm`mc3g?P6(o{l%~k!}su`oo*tcW{ySnabb03f?P6(o{l%~k!}su`oo*tcW{ySkh<1<2a>S7'nxm"h rrvahn)ulVxxxR|jg=0=5a=R8&myj#|i/sqwfim(zmUyyQ}ef]35a=R8&myj#|i/sqwfim(zmUyyQ}ef]15a=R8&myj#|i/sqwfim({UyyQnssgd65=R8&myj#|i/sqwfim({UyyQnssgd[a7582_;#j|i.sd,vvredb%|~R||t^cpv`aXl;;h7X> gsd-vc)u{}hgg"y}_sqw[fijj8n0Y=!hrg,qb*tt|kf`#z|Prrv\gjke98o0Y=!hrg,qb*tt|kf`#z|Prrv\v`a;97;o7X> gsd-vc)u{}hgg"y}_sqw[wc`W8k0Y^K]_@NJEVe<]ZOYS[G\ICNF7>PDK01]EHYPTXRF2>QBI5:5:6YJA=3=2>QBI58546YJA=194;0<_LK7?384WD@?4;0<_LH7=384WD@?6;><_LH7?7>16:UFF959j2]YEYKPFHPPPf=PZ@^NS@AKE^C`?RTN\LUFCIKPBe9TVLRBW^COXEQNd:UQMQCX_@N_DRL>d:ZJHLH_%QNI,= > RVVF%6)9)KXODG9;YQWHLD03QY_SJ@K7:ZPPZPDKk1SSNA]E^KMBJ773QUHC_KPIODL[IOT\?1ShoQFdg9[`mYWz`g]i}foo33?]bjWDkacXjrrklj461oec&>4(58`lh/9<#<7iga(04*3>bnf!;<%:5kio*2<,0$84dhl+7,01oec2>3?58`lh;9=4<7iga<07=3>bnf5;=2:5kio>23;?69gmk:607<0hd`31?48`lh;:7<0hd`33?48`lh;<7<0hd`35?48`lh;>7<0hd`37?48`lh;07<0hd`39?58`jss 9#<7iazt)3*<>bh}}":<$64dnww,47.02ndyy&>2(:8`jss 89"46j`uu*20,> 20hb{{(05*<>bh}}":4$94dnww,7/03me~x%=&7:flqq.3!>1ocxz'5(58`jss ?#<7iazt)5*3>bh}}"3%:5kotv+=,199gkpr;9<437iazt=35:==cg|~7=:0n;emvp97?29437iazt=3;:2=cg|~7=394dnww87803me~x1=17:flqq:36>1ocxz35?58`jss4?4<7iazt=5=3>bh}}632:5kotv?=;>cik5:gntq502lbjbQheogqeqiuW>T>!.Losgdak&>&;$;8dQfp368bpjk?2cexRmck99mcfdraen37bxjrgnlsd=wzfmTi`~{y068twi`Wlg{xtQ{hsgpl-6.9=1{~biPelrw}Zrozlyc$<'>4:rqkbYbey~rSyf}erj+6,733yxdkRkbpu{\pmtb{a"8%<84psmd[`kw|pUdk|h=194;7e3yxdkRkbpu{\pmtb{aUj~k}t)2*5g=wzfmTi`~{y^vkv`uoWhyxiz'1(3a?uthoVof|ywPtipfwmYf{zoyx%<&1c9svjaXmdzuRzgrdqk[dutm{~#?$?k;qplcZcjx}sTxe|jsi]bwvcu|591<3?m;qplcZcjx}sTxe|jsi]mabgsm!:"=o5rne\ahvsqV~c~h}g_ogdeqc/9 ;i7}|`g^gntqX|axneQaefcwa-4.9k1{~biPelrw}ZrozlycSckhaug+7,7c3yxdkRkbpu{\pmtb{aUeijo{e=194;?vugnUmyabPtipfwm.4!8?0|ah_gwohZrozlyc0>4?>0c8twi`Wog`Rzgrdqk[dutm{~#<$?n;qplcZ`rdeUdk|h^cpw`ts 8#:m6~}of]eqijX|axneQnsrgqp-4.9h1{~biPftno[qnumzbTm~}jru*0-4e0>5813{nToae>0:pg[agsiVidycz'0(33?wbXlh~jSnaznu*2-464ws]geqgXkfex%<&119tvZbf|hUhcx`{(2+26>quWmkmRm`uov?7?69=2}ySh`9;vp\vvr682rb`d`w_gkekZue}o8j7ugcioz\bl`hWzh~jRhffn]dakcui}eyS{:P2^zppZ7zHIz8hi5O@y0g5?@=<3;p_8l528g91?74:mh9:54:&104<5;k1v_8o528g91?74:mh33fa3f<50?k:7^;n:3c0>5<6;;ni;n4=87c1?a4cl3:1=7?tS4`96il8c;0;2<`<,;9m6?o?;wV2e`<7280:6:>tS4`96il8c;0;2<`<,;8i6<;m;W076?4|}8<96<5z17194>{#90l1=k5m2ef94?4c2:09hvF=289Y15<5s0036p*>b281`a=#::l1>l>4Z363>7}5i909m=4ri3a`>5<5<5<5<#9h;1>4=4n0c3>5=5<#9h;1>4=4n0c3>7=54o35g>5<#9h;1>4=4n0c3>1=5<#9h;1>4=4n0c3>3=5<#9h;1>4=4n0c3>==5<#9h;1>4=4n0c3>d=5<#9h;1>4=4n0c3>f=6=4+1`396<55<#9h;1>4=4n0c3>`=5<#9h;1>4=4n0c3>46<3f8<47>5$0c2>7?43g;j<7?>;:m132<72-;j=7<63:l2e5<6:21b>8o50;&2e4<5>j1e=l>50:9j60?=83.:m<4=6b9m5d6=921b>8650;&2e4<5>j1e=l>52:9j601=83.:m<4=6b9m5d6=;21b>8850;&2e4<5>j1e=l>54:9j603=83.:m<4=6b9m5d6==21b>8:50;&2e4<5>j1e=l>56:9j605=83.:m<4=6b9m5d6=?21b>8<50;&2e4<5>j1e=l>58:9j634=83.:m<4=6b9m5d6=121b>;?50;&2e4<5>j1e=l>5a:9j636=83.:m<4=6b9m5d6=j21b>8h50;&2e4<5>j1e=l>5c:9j60c=83.:m<4=6b9m5d6=l21b>8j50;&2e4<5>j1e=l>5e:9j60e=83.:m<4=6b9m5d6=n21b>8l50;&2e4<5>j1e=l>51198m736290/=l?527a8j4g728;07d<:0;29 4g62;i54<729qC>?74$0`0>74f3f;2i7>5;|`246<7280;6=uG23;8 4d428:87b??2;29?xd3n3:1:?4;7;53M4512P><7?9{0695=<6l3;>6=<613;h6<851b82a??=9m0:976518827bb3-;>47??1:&17c<5i91/=47518f8k7222900e?mk:188m7g>290/=l?52`c8j4g72910e?o7:18'5d7=:hk0b290/=l?52ec8j4g72910c?j7:18'5d7=:mk0b2900e?jl:188k7ea2900c?j;:188k7b52900e?mj:188k7>6290/=l?52818j4g72910c?6?:18'5d7=:090b290/=l?52818j4g72110c?66:18'5d7=:090b?290/=l?52818j4g72h10c?68:18'5d7=:090b1290/=l?52818j4g72j10c?6::18'5d7=:090b3290/=l?52818j4g72l10c?6<:18'5d7=:090b5290/=l?52818j4g728:07b<88;29 4g62;387c?n0;32?>i5?>0;6)?n1;0:7>h6i90:>65f24c94?"6i809:n5a1`294>=n:<31<7*>a0812f=i9h:1=65f24:94?"6i809:n5a1`296>=n:<=1<7*>a0812f=i9h:1?65f24494?"6i809:n5a1`290>=n:a0812f=i9h:1965f24694?"6i809:n5a1`292>=n:<91<7*>a0812f=i9h:1;65f24094?"6i809:n5a1`29<>=n:?81<7*>a0812f=i9h:1565f27394?"6i809:n5a1`29e>=n:?:1<7*>a0812f=i9h:1n65f24d94?"6i809:n5a1`29g>=n:a0812f=i9h:1h65f24f94?"6i809:n5a1`29a>=n:a0812f=i9h:1j65f24`94?"6i809:n5a1`2955=4?:%3b5?4d<2d:m=4?;:k1g7<72-;j=7;:k1f4<72-;j=75}#9k91===4H31`?M4512e:t$0`0>74f3A88o6F=289l55<7s-;i?7hm;I00g>N5:01C8h5+10395>o293:17d;l:188k4g42900qo<=3;297?6=8r.:n>4ib:J17f=O:;30D9k4$032>4=n=80;66g:c;29?j7f;3:17pl=1883>6<729q/=o=5fc9K66e<@;827E:j;%325?7>i6i:0;66sm23394?3=83:p(a383>>i6i:0;66sm23094?5=83:p(5<2290;w)?m3;df?M44k2B9>45G4d9'547=92c>=7>5;h75>5<5<3290;w)?m3;dg?M44k2B9>45+10395>o293:17d;l:188m4g52900c50z&2f67>5;n3b7?6=3th9>:4?:583>5}#9k91ji5G22a8L74>3-;:=7?4i4394?=n=j0;66g>a383>>i6i:0;66sm1c694?2=83:p(1087?l362900e8m50;9j5d4=831d=l=50;9~f4e6290?6=4?{%3a7?`c3A88o6F=289'547=<2c>=7>5;h7`>5<5<55;294~"6j:0mo6F=3b9K67?<,8;:6<5f5083>>o2>3:17d;6:188m0e=831d=l=50;9~f4b?290>6=4?{%3a7?`d3A88o6F=289'547=92c>=7>5;h75>5<>i6i:0;66sm1e;94?3=83:p(1082?l362900e8850;9j1<<722c>o7>5;n3b7?6=3th:hl4?:483>5}#9k91jn5G22a8L74>3-;:=7?4i4394?=n=?0;66g:9;29?l3d2900c50z&2f65<2290;w)?m3;d`?M44k2B9>45+10395>o293:17d;9:188m0?=831b9n4?::m2e6<722wi><<50;794?6|,8h86km4H31`?M4512.:=<4>;h72>5<>o2k3:17b?n3;29?xd59:0;684?:1y'5g5=nj1C>>m4H30:?!7693;0e8?50;9j13<722c>57>5;h7`>5<b28eg>N5;j1C>?74$032>4=n=80;66g:6;29?l3>2900e8m50;9l5d5=831vn?>n:186>5<7s-;i?7hl;I00g>N5:01/=a283>>{e:931<7;50;2x 4d42oi0D?=l;I01=>"6980:7d;>:188m00=831b944?::k6g?6=3f;j?7>5;|`14=<72<0;6=u+1c19b`=O::i0D?<6;%325?2>o2k3:17d?n2;29?j7f;3:17pl>cg83>0<729q/=o=5fd9K66e<@;827)?>1;68m07=831b9;4?::k6g?6=3`;j>7>5;n3b7?6=3th:h=4?:483>5}#9k91jn5G22a8L74>3-;:=7?4i4394?=n=?0;66g:9;29?l3d2900c50z&2f65<2290;w)?m3;df?M44k2B9>45+10390>o293:17d;9:188m0e=831b=l<50;9l5d5=831vn5<7s-;i?7hl;I00g>N5:01/=a283>>{e:9:1<7;50;2x 4d42oi0D?=l;I01=>"6980:7d;>:188m00=831b944?::k6g?6=3f;j?7>5;|`147<72<0;6=u+1c19bf=O::i0D?<6;%325?7>o213:17d;l:188k4g42900qo4ic:J17f=O:;30(:09j14<722c>:7>5;h7:>5<4id:J17f=O:;30(:59j14<722c>o7>5;h3b6?6=3f;j?7>5;|`2a7<72=0;6=u+1c19ba=O::i0D?<6;%325?7>o6i;0;66a>a283>>{e9o;1<7:50;2x 4d42on0D?=l;I01=>"6980:7d;>:188m0e=831b=l<50;9l5d5=831vn?<::180>5<7s-;i?7?:c:J17f=O:;30(:d9j553=831b==850;9l55<7s-;i?7?:c:J17f=O:;30(:d9j553=831b==850;9l55<7s-;i?7?:c:J17f=O:;30(:328m4622900e<>9:188k4?d2900qo?l8;297?6=8r.:n>4>5b9K66e<@;827)?>1;03?l77=3:17d??6;29?j7>k3:17pl>f`83>1<729q/=o=514f8L75d3A8956*>10815>o68<0;66g>0783>>o68>0;66a>9b83>>{e9j31<7:50;2x 4d428?o7E<<5f11794?=n99<1<75f11594?=h90i1<75rb0da>5<2290;w)?m3;36b>N5;j1C>?74$032>746=44i025>5<5<b2821c=O::i0D?<6;%325?453`;;97>5;h332?6=3`;;;7>5;h335;|`2b6<72:0;6=u+1c1950e<@;9h7E<=9:&2545;h332?6=3f;2o7>5;|`2g7<72:0;6=u+1c1950e<@;9h7E<=9:&2545;h332?6=3f;2o7>5;|`2f<<72=0;6=u+1c1950b<@;9h7E<=9:&254<5>2c:<84?::k243<722c:<:4?::m2=f<722wi=oo50;794?6|,8h86<;i;I00g>N5:01/=5<7s-;i?7?:f:J17f=O:;30(:g;8m4622900e<>9:188m4602900e<>7:188k4?d2900qo?j5;290?6=8r.:n>4>5e9K66e<@;827)?>1;0a?l77=3:17d??6;29?l77?3:17b?6c;29?xd6m>0;684?:1y'5g5=9"6980956g>0483>>o68?0;66g>0683>>o6810;66a>9b83>>{e9mi1<7=50;2x 4d428?h7E<:5f11794?=n99<1<75`18a94?=zj8o26=4::183!7e;3;>j6F=3b9K67?<,8;:6?74i026>5<5<5<55;294~"6j:0:9k5G22a8L74>3-;:=7<7;h331?6=3`;;:7>5;h333?6=3`;;47>5;n3:g?6=3th:i94?:483>5}#9k91=8h4H31`?M4512.:=<4i9:k240<722c:<;4?::k242<722c:<54?::m2=f<722wi=o650;194?6|,8h86<;l;I00g>N5:01/=5<7s-;i?7?:f:J17f=O:;30(:023?l77=3:17d??6;29?l77?3:17d??8;29?j7>k3:17pl=1683>1<729q/=o=514f8L75d3A8956*>1087g>o68<0;66g>0783>>o68>0;66a>9b83>>{e9l<1<7;50;2x 4d428?m7E<j6F=3b9K67?<,8;:6?o4i026>5<5<5<54;294~"6j:0::<5G22a8L74>3`;;97>5;h332?6=3`;jn7>5;n3:g?6=3th:ih4?:483>5}#9k91=8h4H31`?M4512.:=<4=5:k240<722c:<;4?::k242<722c:<54?::m2=f<722wi=hh50;794?6|,8h86<;i;I00g>N5:01/=5<7s-;i?7?:5:J17f=O:;30e<>;:188k4?d2900qo?l7;296?6=8r.:n>4>549K66e<@;827d??4;29?j7>k3:17pl=1483>f4=83:p(45U518`3<02h0i6<>510826?742j0o6h53:&205<43-;?=7=4$061>6=#9=91?6*>4580?!73=390(<:9:29'511=;2.:854<;%37=?5<,8>j6>5+15`97>"6=7=4$077>4?e3-;>>7<4$070>7=#9931?6*>0`80?!77j390(<>l:29'55b=;2.:;7hn;%3b1?7>j2.:m;4>9c9m5d1=:=1e=l65259'5db=90h0(<>i:29'546=;2.9?:4=379'66>=::<0b?=6:368j75f2;>0bno50:lfg?6<,8kh6ko4$0ce>7=#9881?6*>1280?!76<390(5+10c97>"69k087)?>c;18 47c2:1/=6=#9;81?6*>2280?!75<390(<<::29'570=;2.:>:4<;%315+13c97>"6:k087)?=c;18 44c2:1/=?k53:&26c<43-;8<7=4$012>6=#9:81?6*>3280?!74<390(<=::29'560=;2.:?:4<;%305+12c97>"6;k087)?52:k66?6=3`?86=44i4594?=n=10;66gi7;29?l7f13:17d?na;29?l`?2900e:188m4d52900c8:50;9l10<722c8>7>5$0c2>67a182?>o5n3:1(:238j4g72;10e?k50;&2e4<492d:m=4<;:k1`?6=,8k:6>?4n0c3>1=a0805>h6i90>76g5$0c2>67a18:?>o4>3:1(:238j4g72h10e>;50;&2e4<492d:m=4m;:k00?6=,8k:6>?4n0c3>f=a0805>h6i90o76g=c;29 4g62:;0b5$0c2>17a181?>o4m3:1(:538j4g72:10e>j50;&2e4<392d:m=4;;:k7f?6=,8k:69?4n0c3>0=a0875>h6i90=76g;9;29 4g62=;0b=83.:m<4;1:l2e55$0c2>17a18b?>o3=3:1(:538j4g72k10e9:50;&2e4<392d:m=4l;:k77?6=,8k:69?4n0c3>a=a0875>h6i90n76g86;29 4g62>?0b7>5$0c2>23a180?>o083:1(:678j4g72=10e;h50;&2e4<0=2d:m=4:;:k5a?6=,8k:6:;4n0c3>3=a0841>h6i90<76g9c;29 4g62>?0b32c=m7>5$0c2>23a18a?>o1?3:1(:678j4g72j10e;850;&2e4<0=2d:m=4k;:k51?6=,8k:6:;4n0c3>`=1<7*>a0841>h6i90m76g93;29 4g62>?0b2:9j25<72-;j=79:;o3b4?7432c>j7>5$0c2>235<#9h;1;85a1`2950=n1<7*>a0841>h6i90::65f7b83>!7f93=>7c?n0;34?>o0j3:1(:678j4g728207d9n:18'5d7=?<1e=l>51898m2?=83.:m<485:l2e5<6i21b;54?:%3b5?123g;j<7?m;:k43?6=,8k:6:;4n0c3>4e<3`=86=4+1`3930=i9h:1=i54i7:94?"6i80<96`>a182a>=n=m0;6)?n1;56?k7f83;m76g67;29 4g620<0b5$0c2><0a180?>o>93:1(:848j4g72=10e4>50;&2e4<>>2d:m=4:;:k;b?6=,8k:6484n0c3>3=a08:2>h6i90<76g7d;29 4g620<0b32c3n7>5$0c2><0a18a?>o?03:1(:848j4g72j10e5950;&2e4<>>2d:m=4k;:k;2?6=,8k:6484n0c3>`=a08:2>h6i90m76g74;29 4g620<0b4290/=l?5979m5d6=9810e5<50;&2e4<>>2d:m=4>2:9j<4<72-;j=779;o3b4?7432c3<7>5$0c2><05<#9h;15;5a1`2950=a08:2>h6i90::65f9e83>!7f933=7c?n0;34?>o>k3:1(:848j4g728207d7m:18'5d7=1?1e=l>51898m4e<3`3?6=4+1`39=3=i9h:1=i54i9;94?"6i802:6`>a182a>=n?l0;6)?n1;;5?k7f83;m76gn3;29 4g62h80b5$0c2>d46`>a180?>of03:1(:`58j4g72910el850;&2e4;:kb1?6=,8k:6l94n0c3>7=1<7*>a08b3>h6i90876g=3183>!7f9389j6`>a183?>o5:l0;6)?n1;01b>h6i90:76g=2e83>!7f9389j6`>a181?>o5:j0;6)?n1;01b>h6i90876g=3483>!7f938886`>a183?>o5;:0;6)?n1;000>h6i90:76g=3383>!7f938886`>a181?>o5;80;6)?n1;000>h6i90876al2;29 4g62j;0b5$0c2>f7a180?>iek3:1(:b38j4g72=10col50;&2e43=a08`5>h6i90<76am8;29 4g62j;0b32ei:7>5$0c2>f7a18a?>ie;3:1(:b38j4g72j10co<50;&2e4`=a08`5>h6i90m76anf;29 4g62j;0b2:9lef<72-;j=7m>;o3b4?7432ejn7>5$0c2>f75<#9h;1o<5a1`2950=a08`5>h6i90::65`c983>!7f93i:7c?n0;34?>id?3:1(:b38j4g728207bm9:18'5d7=k81e=l>51898kf3=83.:m<4l1:l2e5<6i21do94?:%3b5?e63g;j<7?m;:m`7?6=,8k:6n?4n0c3>4e<3fhm6=4+1`39g4=i9h:1=i54oc694?"6i80h=6`>a182a>=hi00;6)?n1;a2?k7f83;m76aj4;29 4g62l90b5$0c2>`5a180?>icm3:1(:d18j4g72=10cij50;&2e43=a08f7>h6i90<76aka;29 4g62l90b32eo47>5$0c2>`5a18a?>ic=3:1(:d18j4g72j10ci:50;&2e4`=a08f7>h6i90m76ak1;29 4g62l90b2:9lg`<72-;j=7k<;o3b4?7432ehh7>5$0c2>`55<#9h;1i>5a1`2950=a08f7>h6i90::65`e`83>!7f93o87c?n0;34?>ib13:1(:d18j4g728207bk7:18'5d7=m:1e=l>51898k`1=83.:m<4j3:l2e5<6i21di;4?:%3b5?c43g;j<7?m;:mf1?6=,8k:6h=4n0c3>4e<3fo:6=4+1`39a6=i9h:1=i54oe494?"6i80n?6`>a182a>=hkk0;6)?n1;g0?k7f83;m76ai1;29 4g62o:0b5$0c2>c6a180?>ia>3:1(:g78j4g72910ck:50;&2e4;:me7?6=,8k:6k;4n0c3>7=a08e1>h6i90876sm1ef94?3=83:p(45+10396<=n99?1<75f11494?=n99=1<75f11:94?=h9<31<75rb0g;>5<2290;w)?m3;354>N5;j1C>?74$032>c=n99?1<75f11494?=n99=1<75f11:94?=h9<31<75rb0`4>5<2290;w)?m3;354>N5;j1C>?74$032>756=44i025>5<5<b2821`=O::i0D?<6;%325?433`;;97>5;h332?6=3`;;;7>5;n36=?6=3ty9844?:34xZ72>348:m7;>;<017?36348:57;>;<015?363489>7;>;<02;<02b?363489;7;>;<3a0?3634;h=7;>;<3g3?3634;o47;>;<3g=?3634;om7;>;<024?36348:=7;>;<026?36348:?7;>;<03f?36348;m7;>;<03=?36348;47;>;<3`b?3634;o<7;>;<3g5?36348;=7;>;<3g6?36348;<7;>;<036?36348;?7;>;<3e4?3634;m>7;>;<3f6?3634;m=7;>;<021?30348:97;7;|q1gf<72?qU>nm4=0a1>46134;i57??5:?152<68?16=h85117894cb28:37p}=c`83>26|V;>m7SX5l:1U>l;4^3`6?[43l2T98n5Q25`8Z72f3W8o56P=d99]6a1<4:c:?15=<2k279>=4:c:?15c<2k279>:4:c:?2b7<2k279=84:2:?150<2;279=84>a89>643=9hk01??::0`2?846=39970<>5;13?846=38m70<>5;0f?846=38o70<>5;1a?846=39=70<>5;16?846=39?70<>5;10?846=38h70<>5;61?846=3>;70<>5;1e?846=39n70<>5;1g?846=3>i70<>5;65?846=3>>70<>5;67?846=3>870<>5;1`?846=3==70<>5;57?846=3=970<>5;52?846=35;4a?846=35;40?846=3<970<>5;42?846=3=i70<>5;5b?846=3=270<>5;;4?846=33>70<>5;;0?846=33970<>5;;2?846=33;70<>5;:e?846=32n70<>5;:g?846=32h70<>5;:a?846=32j70<>5;:;?846=32<70<>5;:5?846=32>70<>5;:7?846=32870<>5;:1?846=32:70<>5;:3?846=3=m70<>5;;f?846=33o70<>5;;`?846=33i70<>5;;b?846=33270<>5;;;?846=33?70<>5;::?846=3=n70<>5;c0?846=3k:70<>5;c3?846=33m70<>5;c;?846=3k=70<>5;c6?846=3k?70<>5;001>;59<09?>522079664<5;;>6?=>;|q103<72:qU>984=0g1>4g434;n97??5:p6fc=839pR?mj;<015?7f:279=54>a39~w7?a2909wS<6f:?2g4<6i:1v?jm:186[4cj27:j>4>079>5`0=99=01{t:0>1<77}Y:1:01??::ef8yv4>93:1>vP=7g9>643=lj1v?7?:181[40m279=84kb:p6=`=838pR?9k;<021?b03ty94h4?:3y]62e<5;;>6i;4}r0;`?6=:rT9;o522079`1=z{;2h6=4={_04e>;59<0o?6s|29`94?4|V;=270<>5;f1?xu51m0;6?uQ29;897722jo0q~<6c;296~X50116><;5ce9~w7?e2909wS<77:?1504o50;0xZ7>1348:97km;|q1=<<72;qU>5;4=336>`g52z\1<1=::8?1i;5rs3;4>5<5sW83?63=148f1>{t:0<1<77}Y:>201??::e48yv4?i3:1>vP=769>643=kk1v?8k:181[42i279=8480:p63d=838pR?;6;<021?0a3ty9:l4?:3y]60><5;;>6;k4}r05=?6=:rT99:5220792a=z{;<36=4={_062>;59<0=56s|27594?4|V;?>70<>5;44?xu5>?0;6?uQ246897722?<0q~<95;296~X5=:16><;5649~w7032909wS<:2:?150<1<2wx>:850;0xZ705348:978?;|q130<72;qU>;?4=336>0`52z\125=::8?19h5rs350>5<5sW8>j63=1484`>{t:>81<77}Y:vP=5b9>643=?>1v?8i:181[42j279=8483:p63c=838pR?;>;<021?0?3ty9:>4?:3y]606<5;;>68j4}r350?6=:r79?h4>9d9>643=n>1v??6:180846i3?h70<>9;3b7>;5910>:6s|20c94?4|5;;j6?<50;1x97442:448974528k87p}=2283>7}::;91=l=4=306>4623ty9=54?:2y>64?==j16><651`18977d28:=7p}=2083>6}::;;1=l=4=301>0e<5;8>6<>9;|q15g<72:q6>?>51`08977a28k970<>c;3:g>{t:8o1<7lt=303>4g434;i87?n2:?2g4<6i;16=i95589>5a>==016=i75589>5ag==016=nh51`0894b72<301:4;894b52<30q~<>d;297~;59o0:m>522059553<5;;>6?951`089742283h7p}=2783>45|5;8<6348:=7;6;<026?3>348:?7;6;<03f?3>348;m7;6;<03=?3>348;47?n2:?144<6i;16>=>5589>654==016>==5589>5c6=9h80163>f082e7=:9l?1==94=0ge>46?3ty:n84?:2y>5g2==j16=n?55b9>5gb=90i0q~?m4;292~;6j=0:m>521b09553<58ho6<>:;<023?77?27:i;4>099>5`c=99=0q~?kb;29f~;6l>0>:63>d9862>;6l00>:63>d`862>;6ko0>:63>d1862>;6l80>:63>d3862>;6k;0:5n521dd9551<58o36<>:;|q2gg<72>q6=i955b9>5f`=9h901c`8243=:9ki1==84=0a4>4633ty:h>4?:4y>5a1=9h901;6j>0:<85rs0a`>5<1s4;o47;l;<3g4?7f;27:o54>049>5f?=99<01079>643=<116=o951158yv7dl3:19v3>d886g>;6l80:m>521b;9553<58ij6<>7;<3a=?77>2wx=i;50;7x94b>28k870?j7;332>;6j10:<;5220790<=:9mn1==64}r3`a?6=d783>0}:9mk1=l=4=0g:>46234;i:7??6:?150<3i27:hi4>079~w773290:?v3=11862>;5980>:63=13862>;59:0>:63=0c862>;58h0>:63=08862>;5810>:63=00862>;5890>:63=03862>;58:0>:63>f282=f=:9kn1==84=336>757348:97<=e:?150<5:m16><;523a894c?28:37p}=0583>6}::8:19n5221:95d5<58nh6<>:;|q14f<72=q6><>51`1894dd28:>70<>5;14?87e?3;;:6s|21794?5|5;;:68m4=32:>4g434;oi7??5:p65b=83>p1??>:0c0?87ei3;;:63=1480<>;6j>0:<55rs325>5<4s48:>7;l;<03e?7f;27:hi4>069~w76b290?w0<>2;3b7>;6j00:<:521c:9553<5;;>6>74}r033?6=;r79=>4:c:?14g<6i:16=ij51178yv47n3:18v3=1282e6=:9kk1==64=0`5>462348:97=n;|q2bc<72=q6>=l55b9>655=9h9014g434;mm7??5:?2bg<68>16=h951178yv7al3:1:v3=0886g>;5880:m>521g;9553<58lj6<>9;<3ef?77027:i:4>069~w4`d290f88243=:9ok1==94=0da>46134;n57??8:?2b=<68=1v{t9j>1<70e<58i36<7l;|q2g0<72;q6=i?55b9>5f?=90i0q~?i5;296~;5880>o63>f882=f=z{8i=6=4={<3g6?3d34;hm7?6c:p5c2=838p1?>?:4a894`?283h7p}>f783>7}::9819n521gc9552z?146<2k27:jo4>9b9~w4cc2908w0?i0;7`?87a93?h70?jd;3:g>{t9o:1<7;t=0d3>4g434;m?7??5:?2a3<68?16=om511:894cc28ki7p}>f383>6}:9o81=l=4=0g6>46134;nj7??6:p5`5=838p1bd83>7}:9k31=4m4=0`a>4613ty:nk4?:3y>5gg=90i01{t9li1<74?d34;n87??5:p5`g=838p1283h70?j8;332>{t9ml1<746?34;oh7?:9:p5`7=839p1ed8240=z{8oi6=4={<3f0?77?27:i54>589~w4102909w0?j4;33<>;6m?0:5n5rs05;>5<5s4;i47?6c:?2f3<6811v<99:18187e>3;;;63>b6821<=z{;;=6=4={<023?7>k279=84i8:p52?=838p1:;<3fa?7>k2wx=:l50;0x94cc28:=70?jf;3:g>{z{;>26=4={_07=>;3n38?56*=29822c=z{;;3n38>m6*=2982<5=z{;;3n38>56*=2982<==z{;;3n38>46*=2982=6=z{;<26=4={_063>;3n38>;6*=2982===z{;<36=4={_062>;3n38>:6*=298220=z{;<<6=4={_061>;3n38>96*=298223=z{;<=6=4={_060>;3n38>86*=298222=z{;<>6=4={_067>;3n38>?6*=29822==z{;;3n38>>6*=29822<=z{;==6=4={_056>;3n38=>6*=29822d=z{;=>6=4={_055>;3n38==6*=29822g=z{;=?6=4={_054>;3n38=<6*=29822f=z{;=86=4={_06b>;3n38>j6*=29822a=z{;=96=4={_06a>;3n38>i6*=29822`=z{;=:6=4={_06`>;3n38>h6*=298235=z{;=;6=4={_06g>;3n38>o6*=298234=z{;;3n38>n6*=298237=z{;;3n38>=6*=298236=z{;<86=4={_064>;3n38><6*=298231=z{;ih6=4={_0`g>;3n38ho6*=29823f=z{;in6=4={_0`a>;3n38hi6*=29823a=z{;ni6=4={_0gf>;3n38on6*=29823`=z{;>=6=4={_072>;3n38?:6*=29823c=z{;3?6=4={_0;5>;3n383=6*=2982<4=z{;396=4={_0;4>;3n383<6*=2982<7=z{;3:6=4={_04b>;3n38;3n38;3n38;3n38;3n38;3n38;3n38<56*=2982;3n38356*=2982;3n38346*=2982;3n383;6*=2982;3n383:6*=2982<`=z{;326=4={_0;1>;3n38396*=2982;3n38386*=2982=5=z{;3<6=4={_0;7>;3n383?6*=2982=4=z{;3=6=4={_0;6>;3n383>6*=2982=7=z{;3>6=4={_04<>;3n38<46*=2982=1=z{;2j6=4={_043>;3n38<;6*=2982=0=z{;3m6=4={_0:b>;3n382j6*=2982=3=z{;k:6=4={_0b5>;3n38j=6*=2982=2=zug9?<7>52zJ16<=zf:>:6=4={I01=>{i;=81<7vF=289~j6222909wE<=9:m710=838pD?<6;|l002<72;qC>?74}o1745rn26:>5<5sA8956sa35c94?4|@;827p`<4c83>7}O:;30qc=;c;296~N5:01vb>:k:181M4512we?9k50;0xL74>3td88k4?:3yK67?<7>52zJ16<=zf:?:6=4={I01=>{i;<81<7vF=289~j6322909wE<=9:m700=838pD?<6;|l012<72;qC>?74}o1645rn27:>5<5sA8956sa34c94?4|@;827p`<5c83>7}O:;30qc=:c;296~N5:01vb>;k:181M4512we?8k50;0xL74>3td89k4?:3yK67?52zJ16<=zf:<:6=4={I01=>{i;?81<7:0;6?uG23;8yk51<3:1>vF=289~j6022909wE<=9:m730=838pD?<6;|l022<72;qC>?74}o1545rn24:>5<5sA8956sa37c94?4|@;827p`<6c83>7}O:;30qc=9c;296~N5:01vb?j=:182M4512we>kk50;3xL74>3td9jk4?:0yK67?51zJ16<=zf:::6=4>{I01=>{i;981<7?tH30:?xh48:0;6?74}o1345rn22:>5<6sA8956sa31c94?7|@;827p`<0c83>4}O:;30qc=?c;295~N5:01vb>>k:182M4512we?=k50;3xL74>3td851zJ16<=zf:;:6=4>{I01=>{i;881<7?tH30:?xh49:0;6?74}o1245rn23:>5<6sA8956sa30c94?7|@;827p`<1c83>4}O:;30qc=>c;295~N5:01vb>?k:182M4512we?3td8=k4?:0yK67?51zJ16<=zf:8:6=4>{I01=>{i;;81<7?tH30:?xh4::0;6?74}o1145rn20:>5<6sA8956sa33c94?7|@;827p`<2c83>4}O:;30qc==c;295~N5:01vb>3td8>k4?:0yK67?51zJ16<=zf:9:6=4>{I01=>{i;:81<7?tH30:?xh4;:0;6?74}o1045rn21:>5<6sA8956sa32c94?7|@;827p`<3c83>4}O:;30qc==k:182M4512we?>k50;3xL74>3td8?k4?:0yK67?0;k>qMNM{1CDU}zHI \ No newline at end of file diff --git a/xilinx/virtex4/xilinx_fifo_sbuf.vhd b/xilinx/virtex4/xilinx_fifo_sbuf.vhd new file mode 100644 index 0000000..6e961f9 --- /dev/null +++ b/xilinx/virtex4/xilinx_fifo_sbuf.vhd @@ -0,0 +1,149 @@ +-------------------------------------------------------------------------------- +-- This file is owned and controlled by Xilinx and must be used -- +-- solely for design, simulation, implementation and creation of -- +-- design files limited to Xilinx devices or technologies. Use -- +-- with non-Xilinx devices or technologies is expressly prohibited -- +-- and immediately terminates your license. -- +-- -- +-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" -- +-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR -- +-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION -- +-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION -- +-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS -- +-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, -- +-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE -- +-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY -- +-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE -- +-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR -- +-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF -- +-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -- +-- FOR A PARTICULAR PURPOSE. -- +-- -- +-- Xilinx products are not intended for use in life support -- +-- appliances, devices, or systems. Use in such applications are -- +-- expressly prohibited. -- +-- -- +-- (c) Copyright 1995-2007 Xilinx, Inc. -- +-- All rights reserved. -- +-------------------------------------------------------------------------------- +-- You must compile the wrapper file xilinx_fifo_sbuf.vhd when simulating +-- the core, xilinx_fifo_sbuf. When compiling the wrapper file, be sure to +-- reference the XilinxCoreLib VHDL simulation library. For detailed +-- instructions, please refer to the "CORE Generator Help". + +-- The synthesis directives "translate_off/translate_on" specified +-- below are supported by Xilinx, Mentor Graphics and Synplicity +-- synthesis tools. Ensure they are correct for your synthesis tool(s). + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +-- synthesis translate_off +Library XilinxCoreLib; +-- synthesis translate_on +ENTITY xilinx_fifo_sbuf IS + port ( + clk: IN std_logic; + din: IN std_logic_VECTOR(18 downto 0); + rd_en: IN std_logic; + rst: IN std_logic; + wr_en: IN std_logic; + almost_full: OUT std_logic; + dout: OUT std_logic_VECTOR(18 downto 0); + empty: OUT std_logic; + full: OUT std_logic); +END xilinx_fifo_sbuf; + +ARCHITECTURE xilinx_fifo_sbuf_a OF xilinx_fifo_sbuf IS +-- synthesis translate_off +component wrapped_xilinx_fifo_sbuf + port ( + clk: IN std_logic; + din: IN std_logic_VECTOR(18 downto 0); + rd_en: IN std_logic; + rst: IN std_logic; + wr_en: IN std_logic; + almost_full: OUT std_logic; + dout: OUT std_logic_VECTOR(18 downto 0); + empty: OUT std_logic; + full: OUT std_logic); +end component; + +-- Configuration specification + for all : wrapped_xilinx_fifo_sbuf use entity XilinxCoreLib.fifo_generator_v4_2(behavioral) + generic map( + c_has_int_clk => 0, + c_rd_freq => 1, + c_wr_response_latency => 1, + c_has_srst => 0, + c_has_rd_data_count => 0, + c_din_width => 19, + c_has_wr_data_count => 0, + c_full_flags_rst_val => 1, + c_implementation_type => 0, + c_family => "virtex4", + c_use_embedded_reg => 0, + c_has_wr_rst => 0, + c_wr_freq => 1, + c_use_dout_rst => 1, + c_underflow_low => 0, + c_has_meminit_file => 0, + c_has_overflow => 0, + c_preload_latency => 1, + c_dout_width => 19, + c_rd_depth => 16, + c_default_value => "BlankString", + c_mif_file_name => "BlankString", + c_has_underflow => 0, + c_has_rd_rst => 0, + c_has_almost_full => 1, + c_has_rst => 1, + c_data_count_width => 4, + c_has_wr_ack => 0, + c_use_ecc => 0, + c_wr_ack_low => 0, + c_common_clock => 1, + c_rd_pntr_width => 4, + c_use_fwft_data_count => 0, + c_has_almost_empty => 0, + c_rd_data_count_width => 4, + c_enable_rlocs => 0, + c_wr_pntr_width => 4, + c_overflow_low => 0, + c_prog_empty_type => 0, + c_optimization_mode => 0, + c_wr_data_count_width => 4, + c_preload_regs => 0, + c_dout_rst_val => "0", + c_has_data_count => 0, + c_prog_full_thresh_negate_val => 13, + c_wr_depth => 16, + c_prog_empty_thresh_negate_val => 3, + c_prog_empty_thresh_assert_val => 2, + c_has_valid => 0, + c_init_wr_pntr_val => 0, + c_prog_full_thresh_assert_val => 14, + c_use_fifo16_flags => 0, + c_has_backup => 0, + c_valid_low => 0, + c_prim_fifo_type => "512x36", + c_count_type => 0, + c_prog_full_type => 0, + c_memory_type => 1); +-- synthesis translate_on +BEGIN +-- synthesis translate_off +U0 : wrapped_xilinx_fifo_sbuf + port map ( + clk => clk, + din => din, + rd_en => rd_en, + rst => rst, + wr_en => wr_en, + almost_full => almost_full, + dout => dout, + empty => empty, + full => full); +-- synthesis translate_on + +END xilinx_fifo_sbuf_a; + diff --git a/xilinx/virtex4/xilinx_fifo_sbuf.xco b/xilinx/virtex4/xilinx_fifo_sbuf.xco new file mode 100644 index 0000000..22b6062 --- /dev/null +++ b/xilinx/virtex4/xilinx_fifo_sbuf.xco @@ -0,0 +1,81 @@ +############################################################## +# +# Xilinx Core Generator version J.40 +# Date: Fri Feb 4 16:55:38 2011 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# BEGIN Project Options +SET addpads = False +SET asysymbol = True +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = False +SET designentry = VHDL +SET device = xc4vlx40 +SET devicefamily = virtex4 +SET flowvendor = Foundation_iSE +SET formalverification = False +SET foundationsym = False +SET implementationfiletype = Ngc +SET package = ff1148 +SET removerpms = False +SET simulationfiles = Behavioral +SET speedgrade = -10 +SET verilogsim = True +SET vhdlsim = True +# END Project Options +# BEGIN Select +SELECT Fifo_Generator family Xilinx,_Inc. 4.2 +# END Select +# BEGIN Parameters +CSET almost_empty_flag=false +CSET almost_full_flag=true +CSET component_name=xilinx_fifo_sbuf +CSET data_count=false +CSET data_count_width=4 +CSET dout_reset_value=0 +CSET empty_threshold_assert_value=2 +CSET empty_threshold_negate_value=3 +CSET enable_ecc=false +CSET enable_int_clk=false +CSET fifo_implementation=Common_Clock_Block_RAM +CSET full_flags_reset_value=1 +CSET full_threshold_assert_value=14 +CSET full_threshold_negate_value=13 +CSET input_data_width=19 +CSET input_depth=16 +CSET output_data_width=19 +CSET output_depth=16 +CSET overflow_flag=false +CSET overflow_sense=Active_High +CSET performance_options=Standard_FIFO +CSET programmable_empty_type=No_Programmable_Empty_Threshold +CSET programmable_full_type=No_Programmable_Full_Threshold +CSET read_clock_frequency=1 +CSET read_data_count=false +CSET read_data_count_width=4 +CSET reset_pin=true +CSET reset_type=Asynchronous_Reset +CSET underflow_flag=false +CSET underflow_sense=Active_High +CSET use_dout_reset=true +CSET use_embedded_registers=false +CSET use_extra_logic=false +CSET valid_flag=false +CSET valid_sense=Active_High +CSET write_acknowledge_flag=false +CSET write_acknowledge_sense=Active_High +CSET write_clock_frequency=1 +CSET write_data_count=false +CSET write_data_count_width=4 +# END Parameters +GENERATE +# CRC: 26c7e249 +