aboutsummaryrefslogtreecommitdiffstats
path: root/fpga
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2011-07-08 12:17:54 -0700
committerJosh Blum <josh@joshknows.com>2011-07-08 12:17:54 -0700
commit17fabccfe4be79f3a5a0a3d7ab14ea72a791ecd9 (patch)
treee2d0d39d6b44b72c759b8be1380b2024de50bdf6 /fpga
parent60933a242cce0b1ec45e9f948e3da9ab72b2fd90 (diff)
parent4ea6f7431e09d9f27ecaa1c1b187d2c2f613e8f4 (diff)
downloaduhd-17fabccfe4be79f3a5a0a3d7ab14ea72a791ecd9.tar.gz
uhd-17fabccfe4be79f3a5a0a3d7ab14ea72a791ecd9.tar.bz2
uhd-17fabccfe4be79f3a5a0a3d7ab14ea72a791ecd9.zip
Merge branch 'fpga_next' into next
Diffstat (limited to 'fpga')
-rw-r--r--fpga/usrp2/coregen/Makefile.srcs2
-rw-r--r--fpga/usrp2/coregen/coregen.cgp4
-rw-r--r--fpga/usrp2/coregen/fifo_generator_ug175.pdfbin2895895 -> 1069823 bytes
-rw-r--r--fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.ngc3
-rw-r--r--fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.v3819
-rw-r--r--fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.veo47
-rw-r--r--fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.xco82
-rw-r--r--fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_fifo_generator_v4_3_xst_1.lso3
-rw-r--r--fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt106
-rw-r--r--fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_flist.txt8
-rw-r--r--fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_readme.txt38
-rw-r--r--fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_xmdf.tcl68
-rw-r--r--fpga/usrp2/fifo/fifo_2clock.v5
-rw-r--r--fpga/usrp2/gpmc/Makefile.srcs2
-rw-r--r--fpga/usrp2/gpmc/fifo_watcher.v7
-rw-r--r--fpga/usrp2/gpmc/gpmc_async.v62
-rw-r--r--fpga/usrp2/gpmc/new_read.v62
-rw-r--r--fpga/usrp2/gpmc/new_write.v82
-rw-r--r--fpga/usrp2/sdr_lib/Makefile.srcs8
-rw-r--r--fpga/usrp2/sdr_lib/add2_and_clip.v12
-rw-r--r--fpga/usrp2/sdr_lib/add2_and_clip_reg.v25
-rw-r--r--fpga/usrp2/sdr_lib/dsp_core_rx.v135
-rw-r--r--fpga/usrp2/sdr_lib/dsp_core_rx_tb.v73
-rw-r--r--fpga/usrp2/sdr_lib/dsp_core_tx.v24
-rw-r--r--fpga/usrp2/sdr_lib/hb_dec.v121
-rw-r--r--fpga/usrp2/sdr_lib/hb_dec_tb.v10
-rw-r--r--fpga/usrp2/sdr_lib/input.dat276
-rw-r--r--fpga/usrp2/sdr_lib/round.v4
-rw-r--r--fpga/usrp2/sdr_lib/round_reg.v13
-rw-r--r--fpga/usrp2/sdr_lib/round_sd.v22
-rw-r--r--fpga/usrp2/sdr_lib/round_sd_tb.v58
-rw-r--r--fpga/usrp2/sdr_lib/rx_dcoffset.v43
-rw-r--r--fpga/usrp2/sdr_lib/rx_dcoffset_tb.v20
-rw-r--r--fpga/usrp2/sdr_lib/rx_frontend.v73
-rw-r--r--fpga/usrp2/sdr_lib/rx_frontend_tb.v45
-rw-r--r--fpga/usrp2/sdr_lib/small_hb_dec.v70
-rw-r--r--fpga/usrp2/sdr_lib/tx_frontend.v86
-rw-r--r--fpga/usrp2/top/B100/u1plus_core.v144
-rw-r--r--fpga/usrp2/top/E1x0/Makefile.passthru98
-rwxr-xr-xfpga/usrp2/top/E1x0/core_compile2
-rw-r--r--fpga/usrp2/top/E1x0/passthru.ucf6
-rw-r--r--fpga/usrp2/top/E1x0/passthru.v35
-rw-r--r--fpga/usrp2/top/E1x0/u1e.v38
-rw-r--r--fpga/usrp2/top/E1x0/u1e_core.v188
-rw-r--r--fpga/usrp2/top/N2x0/u2plus_core.v29
-rw-r--r--fpga/usrp2/top/USRP2/u2_core.v31
-rw-r--r--fpga/usrp2/vrt/vita_tx_chain.v4
47 files changed, 5325 insertions, 768 deletions
diff --git a/fpga/usrp2/coregen/Makefile.srcs b/fpga/usrp2/coregen/Makefile.srcs
index a3a5d826d..5b2bc665a 100644
--- a/fpga/usrp2/coregen/Makefile.srcs
+++ b/fpga/usrp2/coregen/Makefile.srcs
@@ -24,4 +24,6 @@ fifo_xlnx_512x36_2clk_18to36.v \
fifo_xlnx_512x36_2clk_18to36.xco \
fifo_xlnx_512x36_2clk_prog_full.v \
fifo_xlnx_512x36_2clk_prog_full.xco \
+fifo_xlnx_1Kx18_2clk.v \
+fifo_xlnx_1Kx18_2clk.xco \
))
diff --git a/fpga/usrp2/coregen/coregen.cgp b/fpga/usrp2/coregen/coregen.cgp
index dd85a7f50..01d31bf5b 100644
--- a/fpga/usrp2/coregen/coregen.cgp
+++ b/fpga/usrp2/coregen/coregen.cgp
@@ -1,5 +1,4 @@
-# Date: Fri Oct 15 07:50:19 2010
-
+# Date: Fri Jun 10 23:12:37 2011
SET addpads = false
SET asysymbol = false
SET busformat = BusFormatAngleBracketNotRipped
@@ -19,4 +18,3 @@ SET verilogsim = true
SET vhdlsim = false
SET workingdirectory = /tmp/
-# CRC: 983b9b45
diff --git a/fpga/usrp2/coregen/fifo_generator_ug175.pdf b/fpga/usrp2/coregen/fifo_generator_ug175.pdf
index 5fba6029c..2c3e3c200 100644
--- a/fpga/usrp2/coregen/fifo_generator_ug175.pdf
+++ b/fpga/usrp2/coregen/fifo_generator_ug175.pdf
Binary files differ
diff --git a/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.ngc b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.ngc
new file mode 100644
index 000000000..dc9519357
--- /dev/null
+++ b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.ngc
@@ -0,0 +1,3 @@
+XILINX-XDB 0.1 STUB 0.1 ASCII
+XILINX-XDM V1.4e
+$4464g<,[o}e~g`n;"2*413&;$>"9 > %02?*rjx&Uhk"hffn]{hk~X9Br:4R<llj,mcj7<8<1;<=>?4193456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0127?5238;1;4<5>3:3-445<990BB][[:@FGVD:>294:?6??:HLSQQ<FLMXI044?>0d855<NFY__6}|`g^gntqX|axne26:1<12>772@D[YY4rne\ahvsqV~c~h}g_`qpawr;13:5>;5>0;KMTPR=x{elShctx]wlwct`Vdnklzj<883:4c<990BB][[:qplcZ`rdeUdk|h=;94;4238:1EC^ZT;rqkbYa}efTxe|jsi]bwvcu|531<3<:;029MKVR\3zycjQiumn\pmtb{aUeijo{e=;94;7f38;1CXZ_UU8geqgXkfex1??:1<2`>762F__\XZ5re]geqgXkfex1??:1<2`>762F__\XZ5ws]geqgXkfex1??:1<26>712@D[YY4KI@>21?699;1::7GAPTV9@LD;9<0;2<=4178LQQVR\3NDM1?::1<27>712F__\XZ5DN@?50<76880=54FNQWW>aoi48=1<3?;;0:9KPRW]]0ocxz31683:4=5<28;<=<42932?7<NFY__6IG_A=394;763;0BB][[:EKSF97=87;97?4@UURVP?BHXH6:6=0>2:09KPRW]]0OC]L31;2=0>5799n0?~<?01dd000*=81?86;;543821=18J:97;<=;7;7?3?>>=1=5L?=;7A7?3EDK;1=I?58F594BC@631804=:481236>>5923?74>?939:21=>>?3?7L<NA59BE7G?3HNO^L2?>99B@ATF48437LJKR@>1:==FLMXJ0>07;@FGVD:3611JHI\N<4<;?DBCZH6=255NDEPB828?3HNO^L27>`9B@ATF400;255NDEPB8<8?3HNO^O2?>99B@ATE48437LJKRC>1:==FLMXI0>07;@FGVG:3611JHI\M<4<;?DBCZK6=255NDEPA828?3HNO^O27>`9B@ATE400;255NDEPA8<8>3HYRBNQ]EF68FDGF;2H^>55MUR]JJCI63J>0OL6N2:AF57=D@LI@SAGLEOQF[Q_WM;1HE95LLJC7?FJLJ:1H@_74CNONMQRBL8>0OB\J_FGMAWGSAFDTECH@7:AQADRBL81O86J:8108@L0<L@K7<394DHC?55803MCJ0<?17:FJE9756>1OEL2>3?58@LG;9=427IGN<0794;1<L@K7=809;EKB84813MCJ0?09;EKB86813MCJ0909;EKB80813MCJ0;09;EKB82813MCJ0509;EKB8<813MCI0=08;EKA8469?2NBN1?>>69GMG:6:7=0HDL312<4?AOE48>556JFB=36>5803MCI0<;16:FJF979>2NBN1<16:FJF959>2NBN1:16:FJF939>2NBN1816:FJF919>2NBN1616:FJF9?9?2NB\L2?>89GMUG;93:5;6JFP@>2:2=CAYH7<374DHRA84<76>1OE]L31?48@JG;87=0HBO311<4?AIF48;5;6J@A=31:2=CGH6:?394DNC?518>3MEJ0<;50?58@JG;9<4=7IAN<0<5?AIF4;4=7IAN<2<5?AIF4=4=7IAN<4<5?AIF4?4=7IAN<6<5?AIF414=7IAN<8<5?AIE494<7IAM<02=3>BHJ5;:2:5KOC>26;1<LFH7=>08;EMA842912NDN1?::1<4?AIE48?5:6J@B=3=2>BHJ585:6J@B=1=2>BHJ5>5:6J@B=7=2>BHJ5<5:6J@B=5=2>BHJ525:6J@B=;=3>BHXH6;245KOQC?5?69?2ND\L2>>69GKUD;8730HB^M<083:2=CGYH7=3?4E59FE1633LKH<>5JN@18AKD53O297KJ<;GF@0>@CKL>0JIM_3:DGT1=ALYO?7KH8F49Eeiub92M87J@K1:K1?L653@;97D<=;H1;?LHN\YU;<55FNHVS[57?3@DBX]Q?299JJLRWW9937D@FTQ]30==NF@^[S=;7;HLJPUY7>11BBDZ__15:?LHN\Z^JXH94IOKW[5603@DBXR>>7:KMMQY7:>1BBDZP0258MKOSW9><7D@FT^263>OIA]U;::5FNHV\421<AGC_S=68;HLJPZ6>?2CEEYQ?A69JJLRX8K=0ECG[_1A4?LHN\V:O;6GAIU]3A2=NF@^T<K94IOKW[4603@DBXR?>7:KMMQY6:>1BBDZP1258MKOSW8><7D@FT^363>OIA]U:::5FNHV\521<AGC_S<68;HLJPZ7>?2CEEYQ>A69JJLRX9K=0ECG[_0A4?LHN\V;O;6GAIU]2A2=NF@^T=K94IOKW[7603@DBXR<>7:KMMQY5:>1BBDZP2258MKOSW;><7D@FT^063>OIA]U9::5FNHV\621<AGC_S?68;HLJPZ4>?2CEEYQ=A69JJLRX:K=0ECG[_3A4?LHN\V8O;6GAIU]1A2=NF@^T>K94IOKW[6603@DBXR=>7:KMMQY4:>1BBDZP3258MKOSW:><7D@FT^163>OIA]U8::5FNHV\721<AGC_S>68;HLJPZ5>?2CEEYQ<A69JJLRX;K=0ECG[_2A4?LHN\V9O;6GAIU]0A2=NF@^T?K84IOKW[D0<AGC_SO=4IOT0?LIE:2FB>6B@6:NLEACC?2FDKDMNL59OQQ733E__>;5CUU0\@1=K]]9=7A[[3^F5?ISS;VF?7A[[479OQQ2XL?1GYY:PL49NWBII=2G^TNWl;LcikwPbzzcdbn5BiomqR`ttafd97C?<;O330>H68<>0B<>94:L2422<F8:386@>0818J4733G;:<95A1037?K76:=1E=<=;;O3201=I98??7C?>659M54133G;:495A10;0?K75<2D:>=:4N0020>H6:;>0B<<<4:L2612<F882?6@>359M56633G;8=95A1207?K74;=1E=>:;;O3011=I9:<?7C?<759M56>33G;85>5A1568J425<2D:8>:4N0670>H6<<>0B<:94:L2022<F8>386@>4818J4333G;><95A1437?K72::1E=;=4N050?K7?;2D:5?5A229M655<F;;87C<=3:L176=I:<90B?9<;O137>H49:1E?>=4N277?K529:1E?;=4N250?K5?<2D84<=4N2;1?K243G>;?6@;139M27=I?;1E4>5A8518J=343G2<?6@7939M=6=I19l0BOQMURRJJZVUGYY<7CK[WNPH0>HHFL;0C?5@K09S0>VFZ]k0\D@PBTQJ@]d<X@DTNX]AALG0?UTB92[n7_OBB04\W4>X[82:7^?<;RKN[FIKD@YBCCQLHDAH2>UH][IN;6]]V@N\E2=TZ_KGSO:4SRPB0>UTZK>0XT^J339V4*aun'xm#jmw.bnh|*Kg{UyhR~ats]dgZ~hz9:;<R\jstnw564<]9%l~k }f.e`|+ekcq%Ftb|Pre]sjqtXojUsc>?00]Qavsk|8997X> gsd-vc)`kq$h`fv Mymq[wbXxg~ySjmPxnp3454XZly~`y?<2:W3+bta&{l$knv!cmi{+H~hzVxoS}`{r^e`[}iu89:8S_k|umv277=R8&myj#|i/fa{*fjlp&GscQ}d^rmpwY`kVrd~=>?4^Pfwpjs9:80Y=!hrg,qb*adp'iggu!Bxnp\vaYwf}xTknQwos2340YUmzgx<==;T2,cw`)zo%lou lljz,I}iuW{nT|cz}_fa\|jt789<T^h}zlu306>S7'nxm"h gbz-gim'Drd~R|k_qlwvZadWqey<=>8_Sgpqir6;;1^<"i}f/pe+be&jf`t"Cwos]q`Zvi|{UloRv`r123<ZTb{|f=><4U1-dvc(un&mht#mcky-N|jtX{U{by|Pgb]{kw6789UYi~{ct011?P6(o{l%~k!hcy,`hn~(EqeySz|Ppovq[beXpfx;<=?PRdqvhq74:2_;#j|i.sd,cf~)keas#@v`r^uq[uhszVmhSua}0121[Wct}e~:??5Z0.eqb+ta'nis"nbdx.O{kwYpzVzexQhc^zlv567;VXnxb{1208Q5)`zo$yj"ilx/aoo})JpfxT{Qnup\cfYg{:;<9Q]erwop4553\:$kh!rg-dg}(ddbr$Aua}_vp\tkruWniTtb|?017\V`urd};8>6[?/fpe*w`(ojr%oaew/LzlvZquWyd~Ril_ymq4561W[oxyaz>339V4*aun'xm#jmw.bnh|*Kg{U|~R~ats]dgZ~hz9:;;R\jstnw564<]9%l~k }f.e`|+ekcq%Ftb|Pws]sjqtXojUsc>?09]Qavsk|88:7X> gsd-vc)`kq$h`fv re]sjqtXj`d7<3<>;T2,cw`)zo%lou lljz,vaYwf}xTnd`31?02?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl?6;463\:$kh!rg-dg}(ddbr$~iQnup\flh;;78:7X> gsd-vc)`kq$h`fv re]sjqtXj`d783<>;T2,cw`)zo%lou lljz,vaYwf}xTnd`35?02?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl?2;463\:$kh!rg-dg}(ddbr$~iQnup\flh;?78:7X> gsd-vc)`kq$h`fv re]sjqtXj`d743<>;T2,cw`)zo%lou lljz,vaYwf}xTnd`39?03?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl\476<]9%l~k }f.e`|+ekcq%yhR~ats]amkY6:91^<"i}f/pe+be&jf`t"|k_qlwvZdnfV89<6[?/fpe*w`(ojr%oaew/sf\tkruWkceS><?;T2,cw`)zo%lou lljz,vaYwf}xTnd`P4328Q5)`zo$yj"ilx/aoo})ulVzexQmio]665=R8&myj#|i/fa{*fjlp&xoS}`{r^`jjZ0582_;#j|i.sd,cf~)keas#jPpovq[goiW>8;7X> gsd-vc)`kq$h`fv re]sjqtXj`dT4?>4U1-dvc(un&mht#mcky-q`Zvi|{UiecQ6279V4*aun'xm#jmw.bnh|*tcWyd~Rlfn^zlv5678;=0Y=!hrg,qb*adp'iggu!}d^rmpwYeagUsc>?01312>S7'nxm"h gbz-gim'{nT|cz}_ckm[}iu89::>:5Z0.eqb+ta'nis"nbdx.pg[uhszVhbbRv`r12354413\:$kh!rg-dg}(ddbr$~iQnup\flhXpfx;<=<=7:W3+bta&{l$knv!cmi{+wbXxg~ySoga_ymq45659;<0Y=!hrg,qb*adp'iggu!}d^rmpwYeagUsc>?0204?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl\|jt78999>;5Z0.eqb+ta'nis"nbdx.pg[uhszVhbbRv`r123071<]9%l~k }f.e`|+ekcq%yhR~ats]amkYg{:;<9?=6:W3+bta&{l$knv!cmi{+wbXxg~ySoga_ymq4562:>1^<"i}f/pe+be&jf`t"|k_qlwvZdnfVrd~=>?5005?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl\|jt789<946[?/fpe*w`(ojr%oaew/sf\tkruWkceSua}012554403\:$kh!rg-dg}(ddbr$~iQnup\flhXpfx;<=8=2c9V4*aun'xm#jmw.bnh|*tcWyd~Rlfn^zlv567>Vhoh=<9;T2,cw`)zo%lou lljz,vaYwf}xTnd`Pxnp34515?2_;#j|i.sd,cf~)keas#jPpovq[goiWqey<=>81348Q5)`zo$yj"ilx/aoo})ulVzexQmio]{kw67818<7X> gsd-vc)`kq$h`fv re]sjqtXj`dTtb|?01:265=R8&myj#|i/fa{*fjlp&xoS}`{r^e`858582_;#j|i.sd,cf~)keas#jPpovq[be;978;7X> gsd-vc)`kq$h`fv re]sjqtXoj692?>4U1-dvc(un&mht#mcky-q`Zvi|{Ulo1=1219V4*aun'xm#jmw.bnh|*tcWyd~Ril<5<14>S7'nxm"h gbz-gim'{nT|cz}_fa?1;473\:$kh!rg-dg}(ddbr$~iQnup\cf:16;:0Y=!hrg,qb*adp'iggu!}d^rmpwY`k5=5>=5Z0.eqb+ta'nis"nbdx.pg[uhszVmh050=0:W3+bta&{l$knv!cmi{+wbXxg~ySjm39?3e?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]35c=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[47a3\:$kh!rg-dg}(ddbr$~iQnup\cfY59o1^<"i}f/pe+be&jf`t"|k_qlwvZadW:;m7X> gsd-vc)`kq$h`fv re]sjqtXojU?=k5Z0.eqb+ta'nis"nbdx.pg[uhszVmhS8?i;T2,cw`)zo%lou lljz,vaYwf}xTknQ91g9V4*aun'xm#jmw.bnh|*tcWyd~Ril_63e?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb];5c=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[<413\:$kh!rg-dg}(ddbr$~iQnup\cfYf{{ol0=0=6:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfc979:?1^<"i}f/pe+be&jf`t"|k_qlwvZadWhyyij2=>348Q5)`zo$yj"ilx/aoo})ulVzexQhc^cpv`a;;78=7X> gsd-vc)`kq$h`fv re]sjqtXojUjkh<5<12>S7'nxm"h gbz-gim'{nT|cz}_fa\evtbo5?5>;5Z0.eqb+ta'nis"nbdx.pg[uhszVmhSl}}ef>5:70<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlm7;3<9;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd8=85>2_;#j|i.sd,cf~)keas#jPpovq[beXizxnk171249V4*aun'xm#jmw.bnh|*tcWyd~Ril_`qqabY7:<1^<"i}f/pe+be&jf`t"|k_qlwvZadWhyyijQ>249V4*aun'xm#jmw.bnh|*tcWyd~Ril_`qqabY5:<1^<"i}f/pe+be&jf`t"|k_qlwvZadWhyyijQ<249V4*aun'xm#jmw.bnh|*tcWyd~Ril_`qqabY3:<1^<"i}f/pe+be&jf`t"|k_qlwvZadWhyyijQ:249V4*aun'xm#jmw.bnh|*tcWyd~Ril_`qqabY1:<1^<"i}f/pe+be&jf`t"|k_qlwvZadWhyyijQ8249V4*aun'xm#jmw.bnh|*tcWyd~Ril_`qqabY?:<1^<"i}f/pe+be&jf`t"|k_qlwvZadWhyyijQ6289V4*aun'xm#jmw.bnh|*tcWyd~Ril_`qqabYc95:5>45Z0.eqb+ta'nis"nbdx.pg[uhszVmhSl}}ef]g5979:01^<"i}f/pe+be&jf`t"|k_qlwvZadWhyyijQk1=0=6<=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumnUo=1=1289V4*aun'xm#jmw.bnh|*tcWyd~Ril_`qqabYc95>5>45Z0.eqb+ta'nis"nbdx.pg[uhszVmhSl}}ef]g5939:01^<"i}f/pe+be&jf`t"|k_qlwvZadWhyyijQk1=4=6<=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumnUo=191289V4*aun'xm#jmw.bnh|*tcWyd~Ril_`qqabYc9525>45Z0.eqb+ta'nis"nbdx.pg[uhszVmhSl}}ef]g59?9:11^<"i}f/pe+be&jf`t"|k_qlwvZadWhyyijQk1^21<>S7'nxm"h gbz-gim'{nT|cz}_fa\evtboVn:S<<7;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd[a7X:;20Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiPd0]06==R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumnUo=R:=8:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfcZb6W<837X> gsd-vc)`kq$h`fv re]sjqtXojUjkh_e3\27><]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmTh<Q8299V4*aun'xm#jmw.bnh|*tcWyd~Ril_`qqabYc9V2946[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^f2[<423\:$kh!rg-dg}(ddbr$~iQnup\cfYg{:;<=<:;T2,cw`)zo%lou lljz,vaYwf}xTknQwos2344423\:$kh!rg-dg}(ddbr$~iQnup\cfYg{:;<?<:;T2,cw`)zo%lou lljz,vaYwf}xTknQwos2346423\:$kh!rg-dg}(ddbr$~iQnup\cfYg{:;<9<:;T2,cw`)zo%lou lljz,vaYwf}xTknQwos2340423\:$kh!rg-dg}(ddbr$~iQnup\cfYg{:;<;<:;T2,cw`)zo%lou lljz,vaYwf}xTknQwos2342423\:$kh!rg-dg}(ddbr$~iQnup\cfYg{:;<5<>;T2,cw`)zo%lou lljz,swYwf}xTnd`30?02?P6(o{l%~k!hcy,`hn~({U{by|Pbhl?5;463\:$kh!rg-dg}(ddbr${Qnup\flh;:78:7X> gsd-vc)`kq$h`fv ws]sjqtXj`d7?3<>;T2,cw`)zo%lou lljz,swYwf}xTnd`34?02?P6(o{l%~k!hcy,`hn~({U{by|Pbhl?1;463\:$kh!rg-dg}(ddbr${Qnup\flh;>78:7X> gsd-vc)`kq$h`fv ws]sjqtXj`d7;3<>;T2,cw`)zo%lou lljz,swYwf}xTnd`38?02?P6(o{l%~k!hcy,`hn~({U{by|Pbhl?=;473\:$kh!rg-dg}(ddbr${Qnup\flhX8;:0Y=!hrg,qb*adp'iggu!xr^rmpwYeagU:>=5Z0.eqb+ta'nis"nbdx.uq[uhszVhbbR<=0:W3+bta&{l$knv!cmi{+rtXxg~ySoga_203?P6(o{l%~k!hcy,`hn~({U{by|Pbhl\076<]9%l~k }f.e`|+ekcq%|~R~ats]amkY2:91^<"i}f/pe+be&jf`t"y}_qlwvZdnfV<9<6[?/fpe*w`(ojr%oaew/vp\tkruWkceS:<?;T2,cw`)zo%lou lljz,swYwf}xTnd`P8328Q5)`zo$yj"ilx/aoo})pzVzexQmio]:63=R8&myj#|i/fa{*fjlp&}yS}`{r^`jjZ~hz9:;<?94U1-dvc(un&mht#mcky-tvZvi|{UiecQwos234575>2_;#j|i.sd,cf~)keas#z|Ppovq[goiWqey<=>>269V4*aun'xm#jmw.bnh|*quWyd~Rlfn^zlv567988=7X> gsd-vc)`kq$h`fv ws]sjqtXj`dTtb|?01013>S7'nxm"h gbz-gim'~xT|cz}_ckm[}iu89:9=?84U1-dvc(un&mht#mcky-tvZvi|{UiecQwos2346403\:$kh!rg-dg}(ddbr${Qnup\flhXpfx;<===279V4*aun'xm#jmw.bnh|*quWyd~Rlfn^zlv567<;=0Y=!hrg,qb*adp'iggu!xr^rmpwYeagUsc>?05312>S7'nxm"h gbz-gim'~xT|cz}_ckm[}iu89:>>:5Z0.eqb+ta'nis"nbdx.uq[uhszVhbbRv`r12314413\:$kh!rg-dg}(ddbr${Qnup\flhXpfx;<=8=8:W3+bta&{l$knv!cmi{+rtXxg~ySoga_ymq4561988<7X> gsd-vc)`kq$h`fv ws]sjqtXj`dTtb|?01416g=R8&myj#|i/fa{*fjlp&}yS}`{r^`jjZ~hz9:;:Rlkd105?P6(o{l%~k!hcy,`hn~({U{by|Pbhl\|jt789=9;6[?/fpe*w`(ojr%oaew/vp\tkruWkceSua}0124570<]9%l~k }f.e`|+ekcq%|~R~ats]amkYg{:;<5<8;T2,cw`)zo%lou lljz,swYwf}xTnd`Pxnp345>6:91^<"i}f/pe+be&jf`t"y}_qlwvZad4949<6[?/fpe*w`(ojr%oaew/vp\tkruWni7=3<?;T2,cw`)zo%lou lljz,swYwf}xTkn2=>328Q5)`zo$yj"ilx/aoo})pzVzexQhc=1=65=R8&myj#|i/fa{*fjlp&}yS}`{r^e`818582_;#j|i.sd,cf~)keas#z|Ppovq[be;=78;7X> gsd-vc)`kq$h`fv ws]sjqtXoj6=2?>4U1-dvc(un&mht#mcky-tvZvi|{Ulo191219V4*aun'xm#jmw.bnh|*quWyd~Ril<9<14>S7'nxm"h gbz-gim'~xT|cz}_fa?=;7a3\:$kh!rg-dg}(ddbr${Qnup\cfY79o1^<"i}f/pe+be&jf`t"y}_qlwvZadW8;m7X> gsd-vc)`kq$h`fv ws]sjqtXojU9=k5Z0.eqb+ta'nis"nbdx.uq[uhszVmhS>?i;T2,cw`)zo%lou lljz,swYwf}xTknQ;1g9V4*aun'xm#jmw.bnh|*quWyd~Ril_43e?P6(o{l%~k!hcy,`hn~({U{by|Pgb]55c=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[27a3\:$kh!rg-dg}(ddbr${Qnup\cfY?9o1^<"i}f/pe+be&jf`t"y}_qlwvZadW08=7X> gsd-vc)`kq$h`fv ws]sjqtXojUjkh<1<12>S7'nxm"h gbz-gim'~xT|cz}_fa\evtbo5;5>;5Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef>1:70<]9%l~k }f.e`|+ekcq%|~R~ats]dgZgtzlm7?3<9;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd8185>2_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnk1;1279V4*aun'xm#jmw.bnh|*quWyd~Ril_`qqab:16;<0Y=!hrg,qb*adp'iggu!xr^rmpwY`kVkx~hi37?05?P6(o{l%~k!hcy,`hn~({U{by|Pgb]bwwc`4149:6[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg=;=60=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnU;>85Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]260=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnU9>85Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]060=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnU?>85Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]660=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnU=>85Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]460=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnU3>85Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]:6<=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=1>1289V4*aun'xm#jmw.bnh|*quWyd~Ril_`qqabYc95;5>45Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g5949:01^<"i}f/pe+be&jf`t"y}_qlwvZadWhyyijQk1=1=6<=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=1:1289V4*aun'xm#jmw.bnh|*quWyd~Ril_`qqabYc95?5>45Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g5909:01^<"i}f/pe+be&jf`t"y}_qlwvZadWhyyijQk1=5=6<=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=161289V4*aun'xm#jmw.bnh|*quWyd~Ril_`qqabYc9535>55Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g5Z6502_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnkRj>_00;?P6(o{l%~k!hcy,`hn~({U{by|Pgb]bwwc`Wm;T>?64U1-dvc(un&mht#mcky-tvZvi|{UloRo|rde\`4Y4:11^<"i}f/pe+be&jf`t"y}_qlwvZadWhyyijQk1^61<>S7'nxm"h gbz-gim'~xT|cz}_fa\evtboVn:S8<7;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd[a7X>;20Y=!hrg,qb*adp'iggu!xr^rmpwY`kVkx~hiPd0]46==R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=R6=8:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZb6W08>7X> gsd-vc)`kq$h`fv ws]sjqtXojUsc>?0106?P6(o{l%~k!hcy,`hn~({U{by|Pgb]{kw67888>7X> gsd-vc)`kq$h`fv ws]sjqtXojUsc>?0306?P6(o{l%~k!hcy,`hn~({U{by|Pgb]{kw678:8>7X> gsd-vc)`kq$h`fv ws]sjqtXojUsc>?0506?P6(o{l%~k!hcy,`hn~({U{by|Pgb]{kw678<8>7X> gsd-vc)`kq$h`fv ws]sjqtXojUsc>?0706?P6(o{l%~k!hcy,`hn~({U{by|Pgb]{kw678>8>7X> gsd-vc)`kq$h`fv ws]sjqtXojUsc>?091;?P6(o{l%~k!hl1,q`*au9'myhn<!rea,IdbcW{nThnQf_`fgwpd789::<>64U1-dvc(un&mg<#|k/fp2*btck;$yhn!Baef\vaYckVcTmij|uc234575;11^<"i}f/pe+bj7&{n$k?!gsf`6+tck&GjhiQ}d^f`[lYflmy~n=>?0060<>S7'nxm"h gm2-va)`z8$l~im=.sf`+HgclVxoSimPi^cg`vse89:;=;=8;T2,cw`)zo%l`= }d.eq5+aulj8%~im M`fg[wbXljUbSljkst`34565;>1^<"i}f/pe+bj7&{n$k?!gsf`6+tck&GjhiQ}d^f`[lYflmy~n=>?0514?P6(o{l%~k!hl1,q`*au9'myhn<!rea,IdbcW{nThnQf_`fgwpd789:=?:5Z0.eqb+ta'nf;"j gs3-cwbd:'xoo"Cnde]q`ZbdW`Ujhi}zb1234=5d3\:$kh!rg-dh5(ul&my=#i}db0-vae(EhnoSjPdb]j[dbc{|h;<=>Pcx>2:6><]9%l~k }f.eo4+tc'nx:"j|kc3,q`f)J{|hThdhi_vp\vaYseyUhu1>1399V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.OpqgYcaolT{Q}d^vntZe~484846[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#@}zb^fjbcYpzVxoSyc_b{?6;5?3\:$kh!rg-dh5(ul&my=#i}db0-vae(EziSigif^uq[wbX|dzTot2<>2:8Q5)`zo$yj"ic0/pg+bt6&nxoo? }db-NwpdXl`lmSz|Pre]wiuYdq5>5?55Z0.eqb+ta'nf;"j gs3-cwbd:'xoo"C|uc]gmc`X{UyhRzbp^az808402_;#j|i.sd,ci6)zm%l~< hrea1*wbd'Dy~nRjffg]tvZtcW}g{Snw36?1;?P6(o{l%~k!hl1,q`*au9'myhn<!rea,IvseWmcmjRy}_sf\phvXkp6<2>64U1-dvc(un&mg<#|k/fp2*btck;$yhn!Bst`\`l`aW~xT~iQ{mq]`}9>9;01^<"i}f/pe+bj7&{n$k?!gsf`6+tck&GxyoQkigd\swYulV~f|Rbzt=2=7<=R8&myj#|i/fn3*wb(o{;%kjl2/pgg*Kt}kUoekhPws]q`ZrjxVf~x1?1389V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.OpqgYcaolT{Q}d^vntZjr|585?45Z0.eqb+ta'nf;"j gs3-cwbd:'xoo"C|uc]gmc`X{UyhRzbp^nvp959;01^<"i}f/pe+bj7&{n$k?!gsf`6+tck&GxyoQkigd\swYulV~f|Rbzt=6=7<=R8&myj#|i/fn3*wb(o{;%kjl2/pgg*Kt}kUoekhPws]q`ZrjxVf~x1;1389V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.OpqgYcaolT{Q}d^vntZjr|5<5?45Z0.eqb+ta'nf;"j gs3-cwbd:'xoo"C|uc]gmc`X{UyhRzbp^nvp919;01^<"i}f/pe+bj7&{n$k?!gsf`6+tck&GxyoQkigd\swYulV~f|Rbzt=:=7<=R8&myj#|i/fn3*wb(o{;%kjl2/pgg*Kt}kUoekhPws]q`ZrjxVf~x171389V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.OpqgYcaolT{Q}d^vntZ~hz5:5?45Z0.eqb+ta'nf;"j gs3-cwbd:'xoo"C|uc]gmc`X{UyhRzbp^zlv979;01^<"i}f/pe+bj7&{n$k?!gsf`6+tck&GxyoQkigd\swYulV~f|Rv`r=0=7<=R8&myj#|i/fn3*wb(o{;%kjl2/pgg*Kt}kUoekhPws]q`ZrjxVrd~1=1389V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.OpqgYcaolT{Q}d^vntZ~hz5>5?45Z0.eqb+ta'nf;"j gs3-cwbd:'xoo"C|uc]gmc`X{UyhRzbp^zlv939;01^<"i}f/pe+bj7&{n$k?!gsf`6+tck&GxyoQkigd\swYulV~f|Rv`r=4=7<=R8&myj#|i/fn3*wb(o{;%kjl2/pgg*Kt}kUoekhPws]q`ZrjxVrd~191389V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.OpqgYcaolT{Q}d^vntZ~hz525?45Z0.eqb+ta'nf;"j gs3-cwbd:'xoo"C|uc]gmc`X{UyhRzbp^zlv9?9;91^<"i}f/pe+bj7&{n$k?!gsf`6+tck&nbjkQxr^pg[qkw494946[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#jPdb]j[54?3\:$kh!rg-dh5(ul&my=#i}db0-vae(zmUooRgP13;8Q5)`zo$yj"ic0/pg+bt6&nxoo? }db-q`ZbdW`U:<?64U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lY5:11^<"i}f/pe+bj7&{n$k?!gsf`6+tck&xoSimPi^11<>S7'nxm"h gm2-va)`z8$l~im=.sf`+wbXljUbS9<7;T2,cw`)zo%l`= }d.eq5+aulj8%~im re]ggZoX=;20Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]56==R8&myj#|i/fn3*wb(o{;%kjl2/pgg*tcWmiTeR9=8:W3+bta&{l$ka>!re-dv4(`zmi9"jl/sf\`fYnW1837X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$~iQkc^k\=67<]9%l~k }f.eo4+tc'nx:"j|kc3,q`f)ulVnhSdQbuy2347:76:80Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]nq}678;6;2<==;T2,cw`)zo%l`= }d.eq5+aulj8%~im re]ggZoXe|r;<=<311<07>S7'nxm"h gm2-va)`z8$l~im=.sf`+wbXljUbS`{w012184699:;0Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]nq}678;6:2><4U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lYj}q:;<?2>>012?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcTaxv?010?6;553\:$kh!rg-dh5(ul&my=#i}db0-vae(zmUooRgPmtz3454;:7;8=6[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#jPdb]j[hs89:90>0<2:W3+bta&{l$ka>!re-dv4(`zmi9"jl/sf\`fYnWds<=>=<2<274=R8&myj#|i/fn3*wb(o{;%kjl2/pgg*tcWmiTeRczx1236929;;1^<"i}f/pe+bj7&{n$k?!gsf`6+tck&xoSimPi^ov|567:5>5=>:4U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lYj}q:;<?2;>0327==R8&myj#|i/fn3*wb(o{;%kjl2/pgg*tcWmiTeRczx123692998;T_Z><1:W3+bta&{l$ka>!re-dv4(`zmi9"jl/sf\`fYnWds<=>=<4<07>S7'nxm"h gm2-va)`z8$l~im=.sf`+wbXljUbS`{w012180869:80Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]nq}678;6>2?=>;T2,cw`)zo%l`= }d.eq5+aulj8%~im re]ggZoXe|r;<=<36?16?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcTaxv?010?2;YT_99:7X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$~iQkc^k\ip~78987;3=:;T2,cw`)zo%l`= }d.eq5+aulj8%~im re]ggZoXe|r;<=<37?]PS5563\:$kh!rg-dh5(ul&my=#i}db0-vae(zmUooRgPmtz3454;079>7X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$~iQkc^k\ip~7898743Q\W116?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcTaxv?010?<;YT_8927X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$~iQkc^k\ip~7898743Q\W0]PS5563\:$kh!rg-dh5(ul&my=#i}db0-vae(zmUooRgPmtz3454;17987X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$~iQkc^k\ip~7898753<>369V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.pg[aeXaVg~t=>?2=;=64YT_99<7X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$~iQkc^k\ip~7898753<>_RU272=R8&myj#|i/fn3*wb(o{;%kjl2/pgg*tcWmiTeRczx12369?9;9UX[==<;T2,cw`)zo%l`= }d.eq5+aulj8%~im re]ggZoXe|r;<=<39?1276=R8&myj#|i/fn3*wb(o{;%kjl2/pgg*tcWmiTeRczx12369?9;1997X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$~iQkc^k\ip~7898753:<3:W3+bta&{l$ka>!re-dv4(`zmi9"jl/sf\`fYnWds<=>=<8<7561<]9%l~k }f.eo4+tc'nx:"j|kc3,q`f)ulVnhSdQbuy2347:>6=;T_Z>=a:W3+bta&{l$ka>!re-dv4(un~l#_OB_SF\AKYA_O^:>45Z0.eqb+ta'nf;"j gs3-vcqa|&XJAR\JGNWW[@H6:k1^<"i}f/pe+bj7&{n$k?!rguep*TFEV\J@DJPFVDW54543\:$kh!rg-dh5(ul&my=#|iwgv,gptuWo}mxR}{aug\BVKXNOn:?;5Z0.eqb+ta'nf;"j gs3-vcqa|&i~~Qiwgv\wqgsmVLXARHId0/Jj6><]9%l~k }f.eo4+tc'nx:"hxfu-`qwtXn~lS~zntd]EWHYANm;&Ec?>329V4*aun'xm#jb?.sf,cw7)zo}mx"mzrs]escrX{}kiRH\M^DE`7513\:$kh!rg-dh5(ul&my=#|iwgv,gptuWo}mxR}{aug\BVKXNOn9!D`<8:W3+bta&{l$ka>!re-dv4(un~l#n{}r^dtbqYt|h~nSK]B_GDg6(Oi98837X> gsd-vc)`d9$yh"i}1/pescr(mdzuRhxfu]ef71<]9%l~k }f.eo4+tc'nx:"hxfu-fiur~Wo}mxRg=e:W3+bta&{l$ka>!re-dv4(un~l#hctx]escrXaVey<=>?2g9V4*aun'xm#jb?.sf,cw7)zo}mx"kbpu{\br`sW`Ud~=>?0006?P6(o{l%~k!hl1,q`*au9'xm{kz urgq[sgkam827X> gsd-vc)`d9$yh"i}ar,qwqu(k9%hm|vndv?4;4>3\:$kh!rg-dh5(ul&mym~ }suq,g5)di{xrbhz31?0:?P6(o{l%~k!hl1,q`*auiz$yy} c1-`ewt~fl~7>3<6;T2,cw`)zo%l`= }d.eqev(u{}y$o=!laspzj`r;;78m7X> gsd-vc)`d9$yh"i}ar,qwqu(k9%laxv!glY3Y+aj9'g:>k5Z0.eqb+ta'nf;"j gscp*wus{&i;#jczx/en_4[)ody%a~<i;T2,cw`)zo%l`= }d.eqev(u{}y$o=!hmtz-ch]5U'mf#c|2g9V4*aun'xm#jb?.sf,cwgt&{y"m?/fov|+ajS:W%k`}!mr0e?P6(o{l%~k!hl1,q`*auiz$yy} c1-dip~)odQ?Q#ibs/op66=R8&myj#|i/fn3*wb(o{kx"}{s.a3+s7;87887X> gsd-vc)`d9$yh"i}ar,qwqu(k9%}=1?1229V4*aun'xm#jb?.sf,cwgt&{y"m?/w3?6;443\:$kh!rg-dh5(ul&mym~ }suq,g5)q9595>>5Z0.eqb+ta'nf;"j gscp*wus{&i;#{?34?0a?P6(o{l%~k!hl1,q`*auiz$yy} c1-u5Z6Xign;<=>>2c9V4*aun'xm#jb?.sf,cwgt&{y"m?/w3\5Zgil9:;<<<m;T2,cw`)zo%l`= }d.eqev(u{}y$o=!y1^0\ekb789::>o5Z0.eqb+ta'nf;"j gscp*wus{&i;#{?P3^cm`567888i7X> gsd-vc)`d9$yh"i}ar,qwqu(k9%}=R:Paof34566:01^<"i}f/pe+bj7&{n$ko|.sqww*e6'jky~t`jt=2=6<=R8&myj#|i/fn3*wb(o{kx"}{s.a2+fguzpdnx1?1289V4*aun'xm#jb?.sf,cwgt&{y"m>/bcqv|hb|585>45Z0.eqb+ta'nf;"j gscp*wus{&i:#no}rxlfp959:o1^<"i}f/pe+bj7&{n$ko|.sqww*e6'ng~t#ib[1_-ch7)e88m7X> gsd-vc)`d9$yh"i}ar,qwqu(k8%laxv!glY2Y+aj{'gx>k5Z0.eqb+ta'nf;"j gscp*wus{&i:#jczx/en_7[)ody%a~<i;T2,cw`)zo%l`= }d.eqev(u{}y$o<!hmtz-ch]4U'mf#c|2g9V4*aun'xm#jb?.sf,cwgt&{y"m>/fov|+ajS=W%k`}!mr00?P6(o{l%~k!hl1,q`*auiz$yy} c0-u5969::1^<"i}f/pe+bj7&{n$ko|.sqww*e6';7=3<<;T2,cw`)zo%l`= }d.eqev(u{}y$o<!y1=0=66=R8&myj#|i/fn3*wb(o{kx"}{s.a2+s7;;7887X> gsd-vc)`d9$yh"i}ar,qwqu(k8%}=1:12c9V4*aun'xm#jb?.sf,cwgt&{y"m>/w3\4Zgil9:;<<<m;T2,cw`)zo%l`= }d.eqev(u{}y$o<!y1^3\ekb789::>o5Z0.eqb+ta'nf;"j gscp*wus{&i:#{?P2^cm`567888i7X> gsd-vc)`d9$yh"i}ar,qwqu(k8%}=R=Paof34566:k1^<"i}f/pe+bj7&{n$ko|.sqww*e6';T8Road12344473\:$kh!rg-dh5(ul&mym~ }suq,gjkw8;:0Y=!hrg,qb*ak8'xo#j|ns/pppv)dgdz:>45Z0.eqb+ta'nf;"j gscp*wus{&xjaRkbpu{\bgYn;91^<"i}f/pe+bj7&{n$ko|.sqww*tfeVof|ywPfc]j[jt789:8=6[?/fpe*w`(oe:%~i!hr`q-vvrt'{kfShctx]efZoXg{:;<=?>f:W3+bta&{l$ka>!re-qehYqiecoSkyit318Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkr5<2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkfex<<;;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw672<]9%l~k }f.eo4+tc'{zex!BcnwmpZeh}g~8>95Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu610>S7'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^alqkr0:=1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~by6=4:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmp<4>3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSnw30?0`?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWjs7<3Q}t3;8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXkp6:2?m4U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov\g|:66Vx>45Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu]`}949:j1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQly=0=[wr512_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkfexRmv<2<1g>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|Vir0>0Pru0:?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWjs783<l;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw[f;<7Uyx?74U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov\g|:26;i0Y=!hrg,qb*ak8'xo#~ats-Ngjsi|VidyczPcx>6:Zts:01^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQly=4=6f=R8&myj#|i/fn3*wb(zyd~"Clotlw[firf}Uhu181_sv1=>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|Vir0:0=c:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmpZe~4>4T~y<6;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw[f;078h7X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{_b{?<;Yu|;k0Y=!hrg,qb*ak8'xo#~ats-Ngjsi|VidyczPxnp?4;4f3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSua}<0<1e>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|Vrd~1<12`9V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYg{682?o4U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov\|jt;<78j7X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{_ymq8085i2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkfexRv`r=4=6d=R8&myj#|i/fn3*wb(zyd~"Clotlw[firf}Usc28>3c8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXpfx743<n;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw[}iu4049h6[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^zlv9?9W{~:j6[?/fpe*w`(oe:%~i!}povq+firf}6;2<h4U1-dvc(un&mg<#|k/srmpw)dg|d0<0>f:W3+bta&{l$ka>!re-qtkru'je~by2=>0d8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{<2<2b>S7'nxm"h gm2-va)uxg~y#naznu>7:4`<]9%l~k }f.eo4+tc'{zex!lotlw8086n2_;#j|i.sd,ci6)zm%y|cz}/bmvjq:168l0Y=!hrg,qb*ak8'xo#~ats-`kphs4>4:j6[?/fpe*w`(oe:%~i!}povq+firf}632<h4U1-dvc(un&mg<#|k/srmpw)dg|d040>e:W3+bta&{l$ka>!re-qtkru'je~byQ?1d9V4*aun'xm#jb?.sf,vuhsz&idyczP10g8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_33f?P6(o{l%~k!hl1,q`*twf}x$ob{at^12a>S7'nxm"h gm2-va)uxg~y#naznu]75`=R8&myj#|i/fn3*wb(zyd~"m`uov\14c<]9%l~k }f.eo4+tc'{zex!lotlw[37b3\:$kh!rg-dh5(ul&x{by| cnwmpZ16m2_;#j|i.sd,ci6)zm%y|cz}/bmvjqY?9l1^<"i}f/pe+bj7&{n$~}`{r.alqkrX1;80Y=!hrg,qb*ak8'xo#~ats-`kphsWm;7<3<=;T2,cw`)zo%l`= }d.psjqt(kfexRj><0<16>S7'nxm"h gm2-va)uxg~y#naznu]g5949:;1^<"i}f/pe+bj7&{n$~}`{r.alqkrXl8682?<4U1-dvc(un&mg<#|k/srmpw)dg|dSi?34?01?P6(o{l%~k!hl1,q`*twf}x$ob{at^f28085:2_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc95<5>?5Z0.eqb+ta'nf;"j rqlwv*eh}g~Th<28>308Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3?<;453\:$kh!rg-dh5(ul&x{by| cnwmpZb64049=6[?/fpe*w`(oe:%~i!}povq+firf}Uo=R>=1:W3+bta&{l$ka>!re-qtkru'je~byQk1^315>S7'nxm"h gm2-va)uxg~y#naznu]g5Z4592_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc9V99=6[?/fpe*w`(oe:%~i!}povq+firf}Uo=R:=1:W3+bta&{l$ka>!re-qtkru'je~byQk1^715>S7'nxm"h gm2-va)uxg~y#naznu]g5Z0592_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc9V=9=6[?/fpe*w`(oe:%~i!}povq+firf}Uo=R6=1:W3+bta&{l$ka>!re-qtkru'je~byQk1^;1=>S7'nxm"h gm2-sw)`hy%{~z|/b3,gdtuqgo0=0=9:W3+bta&{l$ka>!ws-dsdu)z~x#n? c`pq}kcs484956[?/fpe*w`(oe:%{!hw`q-svrt'j;$ol|}yogw878512_;#j|i.sd,ci6){%l{l}!wrvp+f7(khxyuck{<2<1b>S7'nxm"h gm2-sw)`hy%{~z|/b3,chs&ngP<P hm0,n57`<]9%l~k }f.eo4+qu'n}j#y|tr-`5*aj}q$laV?R.fop*hu5n2_;#j|i.sd,ci6){%l{l}!wrvp+f7(ods"jcT2\,div(j{;l0Y=!hrg,qb*ak8'}y#jyns/uppv)d9&mfyu hmZ1^*bkt&dy9j6[?/fpe*w`(oe:%{!hw`q-svrt'j;$k`{w.foX0X(`ez$f?=4U1-dvc(un&mg<#y}/fubw+qt|z%h="x><1<17>S7'nxm"h gm2-sw)`hy%{~z|/b3,r4:66;90Y=!hrg,qb*ak8'}y#jyns/uppv)d9&|:0?0=3:W3+bta&{l$ka>!ws-dsdu)z~x#n? v0>0:75<]9%l~k }f.eo4+qu'n}j#y|tr-`5*p64=49n6[?/fpe*w`(oe:%{!hw`q-svrt'j;$z<Q?_`lg45679;h0Y=!hrg,qb*ak8'}y#jyns/uppv)d9&|:S<Qnne234575j2_;#j|i.sd,ci6){%l{l}!wrvp+f7(~8U9Sl`k012357d<]9%l~k }f.eo4+qu'n}j#y|tr-`5*p6W:Ujbi>?0131f>S7'nxm"h gm2-sw)`hy%{~z|/b3,r4Y3Whdo<=>?13;8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l2.abvwim}6;2?74U1-dvc(un&mg<#y}/fubw+qt|z%h>"mnrs{maq:66;30Y=!hrg,qb*ak8'}y#jyns/uppv)d:&ij~waeu>1:7?<]9%l~k }f.eo4+qu'n}j#y|tr-`6*efz{seiy2<>3d8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l2.enq}(`eR:V"jc>.l31b>S7'nxm"h gm2-sw)`hy%{~z|/b0,chs&ngP=P hmr,nw7`<]9%l~k }f.eo4+qu'n}j#y|tr-`6*aj}q$laV<R.fop*hu5n2_;#j|i.sd,ci6){%l{l}!wrvp+f4(ods"jcT3\,div(j{;l0Y=!hrg,qb*ak8'}y#jyns/uppv)d:&mfyu hmZ6^*bkt&dy9?6[?/fpe*w`(oe:%{!hw`q-svrt'j8$z<2?>318Q5)`zo$yj"ic0/uq+bqf{'}xx~!l2.t28485;2_;#j|i.sd,ci6){%l{l}!wrvp+f4(~8692?=4U1-dvc(un&mg<#y}/fubw+qt|z%h>"x><2<17>S7'nxm"h gm2-sw)`hy%{~z|/b0,r4:36;h0Y=!hrg,qb*ak8'}y#jyns/uppv)d:&|:S=Qnne234575j2_;#j|i.sd,ci6){%l{l}!wrvp+f4(~8U:Sl`k012357d<]9%l~k }f.eo4+qu'n}j#y|tr-`6*p6W;Ujbi>?0131f>S7'nxm"h gm2-sw)`hy%{~z|/b0,r4Y4Whdo<=>?13`8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l2.t2[1Yffm:;<=?=0:W3+bta&{l$ka>!ws-dsdu)z~x#nabp003?P6(o{l%~k!hl1,tv*apiz$|y} cnos67><]9%l~k }f.eo4+qu'n}j#y|tr-qehYa}efTjoQf249V4*aun'xm#jb?.vp,crgt&~y"|nm^dvhiYn:j1^<"i}f/pe+bj7&~x$kzo|.vqww*tfeVl~`aQf_np34565l2_;#j|i.sd,ci6){%l{l}!wrvp+wgjWog`RgPos234574k2_;#j|i.sd,ci6){%l{im>.vf`a}r(EhnoSz|Pd`vb[firf}UbSljk0123555d3\:$kh!rg-dh5(pz&m|hn?!weaf|q)JimnT{Qkauc\gjsi|VcTmij?012266e<]9%l~k }f.eo4+qu'n}oo< xdbg{p*KflmU|~Rjnt`]`kphsW`Ujhi>?01377f=R8&myj#|i/fn3*rt(o~nh=#ykcdzw+HgclV}ySio{a^alqkrXaVkoh=>?0040f>S7'nxm"h gm2-sw)`mi:"zjleyv,IdbcW~xThlzn_bmvjqYnWhno<=>?22`8Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.Ob`aYpzVnjxlQlotlw[lYflm:;<=:<b:W3+bta&{l$ka>!ws-dsae6&~nhiuz M`fg[rtXlh~jSnaznu]j[dbc89:;:>l4U1-dvc(un&mg<#y}/fugg4(pljosx"Cnde]tvZbf|hUhcx`{_h]b`a67892?<6[?/fpe*w`(oe:%{!hwea2*rbdmq~$Aljk_vp\`drfWje~byQf_`fg4567Wjs7=3:?;T2,cw`)zo%l`= xr.et`f7)minty!Baef\swYci}kTob{at^k\eab789:Tot26>548Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.Ob`aYpzVnjxlQlotlw[lYflm:;<=Qly=;=74YT_8>97X> gsd-vc)`d9$|~"ixdb3-saebp}%FmijPws]geqgXkfexRgPaef3456Xkp6229?;5:W3+bta&{l$ka>!ws-dsae6&~nhiuz M`fg[rtXlh~jSnaznu]j[dbc89:;Snw39?]a`a2312_;#j|i.sd,ci6){%l{im>.vf`a}r(EhnoSz|Pd`vb[firf}UbSljk0123[}iu484:=RGAV^277>S7'nxm"h gm2-sw)`mi:"zjleyv,IdbcW~xThlzn_bmvjqYnWhno<=>?_ymq87869=90Y=!hrg,qb*ak8'}y#jykc0,t`fc|&GjhiQxr^fbpdYdg|dSdQnde2345Yg{682<?;3:W3+bta&{l$ka>!ws-dsae6&~nhiuz M`fg[rtXlh~jSnaznu]j[dbc89:;Sua}<5<2561<]9%l~k }f.eo4+qu'n}oo< xdbg{p*Kt}kUoekhPws]q`ZrjxVir0=0<7:W3+bta&{l$ka>!ws-dsae6&~nhiuz Mrwa[aoanV}ySjPtlr\g|:66:=0Y=!hrg,qb*ak8'}y#jykc0,t`fc|&GxyoQkigd\swYulV~f|Rmv<3<03>S7'nxm"h gm2-sw)`mi:"zjleyv,IvseWmcmjRy}_sf\phvXkp682>94U1-dvc(un&mg<#y}/fugg4(pljosx"C|uc]gmc`X{UyhRzbp^az8184?2_;#j|i.sd,ci6){%l{im>.vf`a}r(EziSigif^uq[wbX|dzTot2:>258Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.OpqgYcaolT{Q}d^vntZe~4?48;6[?/fpe*w`(oe:%{!hwea2*rbdmq~$A~{m_ekebZquW{nTx`~Pcx>4:61<]9%l~k }f.eo4+qu'n}oo< xdbg{p*Kt}kUoekhPws]q`ZrjxVir050<8:W3+bta&{l$ka>!ws-dsae6&~nhiuz Mrwa[aoanV}ySjPtlr\hpr;87937X> gsd-vc)`d9$|~"ixdb3-saebp}%FxlPdhde[rtXzmUa}Qcuu>2:6><]9%l~k }f.eo4+qu'n}oo< xdbg{p*Kt}kUoekhPws]q`ZrjxVf~x1<1399V4*aun'xm#jb?.vp,crbd9'}oohv{/LqvfZbnnoU|~R|k_uos[iss4:4846[?/fpe*w`(oe:%{!hwea2*rbdmq~$A~{m_ekebZquW{nTx`~Pltv?0;5?3\:$kh!rg-dh5(pz&m|hn?!weaf|q)J{|hThdhi_vp\vaYseyUgyy2:>2:8Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.OpqgYcaolT{Q}d^vntZjr|5<5?55Z0.eqb+ta'nf;"z| gvf`5+qcklr#@}zb^fjbcYpzVxoSyc_mww828402_;#j|i.sd,ci6){%l{im>.vf`a}r(EziSigif^uq[wbX|dzT`xz38?1;?P6(o{l%~k!hl1,tv*aplj;%{imjxu-NwpdXl`lmSz|Pre]wiuYk}}622>64U1-dvc(un&mg<#y}/fugg4(pljosx"C|uc]gmc`X{UyhRzbp^zlv969;11^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'Dy~nRjffg]tvZtcW}g{Sua}<0<0<>S7'nxm"h gm2-sw)`mi:"zjleyv,IvseWmcmjRy}_sf\phvXpfx7>3=7;T2,cw`)zo%l`= xr.et`f7)minty!Bst`\`l`aW~xT~iQ{mq]{kw:46:20Y=!hrg,qb*ak8'}y#jykc0,t`fc|&GxyoQkigd\swYulV~f|Rv`r=6=7==R8&myj#|i/fn3*rt(o~nh=#ykcdzw+HurjVnbjkQxr^pg[qkwWqey080<8:W3+bta&{l$ka>!ws-dsae6&~nhiuz Mrwa[aoanV}ySjPtlr\|jt;>7937X> gsd-vc)`d9$|~"ixdb3-saebp}%FxlPdhde[rtXzmUa}Qwos>4:6><]9%l~k }f.eo4+qu'n}oo< xdbg{p*Kt}kUoekhPws]q`ZrjxVrd~161399V4*aun'xm#jb?.vp,crbd9'}oohv{/LqvfZbnnoU|~R|k_uos[}iu4049j6[?/fpe*w`(oe:%{!hwea2*rbdmq~$hdhi_vp\vaYsey6;2?h4U1-dvc(un&mg<#y}/fugg4(pljosx"y}_ecweZeh}g~TeR>=f:W3+bta&{l$ka>!ws-dsae6&~nhiuz ws]geqgXkfexRgP1228Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.uq[agsiVidyczPi^336c=R8&myj#|i/fn3*rt(o~nh=#ykcdzw+rtXlh~jSnaznu]j[74a3\:$kh!rg-dh5(pz&m|hn?!weaf|q)pzVnjxlQlotlw[lY4:o1^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'~xThlzn_bmvjqYnW=8m7X> gsd-vc)`d9$|~"ixdb3-saebp}%|~Rjnt`]`kphsW`U>>k5Z0.eqb+ta'nf;"z| gvf`5+qcklr#z|Pd`vb[firf}UbS;<i;T2,cw`)zo%l`= xr.et`f7)minty!xr^fbpdYdg|dSdQ82g9V4*aun'xm#jb?.vp,crbd9'}oohv{/vp\`drfWje~byQf_90e?P6(o{l%~k!hl1,tv*aplj;%{imjxu-tvZbf|hUhcx`{_h]:7==R8&myj#|i/fn3*rt(o~nh=#ykcdzw+rtXlh~jSnaznu]j[dbc89:;0<0<8:W3+bta&{l$ka>!ws-dsae6&~nhiuz ws]geqgXkfexRgPaef3456;:7937X> gsd-vc)`d9$|~"ixdb3-saebp}%|~Rjnt`]`kphsW`Ujhi>?01>0:6><]9%l~k }f.eo4+qu'n}oo< xdbg{p*quWmkmRm`uov\mZgcl9:;<1:1399V4*aun'xm#jb?.vp,crbd9'}oohv{/vp\`drfWje~byQf_`fg45674<4856[?/fpe*w`(oe:%{!hwea2*rbdmq~${Qkauc\gjsi|VcTmij?012?1;7402_;#j|i.sd,ci6){%l{im>.vf`a}r({UomyoPcnwmpZoXimn;<=>36?1:?P6(o{l%~k!hl1,tv*aplj;%{imjxu-tvZbf|hUhcx`{_h]b`a67896=2<=7;T2,cw`)zo%l`= xr.et`f7)minty!xr^fbpdYdg|dSdQnde2345:06:30Y=!hrg,qb*ak8'}y#jykc0,t`fc|&}ySio{a^alqkrXaVkoh=>?0=5=56><]9%l~k }f.eo4+qu'n}oo< xdbg{p*quWmkmRm`uov\mZgcl9:;<161389V4*aun'xm#jb?.vp,crbd9'}oohv{/vp\`drfWje~byQf_`fg4567414:?55Z0.eqb+ta'nf;"z| gvf`5+qcklr#z|Pd`vb[firf}UbSljk01238<8382_;#j|i.sd,ci6){%l{im>.vf`a}r({UomyoPcnwmpZoXimn;<=>39?]PS5YT_9;o7X> gsd-vc)`d9$|~"|nm^uq[`hXa8887X> gsd-vc)`d9$|~"ynup,Ifirf}Uhcx`{259V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjq75<2_;#j|i.sd,ci6){%||cz}/LalqkrXkfex?<;;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw772<]9%l~k }f.eo4+qu'~zex!BcnwmpZeh}g~?>95Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu710>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|?8?7X> gsd-vc)`d9$|~"ynup,Ifirf}Uhcx`{7368Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkr?:=1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~by7=9:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmpZe~4949o6[?/fpe*w`(oe:%{!xpovq+Heh}g~Tob{at^az858Xz}827X> gsd-vc)`d9$|~"ynup,Ifirf}Uhcx`{_b{?5;4d3\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|dSnw31?]qp7?<]9%l~k }f.eo4+qu'~zex!BcnwmpZeh}g~Tot2=>3a8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXkp692R|{289V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqYdq595>n5Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu]`}959W{~956[?/fpe*w`(oe:%{!xpovq+Heh}g~Tob{at^az8185k2_;#j|i.sd,ci6){%||cz}/LalqkrXkfexRmv<5<\vq4>3\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|dSnw35?0`?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs793Q}t3;8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXkp6=2?m4U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov\g|:16Vx>45Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu]`}919:j1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQly=5=[wr512_;#j|i.sd,ci6){%||cz}/LalqkrXkfexRmv<9<1g>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|Vir050Pru0b?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWqey0=0=a:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmpZ~hz5;5>l5Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu]{kw:56;k0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPxnp?7;4f3\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|dSua}<5<1e>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|Vrd~1;12`9V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqYg{6=2?o4U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov\|jt;?78j7X> gsd-vc)`d9$|~"ynup,Ifirf}Uhcx`{_ymq8=85i2_;#j|i.sd,ci6){%||cz}/LalqkrXkfexRv`r=;=6a=R8&myj#|i/fn3*rt(yd~"Clotlw[firf}Usc26>^pw5c=R8&myj#|i/fn3*rt(yd~"m`uov?4;7a3\:$kh!rg-dh5(pz&}{by| cnwmp9799o1^<"i}f/pe+bj7&~x${}`{r.alqkr;:7;m7X> gsd-vc)`d9$|~"ynup,gjsi|595=k5Z0.eqb+ta'nf;"z| wqlwv*eh}g~783?i;T2,cw`)zo%l`= xr.usjqt(kfex1;11g9V4*aun'xm#jb?.vp,suhsz&idycz36?3e?P6(o{l%~k!hl1,tv*qwf}x$ob{at=5=5c=R8&myj#|i/fn3*rt(yd~"m`uov?<;7a3\:$kh!rg-dh5(pz&}{by| cnwmp9?99l1^<"i}f/pe+bj7&~x${}`{r.alqkrX88o0Y=!hrg,qb*ak8'}y#z~ats-`kphsW8;n7X> gsd-vc)`d9$|~"ynup,gjsi|V8:i6[?/fpe*w`(oe:%{!xpovq+firf}U8=h5Z0.eqb+ta'nf;"z| wqlwv*eh}g~T8<k4U1-dvc(un&mg<#y}/vrmpw)dg|dS8?j;T2,cw`)zo%l`= xr.usjqt(kfexR8>e:W3+bta&{l$ka>!ws-ttkru'je~byQ81d9V4*aun'xm#jb?.vp,suhsz&idyczP80g8Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_801?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f28585:2_;#j|i.sd,ci6){%||cz}/bmvjqYc95;5>?5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th<2=>308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3?7;453\:$kh!rg-dh5(pz&}{by| cnwmpZb64=49>6[?/fpe*w`(oe:%{!xpovq+firf}Uo=1;1239V4*aun'xm#jb?.vp,suhsz&idyczPd0>5:74<]9%l~k }f.eo4+qu'~zex!lotlw[a7;?7897X> gsd-vc)`d9$|~"ynup,gjsi|Vn:050=2:W3+bta&{l$ka>!ws-ttkru'je~byQk1=;=64=R8&myj#|i/fn3*rt(yd~"m`uov\`4Y7:81^<"i}f/pe+bj7&~x${}`{r.alqkrXl8U:><5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th<Q=209V4*aun'xm#jb?.vp,suhsz&idyczPd0]064=R8&myj#|i/fn3*rt(yd~"m`uov\`4Y3:81^<"i}f/pe+bj7&~x${}`{r.alqkrXl8U>><5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th<Q9209V4*aun'xm#jb?.vp,suhsz&idyczPd0]464=R8&myj#|i/fn3*rt(yd~"m`uov\`4Y?:81^<"i}f/pe+bj7&~x${}`{r.alqkrXl8U2>?5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th?2?>308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e0?5;453\:$kh!rg-dh5(pz&}{by| cnwmpZb54;49>6[?/fpe*w`(oe:%{!xpovq+firf}Uo>1=1239V4*aun'xm#jb?.vp,suhsz&idyczPd3>7:74<]9%l~k }f.eo4+qu'~zex!lotlw[a4;=7897X> gsd-vc)`d9$|~"ynup,gjsi|Vn90;0=2:W3+bta&{l$ka>!ws-ttkru'je~byQk2=5=67=R8&myj#|i/fn3*rt(yd~"m`uov\`7:?6;80Y=!hrg,qb*ak8'}y#z~ats-`kphsWm8753<>;T2,cw`)zo%l`= xr.usjqt(kfexRj=_102?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f1[4463\:$kh!rg-dh5(pz&}{by| cnwmpZb5W;8:7X> gsd-vc)`d9$|~"ynup,gjsi|Vn9S><>;T2,cw`)zo%l`= xr.usjqt(kfexRj=_502?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f1[0463\:$kh!rg-dh5(pz&}{by| cnwmpZb5W?8:7X> gsd-vc)`d9$|~"ynup,gjsi|Vn9S:<>;T2,cw`)zo%l`= xr.usjqt(kfexRj=_902?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f1[<713\:$kh!rg-nah)cg|~TeR>>6:W3+bta&{l$ahc dnww[lY69>1^<"i}f/pe+hcj'me~xRgP1134?P6(o{l%~k!bel-gkprXaV;:=:5Z0.eqb+ta'dof#iazt^k\57703\:$kh!rg-nah)cg|~TeR?<169V4*aun'xm#`kb/emvpZoX9=;<7X> gsd-vc)jmd%ocxzPi^3652=R8&myj#|i/lgn+air|VcT=;?8;T2,cw`)zo%fi`!kotv\mZ709?1^<"i}f/pe+hcj'me~xRgP2048Q5)`zo$yj"cjm.flqqYnW:;=7X> gsd-vc)jmd%ocxzPi^622>S7'nxm"h mdo,`jssW`U>=;5Z0.eqb+ta'dof#iazt^k\240<]9%l~k }f.ofi*bh}}UbS:?9;T2,cw`)zo%fi`!kotv\mZ>6>2_;#j|i.sd,i`k(lfSdQ6189V4*aun'xm#`kb/emvpZkbe5:5=l5Z0.eqb+ta'dof#iazt^ofi97768k0Y=!hrg,qb*kbe&ndyyQbel>25;7f3\:$kh!rg-nah)cg|~Tahc313<2e>S7'nxm"h mdo,`jssWdof0<=11`9V4*aun'xm#`kb/emvpZkbe5;?2<o4U1-dvc(un&gna"j`uu]nah:6=7;j7X> gsd-vc)jmd%ocxzPmdo?5386i2_;#j|i.sd,i`k(lfS`kb<05=5<=R8&myj#|i/lgn+air|Vgna1?1189V4*aun'xm#`kb/emvpZkbe585=45Z0.eqb+ta'dof#iazt^ofi959901^<"i}f/pe+hcj'me~xRcjm=6=5<=R8&myj#|i/lgn+air|Vgna1;1189V4*aun'xm#`kb/emvpZkbe5<5=45Z0.eqb+ta'dof#iazt^ofi919901^<"i}f/pe+hcj'me~xRcjm=:=5<=R8&myj#|i/lgn+air|Vgna1716d9V4*aun'xm#`kb/f`n*bdjo'miajo!nfg`g+djo&hggRcjm^efj`tf|fx$zlbfd/appw)uidfdc}U?]/pbi+t(~;Uecd`ft/pbi*bw91r:4#|nm0`8Q5)`zo$yj"cjm.vntZtfeVxoSh`>c:W3+bta&{l$ahc tlr\vdkXzmUnb<?<;T2,cw`)zo%ym`Q}d^gm52=R8&myj#|i/scn[wc`g|~Tic?<;T2,cw`)zo%ym`Qxr^gm5a=R8&myj#|i/sqwfim(zmUyyQnssgd65=R8&myj#|i/sqwfim(zmUyyQnssgd[a7582_;#j|i.sd,vvredb%yhR||t^cpv`aXl;;h7X> gsd-vc)u{}hgg"|k_sqw[fijj8n0Y=!hrg,qb*tt|kf`#jPrrv\gjke98o0Y=!hrg,qb*tt|kf`#jPrrv\v`a;87;n7X> gsd-vc)u{}hgg"|k_sqw[wc`484:i6[?/fpe*w`(zz~i`f!}d^pppZtbo585=i5Z0.eqb+ta'{ynae re]qwqYumnU;=i5Z0.eqb+ta'{ynae re]qwqYumnU:=i5Z0.eqb+ta'{ynae re]qwqYumnU9=i5Z0.eqb+ta'{ynae ws]qwqYf{{ol>=5Z0.eqb+ta'{ynae ws]qwqYf{{olSi?=0:W3+bta&{l$~~zmlj-tvZtt|Vkx~hiPd33`?P6(o{l%~k!}su`oo*quW{ySnabb0f8Q5)`zo$yj"||tcnh+rtXzz~Tobcm10g8Q5)`zo$yj"||tcnh+rtXzz~T~hi30?3f?P6(o{l%~k!}su`oo*quW{ySkh<0<2`>S7'nxm"h rrvahn)pzVxxxR|jg^22`>S7'nxm"h rrvahn)pzVxxxR|jg^3b?PUBZVKGEL]l;TQFVZPN[@HGI>5YCB;8RLCPW]S[I>5XE@18S@De3^XBXHQIISQWg>QUA]OTABJJ_@a8SWOSMVGDHHQM1e9[MIOIP$RON->!1!QWQG&7&8*J_NGF5:ZLVF_13QY_@DL8;YQW[BHC?2RXXRXLCc9[[FIUMVCEJB84Xe`\Ma`<PmbT\gbVdppmjh682RoaRCnjnpUawungg;;7Ujb_LkmkwPbzzcdbn5nllmppZcjx}si7lbborv\bpjk>2hjof{d:`bgnswWdkygh|<;bnh`>bf|hUhcx`{(1+g?agsiVidycz'1(g8`drfWje~by&>0(f8`drfWje~by&=)e9geqgXkfex%=&d:fbpdYdg|d$9'k;ecweZeh}g~#9$j4d`vb[firf}"=%i5kauc\gjsi|!="h6jnt`]`kphs 1#o7io{a^alqkr/1 n0hlzn_bmvjq:768:0hlzn_bmvjq:683:5;6jmiugqv3=cag";%;5kio*2-2=cag":<$94dhl+54/03mce$<<&7:fjj-74!>1oec&>4(58`lh/9<#<7iga(04*3>bnf!;<%;5kio*1-3=cag"8%;5kio*7-3=cag">%;5kio*5-3=cag"<%;5kio*;-3=cag"2%;5kio>3:2=cag6:<394dhl?54803mce0<<17:fjj9746>1oec2>4?58`lh;9<4<7iga<04==>bnf5;<6=08;ekm8419>2nbb1?16:fjj949>2nbb1=16:fjj929>2nbb1;16:fjj909>2nbb1916:fjj9>9>2nbb1717:flqq.7!>1ocxz'1(:8`jss 8:"46j`uu*25,><lf$<<&8:flqq.6; 20hb{{(06*<>bh}}":9$64dnww,40.02ndyy&>7(58`jss ;#<7iazt)1*3>bh}}"?%:5kotv+1,1<lf$;'8;emvp-1.?2ndyy&7)69gkpr/1 =0hb{{<1<;?air|5;;255kotv?548?3me~x1?=>99gkpr;9:437iazt=37:==cg|~7=807;emvp9716h1ocxz31683:==cg|~7=:08;emvp979?2ndyy2=>69gkpr;;7=0hb{{<5<4?air|5?5;6j`uu>5:2=cg|~7;394dnww8=803me~x1718:ggmc4iom?0i`~{y208bl`hWnoeio{os]u0Z5+(Qcgecv/CNPF$Bcim{kc.>0/3-46733ocmcRvcny]2O}7?W;igg><4fhdl[}jipV;@t<6P2bnh(coagVmnbh|ntnp\r1Y4$GEEI!@@ND1`=>`nnfUs`cvP1Jz2<Z4ddb&mekaPgdlfvdrhzV|?S>"tc^jbwZoi|Vigg0>#c^jbwZuu{}7; nQ}d^dqat;6$jUcm~Q}d^fbpdYdg|d1<"l_ekm[roc|a7:4!mPh`q\swYci}kTob{at<3/gZ`rdeUm`li|_sqw[sgk58&hSdcldofjqgsafdTxt~j=3.`[pubWlgiiijjd^pfc86+kV}ySk|jq<3/gZstmVndyyQ}su?2(fYrfmoyjaax_mmt95*dWakxSbxjrgnls86+kVzyiaand^nbp`hdq4:'oRj`uu]tmaro582'oRc|gnl\rdj:9%iT~iQkeqvk9465<%iTdl}Puoffvcjh4:'oRfns^coijusWog`0>#c^jbwZtt|4;'oRjnt`]`kphsW~coxe3>1-a\lduX{Ujof3?,b]vw`Ybkj7; nQlololjZekgja6<!mPws]bgnYkg~7; nQ}d^rmpwYpam~c1<>#c^wpaZ`pn}UomyoPcnwmp87+kVbjRocmnqw[`kw|p7; nQ}d^fbpdYdg|dSzgkti?25)eXgoyjaax_mmt95*dW~xT|cz}_vkgpm;68%iT|ah_dosp|Ysqyo6<!mPws]geqgXkfexRyfduj>54*dWyxn`bok_sgdw87+kVndyyQ}su]uei;7$jUcm~Qkauc\gjsi|4:'oR~}of]eqijX|axneQaefcwaZpfd4;;>?"l_vp\``vs`4;;>9"l_qplcZcjx}sTxe|jsi]mabgsmV|j`0;#c^rqkbYbey~rSyf}erj\evubz}U}ma3;,b]kevYqieco1="l_qplcZ`rdeUdk|h^cpw`tsWkg1<>=3-aliuiimg~Tblcj=gkekZ~kfqU:Gu?7_3aoo)eX~hfbhRb`w<2/gZvuadUmekaPtxrf94m91&hS}|`g^dvhiYsqyo6<!mPmdolv|Ysqyo6=!s=e:djbjYdgrT=Fv>8^0`hnYaaoeTkh`jr`vlvZp3W:UsyQ>4:dvhi1<ag~Toae7;oe`fpokl11dzh|ilnub?uthoVof|yw>4:rqkbYbey~rSyf}erj+4,733yxdkRkbpu{\pmtb{a":%<:4psmd[`kw|pUdk|h)0*51=wzfmTi`~{y^vkv`uo :#:86~}of]fiur~W}byi~f'4(37?uthoVof|ywPtipfwm.2!8>0|ah_dosp|Ys`{oxd%8&159svjaXmdzuRzgrdqk,2/6<2zycjQjmqvz[qnumzb#4$?;;qplcZcjx}sTxe|jsi*:-40<x{elShctx]wlwct`531<3?m;qplcZcjx}sTxe|jsi]bwvcu|!:"=o5rne\ahvsqV~c~h}g_`qpawr/9 ;i7}|`g^gntqX|axneQnsrgqp-4.9k1{~biPelrw}ZrozlycSl}|esv+7,7e3yxdkRkbpu{\pmtb{aUj~k}t)6*5g=wzfmTi`~{y^vkv`uoWhyxiz'5(3a?uthoVof|ywPtipfwmYf{zoyx%8&1c9svjaXmdzuRzgrdqk[dutm{~#;$?m;qplcZcjx}sTxe|jsi]bwvcu|!2"=o5rne\ahvsqV~c~h}g_`qpawr/1 ;o7}|`g^gntqX|axneQnsrgqp9?=87;i7}|`g^gntqX|axneQaefcwa-6.9k1{~biPelrw}ZrozlycSckhaug+5,7e3yxdkRkbpu{\pmtb{aUeijo{e)0*5g=wzfmTi`~{y^vkv`uoWgolmyk'3(3a?uthoVof|ywPtipfwmYimnki%:&1c9svjaXmdzuRzgrdqk[kc`i}o#9$?m;qplcZcjx}sTxe|jsi]mabgsm!<"=o5rne\ahvsqV~c~h}g_ogdeqc/? ;i7}|`g^gntqX|axneQaefcwa->.9k1{~biPelrw}ZrozlycSckhaug+=,7c3yxdkRkbpu{\pmtb{aUeijo{e=;94;?<x{elSk{cl018twi`Wog`Rzgrdqk,5/6;2zycjQiumn\pmtb{a":%<=4psmd[cskdV~c~h}g(3+27>vugnUmyabPtipfwm.4!890|ah_gwohZrozlyc$9'>3:rqkbYa}efTxe|jsi*6-45<x{elSk{cl^vkv`uo ?#:?6~}of]eqijX|axne&8)018twi`Wog`Rzgrdqk,=/6;2zycjQiumn\pmtb{a"2%<;4psmd[cskdV~c~h}g<883:4g<x{elSk{cl^vkv`uoWhyxiz'0(3b?uthoVl~`aQ{hsgplZgt{lx$<'>a:rqkbYa}efTxe|jsi]bwvcu|!8"=l5rne\bpjkW}byi~fParqfvq.4!8k0|ah_gwohZrozlycSl}|esv+0,7f3yxdkRhzlm]wlwct`Vkxh|{(4+2e>vugnUmyabPtipfwmYf{zoyx%8&1`9svjaXn|fgSyf}erj\evubz}"<%<o4psmd[cskdV~c~h}g_`qpawr/0 ;j7}|`g^dvhiYs`{oxdRo|sdpw,</6k2zycjQiumn\pmtb{aUj~k}t=;94;7f3yxdkRhzlm]wlwct`Vdnklzj(1+2e>vugnUmyabPtipfwmYimnki%?&1`9svjaXn|fgSyf}erj\j`af|l"9%<o4psmd[cskdV~c~h}g_ogdeqc/; ;j7}|`g^dvhiYs`{oxdR`jg`vf,1/6i2zycjQiumn\pmtb{aUeijo{e)7*5d=wzfmTjxbc_ujqavnXflmjxh&9)0c8twi`Wog`Rzgrdqk[kc`i}o#;$?n;qplcZ`rdeUdk|h^lfcdrb 1#:m6~}of]eqijX|axneQaefcwa-?.9j1{~biPftno[qnumzbTbhintd>:>5813{nToae>0:pg[agsiVidycz'0(33?wbXlh~jSnaznu*2-47<zmUomyoPcnwmp-77!8:0~iQkauc\gjsi|!8"==5}d^fbpdYdg|d$>'>0:pg[agsiVidycz'4(33?wbXlh~jSnaznu*6-46<zmUomyoPcnwmp-0.991yhRjnt`]`kphs >#:<6|k_ecweZeh}g~#4$??;sf\`drfWje~by&6)028vaYci}kTob{at=2=56=ulVnjxlQlotlw846=87;:7jPd`vb[firf}6:<3??;sf\`drfWje~by2>>028vaYci}kTob{at=0=55=ulVnjxlQlotlw868682xoSio{a^alqkr;<7;;7jPd`vb[firf}6>2<>4re]geqgXkfex181119q`Zbf|hUhcx`{<6<24>tcWmkmRm`uov?<;773{nThlzn_bmvjq:>6<1yhRka6:pg[wus;2xxx:5|bhvfvw2<{{y86z}ud;8qkbbzofd{85yamkg2>quWhi`:6y}_bnh55=pzVnjxlQlotlw,5/682}ySio{a^alqkr/9 ;:7z|Pd`vb[firf}":<$??;vp\`drfWje~by&=)028swYci}kTob{at)1*55=pzVnjxlQlotlw,1/682}ySio{a^alqkr/= ;;7z|Pd`vb[firf}"=%<>4ws]geqgXkfex%9&119tvZbf|hUhcx`{(9+24>quWmkmRm`uov+=,773~xThlzn_bmvjq:76890{Qkauc\gjsi|5;;6=0>1:uq[agsiVidycz311<24>quWmkmRm`uov?5;773~xThlzn_bmvjq:568:0{Qkauc\gjsi|595==5xr^fbpdYdg|d090>0:uq[agsiVidycz35?33?rtXlh~jSnaznu>5:46<{UomyoPcnwmp919991|~Rjnt`]`kphs414:<6y}_ecweZeh}g~753;4ws]fj3=pzVxxxpNOpeg2?EF93L187?tS4g90ad=03;8>ij>2;1;37?|f==h6<5a46f90>"3?h0?;95rS4a90ad=03;8>ij>2;1;37?<[8;=69k;:18277bc9;084:<n;R7`>1c3290:??jk1380<24e3m>oi7>51;3xW0c=<mh147?<2ef26?5??;30zY?75;295?7=9l>p_8k54e`9<?74:mn:>7=773;8 10b28;<7[:8b;0xq444281~=?:50:'52b=:;1i8ik50;62>6<39rB?:n5U528745=9;0:57?7:|&2<d<3ll1/8:754ef8m0252900c8:j:18'52`==<20b<9j:198k031290/=:h554:8j41b2810c8;::18'52`==<20b<9j:398k033290/=:h554:8j41b2:10c8;<:18'52`==<20b<9j:598k035290/=:h554:8j41b2<10c8;>:18'52`==<20b<9j:798k037290/=:h554:8j41b2>10c8:i:18'52`==<20b<9j:998k02c290/=:h554:8j41b2010c8:l:18'52`==<20b<9j:`98k04c290/=:h55258j41b2910c8=::18'52`==:=0b<9j:098k053290/=:h55258j41b2;10c8=<:18'52`==:=0b<9j:298k055290/=:h55258j41b2=10c8=>:18'52`==:=0b<9j:498k057290/=:h55258j41b2?10c8<i:18'52`==:=0b<9j:698k04b290/=:h55258j41b2110c8<l:18'52`==:=0b<9j:898k04e290/=:h55258j41b2h10e88<:188k1c52900c9jl:188m02e2900e8:;:188k1da290/=:h54e28j41b2910c9lj:18'52`=<m:0b<9j:098k1dc290/=:h54e28j41b2;10c9ll:18'52`=<m:0b<9j:298k1de290/=:h54e28j41b2=10c9ln:18'52`=<m:0b<9j:498k1d>290/=:h54e28j41b2?10c9l7:18'52`=<m:0b<9j:698k1e0290/=:h54e28j41b2110c9m9:18'52`=<m:0b<9j:898k1e2290/=:h54e28j41b2h10c9m;:18'52`=<m:0b<9j:c98k1e4290/=:h54e28j41b2j10c9m=:18'52`=<m:0b<9j:e98k1e6290/=:h54e28j41b2l10c9m?:18'52`=<m:0b<9j:g98k1d0290/=:h54e28j41b28:07b:m6;29 41a2=n;7c?8e;32?>o31h0;6)?8f;6bf>h6?l0;76g;9883>!70n3>jn6`>7d82?>o3110;6)?8f;6bf>h6?l0976g;9683>!70n3>jn6`>7d80?>o31?0;6)?8f;6bf>h6?l0?76g;9483>!70n3>jn6`>7d86?>o31=0;6)?8f;6bf>h6?l0=76g;9283>!70n3>jn6`>7d84?>o3i;0;6)?8f;6bf>h6?l0376g;a083>!70n3>jn6`>7d8:?>o3i90;6)?8f;6bf>h6?l0j76g;9g83>!70n3>jn6`>7d8a?>o31l0;6)?8f;6bf>h6?l0h76g;9e83>!70n3>jn6`>7d8g?>o31j0;6)?8f;6bf>h6?l0n76g;9c83>!70n3>jn6`>7d8e?>o31;0;6)?8f;6bf>h6?l0:<65f48394?"6?o0?mo5a16g954=<a<8j6=44b54g>5<6290;wE:9c:&2<d<3>m1d=:m50;9~ff7=83;1<7>tH54`?!7?i3i:7bm?:188yg35290257?m6;3f0~N3>j1Q9>4>6za956<6:3;;6<?5e;3:>g<603l1h7?>:0195<<6:3i1=54>0;d9a?b=j3w/=5o54d38 4742kl0(8954ed8 0b=<l:0(<98:05a?l33;3:17b;?8;29?l33>3:17b:8e;29?j3313:17d:71;29?l2aj3:1(<9i:5d`?k70m3:07d:ia;29 41a2=lh7c?8e;38?l2a13:1(<9i:5d`?k70m3807d:i8;29 41a2=lh7c?8e;18?l2a?3:1(<9i:5d`?k70m3>07d:i6;29 41a2=lh7c?8e;78?l2a=3:1(<9i:5d`?k70m3<07d:i4;29 41a2=lh7c?8e;58?l2a;3:1(<9i:5d`?k70m3207d:i2;29 41a2=lh7c?8e;;8?l33:3:17b:j5;29?j33m3:1(<9i:47;?k70m3:07b;:6;29 41a2<?37c?8e;38?j32=3:1(<9i:47;?k70m3807b;:4;29 41a2<?37c?8e;18?j32;3:1(<9i:47;?k70m3>07b;:2;29 41a2<?37c?8e;78?j3293:1(<9i:47;?k70m3<07b;:0;29 41a2<?37c?8e;58?j33n3:1(<9i:47;?k70m3207b;;d;29 41a2<?37c?8e;;8?j33k3:1(<9i:47;?k70m3k07b;=d;29 41a2<9<7c?8e;28?j34=3:1(<9i:414?k70m3;07b;<4;29 41a2<9<7c?8e;08?j34;3:1(<9i:414?k70m3907b;<2;29 41a2<9<7c?8e;68?j3493:1(<9i:414?k70m3?07b;<0;29 41a2<9<7c?8e;48?j35n3:1(<9i:414?k70m3=07b;=e;29 41a2<9<7c?8e;:8?j35k3:1(<9i:414?k70m3307b;=b;29 41a2<9<7c?8e;c8?l3503:1(<9i:40:?k70m3:07d;=7;29 41a2<827c?8e;38?l35>3:1(<9i:40:?k70m3807d;=5;29 41a2<827c?8e;18?l35<3:1(<9i:40:?k70m3>07d;=3;29 41a2<827c?8e;78?l35:3:1(<9i:40:?k70m3<07d;=1;29 41a2<827c?8e;58?l3583:1(<9i:40:?k70m3207d;>f;29 41a2<827c?8e;;8?l31;3:17b:75;29 41a2=2m7c?8e;28?j2?l3:1(<9i:5:e?k70m3;07b:7c;29 41a2=2m7c?8e;08?j2?j3:1(<9i:5:e?k70m3907b:7a;29 41a2=2m7c?8e;68?j2?13:1(<9i:5:e?k70m3?07b:78;29 41a2=2m7c?8e;48?j2??3:1(<9i:5:e?k70m3=07b:76;29 41a2=2m7c?8e;:8?j2?<3:1(<9i:5:e?k70m3307b:73;29 41a2=2m7c?8e;c8?j2b:3:17b:kc;29?l36:3:1(<9i:430?k70m3:07d;>1;29 41a2<;87c?8e;38?l3683:1(<9i:430?k70m3807d;?f;29 41a2<;87c?8e;18?l37m3:1(<9i:430?k70m3>07d;?d;29 41a2<;87c?8e;78?l37k3:1(<9i:430?k70m3<07d;?b;29 41a2<;87c?8e;58?l37i3:1(<9i:430?k70m3207d;?9;29 41a2<;87c?8e;;8?l33j3:17d:j3;29?l2?:3:17d;94;29?j33=3:17b;;a;29?j20n3:17b;;8;29?l33<3:17b:mf;29 41a2=n;7c?8e;28?j2em3:1(<9i:5f3?k70m3;07b:md;29 41a2=n;7c?8e;08?j2ek3:1(<9i:5f3?k70m3907b:mb;29 41a2=n;7c?8e;68?j2ei3:1(<9i:5f3?k70m3?07b:m9;29 41a2=n;7c?8e;48?j2e03:1(<9i:5f3?k70m3=07b:l7;29 41a2=n;7c?8e;:8?j2d>3:1(<9i:5f3?k70m3307b:l5;29 41a2=n;7c?8e;c8?j2d<3:1(<9i:5f3?k70m3h07b:l3;29 41a2=n;7c?8e;a8?j2d:3:1(<9i:5f3?k70m3n07b:l1;29 41a2=n;7c?8e;g8?j2d83:1(<9i:5f3?k70m3l07b:m7;29 41a2=n;7c?8e;33?>i3j?0;6)?8f;6g4>h6?l0:=65f4g294?"6?o0?j<5a16g94>=n<ll1<7*>7g87b4=i9>o1=65f4dg94?"6?o0?j<5a16g96>=n<ln1<7*>7g87b4=i9>o1?65f4da94?"6?o0?j<5a16g90>=n<lh1<7*>7g87b4=i9>o1965f4dc94?"6?o0?j<5a16g92>=n<l31<7*>7g87b4=i9>o1;65f4d:94?"6?o0?j<5a16g9<>=n<l=1<7*>7g87b4=i9>o1565f48c94?"6?o0?mo5a16g94>=n<031<7*>7g87eg=i9>o1=65f48:94?"6?o0?mo5a16g96>=n<0=1<7*>7g87eg=i9>o1?65f48494?"6?o0?mo5a16g90>=n<0?1<7*>7g87eg=i9>o1965f48694?"6?o0?mo5a16g92>=n<091<7*>7g87eg=i9>o1;65f4`094?"6?o0?mo5a16g9<>=n<h;1<7*>7g87eg=i9>o1565f4`294?"6?o0?mo5a16g9e>=n<0l1<7*>7g87eg=i9>o1n65f48g94?"6?o0?mo5a16g9g>=n<0n1<7*>7g87eg=i9>o1h65f48a94?"6?o0?mo5a16g9a>=n<0h1<7*>7g87eg=i9>o1j65f48094?"6?o0?mo5a16g955=<a=3:6=4+16d90dd<f8=n6<?4;h6;4?6=3`?:h7>5$05e>07b3g;<i7>4;h72g?6=,8=m68?j;o34a?7<3`?:n7>5$05e>07b3g;<i7<4;h72e?6=,8=m68?j;o34a?5<3`?:57>5$05e>07b3g;<i7:4;h72<?6=,8=m68?j;o34a?3<3`?:;7>5$05e>07b3g;<i784;h722?6=,8=m68?j;o34a?1<3`?:97>5$05e>07b3g;<i764;h720?6=,8=m68?j;o34a??<3`?;:7>5$05e>0603g;<i7>4;h731?6=,8=m68>8;o34a?7<3`?;87>5$05e>0603g;<i7<4;h737?6=,8=m68>8;o34a?5<3`?;>7>5$05e>0603g;<i7:4;h735?6=,8=m68>8;o34a?3<3`?;<7>5$05e>0603g;<i784;h6eb?6=,8=m68>8;o34a?1<3`>mi7>5$05e>0603g;<i764;h6e`?6=,8=m68>8;o34a??<3f>n:7>5;n6:4?6=3`?9m7>5;c643?6=93:1<v*>8`8`5>N3??1C8;m4ob294?=zj==36=4>:183!7?i3>=h6F;779K03e<g8=h6=44}c66=?6=;3:1<v*>8`8a<>N3??1C8;m4H428 4462<><7)mi:39j11<722c>j7>5;n3;5?6=3th?:94?:283>5}#91k1n55G4648L10d3A?;7)?=1;773>"dn380e8:50;9j1c<722e:4<4?::a00>=8391<7>t$0:b>g><@===7E:9c:J64>"6:80>8:5+cg81?l332900e8h50;9l5=7=831vn98=:186>5<7s-;3m7lk;I642>N3>j1C9=5+1339111<,jl1>6g:4;29?l312900e8h50;9j5=6=831d=5?50;9~f10429086=4?{%3;e?d?3A><:6F;6b9K15=#9;;19994$bd96>o2<3:17d;i:188k4>62900qo::7;291?6=8r.:4l4md:J733=O<?i0D8>4$002>0203-im6?5f5583>>o2>3:17d;i:188m4>72900c<6>:188yg2193:187>50z&2<d<ek2B?;;5G47a8 f`=:2c>87>5;h7e>5<<a82;6=44o0:2>5<<uk>=<7>54;294~"60h0io6F;779K03e<,jl1>6g:4;29?l3a2900e<6?:188k4>62900qo::f;290?6=8r.:4l4mc:J733=O<?i0(nh52:k60?6=3`?m6=44i0:3>5<<g82:6=44}c65e?6=<3:1<v*>8`8ag>N3??1C8;m4$bd96>o2<3:17d;i:188m4>72900c<6>:188yg2113:187>50z&2<d<ek2B?;;5G47a8 f`=:2c>87>5;h7e>5<<a82;6=44o0:2>5<<uk9;>7>54;294~"60h0io6F;779K03e<,jl1;6g:4;29?l3a2900e<6?:188k4>62900qo<6e;291?6=8r.:4l4mb:J733=O<?i0(nh52:k60?6=3`?i6=44i4d94?=n91:1<75`19394?=zj;3m6=4::183!7?i3hi7E:86:J72f=#ko097d;;:188m0d=831b9k4?::k2<5<722e:4<4?::a6d7=83?1<7>t$0:b>gd<@===7E:9c:&`b?4<a<>1<75f5c83>>o2n3:17d?70;29?j7?93:17pl=a383>0<729q/=5o5bc9K020<@=<h7)mi:39j11<722c>n7>5;h7e>5<<a82;6=44o0:2>5<<uk8j?7>55;294~"60h0in6F;779K03e<,jl1>6g:4;29?l3e2900e8h50;9j5=6=831d=5?50;9~f7g3290>6=4?{%3;e?de3A><:6F;6b9'gc<53`??6=44i4`94?=n=o0;66g>8183>>i6080;66sm2`794?3=83:p(<6n:c`8L1113A>=o6*lf;08m02=831b9o4?::k6b?6=3`;3<7>5;n3;5?6=3th9m;4?:483>5}#91k1no5G4648L10d3-im6?5f5583>>o2j3:17d;i:188m4>72900c<6>:188yg4f?3:197>50z&2<d<ej2B?;;5G47a8 f`=:2c>87>5;h7a>5<<a<l1<75f19294?=h91;1<75rb3c;>5<2290;w)?7a;`a?M20>2B?:n5+cg81?l332900e8l50;9j1c<722c:4=4?::m2<4<722wi>l>50;794?6|,82j6ol4H555?M21k2.hj7<4i4694?=n=k0;66g:f;29?l7?83:17b?71;29?xd4?l0;694?:1y'5=g=jj1C8:84H54`?!ea2;1b994?::k6b?6=3`;3<7>5;n3;5?6=3th8;i4?:583>5}#91k1nn5G4648L10d3-im6?5f5583>>o2n3:17d?70;29?j7?93:17pl<b183>1<729q/=5o5b89K020<@=<h7)mi:39j11<722c>n7>5;h7e>5<<g82:6=44}c1a5?6=<3:1<v*>8`8a=>N3??1C8;m4$bd96>o2<3:17d;m:188m0`=831d=5?50;9~f6d4290?6=4?{%3;e?d>3A><:6F;6b9'gc<53`??6=44i4`94?=n=o0;66a>8083>>{e;k>1<7:50;2x 4>f2k30D999;I65g>"dn380e8:50;9j1g<722c>j7>5;n3;5?6=3th8n84?:583>5}#91k1n45G4648L10d3-im6?5f5583>>o2j3:17d;i:188k4>62900qo=m6;290?6=8r.:4l4m9:J733=O<?i0(nh52:k60?6=3`?i6=44i4d94?=h91;1<75rb2`4>5<3290;w)?7a;`:?M20>2B?:n5+cg81?l332900e8l50;9j1c<722e:4<4?::a7g>=83>1<7>t$0:b>g?<@===7E:9c:&`b?4<a<>1<75f5c83>>o2n3:17b?71;29?xd4j00;694?:1y'5=g=j01C8:84H54`?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk9im7>54;294~"60h0i56F;779K03e<,jl1>6g:4;29?l3e2900e8h50;9l5=7=831vn>l=:187>5<7s-;3m7l6;I642>N3>j1/ok4=;h77>5<<a<h1<75f5g83>>i6080;66sm29;94?5=83:p(<6n:03:?M20>2B?:n5+cg800>od;3:17dm;:188k41f2900qo<70;290?6=8r.:4l4>239K020<@=<h7d;7:188m37=831b=5=50;9l52g=831vn?7<:180>5<7s-;3m7:85:J733=O<?i0e8650;9j542=831d=:o50;9~f7>f29086=4?{%3;e?7612B?;;5G47a8 f`=;=1bo>4?::k`0?6=3f;<m7>5;|`1<4<72=0;6=u+19c9574<@===7E:9c:k6<?6=3`<:6=44i0:0>5<<g8=j6=44}c0:0?6=;3:1<v*>8`8730=O<><0D98l;h7;>5<<a8;?6=44o05b>5<<uk83n7>53;294~"60h0:=45G4648L10d3-im6>:4ib194?=nk=0;66a>7`83>>{e:181<7:50;2x 4>f28897E:86:J72f=n=10;66g91;29?l7?;3:17b?8a;29?xd51<0;6>4?:1y'5=g=<>?0D999;I65g>o203:17d?>4;29?j70i3:17pl=8b83>6<729q/=5o510;8L1113A>=o6*lf;17?le42900en:50;9l52g=831vn?6<:187>5<7s-;3m7?=2:J733=O<?i0e8650;9j24<722c:4>4?::m23d<722wi>4850;194?6|,82j699:;I642>N3>j1b954?::k251<722e:;l4?::a6=b=8391<7>t$0:b>47>3A><:6F;6b9'gc<4<2ch?7>5;ha7>5<<g8=j6=44}c0;0?6=<3:1<v*>8`8267=O<><0D98l;h7;>5<<a?;1<75f19194?=h9>k1<75rb3;4>5<4290;w)?7a;641>N3??1C8;m4i4:94?=n98>1<75`16c94?=zj;2n6=4<:183!7?i3;:56F;779K03e<,jl1?95fc283>>od<3:17b?8a;29?xd50<0;694?:1y'5=g=9;80D999;I65g>o203:17d8>:188m4>42900c<9n:188yg4>03:1?7>50z&2<d<3?<1C8:84H54`?l3?2900e<?;:188k41f2900qo<7f;297?6=8r.:4l4>189K020<@=<h7)mi:268mf5=831bo94?::m23d<722wi>5850;694?6|,82j6<<=;I642>N3>j1b954?::k55?6=3`;3?7>5;n34e?6=3th9544?:283>5}#91k18:;4H555?M21k2c>47>5;h320?6=3f;<m7>5;|`1=5<72:0;6=u+19c954?<@===7E:9c:&`b?533`i86=44ib694?=h9>k1<75rb3:4>5<3290;w)?7a;316>N3??1C8;m4i4:94?=n>80;66g>8283>>i6?h0;66sm28c94?5=83:p(<6n:556?M20>2B?:n5f5983>>o69=0;66a>7`83>>{e:0;1<7=50;2x 4>f28;27E:86:J72f=#ko0886gl3;29?le32900c<9n:188yg4?03:187>50z&2<d<6:;1C8:84H54`?l3?2900e;?50;9j5=5=831d=:o50;9~f7?e29086=4?{%3;e?20=2B?;;5G47a8m0>=831b=<:50;9l52g=831vn?7=:180>5<7s-;3m7?>9:J733=O<?i0(nh5359jg6<722ch87>5;n34e?6=3th95n4?:283>5}#91k18:;4H555?M21k2c>47>5;h320?6=3f;<m7>5;|`0=g<72:0;6=u+19c954?<@===7E:9c:&`b?533`i86=44ib694?=h9>k1<75rb2;1>5<3290;w)?7a;316>N3??1C8;m4i4:94?=n>80;66g>8283>>i6?h0;66sm3`794?5=83:p(<6n:556?M20>2B?:n5f5983>>o69=0;66a>7`83>>{e;0i1<7=50;2x 4>f28;27E:86:J72f=#ko0886gl3;29?le32900c<9n:188yg5>;3:187>50z&2<d<6:;1C8:84H54`?l3?2900e;?50;9j5=5=831d=:o50;9~f6g129086=4?{%3;e?20=2B?;;5G47a8m0>=831b=<:50;9l52g=831vn>7k:180>5<7s-;3m7?>9:J733=O<?i0(nh5359jg6<722ch87>5;n34e?6=3th8594?:583>5}#91k1=?<4H555?M21k2c>47>5;h42>5<<a8286=44o05b>5<<uk9j;7>53;294~"60h0?;85G4648L10d3`?36=44i037>5<<g8=j6=44}c1:a?6=;3:1<v*>8`825<=O<><0D98l;%ae>62<aj91<75fc583>>i6?h0;66sm38794?2=83:p(<6n:001?M20>2B?:n5f5983>>o193:17d?73;29?j70i3:17pl<a983>6<729q/=5o54678L1113A>=o6g:8;29?l76<3:17b?8a;29?xd41o0;6>4?:1y'5=g=9830D999;I65g>"dn39?7dm<:188mf2=831d=:o50;9~f6?1290?6=4?{%3;e?75:2B?;;5G47a8m0>=831b:<4?::k2<6<722e:;l4?::a7d?=8391<7>t$0:b>1123A><:6F;6b9j1=<722c:=94?::m23d<722wi?l>50;194?6|,82j6<?6;I642>N3>j1/ok4<4:k`7?6=3`i?6=44o05b>5<<uk92;7>54;294~"60h0:>?5G4648L10d3`?36=44i7394?=n9191<75`16c94?=zj:kj6=4<:183!7?i3><96F;779K03e<a<21<75f10694?=h9>k1<75rb2c2>5<4290;w)?7a;32=>N3??1C8;m4$bd971=nk:0;66gl4;29?j70i3:17pl<9983>1<729q/=5o51308L1113A>=o6g:8;29?l062900e<6<:188k41f2900qo=nb;297?6=8r.:4l4;749K020<@=<h7d;7:188m4732900c<9n:188yg5f:3:1?7>50z&2<d<6901C8:84H54`?!ea2:>0en=50;9jg1<722e:;l4?::a7<?=83>1<7>t$0:b>4453A><:6F;6b9j1=<722c==7>5;h3;7?6=3f;<m7>5;|`0ef<72:0;6=u+19c9023<@===7E:9c:k6<?6=3`;:87>5;n34e?6=3th8m>4?:283>5}#91k1=<74H555?M21k2.hj7=;;ha0>5<<aj>1<75`16c94?=zj:3j6=4;:183!7?i3;9>6F;779K03e<a<21<75f6083>>o60:0;66a>7`83>>{e;hn1<7=50;2x 4>f2==>7E:86:J72f=n=10;66g>1583>>i6?h0;66sm3`694?5=83:p(<6n:03:?M20>2B?:n5+cg800>od;3:17dm;:188k41f2900qo=ne;297?6=8r.:4l4;749K020<@=<h7d;7:188m4732900c<9n:188yg4b:3:187>50z&2<d<6:;1C8:84H54`?l3?2900e;?50;9j5=5=831d=:o50;9~f7c6290?6=4?{%3;e?75:2B?;;5G47a8m0>=831b:<4?::k2<6<722e:;l4?::a6`6=83>1<7>t$0:b>4453A><:6F;6b9j1=<722c==7>5;h3;7?6=3f;<m7>5;|`1`c<72=0;6=u+19c9574<@===7E:9c:k6<?6=3`<:6=44i0:0>5<<g8=j6=44}c0ga?6=<3:1<v*>8`8267=O<><0D98l;h7;>5<<a?;1<75f19194?=h9>k1<75rb3d6>5<3290;w)?7a;316>N3??1C8;m4i4:94?=n>80;66g>8283>>i6?h0;66sm2g694?2=83:p(<6n:001?M20>2B?:n5f5983>>o193:17d?73;29?j70i3:17pl=f283>1<729q/=5o51308L1113A>=o6g:8;29?l062900e<6<:188k41f2900qo<i2;290?6=8r.:4l4>239K020<@=<h7d;7:188m37=831b=5=50;9l52g=831vn?h>:187>5<7s-;3m7?=2:J733=O<?i0e8650;9j24<722c:4>4?::m23d<722wi?8j50;694?6|,82j6<<=;I642>N3>j1b954?::k55?6=3`;3?7>5;n34e?6=3th89n4?:583>5}#91k1=?<4H555?M21k2c>47>5;h42>5<<a8286=44o05b>5<<uk9>n7>54;294~"60h0:>?5G4648L10d3`?36=44i7394?=n9191<75`16c94?=zj:?j6=4;:183!7?i3;9>6F;779K03e<a<21<75f6083>>o60:0;66a>7`83>>{e;<31<7:50;2x 4>f28897E:86:J72f=n=10;66g91;29?l7?;3:17b?8a;29?xd4?90;694?:1y'5=g=9;80D999;I65g>o203:17d8>:188m4>42900c<9n:188yg51n3:187>50z&2<d<6:;1C8:84H54`?l3?2900e;?50;9j5=5=831d=:o50;9~f60b290?6=4?{%3;e?75:2B?;;5G47a8m0>=831b:<4?::k2<6<722e:;l4?::a73b=83>1<7>t$0:b>4453A><:6F;6b9j1=<722c==7>5;h3;7?6=3f;<m7>5;|`02f<72=0;6=u+19c9574<@===7E:9c:k6<?6=3`<:6=44i0:0>5<<g8=j6=44}c3a4?6=<3:1<v*>8`8a=>N3??1C8;m4$bd96>o2<3:17d;m:188m0`=831d=5?50;9~f4ga290?6=4?{%3;e?d>3A><:6F;6b9'gc<53`??6=44i4`94?=n=o0;66a>8083>>{e9ho1<7:50;2x 4>f2k30D999;I65g>"dn380e8:50;9j1g<722c>j7>5;n3;5?6=3th:mi4?:583>5}#91k1n45G4648L10d3-im6?5f5583>>o2j3:17d;i:188k4>62900qo?nc;290?6=8r.:4l4m9:J733=O<?i0(nh52:k60?6=3`?i6=44i4d94?=h91;1<75rb0ca>5<3290;w)?7a;`:?M20>2B?:n5+cg81?l332900e8l50;9j1c<722e:4<4?::a5dg=83>1<7>t$0:b>g?<@===7E:9c:&`b?4<a<>1<75f5c83>>o2n3:17b?71;29?xd6i00;694?:1y'5=g=j01C8:84H54`?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk;j47>54;294~"60h0i56F;779K03e<,jl1>6g:4;29?l3e2900e8h50;9l5=7=831vn<o8:187>5<7s-;3m7l6;I642>N3>j1/ok4=;h77>5<<a<h1<75f5g83>>i6080;66sm20f94?2=83:p(<6n:c;8L1113A>=o6*lf;08m02=831b9o4?::k6b?6=3f;3=7>5;|`15f<72=0;6=u+19c9f<=O<><0D98l;%ae>7=n==0;66g:b;29?l3a2900c<6>:188yg46j3:187>50z&2<d<e12B?;;5G47a8 f`=:2c>87>5;h7a>5<<a<l1<75`19394?=zj;;j6=4;:183!7?i3h27E:86:J72f=#ko097d;;:188m0d=831b9k4?::m2<4<722wi><750;694?6|,82j6o74H555?M21k2.hj7<4i4694?=n=k0;66g:f;29?j7?93:17pl=1983>1<729q/=5o5b89K020<@=<h7)mi:39j11<722c>n7>5;h7e>5<<g82:6=44}c023?6=<3:1<v*>8`8a=>N3??1C8;m4$bd96>o2<3:17d;m:188m0`=831d=5?50;9~f771290?6=4?{%3;e?d>3A><:6F;6b9'gc<53`??6=44i4`94?=n=o0;66a>8083>>{e:8?1<7:50;2x 4>f2k30D999;I65g>"dn380e8:50;9j1g<722c>j7>5;n3;5?6=3th9=94?:583>5}#91k1n45G4648L10d3-im6?5f5583>>o2j3:17d;i:188k4>62900qo<9d;290?6=8r.:4l4m9:J733=O<?i0(nh52:k60?6=3`?i6=44i4d94?=h91;1<75rb34`>5<3290;w)?7a;`:?M20>2B?:n5+cg81?l332900e8l50;9j1c<722e:4<4?::a63d=83>1<7>t$0:b>g?<@===7E:9c:&`b?4<a<>1<75f5c83>>o2n3:17b?71;29?xd5>h0;694?:1y'5=g=j01C8:84H54`?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk8=57>54;294~"60h0i56F;779K03e<,jl1>6g:4;29?l3e2900e8h50;9l5=7=831vn?87:187>5<7s-;3m7l6;I642>N3>j1/ok4=;h77>5<<a<h1<75f5g83>>i6080;66sm27594?2=83:p(<6n:c;8L1113A>=o6*lf;08m02=831b9o4?::k6b?6=3f;3=7>5;|`123<72=0;6=u+19c9f<=O<><0D98l;%ae>7=n==0;66g:b;29?l3a2900c<6>:188yg41=3:187>50z&2<d<e12B?;;5G47a8 f`=:2c>87>5;h7a>5<<a<l1<75`19394?=zj;<?6=4;:183!7?i3h27E:86:J72f=#ko097d;;:188m0d=831b9k4?::m2<4<722wi>=>50;694?6|,82j6o74H555?M21k2.hj7<4i4694?=n=k0;66g:f;29?j7?93:17pl>fg83>1<729q/=5o5b89K020<@=<h7)mi:39j11<722c>n7>5;h7e>5<<g82:6=44}c3ea?6=<3:1<v*>8`8a=>N3??1C8;m4$bd96>o2<3:17d;m:188m0`=831d=5?50;9~f4`c290?6=4?{%3;e?d>3A><:6F;6b9'gc<53`??6=44i4`94?=n=o0;66a>8083>>{e9oi1<7:50;2x 4>f2k30D999;I65g>"dn380e8:50;9j1g<722c>j7>5;n3;5?6=3th:jo4?:583>5}#91k1n45G4648L10d3-im6?5f5583>>o2j3:17d;i:188k4>62900qo?ia;290?6=8r.:4l4m9:J733=O<?i0(nh52:k60?6=3`?i6=44i4d94?=h91;1<75rb0d:>5<3290;w)?7a;`:?M20>2B?:n5+cg81?l332900e8l50;9j1c<722e:4<4?::a5c>=83>1<7>t$0:b>g?<@===7E:9c:&`b?4<a<>1<75f5c83>>o2n3:17b?71;29?xd6n>0;694?:1y'5=g=j01C8:84H54`?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk8>57>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk8>47>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk8>;7>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk8>:7>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk8>97>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk8>87>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk8>?7>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk8>>7>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk8>=7>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk8><7>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk;no7>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk;nn7>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk;nm7>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk;n57>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk;n47>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk;n;7>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk;n:7>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk;n97>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk;n87>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk;n?7>54;294~"60h0i56F;779K03e<@<:0(<<>:464?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk;o47>54;294~"60h0i56F;779K03e<,jl1>6g:4;29?l3e2900e8h50;9l5=7=831vn<j8:187>5<7s-;3m7l6;I642>N3>j1/ok4=;h77>5<<a<h1<75f5g83>>i6080;66sm1e494?2=83:p(<6n:c;8L1113A>=o6*lf;08m02=831b9o4?::k6b?6=3f;3=7>5;|`2`0<72=0;6=u+19c9f<=O<><0D98l;%ae>7=n==0;66g:b;29?l3a2900c<6>:188yg7c<3:187>50z&2<d<e12B?;;5G47a8 f`=:2c>87>5;h7a>5<<a<l1<75`19394?=zj8n86=4;:183!7?i3h27E:86:J72f=#ko097d;;:188m0d=831b9k4?::m2<4<722wi=i<50;694?6|,82j6o74H555?M21k2.hj7<4i4694?=n=k0;66g:f;29?j7?93:17pl>d083>1<729q/=5o5b89K020<@=<h7)mi:39j11<722c>n7>5;h7e>5<<g82:6=44}c3g4?6=<3:1<v*>8`8a=>N3??1C8;m4$bd96>o2<3:17d;m:188m0`=831d=5?50;9~f4ea290?6=4?{%3;e?d>3A><:6F;6b9'gc<53`??6=44i4`94?=n=o0;66a>8083>>{e:=?1<7:50;2x 4>f2k30D999;I65g>"dn380e8:50;9j1g<722c>j7>5;n3;5?6=3th9894?:583>5}#91k1n45G4648L10d3-im6?5f5583>>o2j3:17d;i:188k4>62900qo<;3;290?6=8r.:4l4m9:J733=O<?i0(nh52:k60?6=3`?i6=44i4d94?=h91;1<75rb361>5<3290;w)?7a;`:?M20>2B?:n5+cg81?l332900e8l50;9j1c<722e:4<4?::a617=83>1<7>t$0:b>g?<@===7E:9c:&`b?4<a<>1<75f5c83>>o2n3:17b?71;29?xd5<90;694?:1y'5=g=j01C8:84H54`?!ea2;1b994?::k6f?6=3`?m6=44o0:2>5<<uk88j7>54;294~"60h0i56F;779K03e<,jl1>6g:4;29?l3e2900e8h50;9l5=7=831vn?=j:187>5<7s-;3m7l6;I642>N3>j1/ok4=;h77>5<<a<h1<75f5g83>>i6080;66sm22f94?2=83:p(<6n:c;8L1113A>=o6*lf;08m02=831b9o4?::k6b?6=3f;3=7>5;|`17f<72=0;6=u+19c9f<=O<><0D98l;%ae>7=n==0;66g:b;29?l3a2900c<6>:188yg5383:197>50z&2<d<ei2B?;;5G47a8 f`=:2c>87>5;h75>5<<a<h1<75f5g83>>i6080;66sm32d94?3=83:p(<6n:cc8L1113A>=o6*lf;08m02=831b9;4?::k6f?6=3`?m6=44o0:2>5<<uk98h7>55;294~"60h0im6F;779K03e<,jl1>6g:4;29?l312900e8l50;9j1c<722e:4<4?::a76e=83?1<7>t$0:b>gg<@===7E:9c:&`b?4<a<>1<75f5783>>o2j3:17d;i:188k4>62900qo=<e;291?6=8r.:4l4ma:J733=O<?i0(nh52:k60?6=3`?=6=44i4`94?=n=o0;66a>8083>>{e;:h1<7;50;2x 4>f2kk0D999;I65g>"dn380e8:50;9j13<722c>n7>5;h7e>5<<g82:6=44}c10e?6==3:1<v*>8`8ae>N3??1C8;m4$bd96>o2<3:17d;9:188m0d=831b9k4?::m2<4<722wi?>650;794?6|,82j6oo4H555?M21k2.hj7<4i4694?=n=?0;66g:b;29?l3a2900c<6>:188yg54?3:197>50z&2<d<el2B?;;5G47a8 f`=?2c>87>5;h75>5<<a<l1<75f19294?=h91;1<75rb21:>5<2290;w)?7a;`b?M20>2B?:n5+cg81?l332900e8850;9j1g<722c>j7>5;n3;5?6=3th8>o4?:283>5}#91k18:;4H555?M21k2c>47>5;h320?6=3f;<m7>5;|`06d<72:0;6=u+19c9023<@===7E:9c:k6<?6=3`;:87>5;n34e?6=3th8>=4?:583>5}#91k1=?<4H555?M21k2c>47>5;h42>5<<a8286=44o05b>5<<uk9957>53;294~"60h0?;85G4648L10d3`?36=44i037>5<<g8=j6=44}c12a?6=<3:1<v*>8`8267=O<><0D98l;h7;>5<<a?;1<75f19194?=h9>k1<75rb20;>5<4290;w)?7a;641>N3??1C8;m4i4:94?=n98>1<75`16c94?=zj:;h6=4;:183!7?i3;9>6F;779K03e<a<21<75f6083>>o60:0;66a>7`83>>{e;;=1<7=50;2x 4>f2==>7E:86:J72f=n=10;66g>1583>>i6?h0;66sm30c94?2=83:p(<6n:001?M20>2B?:n5f5983>>o193:17d?73;29?j70i3:17pl<2783>6<729q/=5o54678L1113A>=o6g:8;29?l76<3:17b?8a;29?xd4910;694?:1y'5=g=9;80D999;I65g>o203:17d8>:188m4>42900c<9n:188yg55=3:1?7>50z&2<d<3?<1C8:84H54`?l3?2900e<?;:188k41f2900qo=>6;290?6=8r.:4l4>239K020<@=<h7d;7:188m37=831b=5=50;9l52g=831vn><;:180>5<7s-;3m7:85:J733=O<?i0e8650;9j542=831d=:o50;9~f673290?6=4?{%3;e?75:2B?;;5G47a8m0>=831b:<4?::k2<6<722e:;l4?::a775=8391<7>t$0:b>1123A><:6F;6b9j1=<722c:=94?::m23d<722wi?<<50;694?6|,82j6<<=;I642>N3>j1b954?::k55?6=3`;3?7>5;n34e?6=3th8>?4?:283>5}#91k18:;4H555?M21k2c>47>5;h320?6=3f;<m7>5;|`055<72=0;6=u+19c9574<@===7E:9c:k6<?6=3`<:6=44i0:0>5<<g8=j6=44}c160?6==3:1<v*>8`8ae>N3??1C8;m4$bd96>o2<3:17d;9:188m0d=831b9k4?::m2<4<722wi?8=50;794?6|,82j6oo4H555?M21k2.hj7<4i4694?=n=?0;66g:b;29?l3a2900c<6>:188yg52:3:197>50z&2<d<ei2B?;;5G47a8 f`=:2c>87>5;h75>5<<a<h1<75f5g83>>i6080;66sm34394?3=83:p(<6n:cc8L1113A>=o6*lf;08m02=831b9;4?::k6f?6=3`?m6=44o0:2>5<<uk9><7>55;294~"60h0im6F;779K03e<,jl1>6g:4;29?l312900e8l50;9j1c<722e:4<4?::a71`=83?1<7>t$0:b>gg<@===7E:9c:&`b?4<a<>1<75f5783>>o2j3:17d;i:188k4>62900qo=;e;291?6=8r.:4l4ma:J733=O<?i0(nh52:k60?6=3`?=6=44i4`94?=n=o0;66a>8083>>{e;=n1<7;50;2x 4>f2kk0D999;I65g>"dn380e8:50;9j13<722c>n7>5;h7e>5<<g82:6=44}c17g?6==3:1<v*>8`8ae>N3??1C8;m4$bd96>o2<3:17d;9:188m0d=831b9k4?::m2<4<722wi?9l50;794?6|,82j6oo4H555?M21k2.hj7<4i4694?=n=?0;66g:b;29?l3a2900c<6>:188yg4c:3:187>50z&2<d<e12B?;;5G47a8 f`=:2c>87>5;h7a>5<<a<l1<75`19394?=zj;im6=4;:183!7?i3h27E:86:J72f=#ko097d;;:188m0d=831b9k4?::m2<4<722wi>i750;694?6|,82j6o74H555?M21k2.hj7<4i4694?=n=k0;66g:f;29?j7?93:17pl=d783>1<729q/=5o5bb9K020<@=<h7)mi:69j11<722c>j7>5;h3;4?6=3f;3=7>5;|`1`0<72=0;6=u+19c9ff=O<><0D98l;%ae>2=n==0;66g:f;29?l7?83:17b?71;29?xd38=0;684?:1y'5=g=jh1C8:84H54`?!ea2;1b994?::k62?6=3`?i6=44i4d94?=h91;1<75rb520>5<2290;w)?7a;`b?M20>2B?:n5+cg81?l332900e8850;9j1g<722c>j7>5;n3;5?6=3th?<<4?:483>5}#91k1nl5G4648L10d3-im6?5f5583>>o2>3:17d;m:188m0`=831d=5?50;9~f167290>6=4?{%3;e?df3A><:6F;6b9'gc<53`??6=44i4494?=n=k0;66g:f;29?j7?93:17pl;0383>0<729q/=5o5b`9K020<@=<h7)mi:39j11<722c>:7>5;h7a>5<<a<l1<75`19394?=zj:lm6=4::183!7?i3hj7E:86:J72f=#ko097d;;:188m00=831b9o4?::k6b?6=3f;3=7>5;|`0b`<72<0;6=u+19c9fd=O<><0D98l;%ae>7=n==0;66g:6;29?l3e2900e8h50;9l5=7=831vn>hl:186>5<7s-;3m7lk;I642>N3>j1/ok48;h77>5<<a<<1<75f5g83>>o6090;66a>8083>>{e;oh1<7;50;2x 4>f2kk0D999;I65g>"dn380e8:50;9j13<722c>n7>5;h7e>5<<g82:6=44}c1e`?6==3:1<v*>8`8ae>N3??1C8;m4$bd96>o2<3:17d;9:188m0d=831b9k4?::m2<4<722wi?hh50;194?6|,82j699:;I642>N3>j1b954?::k251<722e:;l4?::a7`c=8391<7>t$0:b>1123A><:6F;6b9j1=<722c:=94?::m23d<722wi?h:50;694?6|,82j6<<=;I642>N3>j1b954?::k55?6=3`;3?7>5;n34e?6=3th8ii4?:283>5}#91k18:;4H555?M21k2c>47>5;h320?6=3f;<m7>5;|`0a7<72=0;6=u+19c9574<@===7E:9c:k6<?6=3`<:6=44i0:0>5<<g8=j6=44}c1fg?6=;3:1<v*>8`8730=O<><0D98l;h7;>5<<a8;?6=44o05b>5<<uk9n<7>54;294~"60h0:>?5G4648L10d3`?36=44i7394?=n9191<75`16c94?=zj:oi6=4<:183!7?i3><96F;779K03e<a<21<75f10694?=h9>k1<75rb2ff>5<3290;w)?7a;316>N3??1C8;m4i4:94?=n>80;66g>8283>>i6?h0;66sm3dc94?5=83:p(<6n:556?M20>2B?:n5f5983>>o69=0;66a>7`83>>{e;mi1<7:50;2x 4>f28897E:86:J72f=n=10;66g91;29?l7?;3:17b?8a;29?xd4m00;6>4?:1y'5=g=<>?0D999;I65g>o203:17d?>4;29?j70i3:17pl<d`83>1<729q/=5o51308L1113A>=o6g:8;29?l062900e<6<:188k41f2900qo=j8;297?6=8r.:4l4;749K020<@=<h7d;7:188m4732900c<9n:188yg5c03:187>50z&2<d<6:;1C8:84H54`?l3?2900e;?50;9j5=5=831d=:o50;9~f6c029086=4?{%3;e?20=2B?;;5G47a8m0>=831b=<:50;9l52g=831vn>j9:187>5<7s-;3m7?=2:J733=O<?i0e8650;9j24<722c:4>4?::m23d<722wi?h850;194?6|,82j699:;I642>N3>j1b954?::k251<722e:;l4?::a7a2=83>1<7>t$0:b>4453A><:6F;6b9j1=<722c==7>5;h3;7?6=3f;<m7>5;|`754<72<0;6=u+19c9fd=O<><0D98l;%ae>7=n==0;66g:6;29?l3e2900e8h50;9l5=7=831vn9>i:186>5<7s-;3m7lk;I642>N3>j1/ok48;h77>5<<a<<1<75f5g83>>o6090;66a>8083>>{e<8:1<7;50;2x 4>f2kk0D999;I65g>"dn380e8:50;9j13<722c>n7>5;h7e>5<<g82:6=44}c626?6==3:1<v*>8`8ae>N3??1C8;m4$bd96>o2<3:17d;9:188m0d=831b9k4?::m2<4<722wi8<=50;794?6|,82j6oo4H555?M21k2.hj7<4i4694?=n=?0;66g:b;29?l3a2900c<6>:188yg26>3:197>50z&2<d<ei2B?;;5G47a8 f`=:2c>87>5;h75>5<<a<h1<75f5g83>>i6080;66sm40694?3=83:p(<6n:cc8L1113A>=o6*lf;08m02=831b9;4?::k6f?6=3`?m6=44o0:2>5<<uk>:97>55;294~"60h0im6F;779K03e<,jl1>6g:4;29?l312900e8l50;9j1c<722e:4<4?::a041=83?1<7>t$0:b>gg<@===7E:9c:&`b?4<a<>1<75f5783>>o2j3:17d;i:188k4>62900qo:>8;291?6=8r.:4l4ma:J733=O<?i0(nh52:k60?6=3`?=6=44i4`94?=n=o0;66a>8083>>{e<;i1<7;50;2x 4>f2kk0D999;I65g>"dn380e8:50;9j13<722c>n7>5;h7e>5<<g82:6=44}c61f?6==3:1<v*>8`8ae>N3??1C8;m4$bd96>o2<3:17d;9:188m0d=831b9k4?::m2<4<722wi8?o50;794?6|,82j6oo4H555?M21k2.hj7<4i4694?=n=?0;66g:b;29?l3a2900c<6>:188yg2513:197>50z&2<d<ei2B?;;5G47a8 f`=:2c>87>5;h75>5<<a<h1<75f5g83>>i6080;66sm43:94?3=83:p(<6n:cc8L1113A>=o6*lf;08m02=831b9;4?::k6f?6=3`?m6=44o0:2>5<<uk>9;7>55;294~"60h0im6F;779K03e<,jl1>6g:4;29?l312900e8l50;9j1c<722e:4<4?::a070=83?1<7>t$0:b>gg<@===7E:9c:&`b?4<a<>1<75f5783>>o2j3:17d;i:188k4>62900qo:=5;291?6=8r.:4l4ma:J733=O<?i0(nh52:k60?6=3`?=6=44i4`94?=n=o0;66a>8083>>{e<;>1<7;50;2x 4>f2kk0D999;I65g>"dn380e8:50;9j13<722c>n7>5;h7e>5<<g82:6=44}c617?6==3:1<v*>8`8ae>N3??1C8;m4$bd96>o2<3:17d;9:188m0d=831b9k4?::m2<4<722wi8>850;794?6|,82j6oo4H555?M21k2.hj7<4i4694?=n=?0;66g:b;29?l3a2900c<6>:188yg24=3:197>50z&2<d<ei2B?;;5G47a8 f`=:2c>87>5;h75>5<<a<h1<75f5g83>>i6080;66sm42694?3=83:p(<6n:cc8L1113A>=o6*lf;08m02=831b9;4?::k6f?6=3`?m6=44o0:2>5<<uk>8?7>55;294~"60h0im6F;779K03e<,jl1>6g:4;29?l312900e8l50;9j1c<722e:4<4?::a064=83?1<7>t$0:b>gg<@===7E:9c:&`b?4<a<>1<75f5783>>o2j3:17d;i:188k4>62900qo:<1;291?6=8r.:4l4ma:J733=O<?i0(nh52:k60?6=3`?=6=44i4`94?=n=o0;66a>8083>>{e<::1<7;50;2x 4>f2kk0D999;I65g>"dn380e8:50;9j13<722c>n7>5;h7e>5<<g82:6=44}c61b?6==3:1<v*>8`8ae>N3??1C8;m4$bd96>o2<3:17d;9:188m0d=831b9k4?::m2<4<722wi8>k50;794?6|,82j6oo4H555?M21k2.hj7<4i4694?=n=?0;66g:b;29?l3a2900c<6>:188yg24l3:197>50z&2<d<ei2B?;;5G47a8 f`=:2c>87>5;h75>5<<a<h1<75f5g83>>i6080;66sm42a94?3=83:p(<6n:cc8L1113A>=o6*lf;08m02=831b9;4?::k6f?6=3`?m6=44o0:2>5<<uk>8n7>55;294~"60h0im6F;779K03e<,jl1>6g:4;29?l312900e8l50;9j1c<722e:4<4?::a06g=83?1<7>t$0:b>gg<@===7E:9c:&`b?4<a<>1<75f5783>>o2j3:17d;i:188k4>62900qo:<9;291?6=8r.:4l4ma:J733=O<?i0(nh52:k60?6=3`?=6=44i4`94?=n=o0;66a>8083>>{e<:21<7;50;2x 4>f2kk0D999;I65g>"dn380e8:50;9j13<722c>n7>5;h7e>5<<g82:6=44}c603?6==3:1<v*>8`8ae>N3??1C8;m4$bd96>o2<3:17d;9:188m0d=831b9k4?::m2<4<722wi8?k50;794?6|,82j6oo4H555?M21k2.hj7<4i4694?=n=?0;66g:b;29?l3a2900c<6>:188yg25l3:197>50z&2<d<ei2B?;;5G47a8 f`=:2c>87>5;h75>5<<a<h1<75f5g83>>i6080;66sm47494?5=83:p(<6n:03:?M20>2B?:n5+cg817>od;3:17dm;:188k41f2900qo::b;297?6=8r.:4l4>189K020<@=<h7)mi:318mf5=831bo94?::m23d<722wi><h50;194?6|,82j6<?6;I642>N3>j1/ok4=5:k`7?6=3`i?6=44o05b>5<<uk;i>7>53;294~"60h0:=45G4648L10d3-im6?;4ib194?=nk=0;66a>7`83>>{e90i1<7=50;2x 4>f28;27E:86:J72f=#ko0996gl3;29?le32900c<9n:188yg7>j3:1?7>50z&2<d<6901C8:84H54`?!ea2;?0en=50;9jg1<722e:;l4?::a5<g=8391<7>t$0:b>47>3A><:6F;6b9'gc<5=2ch?7>5;ha7>5<<g8=j6=44}c3:=?6=;3:1<v*>8`825<=O<><0D98l;%ae>73<aj91<75fc583>>i6?h0;66sm18:94?5=83:p(<6n:03:?M20>2B?:n5+cg811>od;3:17dm;:188k41f2900qo?67;297?6=8r.:4l4>189K020<@=<h7)mi:378mf5=831bo94?::m23d<722wi=4850;194?6|,82j6<?6;I642>N3>j1/ok4=5:k`7?6=3`i?6=44o05b>5<<uk;297>53;294~"60h0:=45G4648L10d3-im6?;4ib194?=nk=0;66a>7`83>>{e90>1<7=50;2x 4>f28;27E:86:J72f=#ko0996gl3;29?le32900c<9n:188yg7>;3:1?7>50z&2<d<6901C8:84H54`?!ea2;?0en=50;9jg1<722e:;l4?::a5<4=8391<7>t$0:b>47>3A><:6F;6b9'gc<5=2ch?7>5;ha7>5<<g8=j6=44}c3:5?6=;3:1<v*>8`825<=O<><0D98l;%ae>73<aj91<75fc583>>i6?h0;66sm18294?5=83:p(<6n:03:?M20>2B?:n5+cg811>od;3:17dm;:188k41f2900qo?7f;297?6=8r.:4l4>189K020<@=<h7)mi:378mf5=831bo94?::m23d<722wi=5k50;194?6|,82j6<?6;I642>N3>j1/ok4=5:k`7?6=3`i?6=44o05b>5<<uk;3h7>53;294~"60h0:=45G4648L10d3-im6?;4ib194?=nk=0;66a>7`83>>{e91i1<7=50;2x 4>f28;27E:86:J72f=#ko0996gl3;29?le32900c<9n:188yg7?j3:1?7>50z&2<d<6901C8:84H54`?!ea2;?0en=50;9jg1<722e:;l4?::a677=83>1<7>t$0:b>47e3A><:6F;6b9'gc<4>2ch?7>5;ha7>5<<aj?1<75`16c94?=zj8h?6=4;:183!7?i3;:n6F;779K03e<,jl1?;5fc283>>od<3:17dm::188k41f2900qo<k1;290?6=8r.:4l4>1c9K020<@=<h7)mi:3f8mf5=831bo94?::k`1?6=3f;<m7>5;|`166<72<0;6=u+19c954c<@===7E:9c:&`b?4>3`i86=44ib694?=nk<0;66gl6;29?j70i3:17pl>b783>0<729q/=5o510g8L1113A>=o6*lf;0:?le42900en:50;9jg0<722ch:7>5;n34e?6=3th9h54?:483>5}#91k1=<k4H555?M21k2.hj7;:;ha0>5<<aj>1<75fc483>>od>3:17b?8a;29?xd5l=0;684?:1y'5=g=98o0D999;I65g>"dn38j7dm<:188mf2=831bo84?::k`2?6=3f;<m7>5;|`0g<<72:0;6=u+19c954?<@===7E:9c:&`b?443`i86=44ib694?=h9>k1<75rb3ag>5<3290;w)?7a;32f>N3??1C8;m4$bd962=nk:0;66gl4;29?le22900c<9n:188yg45=3:1?7>50z&2<d<6901C8:84H54`?!ea2;?0en=50;9jg1<722e:;l4?::a5g>=8391<7>t$0:b>47>3A><:6F;6b9'gc<5=2ch?7>5;ha7>5<<g8=j6=44}c013?6=<3:1<v*>8`825g=O<><0D98l;%ae>60<aj91<75fc583>>od=3:17b?8a;29?xd6jh0;694?:1y'5=g=98h0D999;I65g>"dn39=7dm<:188mf2=831bo84?::m23d<722wi>?750;794?6|,82j6<?j;I642>N3>j1/ok4=9:k`7?6=3`i?6=44ib794?=nk?0;66a>7`83>>{e9ki1<7;50;2x 4>f28;n7E:86:J72f=#ko0956gl3;29?le32900en;50;9jg3<722e:;l4?::a6fe=83?1<7>t$0:b>47b3A><:6F;6b9'gc<5<2ch?7>5;ha7>5<<aj?1<75fc783>>i6?h0;66sm44194?5=83:p(<6n:03:?M20>2B?:n5+cg8a6>od;3:17dm;:188k41f2900qo=8a;291?6=8r.:4l4>1d9K020<@=<h7)mi:278mf5=831bo94?::k`1?6=3`i=6=44o05b>5<<uk9=;7>55;294~"60h0:=h5G4648L10d3-im6>;4ib194?=nk=0;66gl5;29?le12900c<9n:188yg4an3:197>50z&2<d<69l1C8:84H54`?!ea2:?0en=50;9jg1<722ch97>5;ha5>5<<g8=j6=44}c0fg?6==3:1<v*>8`825`=O<><0D98l;%ae>63<aj91<75fc583>>od=3:17dm9:188k41f2900qo=89;291?6=8r.:4l4>1d9K020<@=<h7)mi:278mf5=831bo94?::k`1?6=3`i=6=44o05b>5<<uk9=:7>55;294~"60h0:=h5G4648L10d3-im6>;4ib194?=nk=0;66gl5;29?le12900c<9n:188yg4am3:197>50z&2<d<69l1C8:84H54`?!ea2:?0en=50;9jg1<722ch97>5;ha5>5<<g8=j6=44}c0ff?6==3:1<v*>8`825`=O<><0D98l;%ae>63<aj91<75fc583>>od=3:17dm9:188k41f2900qo<na;291?6=8r.:4l4>1d9K020<@=<h7)mi:338mf5=831bo94?::k`1?6=3`i=6=44o05b>5<<uk9<47>55;294~"60h0:=h5G4648L10d3-im6>;4ib194?=nk=0;66gl5;29?le12900c<9n:188yg51=3:197>50z&2<d<69l1C8:84H54`?!ea2:?0en=50;9jg1<722ch97>5;ha5>5<<g8=j6=44}c0e`?6==3:1<v*>8`825`=O<><0D98l;%ae>63<aj91<75fc583>>od=3:17dm9:188k41f2900qo<ja;291?6=8r.:4l4>1d9K020<@=<h7)mi:278mf5=831bo94?::k`1?6=3`i=6=44o05b>5<<uk9<;7>55;294~"60h0:=h5G4648L10d3-im6>;4ib194?=nk=0;66gl5;29?le12900c<9n:188yg51<3:197>50z&2<d<69l1C8:84H54`?!ea2:?0en=50;9jg1<722ch97>5;ha5>5<<g8=j6=44}c0eg?6==3:1<v*>8`825`=O<><0D98l;%ae>63<aj91<75fc583>>od=3:17dm9:188k41f2900qo<j9;291?6=8r.:4l4>1d9K020<@=<h7)mi:278mf5=831bo94?::k`1?6=3`i=6=44o05b>5<<uk9;87>54;294~"60h0:=o5G4648L10d3-im6o94ib194?=nk=0;66gl5;29?j70i3:17pl<8183>0<729q/=5o510g8L1113A>=o6*lf;72?le42900en:50;9jg0<722ch:7>5;n34e?6=3th8;;4?:483>5}#91k1=<k4H555?M21k2.hj7=:;ha0>5<<aj>1<75fc483>>od>3:17b?8a;29?xd4>:0;684?:1y'5=g=98o0D999;I65g>"dn39>7dm<:188mf2=831bo84?::k`2?6=3f;<m7>5;|`1bg<72<0;6=u+19c954c<@===7E:9c:&`b?523`i86=44ib694?=nk<0;66gl6;29?j70i3:17pl=e983>0<729q/=5o510g8L1113A>=o6*lf;16?le42900en:50;9jg0<722ch:7>5;n34e?6=3th9>n4?:283>5}#91k1=<74H555?M21k2.hj7=;;ha0>5<<aj>1<75`16c94?=zj8hm6=4<:183!7?i3;:56F;779K03e<,jl1?95fc283>>od<3:17b?8a;29?xd5:o0;694?:1y'5=g=98h0D999;I65g>"dn3837dm<:188mf2=831bo84?::m23d<722wi=n<50;694?6|,82j6<?m;I642>N3>j1/ok4=8:k`7?6=3`i?6=44ib794?=h9>k1<75rb312>5<2290;w)?7a;32a>N3??1C8;m4$bd972=nk:0;66gl4;29?le22900en850;9l52g=831vn?<m:186>5<7s-;3m7?>e:J733=O<?i0(nh5369jg6<722ch87>5;ha6>5<<aj<1<75`16c94?=zj8i?6=4::183!7?i3;:i6F;779K03e<,jl1?:5fc283>>od<3:17dm::188mf0=831d=:o50;9~f4db290>6=4?{%3;e?76m2B?;;5G47a8 f`=;>1bo>4?::k`0?6=3`i>6=44ib494?=h9>k1<75rb3cf>5<4290;w)?7a;32=>N3??1C8;m4$bd966=nk:0;66gl4;29?j70i3:17pl<8g83>6<729q/=5o510;8L1113A>=o6*lf;06?le42900en:50;9l52g=831vn?l?:187>5<7s-;3m7?>b:J733=O<?i0(nh51b9jg6<722ch87>5;ha6>5<<g8=j6=44}c1:4?6=<3:1<v*>8`825g=O<><0D98l;%ae>7d<aj91<75fc583>>od=3:17b?8a;29?xd5j;0;684?:1y'5=g=98o0D999;I65g>"dn38=7dm<:188mf2=831bo84?::k`2?6=3f;<m7>5;|`0=4<72<0;6=u+19c954c<@===7E:9c:&`b?4d3`i86=44ib694?=nk<0;66gl6;29?j70i3:17pl=b583>1<729q/=5o510`8L1113A>=o6*lf;10?le42900en:50;9jg0<722e:;l4?::a7f6=8391<7>t$0:b>47>3A><:6F;6b9'gc<5=2ch?7>5;ha7>5<<g8=j6=44}c1`6?6=<3:1<v*>8`825g=O<><0D98l;%ae>7d<aj91<75fc583>>od=3:17b?8a;29?xd4k=0;684?:1y'5=g=98o0D999;I65g>"dn38h7dm<:188mf2=831bo84?::k`2?6=3f;<m7>5;|`1f<<72<0;6=u+19c954c<@===7E:9c:&`b?073`i86=44ib694?=nk<0;66gl6;29?j70i3:17pl=bc83>0<729q/=5o510g8L1113A>=o6*lf;1:?le42900en:50;9jg0<722ch:7>5;n34e?6=3th9nl4?:483>5}#91k1=<k4H555?M21k2.hj7l<;ha0>5<<aj>1<75fc483>>od>3:17b?8a;29?xd5jj0;684?:1y'5=g=98o0D999;I65g>"dn3<;7dm<:188mf2=831bo84?::k`2?6=3f;<m7>5;|`1f`<72<0;6=u+19c954c<@===7E:9c:&`b?073`i86=44ib694?=nk<0;66gl6;29?j70i3:17pl=c883>1<729q/=5o510`8L1113A>=o6*lf;48mf5=831bo94?::k`1?6=3f;<m7>5;|`0<f<72<0;6=u+19c954c<@===7E:9c:&`b?553`i86=44ib694?=nk<0;66gl6;29?j70i3:17pl<2083>7<729q/=5o510:8L1113A>=o6*lf;3b?le42900c<9n:188yg56n3:1>7>50z&2<d<6911C8:84H54`?!ea28k0en=50;9l52g=831vn>?k:181>5<7s-;3m7?>8:J733=O<?i0(nh51`9jg6<722e:;l4?::a74d=8381<7>t$0:b>47?3A><:6F;6b9'gc<6i2ch?7>5;n34e?6=3th8=44?:383>5}#91k1=<64H555?M21k2.hj7?n;ha0>5<<g8=j6=44}c123?6=:3:1<v*>8`825==O<><0D98l;%ae>4g<aj91<75`16c94?=zj:;>6=4=:183!7?i3;:46F;779K03e<,jl1=l5fc283>>i6?h0;66sm30194?4=83:p(<6n:03;?M20>2B?:n5+cg82e>od;3:17b?8a;29?xd4980;6?4?:1y'5=g=9820D999;I65g>"dn3;j7dm<:188k41f2900qo=j5;296?6=8r.:4l4>199K020<@=<h7)mi:0c8mf5=831d=:o50;9~f6c429096=4?{%3;e?7602B?;;5G47a8 f`=9h1bo>4?::m23d<722wi?h?50;094?6|,82j6<?7;I642>N3>j1/ok4>a:k`7?6=3f;<m7>5;|`0`c<72;0;6=u+19c954><@===7E:9c:&`b?7f3`i86=44o05b>5<<uk9oh7>52;294~"60h0:=55G4648L10d3-im6<o4ib194?=h9>k1<75rb2fa>5<5290;w)?7a;32<>N3??1C8;m4$bd95d=nk:0;66a>7`83>>{e;m31<7<50;2x 4>f28;37E:86:J72f=#ko0:m6gl3;29?j70i3:17pl<d683>7<729q/=5o510:8L1113A>=o6*lf;3b?le42900c<9n:188yg5c=3:1>7>50z&2<d<6911C8:84H54`?!ea28k0en=50;9l52g=831vn><l:181>5<7s-;3m7?>8:J733=O<?i0(nh51`9jg6<722e:;l4?::a7c6=8381<7>t$0:b>47?3A><:6F;6b9'gc<6i2ch?7>5;n34e?6=3th9o>4?:483>5}#91k1=<k4H555?M21k2.hj7==;ha0>5<<aj>1<75fc483>>od>3:17b?8a;29?xd5jm0;684?:1y'5=g=98o0D999;I65g>"dn3hn7dm<:188mf2=831bo84?::k`2?6=3f;<m7>5;|`1ef<72<0;6=u+19c954c<@===7E:9c:&`b?553`i86=44ib694?=nk<0;66gl6;29?j70i3:17pl=b983>0<729q/=5o510g8L1113A>=o6*lf;0e?le42900en:50;9jg0<722ch:7>5;n34e?6=3th9ol4?:483>5}#91k1=<k4H555?M21k2.hj7==;ha0>5<<aj>1<75fc483>>od>3:17b?8a;29?xd5jo0;684?:1y'5=g=98o0D999;I65g>"dn3997dm<:188mf2=831bo84?::k`2?6=3f;<m7>5;|`1g=<72<0;6=u+19c954c<@===7E:9c:&`b?d33`i86=44ib694?=nk<0;66gl6;29?j70i3:17pl<8c83>6<729q/=5o510;8L1113A>=o6*lf;13?le42900en:50;9l52g=831vn>m9:186>5<7s-;3m7?>e:J733=O<?i0(nh52b9jg6<722ch87>5;ha6>5<<aj<1<75`16c94?=zj:i<6=4::183!7?i3;:i6F;779K03e<,jl1>n5fc283>>od<3:17dm::188mf0=831d=:o50;9~f7e1290>6=4?{%3;e?76m2B?;;5G47a8 f`=;11bo>4?::k`0?6=3`i>6=44ib494?=h9>k1<75rb3a3>5<2290;w)?7a;32a>N3??1C8;m4$bd96c=nk:0;66gl4;29?le22900en850;9l52g=831vn>6n:186>5<7s-;3m7?>e:J733=O<?i0(nh5339jg6<722ch87>5;ha6>5<<aj<1<75`16c94?=zj:2n6=4=:183!7?i3;:>6F;779K03e<aj81<75`16c94?=zj=?:6=494;294~"60h0:4?5G4648L10d3S?86lu6:`820?7228n1=h4>6;3e>41=:90v(<>j:59'55`=<2.h;7:4$b:90>"d13>0(no54:&`f?2<,ji186*>8780?!7??390(i>54:&g5?2<,m8186*k3;68 a2=<2.o97:4$e490>"c?3>0(i654:&g=?2<,mk186*kb;68 ae=<2.oh7:4$eg90>"cn3>0(h>54:&f5?2<,l8186*j3;68 `2=<2.n97:4$d490>"b?3>0(h654:&f=?2<,lk186*jb;68 `e=<2.nh7:4$dg90>"bn3>0(k>54:&e5?2<,o8186*i3;68 c2=<2.m97:4$g490>"a?3>0(k654:&e=?2<,ok186*ib;68 ce=<2.mh7:4$gg90>"an3>0(<>?:59'557=<2.:<?4;;%337?2<,8:?695+11790>"68?0?7)??7;68 46?2=1/==754:&24d<33-;;n7:4$02`>1=#99n186*;728734=#km0?7)?74;34=>"699087)?>1;18 1152==:7)mj:59j1<<722c>m7>5;h`6>5<<ak<1<75f19:94?=n9131<75f47d94?=n<>:1<75f4583>!70n3>87c?8e;28?l25290/=:h5429m52c=921b8<4?:%34b?243g;<i7<4;h63>5<#9>l18>5a16g97>=n;o0;6)?8f;60?k70m3>07d=j:18'52`=<:1e=:k55:9j7a<72-;<j7:<;o34a?0<3`9h6=4+16d906=i9>o1;65f3c83>!70n3>87c?8e;:8?l5f290/=:h5429m52c=121b8k4?:%34b?2b3g;<i7>4;h6g>5<#9>l18h5a16g95>=n<j0;6)?8f;6f?k70m3807d:m:18'52`=<l1e=:k53:9j0d<72-;<j7:j;o34a?2<3`>26=4+16d90`=i9>o1965f4983>!70n3>n7c?8e;48?l20290/=:h54d9m52c=?21b8;4?:%34b?2b3g;<i764;h66>5<#9>l18h5a16g9=>=n>00;6)?8f;4;?k70m3:07d88:18'52`=>11e=:k51:9j23<72-;<j787;o34a?4<3`<>6=4+16d92==i9>o1?65f6583>!70n3<37c?8e;68?l04290/=:h5699m52c==21b;?4?:%34b?0?3g;<i784;h52>5<#9>l1:55a16g93>=n?90;6)?8f;4;?k70m3207d8i:18'52`=>11e=:k59:9j2`<72-;<j787;o34a?g<3`<o6=4+16d92==i9>o1n65f6b83>!70n3<37c?8e;a8?l0e290/=:h5699m52c=l21b:l4?:%34b?0?3g;<i7k4;h41>5<#9>l1:55a16g9b>=n?h0;6)?8f;5:?k70m3:07d97:18'52`=?01e=:k51:9j32<72-;<j796;o34a?4<3`==6=4+16d93<=i9>o1?65f7483>!70n3=27c?8e;68?l13290/=:h5789m52c==21b4>4?:%34b?1>3g;<i784;h:1>5<#9>l1;45a16g93>=n080;6)?8f;5:?k70m3207d6?:18'52`=?01e=:k59:9j3c<72-;<j796;o34a?g<3`=n6=4+16d93<=i9>o1n65f7e83>!70n3=27c?8e;a8?l1d290/=:h5789m52c=l21b;o4?:%34b?1>3g;<i7k4;h50>5<#9>l1;45a16g9b>=n0?0;6)?8f;:6?k70m3:07d6;:18'52`=0<1e=:k51:9j<<<72-;<j767;o34a?6<3`2<6=4+16d9<==i9>o1=65`9083>!70n33;7c?8e;28?j>a290/=:h5919m52c=921d4h4?:%34b??73g;<i7<4;n:g>5<#9>l15=5a16g97>=h0j0;6)?8f;;3?k70m3>07b6m:18'52`=191e=:k55:9l=d<72-;<j77?;o34a?0<3f326=4+16d9=5=i9>o1;65`9983>!70n33;7c?8e;:8?j?0290/=:h5919m52c=121d5;4?:%34b??73g;<i7o4;n;6>5<#9>l15=5a16g9f>=h1=0;6)?8f;;3?k70m3i07b7<:18'52`=191e=:k5d:9l=7<72-;<j77?;o34a?c<3f2j6=4+16d9=5=i9>o1j65`ad83>!70n3ko7c?8e;28?jgd290/=:h5ae9m52c=921dm?4?:%34b?g63g;<i7>4;nc3>5<#9>l1m<5a16g95>=h1o0;6)?8f;c2?k70m3807b7j:18'52`=i81e=:k53:9l=a<72-;<j7o>;o34a?2<3f3h6=4+16d9e4=i9>o1965`ac83>!70n3k:7c?8e;48?jgf290/=:h5a09m52c=?21dm44?:%34b?g63g;<i764;nc;>5<#9>l1m<5a16g9=>=hi>0;6)?8f;c2?k70m3k07bo9:18'52`=i81e=:k5b:9le0<72-;<j7o>;o34a?e<3fk?6=4+16d9e4=i9>o1h65`a283>!70n3k:7c?8e;g8?j?e290/=:h5a09m52c=n21dn<4?:%34b?d73g;<i7>4;nce>5<#9>l1n=5a16g95>=zj;in6=4;:183!7?i3;:m6F;779K03e<,jl1>85fc283>>od<3:17b?>5;29?j70i3:17pl=b483>0<729q/=5o510a8L1113A>=o6*lf;0f?le42900en:50;9jg0<722e:=84?::m23d<722wi>nl50;794?6|,82j6<?l;I642>N3>j1/ok4<1:k`7?6=3`i?6=44ib794?=h98?1<75`16c94?=zj;h=6=49:183!7?i3;:j6F;779K03e<,jl1=o5fc283>>od<3:17dm::188mf0=831d=<;50;9l52g=831vn?m;:187>5<7s-;3m7?>d:J733=O<?i0(nh5309jg6<722ch87>5;ha6>5<<g8;>6=44}c0`1?6==3:1<v*>8`8265=O<><0D98l;%ae>64<aj91<75fc583>>od=3:17dm9:188k4722900qo=l8;291?6=8r.:4l4>1b9K020<@=<h7)mi:238mf5=831bo94?::k`1?6=3f;:97>5;n34e?6=3th9o<4?:483>5}#91k1=?>4H555?M21k2.hj7==;ha0>5<<aj>1<75fc483>>od>3:17b?>5;29?xd5k>0;6;4?:1y'5=g=98l0D999;I65g>"dn3?0en=50;9jg1<722ch97>5;ha5>5<<g8;>6=44o05b>5<<uz??>7>56z\607=::m;1o8522e:9g3=::m>1o;522bf9g0=::ji1o85rs5:f>5<1:rT?5=5Q46d8Z02f3W??46P;7d9]113<V=o>7S;;9:\7a3=Y=920R96:;_6;`>X30j1U85l4^5:b?[2?12T?455Q4958Z1>13W>386P;829>021=k9168;<55g9>001==o168;?55g9>036==o1688h55g9>03g==o168;755g9>6<c=91:01?7i:0:3?84f93;3<63=a382<5=::h91=5>4=3c7>4>7348j97?70:?1e3<60916>l95192897g?282;70<n0;3;4>;5m;0==63=e0855>;5m90==63=dg855>;5ll0==63=f4855>;5n=0==63=f2855>;5n;0==63=f0855>;4=m0==63<5b855>;4=k0==63<5`855>;4=00==63<71855>;4>o0==63<6d855>;4>m0==63<6b855>;4:90==63<1d855>;49j0==63<1`855>;4910==63<17855>;49=0==63<13855>;4990==63<e5855>;4m;0==63<e1855>;4ll0==63<db855>;4lh0==63<d9855>;4l?0==63<d5855>;3=80:45524439026<5=?:6:o4=572>2><5=?:6:94=572>20<5=?:6:;4=572>22<5=?:65=4=572>=4<5=?:65?4=572>=6<5=?:6:h4=572>2c<5=?:6:j4=572>2e<5=?:6:l4=572>25<5=?:6574=572>=1<uz??87>53z\601=:<?81=5>4=574>4>73ty?hn4?:3y]0ae<5;n=6<6>;|q626<72:qU9;=4=2a:>f2<5:2;6n;4}r71e?6=>>qU9?o4=57:>02<5=?368:4=574>02<5=<:68:4=543>02<5=?m68:4=221>02<5;3n68:4=3;e>02<5;k:68:4=3c1>02<5;k868:4=3c7>02<5;k>68:4=3c5>02<5;k<68:4=3c;>02<5;k;68:4=33g>02<5;;h68:4=33a>02<5;;j68:4=33:>02<5;;368:4=334>02<5;;=68:4=336>02<5;;?68:4=34g>02<5;<h68:4=34a>02<5;<j68:4=34:>02<5;<368:4=344>02<5;<=68:4=346>02<5;<?68:4=37:>02<5;?368:4=374>02<5;?=68:4=376>02<5;??68:4=370>02<5;?968:4=372>02<5;?;68:4=0f;>02<58n<68:4=0f5>02<58n>68:4=0f7>02<58n868:4=0f1>02<58n:68:4=0f3>02<58im68:4=263>02<5:9m68:4=21g>02<5:9h68:4=21f>02<5:9i68:4=21b>02<5:9368:4=214>02<5:9268:4=277>02<5:?868:4=271>02<5:?:68:4=273>02<5:>m68:4=26f>02<5:>o68:4=26`>02<5:>i68:4=3f1>02<5;im68:4=3f:>02<5;n=68:4=3f6>02<5=9=68:4=516>02<5=9?68:4=510>02<5=9968:4=512>02<5=9;68:4=50e>02<5=9n68:4=51g>02<5=9h68:4=51a>02<5=9j68:4=51:>02<5=9368:4=514>02<5=8n68:4=50g>02<5=?:68o4}r6f6?6=:rT?i?5236g95=7<uz??n7>55`y]11d<5=<?68:4=541>02<5=<868:4=54b>02<5=<268:4=25f>02<5:=o68:4=2`3>02<5:h:68:4=2`0>02<5:h?68:4=2`6>02<5:h=68:4=2`4>02<5:h368:4=2`:>02<5:hj68:4=2`1>02<58h;68:4=0ce>02<58kn68:4=0cg>02<58kh68:4=0ca>02<58kj68:4=0c:>02<58k368:4=0c4>02<5;:;68:4=0de>02<58ln68:4=0dg>02<58lh68:4=0da>02<58lj68:4=0d:>02<58l368:4=0d4>02<58oh68:4=0ga>02<58oj68:4=0g:>02<58o368:4=0g4>02<58o=68:4=0g6>02<58o?68:4=0g0>02<5;>>68:4=367>02<5;>868:4=361>02<5;>:68:4=363>02<5;9m68:4=31f>02<5;9o68:4=31`>02<5=:?68:4=520>02<5=::68:4=523>02<5=:968:4=2de>02<5:ln68:4=2d`>02<5:li68:4=2dg>02<5=;:68:4=52e>02<5=;;68:4=531>02<5=;868:4=535>02<5=;?68:4=536>02<5=;<68:4=53;>02<5=8h68:4=50a>02<5=8j68:4=50:>02<5=8368:4=504>02<5=8=68:4=506>02<5=8?68:4=500>02<5=?:6874}r76=?6=:rT>8h523c095=7<uz?=>7>52z\613=:;kk1=5?4}r755?6=:rT>98523c;95=7<uz?=<7>52z\611=:;k21=5?4}r76b?6=:rT>9>523c595=7<uz?>i7>52z\617=:;k<1=5?4}r76`?6=:rT>9<523c795=7<uz?>o7>52z\615=:;k>1=5?4}r76f?6=:rT>8k523c195=7<uz?>m7>52z\60a=:;k;1=5?4}r763?6=:rT>8n523c295=7<uz>o=7>52z\7fc=:<:<1=5?4}r6`b?6=:rT?nh5242795=7<uz>hi7>52z\7fa=:<:>1=5?4}r6``?6=:rT?nn5242195=7<uz>ho7>52z\7fg=:<:81=5?4}r6`f?6=:rT?nl5242395=7<uz>hm7>52z\7f<=:<::1=5?4}r6`=?6=:rT?n55243d95=7<uz>om7>52z\7g2=:<:o1=5?4}r6g=?6=:rT?o;5242f95=7<uz>o47>52z\7g0=:<:i1=5?4}r6g3?6=:rT?o95242`95=7<uz>o:7>52z\7g6=:<:k1=5?4}r6g1?6=:rT?o?5242;95=7<uz>o87>52z\7g4=:<:21=5?4}r6g7?6=:rT?o=5242595=7<uz>o>7>52z\7f2=:<;o1=5?4}r6`<?6=:rT?n;5243f95=7<uz?847>52z\66a=::h:1=5?4}r775?6=:rT>?8522`:95=7<uz??<7>52z\671=::h=1=5?4}r70b?6=:rT>?>522`495=7<uz?8i7>52z\677=::h?1=5?4}r70`?6=:rT>?<522`695=7<uz?8o7>52z\675=::h91=5?4}r70f?6=:rT>>k522`095=7<uz?8m7>52z\66`=::h;1=5?4}r70=?6=:rT>>n5228d95=7<uz?8:7>52z\66g=::0o1=5?4}r6bg?6=:rT?5l524439<3=z{=kj6=4={_6:=>;3=80=56s|4`;94?4|V=3370::1;44?xu3i10;6?uQ485891362?<0q~:n7;296~X31?1688?5649~w1g12909wS:65:?714<1<2wx8l;50;0xZ1?334>>=78<;|q7e1<72;qU84=4=572>24<uz>i97>52z\7e7=:<<;1;<5rs5`7>5<5sW>j=63;508;0>{t<k91<7<t^5c3?82293=;7p};b383>7}Y<0l019;>:7d8yv2e93:1>vP;9d9>007=>l1v9l?:181[2>l27?9<49d:p0d`=838pR97l;<665?0d3ty?mh4?:3y]0<d<5=?:6;l4}r6b`?6=:rT?5?5244392d=z{=k86=4={_6:5>;3=80=>6s|13794?c|5==36<9l;<0;4?3?3482?7;7;<1:6?3?349j97;7;<0ga?3?348m=7;7;<16=?3?349=o7;7;<116?3?349:<7;7;<1f2?3?349o87;7;<665?d23ty?954?:2y>00?==o168865193891302<<0q~::9;296~;3=00:4<5244`9g6=z{=<86=4<{<650?3a34>=>7;9;<657?7?92wx8;:50;0x9103282:70:96;a0?xu3=>0;6>u244:91c=:<<=1=5?4=57a>f2<uz>=>7>53z?727<608168;=55g9>030=k=1v9;n:18782193;3<63;6182<5=:<<l1=5>4=57a>41f3ty?9h4?:3;x9106282:70=?2;3;4>;51l0>n63=9g86f>;5i80>n63=a386f>;5i:0>n63=a586f>;5i<0>n63=a786f>;5i>0>n63=a986f>;5i90>n63<4186f>;4;o0>n63<3e86f>;4;j0>n63<3d86f>;4;k0>n63<3`86f>;4;10>n63<3682<5=:;:319o5234691g=:;<919o5234091g=:;<;19o5234291g=:;=l19o5235g91g=:;=n19o5235a91g=:;=h19o522e091g=::jl19o522e;91g=::m<1=5>4=3f6>4>7348jm7m;;<0a2?e3348h;7m<;|q71a<72;3p198?:0:2?846l3?i70<>c;7a?846j3?i70<>a;7a?84613?i70<>8;7a?846?3?i70<>6;7a?846=3?i70<>4;7a?841l3?i70<9c;7a?841j3?i70<9a;7a?84113?i70<98;7a?841?3?i70<96;7a?841=3?i70<94;7a?84213?i70<:8;7a?842?3?i70<:6;7a?842=3?i70<:4;7a?842;3?i70<:2;7a?84293?i70<:0;7a?87c03?i70?k7;7a?87c>3?i70?k5;7a?87c<3?i70?k3;7a?87c:3?i70?k1;7a?87c83?i70?lf;7a?xu3=j0;6<;t=57e>4>634>8:7;m;<601?3e34>887;m;<607?3e34>8>7;m;<605?3e34>8<7;m;<61b?3e34>8i7;m;<60`?3e34>8o7;m;<60f?3e34>8m7;m;<60=?3e34>847;m;<603?3e34>9i7;m;<61`?3e34>>?7m;;<665?7?12wx8;;50;1x910f282;70:99;3;4>;3>?0:;l5rs54;>5<5kr7?:l4>809>72c=91:01>9k:0:3?85e83?i70=m1;7a?85e;3?i70=m4;7a?85e=3?i70=m6;7a?85e?3?i70=m8;7a?85e13?i70=ma;7a?85e:3?i70:?4;7a?827;3?i70:?1;7a?82783?i70:?2;7a?85an3?i70=ie;7a?85ak3;3<63<fc86f>;4nm0>n63;1086f>;38o0:4=5240291g=:<8819o5240191g=:<8<19o5240691g=:<8?19o5240591g=:<8219o5243a91g=:<;h19o5243c91g=:<;319o5243:91g=:<;=19o5243491g=:<;?19o5243691g=:<;919o5rs544>5<51r7?:44>809>5g6==k16=lh55c9>5dc==k16=lj55c9>5de==k16=ll55c9>5dg==k16=l755c9>5d>==k16=l955c9>656==k16=kh55c9>5cc==k16=kj55c9>5ce==k16=kl55c9>5cg==k16=k755c9>5c>==k16=k955c9>5`e==k16=hl55c9>5`g==k16=h755c9>5`>==k16=h955c9>5`0==k16=h;55c9>5`2==k16=h=55c9>613==k16>9:55c9>615==k16>9<55c9>617==k16>9>55c9>66`==k16>>k55c9>66b==k16>>m55c9~w6642909w0=?2;7e?857<3;<m6s|31094?5|5::96<6>;<0g0?e4348ho7m<;|q1e<<72;q6>4k55g9>6dg=9>k0q~<nd;296~;51o0>j63=ad823d=z{;km6=4={<0b5?3a348i<7?8a:p6g7=838p1?o=:4d897d528=j7p}=b283>7}::h919k522c6952g<uz8i;7>52z?1e1<2n279n44>7`9~w7df2909w0<n5;7e?84ei3;<m6s|2ca94?4|5;k=68h4=3``>41f3ty9nh4?:3y>6d1==o16>ok516c8yv4d:3:1>v3=a986b>;5k10:;l5rs3ca>5<5s48j<7;i;<0bg?70i2wx?:h50;1x961b2<l01>9k:4d896>728=j7p}<7e83>6}:;>n1=5?4=2a:>f5<5:2;6n:4}r1bb?6=:r78n=4:f:?0e0<6?h1v>lm:18185e93?m70=7e;34e>{t;ki1<7<t=2`0>0`<5:2m6<9n;|q0fa<72;q6?o:55g9>7<6=9>k0q~=me;296~;4j<0>j63<90823d=z{:hm6=4={<1a2?3a349h<7?8a:p7f7=838p1>l8:4d896e528=j7p}<c283>7}:;k219k523b6952g<uz9h97>52z?0f<<2n278o;4>7`9~w6e02909w0=ma;7e?85d?3;<m6s|39c94?4|5:h968h4=2:b>41f3ty9<l4?:4y>6=?=k:16>5>5609>642=91;01?hm:b4897c?2j<0q~=;1;291~;5000h863<4c82<4=:9091o9522d:9g0=:<<;1885rs3::>5<4s48357?8a:?1<5<60:16>4=51068yv4?83:1?v3=81823d=::1;1955228691==z{;3o6=4={<0:7?70i279ml4l6:p65d=83?p1?6n:b1897>62?;01??::0:2?84aj3i?70<j8;a7?xu4<;0;6;u229c9g1=:;=i1=5?4=0;0>f5<58396n:4=3g;>f5<5=?:6984}r0;e?6=;r794l4>7`9>6=7=91901?7;:037?xu5080;6>u2293952g<5;296864=3;6>0><uz8<j7>58z?1=1<6?h16>lk5c29>6g6=k<16>o<5c79>6g>=k:16>o;5c29>6g0=k?16>n?5c29~w76d290>w0<7b;a0?84?:3<:70<>6;3;5>;5nj0h:63=e88`2>{t;=91<78t=3:a>f2<5:>o6<6>;<3:6?e434;2=7m;;<0f=?e234>>=7:8;|q1<g<72:q6>5l516c897>5282870<65;320>{t:181<7=t=3:1>41f3483?7;7;<0:2?3?3ty9;o4?:8y>6<3=9>k01?l?:b6897d52j901?m<:b7897d?2j>01?l::b6897e32j901?m::b1897e62j>0q~<?d;291~;50j0h?63=82855>;59>0:4<522ga9g1=::l31o95rs267>5<1s483o7m;;<17a?7?927:5<4l3:?2=5<d<279i44l3:?714<302wx>5m50;1x97>d28=j70<73;3;7>;51?0:=95rs3:0>5<4s483?7?8a:?1<1<202795:4:8:p62e=832p1?79:05b?84e:3i?70<l3;a7?84e03i>70<m5;a6?84d<3i?70<l5;a7?84d93i>7p}=0d83>0}::1n1o>52296924=::821=5?4=3dg>f0<5;oj6n84}r171?6=>r794i4l4:?00c<60816=4>5c29>5=`=k=16>ho5c49>007=<01v?6k:18084?l3;<m63=8582<6=::0=1=<:4}r0;0?6=;r79494>7`9>6=3==116>465599~w71c2902w0<67;34e>;5j=0h863=bc8`1>;5k:0h?63=be8`1>;5j10h:63=c58`1>;5k<0h963=c08`2>{t:9l1<7;t=3:f>f5<5;2>6;?4=33:>4>6348mh7m;;<0fe?e33ty88;4?:7y>6=c=k=16?8>5193894>a2j901<6j:b6897cf2j9019;>:5c8yv4?m3:1?v3=8d823d=::1?1=5=4=3;;>4733ty9484?:2y>6=3=9>k01?69:4:897?>2<20q~<8e;29=~;5110:;l522c;9g6=::kh1o9522cc9g1=::kn1o9522bc9g1=::j:1o8522b`9g0=::j?1o;5rs333>5<2s483j7m<;<0;2?06348:m7?71:?1b`<d>279io4l6:p711=83<p1?6i:b689636282:70?7e;a0?87?l3i?70<jb;a6?82293>i7p}=8g83>6}::1l1=:o4=3:5>4>4348257?>4:p6=0=839p1?69:05b?84??3?370<6a;7;?xu5?>0;6:u228;952g<5;hj6n=4=3`g>f5<5;ij6n=4=3`e>f2<5;i;6n:4=3aa>f2<uz8:=7>55z?1=5<d;2794:491:?15g<60816>kk5c59>6`d=k=1v>:7:18584>83i?70=:2;3;5>;60m0h?63>8b8`0>;5mk0h?63;5087g>{t:0:1<7=t=3;3>41f3483;7?73:?1=d<69=1v?68:18084??3;<m63=8986<>;51k0>46s|26:94?0|5;3j6<9n;<0ag?e4348h57m<;<0ab?e4348h<7m<;<0`f?e43ty9=?4?:4y>6<7=k:16>565609>64e=91;01?hi:b4897cd2j<0q~=;9;292~;5180h863<5282<4=:91i1o>5219`9g1=::li1o85244390a=z{;3:6=4<{<0:5?70i279454>829>6<d=98>0q~<78;296~;5010:;l5228a91==z{;=26=4:{<0:f?70i279nh4l3:?1g<<d<279mn4l3:?1g3<d<2wx><=50;6x97?52j901??k:0:2?84an3i?70<jc;a7?xu4<h0;6;u22809g1=:9m219k5234695=7<582i6n=4=3g`>f5<5=?:69h4}r0:6?6=:r795?4>7`9>6<e=98>0q~<8a;290~;51j0:;l522b;9g0=::hi1o9522b:9g6=z{=;26=4:{<1:f?e43492>78>;<617?7?927:5n4l4:?714<4i2wx=4j50;6x96?e2j>01<o8:0:2?850>3i=70=93;a5?xu41k0;6>u238`952g<5:396<6<;<1b1?76<2wx?4<50;1x96?528=j70=63;7;?85f>3?37p}>9d83>1}:;0i1o>521`:95=7<5:==6n:4=240>f2<uz>:m7>56z?0=f<d<2785>491:?761<60816=4m5c29>5<d=k=1688?53c9~w6?d2908w0=6c;34e>;41:0:4>523`49542<uz92?7>53z?0=6<6?h16?4:5599>7d1==11v>66:18585f>3;<m63<8g8`0>;4190h963<908`2>;40j0h?63<8d8`6>{t90l1<7:t=2;g>f5<58k26<6>;<143?e1349=87m9;|q75g<72?q6?4j5c59>7<2=>8168?;5193894?e2j901<7n:b6891362:i0q~=6d;297~;41m0:;l5238695=5<5:k<6<?;;|q0=1<72:q6?4:516c896?22<201>o7:4:8yv5?=3:19v3<a6823d=:;1l1o>523829g6=:;0;1o>5239a9g1=z{8k;6=4;{<1:a?e434;jm7?71:?032<d<278:94l4:p04e=83<p1>7j:b6896?22?;019<9:0:2?87>i3i870?69;a7?822939o7p}<9d83>6}:;0o1=:o4=2;6>4>4349j47?>4:p7<3=839p1>7::05b?85>>3?370=n9;7;?xu40?0;69u23`:952g<5:3;6n:4=2;2>f3<5:2h6n;4}r3b5?6=<r785k4l3:?2eg<60816?:65c79>733=k?1v9?k:18585>n3i?70=66;42?825?3;3=63>988`7>;6110h863;5080a>{t;0l1<7=t=2;e>41f3492:7?73:?0e<<69=1v>79:18085>>3;<m63<9686<>;4ih0>46s|39594?5|5:k26<9n;<1:5?e33493o7m9;|q75`<72?q6?l>5c29>7<1=>8168?65193894??2j901<78:b6891362:l0q~?n2;290~;4i90h863>ab82<4=:;>21o9523779g1=z{:k;6=4<{<1b4?70i2785:4>829>7dg=98>0q~=67;297~;41>0:;l5238:91==:;hh1955rs2:;>5<1s49jm7?8a:?0g5<d;278o?4l3:?0g1<d;2784o4l3:?0g=<d;2wx8<h50;4x96g62j901>77:738914>282:70?67;a0?87>>3i?70::1;63?xu6i:0;69u23`39g1=:9hn1=5?4=25:>f0<5:<=6n84}r1b5?6=;r78m<4>7`9>7<>=91901>om:037?xu4110;6>u238:952g<5:326864=2c`>0><uz93=7>55z?0eg<6?h16?n<5c59>7f2=k<16?5l5c59>7f>=k=1v9<?:18585f:3i870=69;42?825i3;3=63>978`7>;61<0h863;50875>{t9h>1<7:t=2c1>f2<58kn6<6>;<14=?e3349=:7m;;|q0e7<72:q6?l<516c896?>282870=nc;320>{t;031<7=t=2;:>41f3492m7;7;<1b`?3?3ty84?4?:5y>7de=9>k01>m;:b6896e12j901>m7:b78yv2593:1:v3<a28`7>;41h0==63;2c82<4=:90?1o>521869g1=:<<;18?5rs0c6>5<3s49j?7m;;<3bb?7?9278;l4l6:?022<d>2wx?l=50;1x96g428=j70=6a;3;7>;4im0:=95rs2;b>5<5s492m7?8a:?0e`<202wx?5=50;6x96gc28=j70=l6;a7?85d?3i870=7a;a0?xu3:;0;68u23`69g6=::=?19k5243a95=7<583?6n=4=572>12<uz;j:7>54z?0e1<d<27:n=4>809>72g=k=16?;95c59~w6g32909w0=n4;34e>;4il0:=95rs2:7>5<4s49ji7?8a:?0g2<d<2784l4l4:p6ab=838p1?k=:4:897c628=j7p}=e683>7}::l81=5=4=3g`>41f3ty8<=4?:3y>6`4=9>k01>>;:b78yv4ck3:1>v3=e086<>;5m90:;l5rs3g5>5<5s48n=7?73:?1ag<6?h1v?jm:18184b83?370<kf;34e>{t:l?1<7<t=3g3>4>4348nm7?8a:p6ag=838p1?ji:4:897bb28=j7p}=e583>7}::ml1=5=4=3g:>41f3ty9i>4?:3y>6ac=91901?k7:05b?xu5n90;6?u22g791==::o>1=:o4}r0ee?6=:r79j84>829>6c`=9>k0q~=?1;296~;5n<0:;l523169g6=z{;om6=4={<0e0?3?348m?7?8a:p6c?=838p1?h;:0:0?84am3;<m6s|2dg94?4|5;l86864=3d1>41f3ty9j54?:3y>6c5=91901?hk:05b?xu5mm0;6?u22g091==::o;1=:o4}r0e3?6=:r79j?4>829>6ce=9>k0q~<i6;296~;5n80:4>522g`952g<uz9>47>52z?01a<202789n4>7`9~w6052909w0=:d;3;7>;4>>0:;l5rs25a>5<5s49>h7?8a:?0<5<d;2wx?8950;0x963d2<201>;m:05b?xu4>80;6?u234a95=5<5:<=6<9n;|q013<72;q6?8l5599>70g=9>k0q~=90;296~;4=k0:4>52377952g<uz9>97>52z?01d<20278944>7`9~w63a2909w0=:a;3;7>;4>=0:;l5rs27f>5<5s49>57?73:?026<6?h1v>8m:18185083?370=9f;34e>{t;>?1<7<t=253>4>4349<m7?8a:p72e=838p1>9?:05b?85?83i=7p}<6`83>7}:;?l1955237g952g<uz9<87>52z?02c<60:16?:7516c8yv5113:1>v3<6d86<>;4>m0:;l5rs250>5<5s49=i7?73:?03=<6?h1v>87:181851l3?370=9c;34e>{t;>81<7<t=24g>4>4349<;7?8a:p727=838p1>8l:0:0?850>3;<m6s|1g494?3|58h;68h4=323>4>634;i>7m;;<3a0?e434;i:7m:;|q2f4<72;q6=lh55g9>5g4=9>k0q~?m3;296~;6il0>j63>b5823d=z{8h>6=49{<3b`?3a34;i:7?8a:?2f=<d<27:nl4l3:?2ff<d=27:nh4l6:p5g1=838p1<ol:4d894d?28=j7p}>b883>7}:9hh19k521cc952g<uz;in7>52z?2ed<2n27:nn4>7`9~w4dc2909w0?n9;7e?87en3;<m6s|1b394?4|58k368h4=0a1>41f3ty:o>4?:3y>5d1==o16=n:516c8yv41;3:19v3=1e86b>;5>m0:4<5220d9g1=::;;1o>522319g0=z{;;n6=4={<02g?3a348:j7?8a:p676=838p1??m:4d8974628=j7p}=2383>3}::8k19k52231952g<5;8>6n:4=304>f5<5;826n;4=30a>f0<uz8987>52z?15<<2n279>84>7`9~w7412909w0<>8;7e?845?3;<m6s|23:94?4|5;;<68h4=30:>41f3ty9>l4?:3y>640==o16>?m516c8yv45m3:1>v3=1486b>;5:o0:;l5rs313>5<5s48:87;i;<005?70i2wx>9h50;0x970c2<l01?;6:0:2?xu5<l0;6?u227a91c=::<21=5?4}r056?6=<r79:n4>809>64`=k:16>??5c59>675=k?1v?:k:181841j3?m70<:7;3;5>{t:?;1<7=t=34a>4>63489=7m:;<017?e43ty98n4?:3y>63g==o16>8851938yv4183:1>v3=6`82<4=::;91o95rs36a>5<5s48=57;i;<061?7?92wx>8h50;7x970>282:70<=5;a0?845?3i?70<=9;a5?845j3i>7p}=4`83>7}::?219k5224695=7<uz8>i7>54z?12=<60816>?95c49>67?=k:16>?l5c59~w72>2909w0<97;7e?842;3;3=6s|24f94?5|5;<<6<6>;<01=?e33489n7m<;|q10=<72;q6>;855g9>604=91;0q~<:c;290~;5>?0:4<5223a9g6=::;l1o9522239g0=z{;><6=4={<051?3a348>=7?71:p60d=839p1?8::0:2?845n3i870<<1;a7?xu5<?0;6?u227691c=::<:1=5?4}r06e?6=:r79:94>809>667=k:1v<k=:18184783?m70?jc;3;5>{t9l;1<7<t=0de>0`<58oi6<6>;|q2b0<72=q6=kh5193894d52j901<l;:b6894d12j<0q~?j0;296~;6nl0>j63>e`82<4=z{8l?6=4<{<3ea?7?927:n94l5:?2f3<d;2wx=ih50;0x94`c2<l01<k6:0:2?xu6n:0;6?u21gf95=7<58h=6n:4}r3ga?6=:r7:jn4:f:?2a=<6081v<h=:18687ak3;3=63>b98`7>;6jh0h863>bb8`2>;6jl0h96s|1ef94?4|58li68h4=0g4>4>63ty:j<4?:5y>5cd=91;01<ln:b7894dd2j901<lj:b68yv7ck3:1>v3>f`86b>;6m?0:4<5rs0d3>5<4s4;mm7?71:?2ff<d<27:nh4l3:p5ad=838p1<h6:4d894c2282:7p}>eg83>1}:9o31=5?4=0`e>f5<58i96n:4=0a7>f3<uz;om7>52z?2b=<2n27:i94>809~w4cb2908w0?i8;3;5>;6k;0h?63>c58`0>{t9m31<7<t=0d4>0`<58o86<6>;|q2aa<72;q6=k95193894e32j90q~<<b;296~;5=00>j63=4482<4=z{;9j6=4={<06<?3a348?87?71:p66?=838p1?;8:4d89724282:7p}=3983>7}::<<19k5225095=7<uz88;7>52z?110<2n2798<4>809~w7512909w0<:4;7e?84383;3=6s|22794?4|5;?868h4=31e>4>63ty9?94?:3y>604==o16>>k51938yv44;3:1>v3=5086b>;5;m0:4<5rs311>5<5s48><7;i;<00g?7?92wx=nk50;0x94cd2<l01<j7:0:2?xu6km0;6?u21d`91c=:9m=1=5?4}r3`g?6=:r7:il4:f:?2`3<6081v<mm:18187b13?m70?k5;3;5>{t9jk1<7<t=0g;>0`<58n?6<6>;|q2g<<72;q6=h955g9>5a5=91;0q~?l8;296~;6m?0>j63>d382<4=z{8i<6=4={<3f1?3a34;o=7?71:p5f0=838p1<k;:4d894b7282:7p}>c483>7}:9l919k521bd95=7<uz8;=7>52z?2`2<2n27:4o4>7`9~w7652909w0?k6;7e?87?k3;<m6s|21194?4|58n>68h4=0:g>41f3ty9<94?:3y>5a2==o16=5k516c8yv47=3:1>v3>d286b>;60o0:;l5rs325>5<5s4;o>7;i;<3:4?70i2wx>=950;0x94b62<l01<7>:05b?xu5810;6?u21e291c=:9081=:o4}r03=?6=:r7:ok4:f:?2=6<6?h1v?8j:181843<3?m70?64;34e>{t:?l1<7<t=360>0`<583>6<9n;|q135<72;q6>9<55g9>5<0=9>k0q~<81;296~;5<80>j63>96823d=z{;=96=4={<074?3a34;247?8a:p625=838p1?=i:4d894?>28=j7p}=7583>7}:::o19k5218c952g<uz8<97>52z?17a<2n27:5o4>7`9~w7112909w0<<c;7e?87>k3;<m6s|44694?70s49?<7;9;<10b?313498h7;9;<10g?313498i7;9;<10f?313498m7;9;<10<?313498;7;9;<10=?31349>87;9;<167?31349>>7;9;<165?31349><7;9;<17b?31349?i7;9;<17`?31349?o7;9;<17f?31348ho7?8a:?716<d;278<94l4:p75`=838p1>:?:4d8964e28=j7p}<3783>1}:;=:1=5?4=277>0`<5;lm6n=4=20`>f5<uz9;i7>52z?07c<2n278>l4>7`9~w652290?w0=<f;3;5>;4=:0>j63=fg8`1>;4:80h?6s|31a94?4|5:9o68h4=20;>41f3ty8?>4?:5y>76b=91;01>;>:4d897`b2j?01>?k:b18yv57j3:1>v3<3b86b>;4:>0:;l5rs211>5<3s498o7?71:?015<2n279ji4l3:?05g<d;2wx?=j50;0x965b2<l01><6:05b?xu4;=0;69u232g95=7<5:?968h4=3df>f5<5:;m6n=4}r13e?6=:r78?o4:f:?063<6?h1v>=>:187854j3;3=63<4g86b>;5nm0h963<188`7>{t;931<7<t=21b>0`<5:8>6<9n;|q075<72=q6?>o51938962b2<l01?hl:b1896702j90q~=?7;296~;4;10>j63<22823d=z{:8n6=4;{<10<?7?92788n4:f:?1bg<d;278=>4l3:p750=838p1>=8:4d8964528=j7p}<2e83>1}:;:=1=5?4=26a>0`<5;li6n;4=232>f5<uz9;47>52z?07<<2n278>94>7`9~w64a290?w0=<9;3;5>;4<m0>j63=fb8`1>;49<0h?6s|33294?4|5:8i6864=203>41f3ty8>n4?:3y>77d=98>01><l:05b?xu49l0;6>u233c91==:;;:1955230g952g<uz99=7>53z?06d<69=16??>51918964628=j7p}<1b83>6}:;;31955230g91==:;8i1=:o4}r12b?6=;r78>44>159>74c=91901>?i:05b?xu49h0;6>u233:91==:;8i1955230c952g<uz9:h7>53z?06=<69=16?<m51918967c28=j7p}<1983>6}:;;=1955230c91==:;821=:o4}r12f?6=;r78>:4>159>74g=91901>?m:05b?xu49?0;6>u233491==:;8219552304952g<uz9:57>53z?063<69=16?<651918967>28=j7p}<1583>6}:;;?1955230491==:;8>1=:o4}r123?6=;r78>84>159>740=91901>?8:05b?xu49;0;6>u233691==:;8>19552300952g<uz9:97>53z?061<69=16?<:51918967228=j7p}<1183>6}:;;91955230091==:;8:1=:o4}r127?6=;r78>>4>159>744=91901>?<:05b?xu4980;6>u23309542<5:;;6<6<;<125?70i2wx>i=50;0x97b52<l01?j;:05b?xu5l;0;65u22e095=7<5;n:6n:4=3f;>f3<5;n?6n;4=3ag>f5<5;ih6n:4=3af>f2<5;i<6n84}r0g4?6=;r79ok4:f:?1`<<2n279h<4>7`9~w7ea2903w0<lf;3;5>;5l80h?63=d98`0>;5l=0h863=ce8`0>;5kj0h:63=cd8`7>;5k>0h96s|2e;94?2|5;n26<6>;<0be?e2348i:7m<;<0`3?e33ty9h:4?:2y>6a0==o16>i;55g9>6a>=9>k0q~<k5;296~;5l<0:4<522e:9g6=z{=?=6=4=0z?741<2>27?<>4:6:?744<2>27?<=4:6:?747<2>278jk4:6:?0b`<2>278jn4:6:?0bg<2>278ji4:6:?754<2>27?<k4:6:?755<2>27?=?4:6:?756<2>27?=;4:6:?751<2>27?=84:6:?752<2>27?=54:6:?76f<2>27?>o4:6:?76d<2>27?>44:6:?76=<2>27?>:4:6:?763<2>27?>84:6:?761<2>27?>>4:6:?0g<<6?h1688?547d8yv5c;3:1>v3;0586b>;4mo0:;l5rs2db>5<3s4>;87?71:?75=<2n278;l4l3:?0b5<d;2wx?i<50;0x91642<l01>kj:05b?xu4n00;69u241195=7<5=;<68h4=25b>f3<5:o>6n=4}r1g4?6=:r7?<<4:f:?0af<6?h1v>h8:18782793;3=63;1486b>;4?00h963<e08`7>{t;jl1<7<t=523>0`<5:oi6<9n;|q0b3<72=q68=>5193891732<l01>97:b1896ba2j90q~=k1;296~;38;0>j63<ee823d=z{:l36=4;{<636?7?927?=;4:f:?03<<d;278i>4l3:p7fc=838p1>hi:4d896cf28=j7p}<f483>1}:;ol1=5?4=530>0`<5:=36n;4=2fg>f5<uz9hh7>52z?0b`<2n278i44>7`9~w6`3290?w0=ie;3;5>;39;0>j63<768`7>;4lk0h?6s|3b`94?4|5:lh68h4=2g4>41f3ty8j?4?:5y>7ce=91;019??:4d896112j901>j8:b18yv5di3:1>v3<fc86b>;4m?0:;l5rs2d2>5<3s49mn7?71:?74c<2n278;;4l5:?0`0<d;2wx?nm50;0x96`c2<l01>k7:05b?xu4n:0;69u23gf95=7<5=;:68h4=254>f3<5:n26n=4}r1f0?6=:r78ik4:8:?0a1<6?h1v>h?:18185bn3;:863<f1823d=z{:o96=4<{<1fa?3?349n87;7;<1f6?70i2wx?h;50;1x96cb28;?70=j4;3;7>;4m<0:;l5rs2g3>5<4s49nh7;7;<1f6?3?349n<7?8a:p7`5=839p1>kk:037?85b:3;3?63<e2823d=z{:nn6=4<{<1fg?3?349n<7;7;<1ga?70i2wx?h?50;1x96cd28;?70=j0;3;7>;4m80:;l5rs2f`>5<4s49nn7;7;<1ga?3?349oo7?8a:p7a`=839p1>km:037?85cm3;3?63<dg823d=z{:nj6=4<{<1fe?3?349oo7;7;<1ge?70i2wx?ij50;1x96cf28;?70=kc;3;7>;4lm0:;l5rs2f;>5<4s49n57;7;<1ge?3?349o47?8a:p7ad=839p1>k6:037?85ci3;3?63<dc823d=z{:n=6=4<{<1f<?3?349o47;7;<1g2?70i2wx?i750;1x96c?28;?70=k8;3;7>;4l00:;l5rs2f7>5<4s49n;7;7;<1g2?3?349o87?8a:p7a1=839p1>k8:037?85c>3;3?63<d6823d=z{:n>6=4<{<1f2?76<278h94>829>7a3=9>k0q~:?7;297~;3980:4<5243791c=:;?>1o85rs526>5<4s4>;j7?71:?766<2n278:>4l5:p050=839p19??:0:2?825<3?m70=93;a0?xu3810;6>u240095=7<5=8=68h4=247>f5<uz>;57>53z?756<608168?955g9>733=k<1v9>l:180826>3;3=63;2`86b>;4>?0h?6s|41c94?5|5=;?6<6>;<61<?3a349=97m<;|q74g<72:q68<;51938914>2<l01>89:b78yv27l3:1?v3;1682<4=:<;h19k523759g0=z{=:n6=4<{<62<?7?927?>n4:f:?022<d;2wx88;50;30824>3?=70:<5;75?824<3?=70:<3;75?824:3?=70:<1;75?82483?=70:=f;75?824m3?=70:<d;75?824k3?=70:<b;75?824i3?=70:<9;75?82403?=70:<7;75?825m3?=70:=d;75?84dl3;<m6s|45594?4|5=9=68h4=572>g7<uz>?:7>52z?770<2n27?9<4n2:p013=838p19=;:4d891362h:0q~:;4;296~;3;:0>j63;508:b>{t<=91<7<t=511>0`<5=?:64k4}r676?6=:r7??<4:f:?714<>l2wx89?50;0x91572<l019;>:8a8yv2383:1>v3;2g86b>;3=80jn6s|44294?4|5=9n68h4=572>dg<uz>?j7>52z?77a<2n27?9<4nf:p01c=838p19=l:4d891362h30q~:;d;296~;3;k0>j63;508b<>{t<=i1<7<t=51b>0`<5=?:6l94}r67f?6=:r7??44:f:?714<f>2wx89o50;0x915?2<l019;>:`78yv2313:1>v3;3686b>;3=80j86s|45:94?4|5=8n68h4=572>d5<uz>8j7>52z?76a<2n27?9<46b:p004=838p19;<:05b?82293h=7p}>6483>7}::hk1o>522bg9543<uz89h7>54z?16f<d<279>k4l5:?174<d>279>o4>7`9~w4e7290?w0?mf;a7?87d:3i>70?l4;a5?87em3;<m6s|17194??|5;kn6n:4=3`3>f5<5;h96n;4=3`7>f5<5;h26n;4=3``>f2<5;hn6n:4=3a5>f5<5;i<6<9n;|q22=<72:q6>o:5c49>6gd=k?16>o;516c8yv5?l3:1;v3<c18`0>;4k;0h963<c58`2>;40j0:;l523b49g0=:;j=1o85239c9g0=z{8<i6=4<{<0a=?e3348i47?8a:?1g3<d=2wx=;?50;6x97d>2j<01?ln:b7897e428=j70<nc;a5?xu6>j0;6?u22c`9g6=::j=1=<;4}r36e?6=:r79no4>7`9>6gg=k?1v<8k:18184ek3i>70<md;34e>{t9?>1<7=t=3``>f0<5;ij6<9n;<0`<?e23ty::k4?:3y>6gc=k<16>n>516c8yv71m3:1>v3=bd8`2>;5jo0:;l5rs3a:>5<5s48h57?8a:?1g=<d<2wx=;750;0x97e42j<01?l9:036?xu6>?0;6?u22cf9g3=::k?1=<;4}r30a?6=:r79mn4l5:?1gg<6?h1v<<l:18084di3i>70<mf;a6?84e>3;<m6s|14594?4|5;ij6n84=3a7>4723ty:944?:3y>6g`=k?16>n;51078yv72k3:1>v3=c98`2>;5k?0:;l5rs07e>5<5s493n7?8a:?0g3<d>2wx=;>50;0x96e02j<01>m7:05b?xu6>>0;6?u22b49g3=::jh1=<;4}r356?6=:r79o=4l6:?1g4<69<1v<8n:18185?i3i=70=l8;321>{t;9?1<7<t=3af>41f348i:7m:;|p0de=838pR97n;<71>1?f3->=n7?9e:p0dg=838pR976;<71>1?>3->=n7?9f:p0d?=838pR977;<71>1??3->=n7?80:p0d>=838pR978;<71>1?03->=n7?85:p0d1=838pR979;<71>1?13->=n7?=6:p0d0=838pR97:;<71>1?23->=n7?=c:p0d3=838pR97;;<71>1?33->=n7?<7:p0d2=838pR97<;<71>1?43->=n7?<e:p0g3=838pR9o=;<71>1g53->=n7?;9:p0g2=838pR9o>;<71>1g63->=n7?:2:p0g5=838pR9o?;<71>1g73->=n7?:6:p0g4=838pR97i;<71>1?a3->=n7?:7:p0g7=838pR97j;<71>1?b3->=n7?:8:p0g6=838pR97k;<71>1?c3->=n7?:9:p0d`=838pR97l;<71>1?d3->=n7?:b:p0dc=838pR97m;<71>1?e3->=n7?:c:p0db=838pR97=;<71>1?53->=n7?:d:p0d5=838pR97>;<71>1?63->=n7?:e:p17g=838pR8<n;<71>04f3->=n7?81:p114=838pR8:=;<71>0253->=n7?82:p112=838pR8:;;<71>0233->=n7?83:p11d=838pR8:m;<71>02e3->=n7?84:p135=838pR88<;<71>0043->=n7?86:p0a7=838pR9li;<71>1da3->=n7?=7:p0f`=838pR9lj;<71>1db3->=n7?=8:p0fc=838pR9lk;<71>1dc3->=n7?=9:p0fb=838pR9ll;<71>1dd3->=n7?=a:p0fe=838pR9lm;<71>1de3->=n7?=b:p0fd=838pR9ln;<71>1df3->=n7?=d:p0fg=838pR9l6;<71>1d>3->=n7?=e:p0f?=838pR9l7;<71>1d?3->=n7?=f:p0ag=838pR9m8;<71>1e03->=n7?<0:p0a?=838pR9m9;<71>1e13->=n7?<1:p0a>=838pR9m:;<71>1e23->=n7?<2:p0a1=838pR9m;;<71>1e33->=n7?<3:p0a0=838pR9m<;<71>1e43->=n7?<4:p0a3=838pR9m=;<71>1e53->=n7?<5:p0a2=838pR9m>;<71>1e63->=n7?<6:p0a5=838pR9m?;<71>1e73->=n7?<8:p0a4=838pR9l8;<71>1d03->=n7?<9:p0f>=838pR9l9;<71>1d13->=n7?<a:p0ae=838pR9jl;<71>1bd3->=n7?<b:p0`4=838pR9k=;<71>1c53->=n7?<c:p16>=838pR8<k;<71>04c3->=n7?<d:p117=838pR8=:;<71>0523->=n7?<f:p116=838pR8=;;<71>0533->=n7?;0:p16`=838pR8=<;<71>0543->=n7?;1:p16c=838pR8==;<71>0553->=n7?;2:p16b=838pR8=>;<71>0563->=n7?;3:p16e=838pR8=?;<71>0573->=n7?;4:p16d=838pR8<i;<71>04a3->=n7?;5:p16g=838pR8<j;<71>04b3->=n7?;6:p16?=838pR8<l;<71>04d3->=n7?;7:p160=838pR8<m;<71>04e3->=n7?;8:p10?=838pR8:j;<71>02b3->=n7?;a:p134=838pR8;9;<71>0313->=n7?;b:p137=838pR8;:;<71>0323->=n7?;c:p136=838pR8;;;<71>0333->=n7?;d:p10`=838pR8;<;<71>0343->=n7?;e:p10c=838pR8;=;<71>0353->=n7?;f:p10b=838pR8;>;<71>0363->=n7?:0:p10e=838pR8;?;<71>0373->=n7?:1:p10d=838pR8:i;<71>02a3->=n7?:3:p10g=838pR8:k;<71>02c3->=n7?:4:p101=838pR8:l;<71>02d3->=n7?:5:~jgdd2909wE:9c:mfgb=838pD98l;|laf`<72;qC8;m4}o`ab?6=:rB?:n5rnca3>5<5sA>=o6sabb394?4|@=<h7p`mc383>7}O<?i0qcll3;296~N3>j1vbom;:181M21k2wenn;50;0xL10d3tdio;4?:3yK03e<ughh;7>52zJ72f=zfki36=4={I65g>{ijj31<7<tH54`?xhekh0;6?uG47a8ykddj3:1>vF;6b9~jged2909wE:9c:mffb=838pD98l;|lag`<72;qC8;m4}o``b?6=:rB?:n5rncf3>5<5sA>=o6sabe394?4|@=<h7p`md383>7}O<?i0qclk3;296~N3>j1vboj;:181M21k2weni;50;0xL10d3tdih;4?:3yK03e<ugho;7>52zJ72f=zfkn36=4={I65g>{ijm31<7<tH54`?xhelh0;6?uG47a8ykdcj3:1>vF;6b9~jgbd2909wE:9c:mfab=838pD98l;|la``<72;qC8;m4}o`gb?6=:rB?:n5rncg3>5<5sA>=o6sabd394?4|@=<h7p`me383>7}O<?i0qclj3;296~N3>j1vbok;:181M21k2wenh;50;0xL10d3tdii;4?:3yK03e<ughn;7>52zJ72f=zfko36=4={I65g>{ijl31<7<tH54`?xhemh0;6?uG47a8ykdbj3:1>vF;6b9~jgcd2909wE:9c:mf`b=838pD98l;|laa`<72;qC8;m4}o`fb?6=:rB?:n5rncd3>5<5sA>=o6sabg394?4|@=<h7p`mf383>7}O<?i0qcli3;296~N3>j1vboh;:181M21k2wenk;50;0xL10d3tdij;4?:3yK03e<ughm;7>52zJ72f=zfkl36=4={I65g>{ijo31<7<tH54`?xhenh0;6?uG47a8ykdaj3:1>vF;6b9~jg`d2909wE:9c:m=a?=83;pD98l;|lb5d<728qC8;m4}oc2f?6=9rB?:n5rn`3`>5<6sA>=o6saa0f94?7|@=<h7p`n1d83>4}O<?i0qco>f;295~N3>j1vbl<?:182M21k2wem??50;3xL10d3tdj>?4?:0yK03e<ugk9?7>51zJ72f=zfh8?6=4>{I65g>{ii;?1<7?tH54`?xhf:?0;6<uG47a8ykg5?3:1=vF;6b9~jd4?290:wE:9c:me7?=83;pD98l;|lb6d<728qC8;m4}oc1f?6=9rB?:n5rn`0`>5<6sA>=o6saa3f94?7|@=<h7p`n2d83>4}O<?i0qco=f;295~N3>j1vbl=?:182M21k2wem>?50;3xL10d3tdj??4?:0yK03e<ugk8?7>51zJ72f=zfh9?6=4>{I65g>{ii:?1<7?tH54`?xhf;?0;6<uG47a8ykg4?3:1=vF;6b9~jd5?290:wE:9c:me6?=83;pD98l;|lb7d<728qC8;m4}oc0f?6=9rB?:n5rn`1`>5<6sA>=o6saa2f94?7|@=<h7p`n3d83>4}O<?i0qco<f;295~N3>j1vbl:?:182M21k2wem9?50;3xL10d3tdj8?4?:0yK03e<ugk??7>51zJ72f=zfh>?6=4>{I65g>{ii=?1<7?tH54`?xhf<?0;6<uG47a8ykg3?3:1=vF;6b9~jd2?290:wE:9c:me1?=83;pD98l;|lb0d<728qC8;m4}oc7f?6=9rB?:n5rn`6`>5<6sA>=o6saa5f94?7|@=<h7p`n4d83>4}O<?i0qco;f;295~N3>j1vbl;?:182M21k2wem8?50;3xL10d3tdj9?4?:0yK03e<ugk>?7>51zJ72f=zfh??6=4>{I65g>{ii<?1<7?tH54`?xhf=?0;6<uG47a8ykg2?3:1=vF;6b9~jd3?290:wE:9c:me0?=83;pD98l;|lb1d<728qC8;m4}oc6f?6=9rB?:n5rn`7`>5<6sA>=o6saa4f94?7|@=<h7p`n5d83>4}O<?i0qco:f;295~N3>j1vbl8?:182M21k2wem;?50;3xL10d3tdj:?4?:0yK03e<ugk=?7>51zJ72f=zfh<?6=4>{I65g>{ii??1<7?tH54`?xhf>?0;6<uG47a8ykg1?3:1=vF;6b9~jd0?290:wE:9c:me3?=83;pD98l;|lb2d<728qC8;m4}oc5f?6=9rB?:n5rn`4`>5<6sA>=o6saa7f94?7|@=<h7p`n6d83>4}O<?i0qco9f;295~N3>j1vbl9?:182M21k2wem:?50;3xL10d3tdj;?4?:0yK03e<ugk<?7>51zJ72f=zfh=?6=4>{I65g>{ii>?1<7?tH54`?xhf??0;6<uG47a8ykg0?3:1=vF;6b9~jd1?290:wE:9c:me2?=83;pD98l;|lb3d<728qC8;m4}oc4f?6=9rB?:n5rn`5`>5<6sA>=o6saa6f94?7|@=<h7p`n7d83>4}O<?i0qco8f;295~N3>j1vbl6?:182M21k2wem5?50;3xL10d3tdj4?4?:0yK03e<ugk3?7>51zJ72f=zfh2?6=4>{I65g>{ii1?1<7?tH54`?xhf0?0;6<uG47a8ykg??3:1=vF;6b9~jd>?290:wE:9c:me=?=83;pD98l;|lb<d<728qC8;m4}oc;f?6=9rB?:n5rn`:`>5<6sA>=o6saa9f94?7|@=<h7p`n8d83>4}O<?i0qco7f;295~N3>j1vbl7?:182M21k2wem4?50;3xL10d3tdj5?4?:0yK03e<ugk2?7>51zJ72f=zfh3?6=4>{I65g>{ii0?1<7?tH54`?xhf1?0;6<uG47a8ykg>?3:1=vF;6b9~jd??290:wE:9c:me<?=83;pD98l;|lb=d<728qC8;m4}oc:f?6=9rB?:n5rn`;`>5<6sA>=o6saa8f94?7|@=<h7p`n9d83>4}O<?i0qco6f;295~N3>j1vblo?:182M21k2weml?50;3xL10d3tdjm?4?:0yK03e<ugkj?7>51zJ72f=zfhk?6=4>{I65g>{iih?1<7?tH54`?xhfi?0;6<uG47a8ykgf?3:1=vF;6b9~jdg?290:wE:9c:med?=83;pD98l;|lbed<728qC8;m4}ocbf?6=9rB?:n5rn`c`>5<6sA>=o6saa`f94?7|@=<h7p`nad83>4}O<?i0qconf;295~N3>j1vbll?:182M21k2wemo?50;3xL10d3tdjn?4?:0yK03e<ugki?7>51zJ72f=zfhh?6=4>{I65g>{iik?1<7?tH54`?xhfj?0;6<uG47a8ykge?3:1=vF;6b9~jdd?290:wE:9c:meg?=83;pD98l;|lbfd<728qC8;m4}ocaf?6=9rB?:n5rn```>5<6sA>=o6saacf94?7|@=<h7p`nbd83>4}O<?i0qcomf;295~N3>j1vblm?:182M21k2wemn?50;3xL10d3tdjo?4?:0yK03e<ugkh?7>51zJ72f=zfhi?6=4>{I65g>{iij?1<7?tH54`?xhfk?0;6<uG47a8ykgd?3:1=vF;6b9~jde?290:wE:9c:mef?=83;pD98l;|lbgd<728qC8;m4}oc`f?6=9rB?:n5rn`a`>5<6sA>=o6saabf94?7|@=<h7p`ncd83>4}O<?i0qcolf;295~N3>j1vblj?:182M21k2wemi?50;3xL10d3tdjh?4?:0yK03e<ugko?7>51zJ72f=zfhn?6=4>{I65g>{iim?1<7?tH54`?xhfl?0;6<uG47a8ykgc?3:1=vF;6b9~jdb?290:wE:9c:mea?=83;pD98l;|lb`d<728qC8;m4}ocgf?6=9rB?:n5rn`f`>5<6sA>=o6saaef94?7|@=<h7p`ndd83>4}O<?i0qcokf;295~N3>j1vblk?:182M21k2wemh?50;3xL10d3tdji?4?:0yK03e<ugkn?7>51zJ72f=zfho?6=4>{I65g>{iil?1<7?tH54`?xhfm?0;6<uG47a8ykgb?3:1=vF;6b9~jdc?290:wE:9c:me`?=83;pD98l;|lbad<728qC8;m4}ocff?6=9rB?:n5rn`g`>5<6sA>=o6saadf94?7|@=<h7p`ned83>4}O<?i0qcojf;295~N3>j1vblh?:182M21k2wemk?50;3xL10d3tdjj?4?:0yK03e<ugkm?7>51zJ72f=zfhl?6=4>{I65g>{iio?1<7?tH54`?xhfn?0;6<uG47a8ykga?3:1=vF;6b9~jd`?290:wE:9c:mec?=83;pD98l;|lbbd<728qC8;m4}ocef?6=9rB?:n5rn`d`>5<6sA>=o6saagf94?7|@=<h7p`nfd83>4}O<?i0qcoif;295~N3>j1vbo>?:182M21k2wen=?50;3xL10d3tdi<?4?:0yK03e<ugh;?7>51zJ72f=zfk:?6=4>{I65g>{ij9?1<7?tH54`?xhe8?0;6<uG47a8ykd7?3:1=vF;6b9~jg6?290:wE:9c:mf5?=83;pD98l;|la4d<728qC8;m4}o`3f?6=9rB?:n5rnc2`>5<6sA>=o6sab1f94?7|@=<h7p`m0d83>4}O<?i0qcl?f;295~N3>j1vbo??:182M21k2wen<?50;3xL10d3tdi=?4?:0yK03e<ugh:?7>51zJ72f=zfk;?6=4>{I65g>{ij8?1<7?tH54`?xhe9?0;6<uG47a8ykd6?3:1=vF;6b9~jg7?290:wE:9c:mf4?=83;pD98l;|la5d<728qC8;m4}o`2f?6=9rB?:n5rnc3`>5<6sA>=o6sab0f94?7|@=<h7p`m1d83>4}O<?i0qcl>f;295~N3>j1vbo<?:182M21k2wen??50;3xL10d3tdi>?4?:0yK03e<ugh9?7>51zJ72f=zfk8?6=4>{I65g>{ij;?1<7?tH54`?xhe:?0;6<uG47a8ykd5?3:1=vF;6b9~jg4?290:wE:9c:mf7?=83;pD98l;|la6d<728qC8;m4}o`1f?6=9rB?:n5rnc0`>5<6sA>=o6sab3f94?7|@=<h7p`m2d83>4}O<?i0qcl=f;295~N3>j1vbo=?:182M21k2wen>?50;3xL10d3tdi??4?:0yK03e<ugh8?7>51zJ72f=zfk9?6=4>{I65g>{ij:?1<7?tH54`?xhe;?0;6<uG47a8ykd4?3:1=vF;6b9~jg5?290:wE:9c:mf6?=83;pD98l;|la7d<728qC8;m4}o`0f?6=9rB?:n5rnc1`>5<6sA>=o6sab2f94?7|@=<h7p`m3d83>4}O<?i0qcl<f;295~N3>j1vbo:?:182M21k2wen9?50;3xL10d3tdi8?4?:0yK03e<ugh??7>51zJ72f=zfk>?6=4>{I65g>{ij=?1<7?tH54`?xhe<?0;6<uG47a8ykd3?3:1=vF;6b9~jg2?290:wE:9c:mf1?=83;pD98l;|la0d<728qC8;m4}o`7f?6=9rB?:n5rnc6`>5<6sA>=o6sab5f94?7|@=<h7p`m4d83>4}O<?i0qcl;f;295~N3>j1vbo;?:182M21k2wen8?50;3xL10d3tdi9?4?:0yK03e<ugh>?7>51zJ72f=zfk??6=4>{I65g>{ij<?1<7?tH54`?xhe=?0;6<uG47a8ykd2?3:1=vF;6b9~jg3?290:wE:9c:mf0?=83;pD98l;|la1d<728qC8;m4}o`6f?6=9rB?:n5rnc7`>5<6sA>=o6sab4f94?7|@=<h7p`m5d83>4}O<?i0qcl:f;295~N3>j1vbo8?:182M21k2wen;?50;3xL10d3tdi:?4?:0yK03e<ugh=?7>51zJ72f=zfk<?6=4>{I65g>{ij??1<7?tH54`?xhe>?0;6<uG47a8ykd1?3:1=vF;6b9~jg0?290:wE:9c:mf3?=83;pD98l;|la2d<728qC8;m4}o`5f?6=9rB?:n5rnc4`>5<6sA>=o6sab7f94?7|@=<h7p`m6d83>4}O<?i0qcl9f;295~N3>j1vbo9?:182M21k2wen:?50;3xL10d3tdi;?4?:0yK03e<ugh<?7>51zJ72f=zfk=?6=4>{I65g>{ij>?1<7?tH54`?xhe??0;6<uG47a8ykd0?3:1=vF;6b9~jg1?290:wE:9c:mf2?=83;pD98l;|la3d<728qC8;m4}o`4f?6=9rB?:n5rnc5`>5<6sA>=o6sab6f94?7|@=<h7p`m7d83>4}O<?i0qcl8f;295~N3>j1vbo6?:182M21k2wen5?50;3xL10d3tdi4?4?:0yK03e<ugh3?7>51zJ72f=zfk2?6=4>{I65g>{ij1?1<7?tH54`?xhe0?0;6<uG47a8ykd??3:1=vF;6b9~jg>?290:wE:9c:mf=?=83;pD98l;|la<d<728qC8;m4}o`;f?6=9rB?:n5rnc:`>5<6sA>=o6sab9f94?7|@=<h7p`m8d83>4}O<?i0qcl7f;295~N3>j1vbo7?:182M21k2wen4?50;3xL10d3tdi5?4?:0yK03e<ugh2?7>51zJ72f=zfk3?6=4>{I65g>{ij0?1<7?tH54`?xhe1?0;6<uG47a8ykd>?3:1=vF;6b9~jg??290:wE:9c:mf<?=83;pD98l;|la=d<728qC8;m4}o`:f?6=9rB?:n5rnc;`>5<6sA>=o6sab8f94?7|@=<h7p`m9d83>4}O<?i0qcl6f;295~N3>j1vboo?:182M21k2wenl?50;3xL10d3tdim?4?:0yK03e<ughj?7>51zJ72f=zfkk?6=4>{I65g>{ijh?1<7?tH54`?xhei?0;6<uG47a8ykdf?3:1=vF;6b9~jgg?290:wE:9c:mfd?=83;pD98l;|laed<728qC8;m4}o`bf?6=9rB?:n5rncc`>5<6sA>=o6sab`f94?7|@=<h7p`mad83>4}O<?i0qclnf;295~N3>j1vbol?:182M21k2weno?50;3xL10d3tdin?4?:0yK03e<ughi?7>51zJ72f=zfkh?6=4>{I65g>{ijk?1<7?tH54`?xhej?0;6<uG47a8ykde?3:1=vF;6b9~jgd?290:wE:9c:mfg?=83;pD98l;|lafd<728qC8;m4}o`af?6=9rB?:n5r}|CDF}cm8028>><e6c~DED|8tJK\vsO@ \ No newline at end of file
diff --git a/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.v b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.v
new file mode 100644
index 000000000..4737fb1bf
--- /dev/null
+++ b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.v
@@ -0,0 +1,3819 @@
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 1995-2008 Xilinx, Inc. All rights reserved.
+////////////////////////////////////////////////////////////////////////////////
+// ____ ____
+// / /\/ /
+// /___/ \ / Vendor: Xilinx
+// \ \ \/ Version: K.39
+// \ \ Application: netgen
+// / / Filename: fifo_xlnx_1Kx18_2clk.v
+// /___/ /\ Timestamp: Fri Jun 10 16:12:12 2011
+// \ \ / \
+// \___\/\___\
+//
+// Command : -intstyle ise -w -sim -ofmt verilog /tmp/_cg/fifo_xlnx_1Kx18_2clk.ngc /tmp/_cg/fifo_xlnx_1Kx18_2clk.v
+// Device : 3s2000fg456-5
+// Input file : /tmp/_cg/fifo_xlnx_1Kx18_2clk.ngc
+// Output file : /tmp/_cg/fifo_xlnx_1Kx18_2clk.v
+// # of Modules : 1
+// Design Name : fifo_xlnx_1Kx18_2clk
+// Xilinx : /opt/Xilinx/10.1/ISE
+//
+// Purpose:
+// This verilog netlist is a verification model and uses simulation
+// primitives which may not represent the true implementation of the
+// device, however the netlist is functionally correct and should not
+// be modified. This file cannot be synthesized and should only be used
+// with supported simulation tools.
+//
+// Reference:
+// Development System Reference Guide, Chapter 23 and Synthesis and Simulation Design Guide, Chapter 6
+//
+////////////////////////////////////////////////////////////////////////////////
+
+`timescale 1 ns/1 ps
+
+module fifo_xlnx_1Kx18_2clk (
+ rd_en, wr_en, full, empty, wr_clk, rst, rd_clk, wr_data_count, rd_data_count, dout, din
+);
+ input rd_en;
+ input wr_en;
+ output full;
+ output empty;
+ input wr_clk;
+ input rst;
+ input rd_clk;
+ output [10 : 0] wr_data_count;
+ output [10 : 0] rd_data_count;
+ output [17 : 0] dout;
+ input [17 : 0] din;
+
+ // synthesis translate_off
+
+ wire \BU2/U0/grf.rf/gl0.rd/ram_valid_fwft ;
+ wire \BU2/N39 ;
+ wire \BU2/N31 ;
+ wire \BU2/N37 ;
+ wire \BU2/N27 ;
+ wire \BU2/N25 ;
+ wire \BU2/N21 ;
+ wire \BU2/N19 ;
+ wire \BU2/N17 ;
+ wire \BU2/N11 ;
+ wire \BU2/N13 ;
+ wire \BU2/N36 ;
+ wire \BU2/N381 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<9>4_470 ;
+ wire \BU2/N6 ;
+ wire \BU2/N7 ;
+ wire \BU2/N35 ;
+ wire \BU2/N41 ;
+ wire \BU2/N2 ;
+ wire \BU2/N40 ;
+ wire \BU2/N30 ;
+ wire \BU2/N4 ;
+ wire \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy<9>_bdd4 ;
+ wire \BU2/N38 ;
+ wire \BU2/N33 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0006_bdd0 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0006_bdd0 ;
+ wire \BU2/N351 ;
+ wire \BU2/U0/grf.rf/mem/tmp_ram_rd_en ;
+ wire \BU2/U0/grf.rf/ram_regout_en ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<0>_rt_425 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<1>_rt_424 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<2>_rt_422 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<3>_rt_420 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<4>_rt_418 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<5>_rt_416 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<6>_rt_414 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<7>_rt_412 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<8>_rt_410 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_xor<9>_rt_408 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count2 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count1 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count3 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count4 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count7 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count5 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count6 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count8 ;
+ wire \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count9 ;
+ wire \BU2/U0/grf.rf/ram_wr_en ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/empty_fwft_fb_385 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/empty_fwft_i_or0000 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/user_valid_383 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd1_382 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd1-In ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd2_380 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd2-In ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<0>_rt_378 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<1>_rt_377 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<2>_rt_375 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<3>_rt_373 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<4>_rt_371 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<5>_rt_369 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<6>_rt_367 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<7>_rt_365 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<8>_rt_363 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_xor<9>_rt_361 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count2 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count1 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count3 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count4 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count7 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count5 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count6 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count8 ;
+ wire \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count9 ;
+ wire \BU2/U0/grf.rf/ram_rd_en ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0008 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0007 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0006 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0005 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0004 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0003 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0002 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0001 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0000 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0008 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0007 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0006 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0005 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0004 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0003 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0002 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0001 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0000 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0008 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0007 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0006 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0005 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0004 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0003 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0002 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0001 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0000 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0008 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0007 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0006 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0005 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0004 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0003 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0002 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0001 ;
+ wire \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0000 ;
+ wire \BU2/U0/grf.rf/gl0.wr/gwas.wsts/comp2 ;
+ wire \BU2/U0/grf.rf/gl0.wr/gwas.wsts/comp1 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gras.rsts/comp1 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gras.rsts/comp0 ;
+ wire \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000016 ;
+ wire \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000014 ;
+ wire \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000012 ;
+ wire \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000010 ;
+ wire \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00008 ;
+ wire \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00006 ;
+ wire \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00004 ;
+ wire \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00002 ;
+ wire \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy[1] ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000016 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000014 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000012 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000010 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00008 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00006 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00004 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00002 ;
+ wire \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy[9] ;
+ wire \BU2/U0/grf.rf/gl0.wr/gwas.wsts/ram_full_fb_i_94 ;
+ wire \BU2/U0/grf.rf/gl0.wr/gwas.wsts/ram_full_i_or0000 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gras.rsts/ram_empty_fb_i_81 ;
+ wire \BU2/U0/grf.rf/gl0.rd/gras.rsts/ram_empty_fb_i_or0000 ;
+ wire \BU2/U0/grf.rf/rstblk/wr_rst_comb ;
+ wire \BU2/U0/grf.rf/rstblk/rd_rst_comb ;
+ wire \BU2/U0/grf.rf/rstblk/wr_rst_asreg_72 ;
+ wire \BU2/U0/grf.rf/rstblk/rd_rst_asreg_71 ;
+ wire \BU2/U0/grf.rf/rstblk/wr_rst_asreg_d2_70 ;
+ wire \BU2/U0/grf.rf/rstblk/wr_rst_asreg_d1_69 ;
+ wire \BU2/U0/grf.rf/rstblk/rd_rst_asreg_d2_68 ;
+ wire \BU2/U0/grf.rf/rstblk/rd_rst_asreg_d1_67 ;
+ wire \BU2/N1 ;
+ wire NLW_VCC_P_UNCONNECTED;
+ wire NLW_GND_G_UNCONNECTED;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<15>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<14>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<13>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<12>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<11>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<10>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<9>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<8>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<7>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<6>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<5>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<4>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<3>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<2>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<1>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<0>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOPA<1>_UNCONNECTED ;
+ wire \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOPA<0>_UNCONNECTED ;
+ wire [17 : 0] din_2;
+ wire [17 : 0] dout_3;
+ wire [10 : 0] rd_data_count_4;
+ wire [10 : 0] wr_data_count_5;
+ wire [17 : 0] \BU2/U0/grf.rf/mem/dout_mem ;
+ wire [9 : 0] \BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 ;
+ wire [8 : 0] \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy ;
+ wire [9 : 0] \BU2/U0/grf.rf/gl0.wr/wpntr/count ;
+ wire [8 : 0] \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy ;
+ wire [9 : 0] \BU2/U0/grf.rf/gl0.rd/rpntr/count ;
+ wire [9 : 0] \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc ;
+ wire [9 : 0] \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc ;
+ wire [9 : 0] \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 ;
+ wire [9 : 0] \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg ;
+ wire [9 : 0] \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 ;
+ wire [9 : 0] \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg ;
+ wire [4 : 0] \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1 ;
+ wire [3 : 0] \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/carrynet ;
+ wire [4 : 0] \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1 ;
+ wire [3 : 0] \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/carrynet ;
+ wire [4 : 0] \BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1 ;
+ wire [3 : 0] \BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/carrynet ;
+ wire [4 : 0] \BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1 ;
+ wire [3 : 0] \BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/carrynet ;
+ wire [9 : 0] \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut ;
+ wire [9 : 0] \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin ;
+ wire [9 : 0] \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 ;
+ wire [8 : 0] \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy ;
+ wire [9 : 0] \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut ;
+ wire [9 : 0] \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 ;
+ wire [9 : 0] \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin ;
+ wire [8 : 0] \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy ;
+ wire [1 : 1] \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub0000_cy ;
+ wire [0 : 0] \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/diff_wr_rd_tmp ;
+ wire [9 : 1] \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 ;
+ wire [0 : 0] \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/diff_wr_rd_tmp ;
+ wire [10 : 0] \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 ;
+ wire [1 : 0] \BU2/U0/grf.rf/rstblk/wr_rst_reg ;
+ wire [2 : 0] \BU2/U0/grf.rf/rstblk/rd_rst_reg ;
+ wire [0 : 0] \BU2/data_count ;
+ assign
+ wr_data_count[10] = wr_data_count_5[10],
+ wr_data_count[9] = wr_data_count_5[9],
+ wr_data_count[8] = wr_data_count_5[8],
+ wr_data_count[7] = wr_data_count_5[7],
+ wr_data_count[6] = wr_data_count_5[6],
+ wr_data_count[5] = wr_data_count_5[5],
+ wr_data_count[4] = wr_data_count_5[4],
+ wr_data_count[3] = wr_data_count_5[3],
+ wr_data_count[2] = wr_data_count_5[2],
+ wr_data_count[1] = wr_data_count_5[1],
+ wr_data_count[0] = wr_data_count_5[0],
+ rd_data_count[10] = rd_data_count_4[10],
+ rd_data_count[9] = rd_data_count_4[9],
+ rd_data_count[8] = rd_data_count_4[8],
+ rd_data_count[7] = rd_data_count_4[7],
+ rd_data_count[6] = rd_data_count_4[6],
+ rd_data_count[5] = rd_data_count_4[5],
+ rd_data_count[4] = rd_data_count_4[4],
+ rd_data_count[3] = rd_data_count_4[3],
+ rd_data_count[2] = rd_data_count_4[2],
+ rd_data_count[1] = rd_data_count_4[1],
+ rd_data_count[0] = rd_data_count_4[0],
+ dout[17] = dout_3[17],
+ dout[16] = dout_3[16],
+ dout[15] = dout_3[15],
+ dout[14] = dout_3[14],
+ dout[13] = dout_3[13],
+ dout[12] = dout_3[12],
+ dout[11] = dout_3[11],
+ dout[10] = dout_3[10],
+ dout[9] = dout_3[9],
+ dout[8] = dout_3[8],
+ dout[7] = dout_3[7],
+ dout[6] = dout_3[6],
+ dout[5] = dout_3[5],
+ dout[4] = dout_3[4],
+ dout[3] = dout_3[3],
+ dout[2] = dout_3[2],
+ dout[1] = dout_3[1],
+ dout[0] = dout_3[0],
+ din_2[17] = din[17],
+ din_2[16] = din[16],
+ din_2[15] = din[15],
+ din_2[14] = din[14],
+ din_2[13] = din[13],
+ din_2[12] = din[12],
+ din_2[11] = din[11],
+ din_2[10] = din[10],
+ din_2[9] = din[9],
+ din_2[8] = din[8],
+ din_2[7] = din[7],
+ din_2[6] = din[6],
+ din_2[5] = din[5],
+ din_2[4] = din[4],
+ din_2[3] = din[3],
+ din_2[2] = din[2],
+ din_2[1] = din[1],
+ din_2[0] = din[0];
+ VCC VCC_0 (
+ .P(NLW_VCC_P_UNCONNECTED)
+ );
+ GND GND_1 (
+ .G(NLW_GND_G_UNCONNECTED)
+ );
+ LUT4_D #(
+ .INIT ( 16'h0440 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<9>31 (
+ .I0(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/user_valid_383 ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd1_382 ),
+ .I3(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd2_380 ),
+ .LO(\BU2/N40 ),
+ .O(\BU2/N33 )
+ );
+ LUT4_L #(
+ .INIT ( 16'h8000 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<8>_SW1_SW0 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub0000_cy [1]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00002 ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00004 ),
+ .I3(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00006 ),
+ .LO(\BU2/N31 )
+ );
+ LUT3_D #(
+ .INIT ( 8'h80 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000<9>_SW0_SW0 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00008 ),
+ .I1(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000010 ),
+ .I2(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000012 ),
+ .LO(\BU2/N39 ),
+ .O(\BU2/N27 )
+ );
+ LUT4_L #(
+ .INIT ( 16'h8000 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<9>21_SW1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00002 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00004 ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00006 ),
+ .I3(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00008 ),
+ .LO(\BU2/N19 )
+ );
+ LUT3_L #(
+ .INIT ( 8'h80 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<9>21_SW0 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00002 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00004 ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00006 ),
+ .LO(\BU2/N17 )
+ );
+ LUT4_D #(
+ .INIT ( 16'h2000 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<4>111_SW0 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/user_valid_383 ),
+ .I1(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .I2(\BU2/U0/grf.rf/gl0.rd/ram_valid_fwft ),
+ .I3(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub0000_cy [1]),
+ .LO(\BU2/N381 ),
+ .O(\BU2/N11 )
+ );
+ LUT3_D #(
+ .INIT ( 8'h80 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<9>41_SW0 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000012 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000010 ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00008 ),
+ .LO(\BU2/N37 ),
+ .O(\BU2/N13 )
+ );
+ LUT3_D #(
+ .INIT ( 8'h7F ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<4>111 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub0000_cy [1]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00002 ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00004 ),
+ .LO(\BU2/N36 ),
+ .O(\BU2/N38 )
+ );
+ LUT2_D #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/RAM_VALID_FWFT11 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd1_382 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd2_380 ),
+ .LO(\BU2/N351 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/ram_valid_fwft )
+ );
+ RAMB16_S18_S18 #(
+ .INIT_3E ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_3F ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INITP_00 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INITP_01 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INITP_02 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INITP_03 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INITP_04 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INITP_05 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .SRVAL_A ( 18'h00000 ),
+ .SRVAL_B ( 18'h00000 ),
+ .INIT_00 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_01 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_02 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_03 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_04 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_05 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_06 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_07 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_08 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_09 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_0A ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_0B ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_0C ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_0D ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_0E ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_0F ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_10 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_11 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_12 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_13 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_14 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_15 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_16 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_17 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_18 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_19 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_1A ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_1B ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_1C ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_1D ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_1E ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_1F ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_20 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_21 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_22 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_23 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_24 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_25 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_26 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_27 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_28 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_29 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_2A ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_2B ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_2C ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_2D ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_2E ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_2F ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_30 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_31 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_32 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_33 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_34 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_35 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_36 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_37 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_38 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_39 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_3A ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_3B ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_3C ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .INIT_3D ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .WRITE_MODE_B ( "WRITE_FIRST" ),
+ .INITP_06 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ),
+ .SIM_COLLISION_CHECK ( "NONE" ),
+ .INIT_A ( 18'h00000 ),
+ .INIT_B ( 18'h00000 ),
+ .WRITE_MODE_A ( "WRITE_FIRST" ),
+ .INITP_07 ( 256'h0000000000000000000000000000000000000000000000000000000000000000 ))
+ \BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram (
+ .CLKA(wr_clk),
+ .CLKB(rd_clk),
+ .ENA(\BU2/N1 ),
+ .ENB(\BU2/U0/grf.rf/mem/tmp_ram_rd_en ),
+ .SSRA(\BU2/data_count [0]),
+ .SSRB(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .WEA(\BU2/U0/grf.rf/ram_wr_en ),
+ .WEB(\BU2/data_count [0]),
+ .ADDRA({\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [9], \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [8], \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [7],
+\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [6], \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [5], \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [4],
+\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [3], \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [2], \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [1],
+\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [0]}),
+ .ADDRB({\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [9], \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [8], \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [7],
+\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [6], \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [5], \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [4],
+\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [3], \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [2], \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [1],
+\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [0]}),
+ .DIA({din_2[16], din_2[15], din_2[14], din_2[13], din_2[12], din_2[11], din_2[10], din_2[9], din_2[7], din_2[6], din_2[5], din_2[4], din_2[3],
+din_2[2], din_2[1], din_2[0]}),
+ .DIB({\BU2/data_count [0], \BU2/data_count [0], \BU2/data_count [0], \BU2/data_count [0], \BU2/data_count [0], \BU2/data_count [0],
+\BU2/data_count [0], \BU2/data_count [0], \BU2/data_count [0], \BU2/data_count [0], \BU2/data_count [0], \BU2/data_count [0], \BU2/data_count [0],
+\BU2/data_count [0], \BU2/data_count [0], \BU2/data_count [0]}),
+ .DIPA({din_2[17], din_2[8]}),
+ .DIPB({\BU2/data_count [0], \BU2/data_count [0]}),
+ .DOA({\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<15>_UNCONNECTED
+, \NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<14>_UNCONNECTED ,
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<13>_UNCONNECTED ,
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<12>_UNCONNECTED ,
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<11>_UNCONNECTED ,
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<10>_UNCONNECTED ,
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<9>_UNCONNECTED ,
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<8>_UNCONNECTED ,
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<7>_UNCONNECTED ,
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<6>_UNCONNECTED ,
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<5>_UNCONNECTED ,
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<4>_UNCONNECTED ,
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<3>_UNCONNECTED ,
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<2>_UNCONNECTED ,
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<1>_UNCONNECTED ,
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOA<0>_UNCONNECTED }),
+ .DOPA({
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOPA<1>_UNCONNECTED ,
+\NLW_BU2/U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/ramloop[0].ram.r/v2_noinit.ram/dp18x18.ram_DOPA<0>_UNCONNECTED }),
+ .DOB({\BU2/U0/grf.rf/mem/dout_mem [16], \BU2/U0/grf.rf/mem/dout_mem [15], \BU2/U0/grf.rf/mem/dout_mem [14], \BU2/U0/grf.rf/mem/dout_mem [13],
+\BU2/U0/grf.rf/mem/dout_mem [12], \BU2/U0/grf.rf/mem/dout_mem [11], \BU2/U0/grf.rf/mem/dout_mem [10], \BU2/U0/grf.rf/mem/dout_mem [9],
+\BU2/U0/grf.rf/mem/dout_mem [7], \BU2/U0/grf.rf/mem/dout_mem [6], \BU2/U0/grf.rf/mem/dout_mem [5], \BU2/U0/grf.rf/mem/dout_mem [4],
+\BU2/U0/grf.rf/mem/dout_mem [3], \BU2/U0/grf.rf/mem/dout_mem [2], \BU2/U0/grf.rf/mem/dout_mem [1], \BU2/U0/grf.rf/mem/dout_mem [0]}),
+ .DOPB({\BU2/U0/grf.rf/mem/dout_mem [17], \BU2/U0/grf.rf/mem/dout_mem [8]})
+ );
+ INV \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_xor<1>11_INV_0 (
+ .I(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy[1] ),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [1])
+ );
+ LUT4 #(
+ .INIT ( 16'h8000 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy<9> (
+ .I0(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000014 ),
+ .I1(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000016 ),
+ .I2(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy<9>_bdd4 ),
+ .I3(\BU2/N39 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy[9] )
+ );
+ LUT4 #(
+ .INIT ( 16'h7FFF ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<8>_SW1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000012 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000010 ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00008 ),
+ .I3(\BU2/N31 ),
+ .O(\BU2/N7 )
+ );
+ LUT4 #(
+ .INIT ( 16'hA2AA ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<9>30_SW0 (
+ .I0(\BU2/N33 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000014 ),
+ .I2(\BU2/N4 ),
+ .I3(\BU2/N37 ),
+ .O(\BU2/N21 )
+ );
+ LUT4 #(
+ .INIT ( 16'h6CCC ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000<9> (
+ .I0(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000014 ),
+ .I1(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000016 ),
+ .I2(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy<9>_bdd4 ),
+ .I3(\BU2/N27 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [9])
+ );
+ LUT4 #(
+ .INIT ( 16'h6CCC ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000<8>1 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000012 ),
+ .I1(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000014 ),
+ .I2(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy<9>_bdd4 ),
+ .I3(\BU2/N25 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [8])
+ );
+ LUT2 #(
+ .INIT ( 4'h8 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy<9>31_SW1 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00008 ),
+ .I1(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000010 ),
+ .O(\BU2/N25 )
+ );
+ LUT4 #(
+ .INIT ( 16'hEAC0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<9>38 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000016 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<9>4_470 ),
+ .I2(\BU2/N35 ),
+ .I3(\BU2/N21 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [9])
+ );
+ LUT4 #(
+ .INIT ( 16'h8000 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<8>_SW0 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000012 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000010 ),
+ .I2(\BU2/N11 ),
+ .I3(\BU2/N19 ),
+ .O(\BU2/N6 )
+ );
+ LUT4 #(
+ .INIT ( 16'h8000 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<9>41 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000010 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00008 ),
+ .I2(\BU2/N11 ),
+ .I3(\BU2/N17 ),
+ .O(\BU2/N35 )
+ );
+ LUT4 #(
+ .INIT ( 16'h7FFF ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<5>11 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub0000_cy [1]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00002 ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00004 ),
+ .I3(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00006 ),
+ .O(\BU2/N4 )
+ );
+ LUT4 #(
+ .INIT ( 16'h8000 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<10>1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000014 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000016 ),
+ .I2(\BU2/N13 ),
+ .I3(\BU2/N30 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [10])
+ );
+ LUT4 #(
+ .INIT ( 16'hFF7F ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<7>_SW0 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000010 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00008 ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00006 ),
+ .I3(\BU2/N36 ),
+ .O(\BU2/N41 )
+ );
+ LUT4 #(
+ .INIT ( 16'h8000 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<9>21 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00006 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00004 ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00002 ),
+ .I3(\BU2/N381 ),
+ .O(\BU2/N30 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_xor<9>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count [9]),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_xor<9>_rt_408 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_xor<9>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count [9]),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_xor<9>_rt_361 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<0>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count [0]),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<0>_rt_425 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<1>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count [1]),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<1>_rt_424 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<2>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count [2]),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<2>_rt_422 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<3>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count [3]),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<3>_rt_420 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<4>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count [4]),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<4>_rt_418 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<5>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count [5]),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<5>_rt_416 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<6>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count [6]),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<6>_rt_414 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<7>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count [7]),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<7>_rt_412 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<8>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count [8]),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<8>_rt_410 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<0>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count [0]),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<0>_rt_378 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<1>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count [1]),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<1>_rt_377 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<2>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count [2]),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<2>_rt_375 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<3>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count [3]),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<3>_rt_373 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<4>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count [4]),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<4>_rt_371 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<5>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count [5]),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<5>_rt_369 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<6>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count [6]),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<6>_rt_367 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<7>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count [7]),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<7>_rt_365 )
+ );
+ LUT1 #(
+ .INIT ( 2'h2 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<8>_rt (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count [8]),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<8>_rt_363 )
+ );
+ LUT4 #(
+ .INIT ( 16'h8000 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy<9>41 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy[1] ),
+ .I1(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00002 ),
+ .I2(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00004 ),
+ .I3(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00006 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy<9>_bdd4 )
+ );
+ LUT3 #(
+ .INIT ( 8'h08 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<9>4 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000012 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000014 ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000016 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<9>4_470 )
+ );
+ LUT4 #(
+ .INIT ( 16'hD580 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<8> (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000014 ),
+ .I1(\BU2/N33 ),
+ .I2(\BU2/N7 ),
+ .I3(\BU2/N6 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [8])
+ );
+ LUT4 #(
+ .INIT ( 16'hD580 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<7> (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000012 ),
+ .I1(\BU2/N33 ),
+ .I2(\BU2/N41 ),
+ .I3(\BU2/N35 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [7])
+ );
+ LUT4 #(
+ .INIT ( 16'hEA40 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<6> (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000010 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00008 ),
+ .I2(\BU2/N30 ),
+ .I3(\BU2/N2 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [6])
+ );
+ LUT4 #(
+ .INIT ( 16'hAA2A ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<6>_SW0 (
+ .I0(\BU2/N40 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00008 ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00006 ),
+ .I3(\BU2/N38 ),
+ .O(\BU2/N2 )
+ );
+ LUT4 #(
+ .INIT ( 16'hD580 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<5>2 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00008 ),
+ .I1(\BU2/N4 ),
+ .I2(\BU2/N33 ),
+ .I3(\BU2/N30 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [5])
+ );
+ LUT4 #(
+ .INIT ( 16'h6CCC ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000<7>1 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00008 ),
+ .I1(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000012 ),
+ .I2(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000010 ),
+ .I3(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy<9>_bdd4 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [7])
+ );
+ LUT3 #(
+ .INIT ( 8'h6C ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000<6>1 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00008 ),
+ .I1(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000010 ),
+ .I2(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy<9>_bdd4 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [6])
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000<5>1 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00008 ),
+ .I1(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy<9>_bdd4 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [5])
+ );
+ LUT3 #(
+ .INIT ( 8'h82 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<4>1 (
+ .I0(\BU2/N33 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00006 ),
+ .I2(\BU2/N38 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [4])
+ );
+ LUT4 #(
+ .INIT ( 16'h6CCC ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_xor<4>11 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00002 ),
+ .I1(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00006 ),
+ .I2(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00004 ),
+ .I3(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy[1] ),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [4])
+ );
+ LUT4 #(
+ .INIT ( 16'h60C0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<3>1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00002 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00004 ),
+ .I2(\BU2/N33 ),
+ .I3(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub0000_cy [1]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [3])
+ );
+ LUT3 #(
+ .INIT ( 8'h6C ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_xor<3>11 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00002 ),
+ .I1(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00004 ),
+ .I2(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy[1] ),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [3])
+ );
+ LUT3 #(
+ .INIT ( 8'h28 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<2>1 (
+ .I0(\BU2/N33 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00002 ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub0000_cy [1]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [2])
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_xor<2>11 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00002 ),
+ .I1(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy[1] ),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [2])
+ );
+ LUT2 #(
+ .INIT ( 4'h4 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<1>1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub0000_cy [1]),
+ .I1(\BU2/N33 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [1])
+ );
+ LUT4 #(
+ .INIT ( 16'h9669 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor000611 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [3]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [4]),
+ .I2(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [5]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0002 ),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0006_bdd0 )
+ );
+ LUT4 #(
+ .INIT ( 16'h9669 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor00081 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [0]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [1]),
+ .I2(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [2]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0006_bdd0 ),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0008 )
+ );
+ LUT4 #(
+ .INIT ( 16'h9669 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor000611 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [3]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [4]),
+ .I2(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [5]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0002 ),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0006_bdd0 )
+ );
+ LUT4 #(
+ .INIT ( 16'h9669 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor00081 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [0]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [1]),
+ .I2(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [2]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0006_bdd0 ),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0008 )
+ );
+ LUT3 #(
+ .INIT ( 8'h69 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor00071 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [1]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [2]),
+ .I2(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0006_bdd0 ),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0007 )
+ );
+ LUT3 #(
+ .INIT ( 8'h69 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor00071 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [1]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [2]),
+ .I2(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0006_bdd0 ),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0007 )
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor00062 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [2]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0006_bdd0 ),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0006 )
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor00062 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [2]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0006_bdd0 ),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0006 )
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1_0_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [1]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [1]),
+ .I2(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [0]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [0]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1 [0])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1_0_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count [1]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [1]),
+ .I2(\BU2/U0/grf.rf/gl0.rd/rpntr/count [0]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [0]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1 [0])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1_0_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [1]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [1]),
+ .I2(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [0]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [0]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1 [0])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1_0_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count [1]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [1]),
+ .I2(\BU2/U0/grf.rf/gl0.wr/wpntr/count [0]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [0]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1 [0])
+ );
+ LUT4 #(
+ .INIT ( 16'hBAAA ))
+ \BU2/U0/grf.rf/gl0.wr/gwas.wsts/ram_full_i_or00001 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/comp1 ),
+ .I1(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/ram_full_fb_i_94 ),
+ .I2(wr_en),
+ .I3(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/comp2 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/ram_full_i_or0000 )
+ );
+ LUT3 #(
+ .INIT ( 8'hF8 ))
+ \BU2/U0/grf.rf/gl0.rd/gras.rsts/ram_empty_fb_i_or00001 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gras.rsts/comp1 ),
+ .I1(\BU2/U0/grf.rf/ram_rd_en ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gras.rsts/comp0 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/ram_empty_fb_i_or0000 )
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1_1_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [3]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [3]),
+ .I2(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [2]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [2]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1 [1])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1_1_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count [3]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [3]),
+ .I2(\BU2/U0/grf.rf/gl0.rd/rpntr/count [2]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [2]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1 [1])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1_1_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [3]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [3]),
+ .I2(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [2]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [2]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1 [1])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1_1_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count [3]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [3]),
+ .I2(\BU2/U0/grf.rf/gl0.wr/wpntr/count [2]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [2]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1 [1])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1_2_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [5]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [5]),
+ .I2(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [4]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [4]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1 [2])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1_2_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count [5]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [5]),
+ .I2(\BU2/U0/grf.rf/gl0.rd/rpntr/count [4]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [4]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1 [2])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1_2_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [5]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [5]),
+ .I2(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [4]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [4]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1 [2])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1_2_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count [5]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [5]),
+ .I2(\BU2/U0/grf.rf/gl0.wr/wpntr/count [4]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [4]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1 [2])
+ );
+ LUT4 #(
+ .INIT ( 16'h3010 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002<0>1 (
+ .I0(\BU2/N351 ),
+ .I1(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/user_valid_383 ),
+ .I3(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/diff_wr_rd_tmp [0]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [0])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1_3_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [7]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [7]),
+ .I2(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [6]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [6]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1 [3])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1_3_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count [7]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [7]),
+ .I2(\BU2/U0/grf.rf/gl0.rd/rpntr/count [6]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [6]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1 [3])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1_3_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [7]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [7]),
+ .I2(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [6]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [6]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1 [3])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1_3_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count [7]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [7]),
+ .I2(\BU2/U0/grf.rf/gl0.wr/wpntr/count [6]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [6]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1 [3])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1_4_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [9]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [9]),
+ .I2(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [8]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [8]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1 [4])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1_4_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count [9]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [9]),
+ .I2(\BU2/U0/grf.rf/gl0.rd/rpntr/count [8]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [8]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1 [4])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1_4_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [9]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [9]),
+ .I2(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [8]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [8]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1 [4])
+ );
+ LUT4 #(
+ .INIT ( 16'h9009 ))
+ \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1_4_and00001 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count [9]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [9]),
+ .I2(\BU2/U0/grf.rf/gl0.wr/wpntr/count [8]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [8]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1 [4])
+ );
+ LUT2 #(
+ .INIT ( 4'hE ))
+ \BU2/U0/grf.rf/mem/tmp_ram_rd_en1 (
+ .I0(\BU2/U0/grf.rf/ram_rd_en ),
+ .I1(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .O(\BU2/U0/grf.rf/mem/tmp_ram_rd_en )
+ );
+ LUT4 #(
+ .INIT ( 16'h5455 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/RAM_RD_EN_FWFT1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gras.rsts/ram_empty_fb_i_81 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd2_380 ),
+ .I2(rd_en),
+ .I3(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd1_382 ),
+ .O(\BU2/U0/grf.rf/ram_rd_en )
+ );
+ LUT4 #(
+ .INIT ( 16'h6996 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor00051 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [4]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [3]),
+ .I2(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0002 ),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [5]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0005 )
+ );
+ LUT4 #(
+ .INIT ( 16'h6996 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor00051 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [4]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [3]),
+ .I2(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0002 ),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [5]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0005 )
+ );
+ LUT3 #(
+ .INIT ( 8'h96 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor00041 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0002 ),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [5]),
+ .I2(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [4]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0004 )
+ );
+ LUT3 #(
+ .INIT ( 8'h96 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor00041 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0002 ),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [5]),
+ .I2(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [4]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0004 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor00032 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [5]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0002 ),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0003 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor00032 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [5]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0002 ),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0003 )
+ );
+ LUT3 #(
+ .INIT ( 8'h62 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/RAM_REGOUT_EN1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd2_380 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd1_382 ),
+ .I2(rd_en),
+ .O(\BU2/U0/grf.rf/ram_regout_en )
+ );
+ LUT2 #(
+ .INIT ( 4'h4 ))
+ \BU2/U0/grf.rf/gl0.wr/ram_wr_en_i1 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/ram_full_fb_i_94 ),
+ .I1(wr_en),
+ .O(\BU2/U0/grf.rf/ram_wr_en )
+ );
+ LUT4 #(
+ .INIT ( 16'h69A1 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd2-In11 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gras.rsts/ram_empty_fb_i_81 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd1_382 ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd2_380 ),
+ .I3(rd_en),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd2-In )
+ );
+ LUT4 #(
+ .INIT ( 16'hCA8A ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/empty_fwft_i_or00001 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/empty_fwft_fb_385 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd1_382 ),
+ .I2(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd2_380 ),
+ .I3(rd_en),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/empty_fwft_i_or0000 )
+ );
+ LUT4 #(
+ .INIT ( 16'h6996 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor00021 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [7]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [6]),
+ .I2(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [9]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [8]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0002 )
+ );
+ LUT4 #(
+ .INIT ( 16'h6996 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor00021 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [7]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [6]),
+ .I2(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [9]),
+ .I3(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [8]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0002 )
+ );
+ LUT3 #(
+ .INIT ( 8'h6E ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd1-In11 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd1_382 ),
+ .I1(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd2_380 ),
+ .I2(rd_en),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd1-In )
+ );
+ LUT3 #(
+ .INIT ( 8'h96 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor00011 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [9]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [8]),
+ .I2(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [7]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0001 )
+ );
+ LUT3 #(
+ .INIT ( 8'h96 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor00011 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [9]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [8]),
+ .I2(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [7]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0001 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_rd_pntr_gc_xor0000_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [9]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [8]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0000 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_rd_pntr_gc_xor0001_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [8]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [7]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0001 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_rd_pntr_gc_xor0002_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [7]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [6]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0002 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_rd_pntr_gc_xor0003_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [6]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [5]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0003 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_rd_pntr_gc_xor0004_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [5]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [4]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0004 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_rd_pntr_gc_xor0005_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [4]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [3]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0005 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_rd_pntr_gc_xor0006_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [3]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [2]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0006 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_rd_pntr_gc_xor0007_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [2]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [1]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0007 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_rd_pntr_gc_xor0008_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [1]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [0]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0008 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_wr_pntr_gc_xor0000_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [9]),
+ .I1(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [8]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0000 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_wr_pntr_gc_xor0001_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [8]),
+ .I1(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [7]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0001 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_wr_pntr_gc_xor0002_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [7]),
+ .I1(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [6]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0002 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_wr_pntr_gc_xor0003_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [6]),
+ .I1(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [5]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0003 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_wr_pntr_gc_xor0004_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [5]),
+ .I1(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [4]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0004 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_wr_pntr_gc_xor0005_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [4]),
+ .I1(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [3]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0005 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_wr_pntr_gc_xor0006_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [3]),
+ .I1(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [2]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0006 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_wr_pntr_gc_xor0007_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [2]),
+ .I1(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [1]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0007 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/Mxor_wr_pntr_gc_xor0008_Result1 (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [1]),
+ .I1(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [0]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0008 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor00001 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [8]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [9]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0000 )
+ );
+ LUT2 #(
+ .INIT ( 4'h6 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor00001 (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [8]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [9]),
+ .O(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0000 )
+ );
+ LUT2 #(
+ .INIT ( 4'h4 ))
+ \BU2/U0/grf.rf/rstblk/rd_rst_comb1 (
+ .I0(\BU2/U0/grf.rf/rstblk/rd_rst_asreg_d2_68 ),
+ .I1(\BU2/U0/grf.rf/rstblk/rd_rst_asreg_71 ),
+ .O(\BU2/U0/grf.rf/rstblk/rd_rst_comb )
+ );
+ LUT2 #(
+ .INIT ( 4'h4 ))
+ \BU2/U0/grf.rf/rstblk/wr_rst_comb1 (
+ .I0(\BU2/U0/grf.rf/rstblk/wr_rst_asreg_d2_70 ),
+ .I1(\BU2/U0/grf.rf/rstblk/wr_rst_asreg_72 ),
+ .O(\BU2/U0/grf.rf/rstblk/wr_rst_comb )
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_0 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [0]),
+ .Q(dout_3[0])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_1 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [1]),
+ .Q(dout_3[1])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_2 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [2]),
+ .Q(dout_3[2])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_3 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [3]),
+ .Q(dout_3[3])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_4 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [4]),
+ .Q(dout_3[4])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_5 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [5]),
+ .Q(dout_3[5])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_6 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [6]),
+ .Q(dout_3[6])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_7 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [7]),
+ .Q(dout_3[7])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_8 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [8]),
+ .Q(dout_3[8])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_9 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [9]),
+ .Q(dout_3[9])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_10 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [10]),
+ .Q(dout_3[10])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_11 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [11]),
+ .Q(dout_3[11])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_12 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [12]),
+ .Q(dout_3[12])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_13 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [13]),
+ .Q(dout_3[13])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_14 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [14]),
+ .Q(dout_3[14])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_15 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [15]),
+ .Q(dout_3[15])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_16 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [16]),
+ .Q(dout_3[16])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/mem/dout_i_17 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_regout_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/mem/dout_mem [17]),
+ .Q(dout_3[17])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2_0 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [0]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [0])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2_1 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [1]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [1])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2_2 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [2]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [2])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2_3 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [3]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [3])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2_4 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [4]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [4])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2_5 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [5]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [5])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2_6 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [6]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [6])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2_7 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [7]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [7])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2_8 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [8]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [8])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d2_9 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [9]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [9])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d1_9 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count [9]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [9])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d1_8 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count [8]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [8])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d1_6 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count [6]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [6])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d1_5 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count [5]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [5])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d1_7 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count [7]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [7])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d1_4 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count [4]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [4])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d1_3 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count [3]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [3])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d1_1 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count [1]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [1])
+ );
+ FDPE #(
+ .INIT ( 1'b1 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d1_0 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count [0]),
+ .PRE(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [0])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_d1_2 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count [2]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d1 [2])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<0> (
+ .CI(\BU2/N1 ),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<0>_rt_425 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [0])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_xor<0> (
+ .CI(\BU2/N1 ),
+ .LI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<0>_rt_425 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<1> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [0]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<1>_rt_424 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [1])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_xor<1> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [0]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<1>_rt_424 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count1 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<2> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [1]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<2>_rt_422 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [2])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_xor<2> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [1]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<2>_rt_422 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count2 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<3> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [2]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<3>_rt_420 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [3])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_xor<3> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [2]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<3>_rt_420 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count3 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<4> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [3]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<4>_rt_418 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [4])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_xor<4> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [3]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<4>_rt_418 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count4 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<5> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [4]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<5>_rt_416 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [5])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_xor<5> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [4]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<5>_rt_416 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count5 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<6> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [5]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<6>_rt_414 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [6])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_xor<6> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [5]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<6>_rt_414 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count6 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<7> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [6]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<7>_rt_412 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [7])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_xor<7> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [6]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<7>_rt_412 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count7 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<8> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [7]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<8>_rt_410 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [8])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_xor<8> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [7]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy<8>_rt_410 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count8 )
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_xor<9> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_cy [8]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count_xor<9>_rt_408 ),
+ .O(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count9 )
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_2 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count2 ),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count [2])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_0 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count ),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count [0])
+ );
+ FDPE #(
+ .INIT ( 1'b1 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_1 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count1 ),
+ .PRE(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count [1])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_3 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count3 ),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count [3])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_4 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count4 ),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count [4])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_7 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count7 ),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count [7])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_5 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count5 ),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count [5])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_6 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count6 ),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count [6])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_8 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count8 ),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count [8])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/wpntr/count_9 (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/ram_wr_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/Mcount_count9 ),
+ .Q(\BU2/U0/grf.rf/gl0.wr/wpntr/count [9])
+ );
+ FDP #(
+ .INIT ( 1'b1 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/empty_fwft_fb (
+ .C(rd_clk),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/empty_fwft_i_or0000 ),
+ .PRE(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .Q(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/empty_fwft_fb_385 )
+ );
+ FDP #(
+ .INIT ( 1'b1 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/empty_fwft_i (
+ .C(rd_clk),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/empty_fwft_i_or0000 ),
+ .PRE(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .Q(empty)
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/user_valid (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd1-In ),
+ .Q(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/user_valid_383 )
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd1 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd1-In ),
+ .Q(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd1_382 )
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd2 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd2-In ),
+ .Q(\BU2/U0/grf.rf/gl0.rd/gr1.rfwft/curr_fwft_state_FSM_FFd2_380 )
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1_0 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/count [0]),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [0])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1_1 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/count [1]),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [1])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1_2 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/count [2]),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [2])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1_3 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/count [3]),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [3])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1_4 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/count [4]),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [4])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1_5 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/count [5]),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [5])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1_6 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/count [6]),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [6])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1_7 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/count [7]),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [7])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1_8 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/count [8]),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [8])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_d1_9 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/count [9]),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [9])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<0> (
+ .CI(\BU2/N1 ),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<0>_rt_378 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [0])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_xor<0> (
+ .CI(\BU2/N1 ),
+ .LI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<0>_rt_378 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<1> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [0]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<1>_rt_377 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [1])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_xor<1> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [0]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<1>_rt_377 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count1 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<2> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [1]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<2>_rt_375 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [2])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_xor<2> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [1]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<2>_rt_375 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count2 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<3> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [2]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<3>_rt_373 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [3])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_xor<3> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [2]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<3>_rt_373 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count3 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<4> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [3]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<4>_rt_371 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [4])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_xor<4> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [3]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<4>_rt_371 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count4 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<5> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [4]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<5>_rt_369 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [5])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_xor<5> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [4]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<5>_rt_369 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count5 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<6> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [5]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<6>_rt_367 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [6])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_xor<6> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [5]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<6>_rt_367 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count6 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<7> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [6]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<7>_rt_365 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [7])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_xor<7> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [6]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<7>_rt_365 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count7 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<8> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [7]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<8>_rt_363 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [8])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_xor<8> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [7]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy<8>_rt_363 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count8 )
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_xor<9> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_cy [8]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count_xor<9>_rt_361 ),
+ .O(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count9 )
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_2 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count2 ),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count [2])
+ );
+ FDPE #(
+ .INIT ( 1'b1 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_0 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count ),
+ .PRE(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count [0])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_1 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count1 ),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count [1])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_3 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count3 ),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count [3])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_4 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count4 ),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count [4])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_7 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count7 ),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count [7])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_5 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count5 ),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count [5])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_6 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count6 ),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count [6])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_8 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count8 ),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count [8])
+ );
+ FDCE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/rpntr/count_9 (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/ram_rd_en ),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/Mcount_count9 ),
+ .Q(\BU2/U0/grf.rf/gl0.rd/rpntr/count [9])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_0 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0008 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [0])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_1 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0007 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [1])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_2 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0006 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [2])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_3 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0005 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [3])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_4 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0004 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [4])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_5 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0003 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [5])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_6 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0002 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [6])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_7 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0001 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [7])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_8 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_xor0000 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [8])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_9 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [9]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [9])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_0 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0008 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [0])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_1 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0007 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [1])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_2 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0006 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [2])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_3 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0005 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [3])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_4 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0004 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [4])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_5 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0003 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [5])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_6 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0002 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [6])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_7 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0001 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [7])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_8 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_xor0000 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [8])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_9 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [9]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [9])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_0 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [0]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [0])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_1 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [1]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [1])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_2 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [2]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [2])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_3 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [3]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [3])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_4 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [4]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [4])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_5 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [5]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [5])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_6 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [6]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [6])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_7 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [7]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [7])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_8 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [8]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [8])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_9 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc [9]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [9])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_0 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [0]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [0])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_1 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [1]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [1])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_2 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [2]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [2])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_3 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [3]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [3])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_4 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [4]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [4])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_5 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [5]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [5])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_6 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [6]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [6])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_7 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [7]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [7])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_8 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [8]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [8])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_9 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc [9]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [9])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1_0 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [0]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [0])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1_1 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [1]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [1])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1_2 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [2]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [2])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1_3 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [3]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [3])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1_4 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [4]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [4])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1_5 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [5]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [5])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1_6 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [6]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [6])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1_7 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [7]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [7])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1_8 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [8]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [8])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1_9 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg [9]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [9])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1_0 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [0]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [0])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1_1 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [1]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [1])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1_2 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [2]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [2])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1_3 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [3]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [3])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1_4 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [4]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [4])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1_5 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [5]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [5])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1_6 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [6]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [6])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1_7 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [7]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [7])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1_8 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [8]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [8])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1_9 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg [9]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [9])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_0 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0008 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [0])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_1 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0007 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [1])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_2 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0006 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [2])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_3 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0005 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [3])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_4 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0004 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [4])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_5 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0003 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [5])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_6 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0002 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [6])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_7 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0001 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [7])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_8 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_xor0000 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [8])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin_9 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc_asreg_d1 [9]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [9])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_0 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0008 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [0])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_1 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0007 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [1])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_2 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0006 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [2])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_3 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0005 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [3])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_4 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0004 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [4])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_5 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0003 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [5])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_6 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0002 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [6])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_7 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0001 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [7])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_8 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_xor0000 ),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [8])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin_9 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0]),
+ .D(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1 [9]),
+ .Q(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [9])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/gmux.gm[0].gm1.m1 (
+ .CI(\BU2/N1 ),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1 [0]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/carrynet [0])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/gmux.gm[1].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/carrynet [0]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1 [1]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/carrynet [1])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/gmux.gm[2].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/carrynet [1]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1 [2]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/carrynet [2])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/gmux.gm[3].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/carrynet [2]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1 [3]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/carrynet [3])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/gmux.gm[4].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/carrynet [3]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c2/v1 [4]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/comp2 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/gmux.gm[0].gm1.m1 (
+ .CI(\BU2/N1 ),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1 [0]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/carrynet [0])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/gmux.gm[1].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/carrynet [0]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1 [1]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/carrynet [1])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/gmux.gm[2].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/carrynet [1]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1 [2]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/carrynet [2])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/gmux.gm[3].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/carrynet [2]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1 [3]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/carrynet [3])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/gmux.gm[4].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/carrynet [3]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/c1/v1 [4]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/comp1 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/gmux.gm[0].gm1.m1 (
+ .CI(\BU2/N1 ),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1 [0]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/carrynet [0])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/gmux.gm[1].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/carrynet [0]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1 [1]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/carrynet [1])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/gmux.gm[2].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/carrynet [1]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1 [2]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/carrynet [2])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/gmux.gm[3].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/carrynet [2]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1 [3]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/carrynet [3])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/gmux.gm[4].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/carrynet [3]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c1/v1 [4]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/comp1 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/gmux.gm[0].gm1.m1 (
+ .CI(\BU2/N1 ),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1 [0]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/carrynet [0])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/gmux.gm[1].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/carrynet [0]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1 [1]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/carrynet [1])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/gmux.gm[2].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/carrynet [1]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1 [2]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/carrynet [2])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/gmux.gm[3].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/carrynet [2]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1 [3]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/carrynet [3])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/gmux.gm[4].gms.ms (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/carrynet [3]),
+ .DI(\BU2/data_count [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gras.rsts/c0/v1 [4]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gras.rsts/comp0 )
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_xor<9> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [8]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [9]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000016 )
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut<9> (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [9]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [9]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [9])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_xor<8> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [7]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [8]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000014 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy<8> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [7]),
+ .DI(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [8]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [8]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [8])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut<8> (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [8]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [8]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [8])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_xor<7> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [6]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [7]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000012 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy<7> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [6]),
+ .DI(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [7]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [7]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [7])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut<7> (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [7]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [7]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [7])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_xor<6> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [5]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [6]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add000010 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy<6> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [5]),
+ .DI(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [6]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [6]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [6])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut<6> (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [6]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [6]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [6])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_xor<5> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [4]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [5]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00008 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy<5> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [4]),
+ .DI(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [5]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [5]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [5])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut<5> (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [5]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [5]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [5])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_xor<4> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [3]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [4]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00006 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy<4> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [3]),
+ .DI(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [4]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [4]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [4])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut<4> (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [4]),
+ .I1(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [4]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [4])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_xor<3> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [2]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [3]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00004 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy<3> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [2]),
+ .DI(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [3]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [3]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [3])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut<3> (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [3]),
+ .I1(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [3]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [3])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_xor<2> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [1]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [2]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add00002 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy<2> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [1]),
+ .DI(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [2]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [2]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [2])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut<2> (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [2]),
+ .I1(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [2]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [2])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_xor<1> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [0]),
+ .LI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [1]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy[1] )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy<1> (
+ .CI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [0]),
+ .DI(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [1]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [1]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [1])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut<1> (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [1]),
+ .I1(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [1]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [1])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_xor<0> (
+ .CI(\BU2/N1 ),
+ .LI(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [0]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/diff_wr_rd_tmp [0])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy<0> (
+ .CI(\BU2/N1 ),
+ .DI(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [0]),
+ .S(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [0]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_cy [0])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut<0> (
+ .I0(\BU2/U0/grf.rf/gl0.wr/wpntr/count_d2 [0]),
+ .I1(\BU2/U0/grf.rf/gcx.clkx/rd_pntr_bin [0]),
+ .O(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Msub_diff_wr_rd_tmp_lut [0])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_xor<9> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [8]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [9]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000016 )
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut<9> (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [9]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [9]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [9])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_xor<8> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [7]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [8]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000014 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy<8> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [7]),
+ .DI(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [8]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [8]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [8])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut<8> (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [8]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [8]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [8])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_xor<7> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [6]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [7]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000012 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy<7> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [6]),
+ .DI(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [7]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [7]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [7])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut<7> (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [7]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [7]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [7])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_xor<6> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [5]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [6]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub000010 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy<6> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [5]),
+ .DI(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [6]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [6]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [6])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut<6> (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [6]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [6]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [6])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_xor<5> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [4]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [5]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00008 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy<5> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [4]),
+ .DI(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [5]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [5]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [5])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut<5> (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [5]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [5]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [5])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_xor<4> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [3]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [4]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00006 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy<4> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [3]),
+ .DI(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [4]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [4]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [4])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut<4> (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [4]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [4]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [4])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_xor<3> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [2]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [3]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00004 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy<3> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [2]),
+ .DI(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [3]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [3]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [3])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut<3> (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [3]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [3]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [3])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_xor<2> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [1]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [2]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub00002 )
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy<2> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [1]),
+ .DI(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [2]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [2]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [2])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut<2> (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [2]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [2]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [2])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_xor<1> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [0]),
+ .LI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [1]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Madd_rd_dc_i_addsub0000_cy [1])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy<1> (
+ .CI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [0]),
+ .DI(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [1]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [1]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [1])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut<1> (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [1]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [1]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [1])
+ );
+ XORCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_xor<0> (
+ .CI(\BU2/N1 ),
+ .LI(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [0]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/diff_wr_rd_tmp [0])
+ );
+ MUXCY \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy<0> (
+ .CI(\BU2/N1 ),
+ .DI(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [0]),
+ .S(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [0]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_cy [0])
+ );
+ LUT2 #(
+ .INIT ( 4'h9 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut<0> (
+ .I0(\BU2/U0/grf.rf/gcx.clkx/wr_pntr_bin [0]),
+ .I1(\BU2/U0/grf.rf/gl0.rd/rpntr/count_d1 [0]),
+ .O(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/Msub_diff_wr_rd_tmp_lut [0])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_10 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/Madd_wr_data_count_i_add0000_cy[9] ),
+ .Q(wr_data_count_5[10])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_9 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [9]),
+ .Q(wr_data_count_5[9])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_8 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [8]),
+ .Q(wr_data_count_5[8])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_7 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [7]),
+ .Q(wr_data_count_5[7])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_6 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [6]),
+ .Q(wr_data_count_5[6])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_5 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [5]),
+ .Q(wr_data_count_5[5])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_4 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [4]),
+ .Q(wr_data_count_5[4])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_3 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [3]),
+ .Q(wr_data_count_5[3])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_2 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [2]),
+ .Q(wr_data_count_5[2])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_1 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_add0000 [1]),
+ .Q(wr_data_count_5[1])
+ );
+ FDC #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/wr_data_count_i_0 (
+ .C(wr_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .D(\BU2/U0/grf.rf/gl0.wr/gwdc1.wdcext/diff_wr_rd_tmp [0]),
+ .Q(wr_data_count_5[0])
+ );
+ FDP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/gwas.wsts/ram_full_fb_i (
+ .C(wr_clk),
+ .D(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/ram_full_i_or0000 ),
+ .PRE(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .Q(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/ram_full_fb_i_94 )
+ );
+ FDP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.wr/gwas.wsts/ram_full_i (
+ .C(wr_clk),
+ .D(\BU2/U0/grf.rf/gl0.wr/gwas.wsts/ram_full_i_or0000 ),
+ .PRE(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1]),
+ .Q(full)
+ );
+ FDCP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_10 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [10]),
+ .PRE(\BU2/data_count [0]),
+ .Q(rd_data_count_4[10])
+ );
+ FDCP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_9 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [9]),
+ .PRE(\BU2/data_count [0]),
+ .Q(rd_data_count_4[9])
+ );
+ FDCP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_8 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [8]),
+ .PRE(\BU2/data_count [0]),
+ .Q(rd_data_count_4[8])
+ );
+ FDCP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_7 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [7]),
+ .PRE(\BU2/data_count [0]),
+ .Q(rd_data_count_4[7])
+ );
+ FDCP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_6 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [6]),
+ .PRE(\BU2/data_count [0]),
+ .Q(rd_data_count_4[6])
+ );
+ FDCP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_5 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [5]),
+ .PRE(\BU2/data_count [0]),
+ .Q(rd_data_count_4[5])
+ );
+ FDCP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_4 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [4]),
+ .PRE(\BU2/data_count [0]),
+ .Q(rd_data_count_4[4])
+ );
+ FDCP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_3 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [3]),
+ .PRE(\BU2/data_count [0]),
+ .Q(rd_data_count_4[3])
+ );
+ FDCP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_2 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [2]),
+ .PRE(\BU2/data_count [0]),
+ .Q(rd_data_count_4[2])
+ );
+ FDCP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_1 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [1]),
+ .PRE(\BU2/data_count [0]),
+ .Q(rd_data_count_4[1])
+ );
+ FDCP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_0 (
+ .C(rd_clk),
+ .CLR(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .D(\BU2/U0/grf.rf/gl0.rd/gr1.grdc2.rdc/rd_dc_i_mux0002 [0]),
+ .PRE(\BU2/data_count [0]),
+ .Q(rd_data_count_4[0])
+ );
+ FDP #(
+ .INIT ( 1'b1 ))
+ \BU2/U0/grf.rf/gl0.rd/gras.rsts/ram_empty_fb_i (
+ .C(rd_clk),
+ .D(\BU2/U0/grf.rf/gl0.rd/gras.rsts/ram_empty_fb_i_or0000 ),
+ .PRE(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2]),
+ .Q(\BU2/U0/grf.rf/gl0.rd/gras.rsts/ram_empty_fb_i_81 )
+ );
+ FDP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/rstblk/wr_rst_reg_0 (
+ .C(wr_clk),
+ .D(\BU2/data_count [0]),
+ .PRE(\BU2/U0/grf.rf/rstblk/wr_rst_comb ),
+ .Q(\BU2/U0/grf.rf/rstblk/wr_rst_reg [0])
+ );
+ FDP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/rstblk/wr_rst_reg_1 (
+ .C(wr_clk),
+ .D(\BU2/data_count [0]),
+ .PRE(\BU2/U0/grf.rf/rstblk/wr_rst_comb ),
+ .Q(\BU2/U0/grf.rf/rstblk/wr_rst_reg [1])
+ );
+ FDP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/rstblk/rd_rst_reg_0 (
+ .C(rd_clk),
+ .D(\BU2/data_count [0]),
+ .PRE(\BU2/U0/grf.rf/rstblk/rd_rst_comb ),
+ .Q(\BU2/U0/grf.rf/rstblk/rd_rst_reg [0])
+ );
+ FDP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/rstblk/rd_rst_reg_1 (
+ .C(rd_clk),
+ .D(\BU2/data_count [0]),
+ .PRE(\BU2/U0/grf.rf/rstblk/rd_rst_comb ),
+ .Q(\BU2/U0/grf.rf/rstblk/rd_rst_reg [1])
+ );
+ FDP #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/rstblk/rd_rst_reg_2 (
+ .C(rd_clk),
+ .D(\BU2/data_count [0]),
+ .PRE(\BU2/U0/grf.rf/rstblk/rd_rst_comb ),
+ .Q(\BU2/U0/grf.rf/rstblk/rd_rst_reg [2])
+ );
+ FDPE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/rstblk/rd_rst_asreg (
+ .C(rd_clk),
+ .CE(\BU2/U0/grf.rf/rstblk/rd_rst_asreg_d1_67 ),
+ .D(\BU2/data_count [0]),
+ .PRE(rst),
+ .Q(\BU2/U0/grf.rf/rstblk/rd_rst_asreg_71 )
+ );
+ FD #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/rstblk/wr_rst_asreg_d1 (
+ .C(wr_clk),
+ .D(\BU2/U0/grf.rf/rstblk/wr_rst_asreg_72 ),
+ .Q(\BU2/U0/grf.rf/rstblk/wr_rst_asreg_d1_69 )
+ );
+ FDPE #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/rstblk/wr_rst_asreg (
+ .C(wr_clk),
+ .CE(\BU2/U0/grf.rf/rstblk/wr_rst_asreg_d1_69 ),
+ .D(\BU2/data_count [0]),
+ .PRE(rst),
+ .Q(\BU2/U0/grf.rf/rstblk/wr_rst_asreg_72 )
+ );
+ FD #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/rstblk/rd_rst_asreg_d1 (
+ .C(rd_clk),
+ .D(\BU2/U0/grf.rf/rstblk/rd_rst_asreg_71 ),
+ .Q(\BU2/U0/grf.rf/rstblk/rd_rst_asreg_d1_67 )
+ );
+ FD #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/rstblk/wr_rst_asreg_d2 (
+ .C(wr_clk),
+ .D(\BU2/U0/grf.rf/rstblk/wr_rst_asreg_d1_69 ),
+ .Q(\BU2/U0/grf.rf/rstblk/wr_rst_asreg_d2_70 )
+ );
+ FD #(
+ .INIT ( 1'b0 ))
+ \BU2/U0/grf.rf/rstblk/rd_rst_asreg_d2 (
+ .C(rd_clk),
+ .D(\BU2/U0/grf.rf/rstblk/rd_rst_asreg_d1_67 ),
+ .Q(\BU2/U0/grf.rf/rstblk/rd_rst_asreg_d2_68 )
+ );
+ VCC \BU2/XST_VCC (
+ .P(\BU2/N1 )
+ );
+ GND \BU2/XST_GND (
+ .G(\BU2/data_count [0])
+ );
+
+// synthesis translate_on
+
+endmodule
+
+// synthesis translate_off
+
+`timescale 1 ps / 1 ps
+
+module glbl ();
+
+ parameter ROC_WIDTH = 100000;
+ parameter TOC_WIDTH = 0;
+
+ wire GSR;
+ wire GTS;
+ wire PRLD;
+
+ reg GSR_int;
+ reg GTS_int;
+ reg PRLD_int;
+
+//-------- JTAG Globals --------------
+ wire JTAG_TDO_GLBL;
+ wire JTAG_TCK_GLBL;
+ wire JTAG_TDI_GLBL;
+ wire JTAG_TMS_GLBL;
+ wire JTAG_TRST_GLBL;
+
+ reg JTAG_CAPTURE_GLBL;
+ reg JTAG_RESET_GLBL;
+ reg JTAG_SHIFT_GLBL;
+ reg JTAG_UPDATE_GLBL;
+
+ reg JTAG_SEL1_GLBL = 0;
+ reg JTAG_SEL2_GLBL = 0 ;
+ reg JTAG_SEL3_GLBL = 0;
+ reg JTAG_SEL4_GLBL = 0;
+
+ reg JTAG_USER_TDO1_GLBL = 1'bz;
+ reg JTAG_USER_TDO2_GLBL = 1'bz;
+ reg JTAG_USER_TDO3_GLBL = 1'bz;
+ reg JTAG_USER_TDO4_GLBL = 1'bz;
+
+ assign (weak1, weak0) GSR = GSR_int;
+ assign (weak1, weak0) GTS = GTS_int;
+ assign (weak1, weak0) PRLD = PRLD_int;
+
+ initial begin
+ GSR_int = 1'b1;
+ PRLD_int = 1'b1;
+ #(ROC_WIDTH)
+ GSR_int = 1'b0;
+ PRLD_int = 1'b0;
+ end
+
+ initial begin
+ GTS_int = 1'b1;
+ #(TOC_WIDTH)
+ GTS_int = 1'b0;
+ end
+
+endmodule
+
+// synthesis translate_on
diff --git a/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.veo b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.veo
new file mode 100644
index 000000000..c98e03c3b
--- /dev/null
+++ b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.veo
@@ -0,0 +1,47 @@
+/*******************************************************************************
+* 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. *
+*******************************************************************************/
+// The following must be inserted into your Verilog file for this
+// core to be instantiated. Change the instance name and port connections
+// (in parentheses) to your own signal names.
+
+//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
+fifo_xlnx_1Kx18_2clk YourInstanceName (
+ .din(din), // Bus [17 : 0]
+ .rd_clk(rd_clk),
+ .rd_en(rd_en),
+ .rst(rst),
+ .wr_clk(wr_clk),
+ .wr_en(wr_en),
+ .dout(dout), // Bus [17 : 0]
+ .empty(empty),
+ .full(full),
+ .rd_data_count(rd_data_count), // Bus [10 : 0]
+ .wr_data_count(wr_data_count)); // Bus [10 : 0]
+
+// INST_TAG_END ------ End INSTANTIATION Template ---------
diff --git a/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.xco b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.xco
new file mode 100644
index 000000000..082aef22b
--- /dev/null
+++ b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk.xco
@@ -0,0 +1,82 @@
+##############################################################
+#
+# Xilinx Core Generator version K.39
+# Date: Fri Jun 10 23:12:12 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 = false
+SET busformat = BusFormatAngleBracketNotRipped
+SET createndf = false
+SET designentry = Verilog
+SET device = xc3s2000
+SET devicefamily = spartan3
+SET flowvendor = Other
+SET formalverification = false
+SET foundationsym = false
+SET implementationfiletype = Ngc
+SET package = fg456
+SET removerpms = false
+SET simulationfiles = Structural
+SET speedgrade = -5
+SET verilogsim = true
+SET vhdlsim = false
+# END Project Options
+# BEGIN Select
+SELECT Fifo_Generator family Xilinx,_Inc. 4.3
+# END Select
+# BEGIN Parameters
+CSET almost_empty_flag=false
+CSET almost_full_flag=false
+CSET component_name=fifo_xlnx_1Kx18_2clk
+CSET data_count=false
+CSET data_count_width=11
+CSET disable_timing_violations=false
+CSET dout_reset_value=0
+CSET empty_threshold_assert_value=4
+CSET empty_threshold_negate_value=5
+CSET enable_ecc=false
+CSET enable_int_clk=false
+CSET fifo_implementation=Independent_Clocks_Block_RAM
+CSET full_flags_reset_value=1
+CSET full_threshold_assert_value=1023
+CSET full_threshold_negate_value=1022
+CSET input_data_width=18
+CSET input_depth=1024
+CSET output_data_width=18
+CSET output_depth=1024
+CSET overflow_flag=false
+CSET overflow_sense=Active_High
+CSET performance_options=First_Word_Fall_Through
+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=true
+CSET read_data_count_width=11
+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=true
+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=true
+CSET write_data_count_width=11
+# END Parameters
+GENERATE
+# CRC: c3fb8408
+
diff --git a/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_fifo_generator_v4_3_xst_1.lso b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_fifo_generator_v4_3_xst_1.lso
new file mode 100644
index 000000000..f1a6f7899
--- /dev/null
+++ b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_fifo_generator_v4_3_xst_1.lso
@@ -0,0 +1,3 @@
+blkmemdp_v6_2
+blk_mem_gen_v2_6
+fifo_generator_v4_3
diff --git a/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt
new file mode 100644
index 000000000..be22cb8dc
--- /dev/null
+++ b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<document OS="lin64" product="ISE" version="10.1.03">
+
+ <!--The data in this file is primarily intended for consumption by Xilinx tools.
+ The structure and the elements are likely to change over the next few releases.
+ This means code written to parse this file will need to be revisited each subsequent release.-->
+
+ <application stringID="Xst" timeStamp="Fri Jun 10 16:11:52 2011">
+ <section stringID="XST_HDL_SYNTHESIS_REPORT">
+ <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="4"></item>
+ <item dataType="int" stringID="XST_COUNTERS" value="2">
+ <item dataType="int" stringID="XST_10BIT_UP_COUNTER" value="2"/>
+ </item>
+ <item dataType="int" stringID="XST_REGISTERS" value="31">
+ <item dataType="int" stringID="XST_1BIT_REGISTER" value="15"/>
+ <item dataType="int" stringID="XST_10BIT_REGISTER" value="11"/>
+ <item dataType="int" stringID="XST_11BIT_REGISTER" value="2"/>
+ <item dataType="int" stringID="XST_2BIT_REGISTER" value="1"/>
+ <item dataType="int" stringID="XST_3BIT_REGISTER" value="1"/>
+ </item>
+ <item dataType="int" stringID="XST_XORS" value="76">
+ <item dataType="int" stringID="XST_1BIT_XOR2" value="76"/>
+ </item>
+ </section>
+ <section stringID="XST_ADVANCED_HDL_SYNTHESIS_REPORT">
+ <item dataType="int" stringID="XST_FSMS" value="1"/>
+ <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="4"></item>
+ <item dataType="int" stringID="XST_COUNTERS" value="2">
+ <item dataType="int" stringID="XST_10BIT_UP_COUNTER" value="2"/>
+ </item>
+ <item dataType="int" stringID="XST_REGISTERS" value="159">
+ <item dataType="int" stringID="XST_FLIPFLOPS" value="159"/>
+ </item>
+ <item dataType="int" stringID="XST_XORS" value="76">
+ <item dataType="int" stringID="XST_1BIT_XOR2" value="76"/>
+ </item>
+ </section>
+ <section stringID="XST_FINAL_REGISTER_REPORT">
+ <item dataType="int" stringID="XST_REGISTERS" value="189">
+ <item dataType="int" stringID="XST_FLIPFLOPS" value="189"/>
+ </item>
+ </section>
+ <section stringID="XST_PARTITION_REPORT">
+ <section stringID="XST_PARTITION_IMPLEMENTATION_STATUS">
+ <section stringID="XST_NO_PARTITIONS_WERE_FOUND_IN_THIS_DESIGN"/>
+ </section>
+ </section>
+ <section stringID="XST_FINAL_REPORT">
+ <section stringID="XST_FINAL_RESULTS">
+ <item stringID="XST_TOP_LEVEL_OUTPUT_FILE_NAME" value="/tmp/_cg/fifo_xlnx_1Kx18_2clk_fifo_generator_v4_3_xst_1.ngc"/>
+ <item stringID="XST_OUTPUT_FORMAT" value="NGC"/>
+ <item stringID="XST_OPTIMIZATION_GOAL" value="SPEED"/>
+ <item stringID="XST_KEEP_HIERARCHY" value="no"/>
+ </section>
+ <section stringID="XST_DESIGN_STATISTICS">
+ <item stringID="XST_IOS" value="153"/>
+ </section>
+ <section stringID="XST_CELL_USAGE">
+ <item dataType="int" stringID="XST_BELS" value="248">
+ <item dataType="int" stringID="XST_GND" value="1"/>
+ <item dataType="int" stringID="XST_INV" value="1"/>
+ <item dataType="int" stringID="XST_LUT1" value="20"/>
+ <item dataType="int" stringID="XST_LUT2" value="52"/>
+ <item dataType="int" stringID="XST_LUT2D" value="1"/>
+ <item dataType="int" stringID="XST_LUT3" value="14"/>
+ <item dataType="int" stringID="XST_LUT3D" value="3"/>
+ <item dataType="int" stringID="XST_LUT3L" value="1"/>
+ <item dataType="int" stringID="XST_LUT4" value="54"/>
+ <item dataType="int" stringID="XST_LUT4D" value="2"/>
+ <item dataType="int" stringID="XST_LUT4L" value="2"/>
+ <item dataType="int" stringID="XST_MUXCY" value="56"/>
+ <item dataType="int" stringID="XST_VCC" value="1"/>
+ <item dataType="int" stringID="XST_XORCY" value="40"/>
+ </item>
+ <item dataType="int" stringID="XST_FLIPFLOPSLATCHES" value="189">
+ <item dataType="int" stringID="XST_FD" value="4"/>
+ <item dataType="int" stringID="XST_FDC" value="94"/>
+ <item dataType="int" stringID="XST_FDCE" value="65"/>
+ <item dataType="int" stringID="XST_FDP" value="10"/>
+ <item dataType="int" stringID="XST_FDPE" value="5"/>
+ </item>
+ <item dataType="int" stringID="XST_RAMS" value="1">
+ <item dataType="int" stringID="XST_RAMB16S18S18" value="1"/>
+ </item>
+ </section>
+ </section>
+ <section stringID="XST_DEVICE_UTILIZATION_SUMMARY">
+ <item stringID="XST_SELECTED_DEVICE" value="3s2000fg456-5"/>
+ <item AVAILABLE="20480" dataType="int" stringID="XST_NUMBER_OF_SLICES" value="139"/>
+ <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_SLICE_FLIP_FLOPS" value="189"/>
+ <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_4_INPUT_LUTS" value="150"/>
+ <item dataType="int" stringID="XST_NUMBER_OF_IOS" value="153"/>
+ <item AVAILABLE="333" dataType="int" stringID="XST_NUMBER_OF_BONDED_IOBS" value="0"/>
+ <item AVAILABLE="40" dataType="int" stringID="XST_NUMBER_OF_BRAMS" value="1"/>
+ </section>
+ <section stringID="XST_PARTITION_RESOURCE_SUMMARY">
+ <section stringID="XST_NO_PARTITIONS_WERE_FOUND_IN_THIS_DESIGN"/>
+ </section>
+ <section stringID="XST_ERRORS_STATISTICS">
+ <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_ERRORS" value="0"/>
+ <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_WARNINGS" value="136"/>
+ <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_INFOS" value="17"/>
+ </section>
+ </application>
+
+</document>
diff --git a/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_flist.txt b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_flist.txt
new file mode 100644
index 000000000..3bd308751
--- /dev/null
+++ b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_flist.txt
@@ -0,0 +1,8 @@
+# Output products list for <fifo_xlnx_1Kx18_2clk>
+fifo_xlnx_1Kx18_2clk.ngc
+fifo_xlnx_1Kx18_2clk.v
+fifo_xlnx_1Kx18_2clk.veo
+fifo_xlnx_1Kx18_2clk.xco
+fifo_xlnx_1Kx18_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt
+fifo_xlnx_1Kx18_2clk_flist.txt
+fifo_xlnx_1Kx18_2clk_xmdf.tcl
diff --git a/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_readme.txt b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_readme.txt
new file mode 100644
index 000000000..72f83d6fb
--- /dev/null
+++ b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_readme.txt
@@ -0,0 +1,38 @@
+The following files were generated for 'fifo_xlnx_1Kx18_2clk' in directory
+/home/matt/sourcerepo/fpga/usrp2/coregen/:
+
+fifo_xlnx_1Kx18_2clk.ngc:
+ Binary Xilinx implementation netlist file containing the information
+ required to implement the module in a Xilinx (R) FPGA.
+
+fifo_xlnx_1Kx18_2clk.v:
+ Unisim Verilog file containing the information required to simulate
+ the module.
+
+fifo_xlnx_1Kx18_2clk.veo:
+ VEO template file containing code that can be used as a model for
+ instantiating a CORE Generator module in a Verilog design.
+
+fifo_xlnx_1Kx18_2clk.xco:
+ CORE Generator input file containing the parameters used to
+ regenerate a core.
+
+fifo_xlnx_1Kx18_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt:
+ Please see the core data sheet.
+
+fifo_xlnx_1Kx18_2clk_flist.txt:
+ Text file listing all of the output files produced when a customized
+ core was generated in the CORE Generator.
+
+fifo_xlnx_1Kx18_2clk_readme.txt:
+ Text file indicating the files generated and how they are used.
+
+fifo_xlnx_1Kx18_2clk_xmdf.tcl:
+ ISE Project Navigator interface file. ISE uses this file to determine
+ how the files output by CORE Generator for the core can be integrated
+ into your ISE project.
+
+
+Please see the Xilinx CORE Generator online help for further details on
+generated files and how to use them.
+
diff --git a/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_xmdf.tcl b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_xmdf.tcl
new file mode 100644
index 000000000..244d03d85
--- /dev/null
+++ b/fpga/usrp2/coregen/fifo_xlnx_1Kx18_2clk_xmdf.tcl
@@ -0,0 +1,68 @@
+# The package naming convention is <core_name>_xmdf
+package provide fifo_xlnx_1Kx18_2clk_xmdf 1.0
+
+# This includes some utilities that support common XMDF operations
+package require utilities_xmdf
+
+# Define a namespace for this package. The name of the name space
+# is <core_name>_xmdf
+namespace eval ::fifo_xlnx_1Kx18_2clk_xmdf {
+# Use this to define any statics
+}
+
+# Function called by client to rebuild the params and port arrays
+# Optional when the use context does not require the param or ports
+# arrays to be available.
+proc ::fifo_xlnx_1Kx18_2clk_xmdf::xmdfInit { instance } {
+# Variable containg name of library into which module is compiled
+# Recommendation: <module_name>
+# Required
+utilities_xmdf::xmdfSetData $instance Module Attributes Name fifo_xlnx_1Kx18_2clk
+}
+# ::fifo_xlnx_1Kx18_2clk_xmdf::xmdfInit
+
+# Function called by client to fill in all the xmdf* data variables
+# based on the current settings of the parameters
+proc ::fifo_xlnx_1Kx18_2clk_xmdf::xmdfApplyParams { instance } {
+
+set fcount 0
+# Array containing libraries that are assumed to exist
+# Examples include unisim and xilinxcorelib
+# Optional
+# In this example, we assume that the unisim library will
+# be magically
+# available to the simulation and synthesis tool
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library
+utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_1Kx18_2clk.ngc
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_1Kx18_2clk.v
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_1Kx18_2clk.veo
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog_template
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_1Kx18_2clk.xco
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_1Kx18_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_1Kx18_2clk_xmdf.tcl
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module fifo_xlnx_1Kx18_2clk
+incr fcount
+
+}
+
+# ::gen_comp_name_xmdf::xmdfApplyParams
diff --git a/fpga/usrp2/fifo/fifo_2clock.v b/fpga/usrp2/fifo/fifo_2clock.v
index 756ad508f..c6aaf34dc 100644
--- a/fpga/usrp2/fifo/fifo_2clock.v
+++ b/fpga/usrp2/fifo/fifo_2clock.v
@@ -65,6 +65,11 @@ module fifo_2clock
(.rst(arst),
.wr_clk(wclk),.din({1'b0,datain}),.full(full),.wr_en(write),.wr_data_count(level_wclk),
.rd_clk(rclk),.dout({dummy,dataout}),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) );
+ else if ((WIDTH==18) & (SIZE==10))
+ fifo_xlnx_1Kx18_2clk fifo_xlnx_1Kx18_2clk
+ (.rst(arst),
+ .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk),
+ .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) );
endgenerate
assign occupied = {{(16-SIZE-1){1'b0}},level_rclk};
diff --git a/fpga/usrp2/gpmc/Makefile.srcs b/fpga/usrp2/gpmc/Makefile.srcs
index bff6ae3e0..bf0c0ecfd 100644
--- a/fpga/usrp2/gpmc/Makefile.srcs
+++ b/fpga/usrp2/gpmc/Makefile.srcs
@@ -17,4 +17,6 @@ gpmc_to_fifo_async.v \
gpmc_to_fifo_sync.v \
gpmc_wb.v \
ram_to_fifo.v \
+new_write.v \
+new_read.v \
))
diff --git a/fpga/usrp2/gpmc/fifo_watcher.v b/fpga/usrp2/gpmc/fifo_watcher.v
index b139f5143..3971e3c54 100644
--- a/fpga/usrp2/gpmc/fifo_watcher.v
+++ b/fpga/usrp2/gpmc/fifo_watcher.v
@@ -30,10 +30,11 @@ module fifo_watcher
reg [15:0] counter;
wire [4:0] pkt_count;
assign debug = pkt_count;
+ wire space;
fifo_short #(.WIDTH(16)) frame_lengths
(.clk(clk), .reset(reset), .clear(clear),
- .datain(counter), .src_rdy_i(write), .dst_rdy_o(),
+ .datain(counter), .src_rdy_i(write), .dst_rdy_o(space),
.dataout(length), .src_rdy_o(have_packet_int), .dst_rdy_i(read),
.occupied(pkt_count), .space());
@@ -53,7 +54,9 @@ module fifo_watcher
bus_error <= 1;
else if(read & ~have_packet_int)
bus_error <= 1;
-
+ else if(write & ~space)
+ bus_error <= 1;
+
reg in_packet;
always @(posedge clk)
if(reset | clear)
diff --git a/fpga/usrp2/gpmc/gpmc_async.v b/fpga/usrp2/gpmc/gpmc_async.v
index c0bec683a..9972e81b0 100644
--- a/fpga/usrp2/gpmc/gpmc_async.v
+++ b/fpga/usrp2/gpmc/gpmc_async.v
@@ -22,7 +22,7 @@ module gpmc_async
parameter RXFIFOSIZE = 11,
parameter BUSDEBUG = 1)
(// GPMC signals
- input arst,
+ input arst, input bus_clk,
input EM_CLK, inout [15:0] EM_D, input [10:1] EM_A, input [1:0] EM_NBE,
input EM_WAIT0, input EM_NCS4, input EM_NCS6, input EM_NWE, input EM_NOE,
@@ -67,27 +67,21 @@ module gpmc_async
// ////////////////////////////////////////////
// TX Data Path
- wire [17:0] tx18_data, tx18b_data;
- wire tx18_src_rdy, tx18_dst_rdy, tx18b_src_rdy, tx18b_dst_rdy;
+ wire [17:0] tx18_data;
+ wire tx18_src_rdy, tx18_dst_rdy;
wire [15:0] tx_fifo_space;
wire [35:0] tx36_data, tx_data;
wire tx36_src_rdy, tx36_dst_rdy, tx_src_rdy, tx_dst_rdy;
- gpmc_to_fifo_async gpmc_to_fifo_async
+ new_write new_write
(.EM_D(EM_D), .EM_NBE(EM_NBE), .EM_NCS(EM_NCS4), .EM_NWE(EM_NWE),
- .fifo_clk(fifo_clk), .fifo_rst(fifo_rst), .clear(clear_tx),
+ .bus_clk(bus_clk), .fifo_clk(fifo_clk), .fifo_rst(fifo_rst), .clear(clear_tx),
.data_o(tx18_data), .src_rdy_o(tx18_src_rdy), .dst_rdy_i(tx18_dst_rdy),
- .frame_len(tx_frame_len), .fifo_space(tx_fifo_space), .fifo_ready(tx_have_space),
- .bus_error(bus_error_tx) );
+ .frame_len(tx_frame_len), .fifo_ready(tx_have_space), .bus_error(bus_error_tx) );
- fifo_cascade #(.WIDTH(18), .SIZE(10)) tx_fifo
- (.clk(fifo_clk), .reset(fifo_rst), .clear(clear_tx),
- .datain(tx18_data), .src_rdy_i(tx18_src_rdy), .dst_rdy_o(tx18_dst_rdy), .space(tx_fifo_space),
- .dataout(tx18b_data), .src_rdy_o(tx18b_src_rdy), .dst_rdy_i(tx18b_dst_rdy), .occupied());
-
fifo19_to_fifo36 #(.LE(1)) f19_to_f36 // Little endian because ARM is LE
(.clk(fifo_clk), .reset(fifo_rst), .clear(clear_tx),
- .f19_datain({1'b0,tx18b_data}), .f19_src_rdy_i(tx18b_src_rdy), .f19_dst_rdy_o(tx18b_dst_rdy),
+ .f19_datain({1'b0,tx18_data}), .f19_src_rdy_i(tx18_src_rdy), .f19_dst_rdy_o(tx18_dst_rdy),
.f36_dataout(tx36_data), .f36_src_rdy_o(tx36_src_rdy), .f36_dst_rdy_i(tx36_dst_rdy));
fifo_cascade #(.WIDTH(36), .SIZE(TXFIFOSIZE)) tx_fifo36
@@ -110,31 +104,20 @@ module gpmc_async
.datain(rx_data), .src_rdy_i(rx_src_rdy), .dst_rdy_o(rx_dst_rdy),
.dataout(rx36_data), .src_rdy_o(rx36_src_rdy), .dst_rdy_i(rx36_dst_rdy));
+ wire [31:0] pkt_count;
+ wire throttle = pkt_count == 16;
+
fifo36_to_fifo19 #(.LE(1)) f36_to_f19 // Little endian because ARM is LE
(.clk(fifo_clk), .reset(fifo_rst), .clear(clear_rx),
.f36_datain(rx36_data), .f36_src_rdy_i(rx36_src_rdy), .f36_dst_rdy_o(rx36_dst_rdy),
.f19_dataout({dummy,rx18_data}), .f19_src_rdy_o(rx18_src_rdy), .f19_dst_rdy_i(rx18_dst_rdy) );
- fifo_cascade #(.WIDTH(18), .SIZE(12)) rx_fifo
- (.clk(fifo_clk), .reset(fifo_rst), .clear(clear_rx),
- .datain(rx18_data), .src_rdy_i(rx18_src_rdy), .dst_rdy_o(rx18_dst_rdy), .space(rx_fifo_space),
- .dataout(rx18b_data), .src_rdy_o(rx18b_src_rdy), .dst_rdy_i(rx18b_dst_rdy), .occupied());
-
- fifo_to_gpmc_async fifo_to_gpmc_async
+ new_read new_read
(.clk(fifo_clk), .reset(fifo_rst), .clear(clear_rx),
- .data_i(rx18b_data), .src_rdy_i(rx18b_src_rdy), .dst_rdy_o(rx18b_dst_rdy),
+ .data_i(rx18_data), .src_rdy_i(rx18_src_rdy), .dst_rdy_o(rx18_dst_rdy),
.EM_D(EM_D_fifo), .EM_NCS(EM_NCS4), .EM_NOE(EM_NOE),
- .frame_len(rx_frame_len) );
-
- wire [31:0] pkt_count;
+ .have_packet(rx_have_data), .frame_len(rx_frame_len), .bus_error(bus_error_rx) );
- fifo_watcher fifo_watcher
- (.clk(fifo_clk), .reset(fifo_rst), .clear(clear_rx),
- .src_rdy1(rx18_src_rdy), .dst_rdy1(rx18_dst_rdy), .sof1(rx18_data[16]), .eof1(rx18_data[17]),
- .src_rdy2(rx18b_src_rdy), .dst_rdy2(rx18b_dst_rdy), .sof2(rx18b_data[16]), .eof2(rx18b_data[17]),
- .have_packet(rx_have_data), .length(rx_frame_len), .bus_error(bus_error_rx),
- .debug(pkt_count));
-
// ////////////////////////////////////////////
// Control path on CS6
@@ -230,16 +213,13 @@ module gpmc_async
// FIXME -- make sure packet completes before we shutoff
// FIXME -- handle overrun and underrun
-wire [0:17] dummy18;
-
-assign debug = {8'd0,
- test_rate,
- pkt_src_enable, pkt_sink_enable, timedrx_src_rdy_int, timedrx_dst_rdy_int,
- timedrx_src_rdy, timedrx_dst_rdy,
- testrx_src_rdy, testrx_dst_rdy,
- rx_src_rdy, rx_dst_rdy,
- rx36_src_rdy, rx36_dst_rdy,
- rx18_src_rdy, rx18_dst_rdy,
- rx18b_src_rdy, rx18b_dst_rdy};
+ wire [0:17] dummy18;
+
+ assign debug = {rx_overrun, tx_underrun, bus_error_tx, bus_error_rx, tx_have_space, rx_have_data, EM_NCS4, EM_NCS6,
+ 6'd0, EM_NOE, EM_NWE,
+ pkt_src_enable, pkt_sink_enable, timedrx_src_rdy_int, timedrx_dst_rdy_int,
+ timedrx_src_rdy, timedrx_dst_rdy,
+ testrx_src_rdy, testrx_dst_rdy,
+ rx_src_rdy, rx_dst_rdy, rx36_src_rdy, rx36_dst_rdy, rx18_src_rdy, rx18_dst_rdy, rx18b_src_rdy, rx18b_dst_rdy};
endmodule // gpmc_async
diff --git a/fpga/usrp2/gpmc/new_read.v b/fpga/usrp2/gpmc/new_read.v
new file mode 100644
index 000000000..ae3db23cf
--- /dev/null
+++ b/fpga/usrp2/gpmc/new_read.v
@@ -0,0 +1,62 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
+
+module new_read
+ (input clk, input reset, input clear,
+ input [17:0] data_i, input src_rdy_i, output dst_rdy_o,
+ output reg [15:0] EM_D, input EM_NCS, input EM_NOE,
+ output have_packet, output [15:0] frame_len, output bus_error);
+
+ wire [17:0] data_int;
+ wire src_rdy_int, dst_rdy_int;
+
+ fifo_cascade #(.WIDTH(18), .SIZE(12)) rx_fifo
+ (.clk(clk), .reset(reset), .clear(clear),
+ .datain(data_i), .src_rdy_i(src_rdy_i), .dst_rdy_o(dst_rdy_o), .space(),
+ .dataout(data_int), .src_rdy_o(src_rdy_int), .dst_rdy_i(dst_rdy_int), .occupied());
+
+ fifo_watcher fifo_watcher
+ (.clk(clk), .reset(reset), .clear(clear),
+ .src_rdy1(src_rdy_i), .dst_rdy1(dst_rdy_o), .sof1(data_i[16]), .eof1(data_i[17]),
+ .src_rdy2(src_rdy_int), .dst_rdy2(dst_rdy_int), .sof2(data_int[16]), .eof2(data_int[17]),
+ .have_packet(have_packet), .length(frame_len), .bus_error(bus_error),
+ .debug());
+
+ // Synchronize the async control signals
+ reg [1:0] cs_del, oe_del;
+ reg [15:0] counter;
+
+ always @(posedge clk)
+ if(reset)
+ begin
+ cs_del <= 2'b11;
+ oe_del <= 2'b11;
+ end
+ else
+ begin
+ cs_del <= { cs_del[0], EM_NCS };
+ oe_del <= { oe_del[0], EM_NOE };
+ end
+
+ assign dst_rdy_int = ( ~cs_del[1] & ~oe_del[1] & oe_del[0]); // change output on trailing edge
+
+ //always @(posedge clk) // 3 cycle latency ( OE -> OE_del -> FIFO -> output REG )
+ always @* // 2 cycle latency ( OE -> OE_del -> FIFO )
+ EM_D <= data_int[15:0];
+
+endmodule // new_read
diff --git a/fpga/usrp2/gpmc/new_write.v b/fpga/usrp2/gpmc/new_write.v
new file mode 100644
index 000000000..df0ce19db
--- /dev/null
+++ b/fpga/usrp2/gpmc/new_write.v
@@ -0,0 +1,82 @@
+//
+// Copyright 2011 Ettus Research LLC
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
+
+module new_write
+ (input [15:0] EM_D, input [1:0] EM_NBE, input EM_NCS, input EM_NWE,
+
+ input bus_clk,
+ input fifo_clk, input fifo_rst, input clear,
+ output [17:0] data_o, output src_rdy_o, input dst_rdy_i,
+
+ input [15:0] frame_len, output reg fifo_ready,
+ output reg bus_error );
+
+ wire [15:0] fifo_space;
+ reg [15:0] counter;
+
+ // Synchronize the async control signals
+ reg [1:0] cs_del, we_del;
+ reg [15:0] data_del[0:1];
+
+ always @(posedge bus_clk)
+ if(fifo_rst)
+ begin
+ cs_del <= 2'b11;
+ we_del <= 2'b11;
+ end
+ else
+ begin
+ cs_del <= { cs_del[0], EM_NCS };
+ we_del <= { we_del[0], EM_NWE };
+ data_del[1] <= data_del[0];
+ data_del[0] <= EM_D;
+ end
+
+ wire first_write = (counter == 0);
+ wire last_write = ((counter+1) == frame_len);
+
+ wire [17:0] data_int = {last_write,first_write,data_del[1]};
+ wire src_rdy_int = (~cs_del[1] & ~we_del[1] & we_del[0]); // rising edge
+ wire dst_rdy_int;
+
+ always @(posedge bus_clk)
+ if(fifo_rst | clear)
+ counter <= 0;
+ else if(src_rdy_int)
+ if(last_write)
+ counter <= 0;
+ else
+ counter <= counter + 1;
+
+ always @(posedge bus_clk)
+ if(fifo_rst | clear)
+ fifo_ready <= 0;
+ else
+ fifo_ready <= /* first_write & */ (fifo_space > 16'd1023);
+
+ always @(posedge bus_clk)
+ if(fifo_rst | clear)
+ bus_error <= 0;
+ else if(src_rdy_int & ~dst_rdy_int)
+ bus_error <= 1;
+
+ fifo_2clock_cascade #(.WIDTH(18), .SIZE(10)) tx_fifo
+ (.wclk(bus_clk), .datain(data_int), .src_rdy_i(src_rdy_int), .dst_rdy_o(dst_rdy_int), .space(fifo_space),
+ .rclk(fifo_clk), .dataout(data_o), .src_rdy_o(src_rdy_o), .dst_rdy_i(dst_rdy_i), .occupied(), .arst(fifo_rst));
+
+endmodule // new_write
diff --git a/fpga/usrp2/sdr_lib/Makefile.srcs b/fpga/usrp2/sdr_lib/Makefile.srcs
index 90eede20f..defbced17 100644
--- a/fpga/usrp2/sdr_lib/Makefile.srcs
+++ b/fpga/usrp2/sdr_lib/Makefile.srcs
@@ -8,6 +8,8 @@
SDR_LIB_SRCS = $(abspath $(addprefix $(BASE_DIR)/../sdr_lib/, \
acc.v \
add2.v \
+add2_and_clip.v \
+add2_and_clip_reg.v \
add2_and_round.v \
add2_and_round_reg.v \
add2_reg.v \
@@ -22,16 +24,16 @@ cordic.v \
cordic_z24.v \
cordic_stage.v \
dsp_core_rx.v \
-dsp_core_rx_old.v \
dsp_core_tx.v \
hb_dec.v \
hb_interp.v \
round.v \
round_reg.v \
-rx_control.v \
+round_sd.v \
rx_dcoffset.v \
+rx_frontend.v \
sign_extend.v \
small_hb_dec.v \
small_hb_int.v \
-tx_control.v \
+tx_frontend.v \
))
diff --git a/fpga/usrp2/sdr_lib/add2_and_clip.v b/fpga/usrp2/sdr_lib/add2_and_clip.v
new file mode 100644
index 000000000..663f5d004
--- /dev/null
+++ b/fpga/usrp2/sdr_lib/add2_and_clip.v
@@ -0,0 +1,12 @@
+
+module add2_and_clip
+ #(parameter WIDTH=16)
+ (input [WIDTH-1:0] in1,
+ input [WIDTH-1:0] in2,
+ output [WIDTH-1:0] sum);
+
+ wire [WIDTH:0] sum_int = {in1[WIDTH-1],in1} + {in2[WIDTH-1],in2};
+ clip #(.bits_in(WIDTH+1),.bits_out(WIDTH)) clip
+ (.in(sum_int),.out(sum));
+
+endmodule // add2_and_clip
diff --git a/fpga/usrp2/sdr_lib/add2_and_clip_reg.v b/fpga/usrp2/sdr_lib/add2_and_clip_reg.v
new file mode 100644
index 000000000..8073b3b54
--- /dev/null
+++ b/fpga/usrp2/sdr_lib/add2_and_clip_reg.v
@@ -0,0 +1,25 @@
+
+module add2_and_clip_reg
+ #(parameter WIDTH=16)
+ (input clk,
+ input rst,
+ input [WIDTH-1:0] in1,
+ input [WIDTH-1:0] in2,
+ input strobe_in,
+ output reg [WIDTH-1:0] sum,
+ output reg strobe_out);
+
+ wire [WIDTH-1:0] sum_int;
+
+ add2_and_clip #(.WIDTH(WIDTH)) add2_and_clip (.in1(in1),.in2(in2),.sum(sum_int));
+
+ always @(posedge clk)
+ if(rst)
+ sum <= 0;
+ else if(strobe_in)
+ sum <= sum_int;
+
+ always @(posedge clk)
+ strobe_out <= strobe_in;
+
+endmodule // add2_and_clip_reg
diff --git a/fpga/usrp2/sdr_lib/dsp_core_rx.v b/fpga/usrp2/sdr_lib/dsp_core_rx.v
index 0e69e53f7..639744de7 100644
--- a/fpga/usrp2/sdr_lib/dsp_core_rx.v
+++ b/fpga/usrp2/sdr_lib/dsp_core_rx.v
@@ -21,8 +21,8 @@ module dsp_core_rx
(input clk, input rst,
input set_stb, input [7:0] set_addr, input [31:0] set_data,
- input [13:0] adc_a, input adc_ovf_a,
- input [13:0] adc_b, input adc_ovf_b,
+ input [23:0] adc_i, input adc_ovf_i,
+ input [23:0] adc_q, input adc_ovf_q,
output [31:0] sample,
input run,
@@ -30,70 +30,56 @@ module dsp_core_rx
output [31:0] debug
);
- wire [15:0] scale_i, scale_q;
- wire [13:0] adc_a_ofs, adc_b_ofs;
- reg [13:0] adc_i, adc_q;
wire [31:0] phase_inc;
reg [31:0] phase;
- wire [35:0] prod_i, prod_q;
- wire [23:0] i_cordic, q_cordic;
+ wire [24:0] i_cordic, q_cordic;
+ wire [23:0] i_cordic_clip, q_cordic_clip;
wire [23:0] i_cic, q_cic;
- wire [17:0] i_cic_scaled, q_cic_scaled;
- wire [17:0] i_hb1, q_hb1;
- wire [17:0] i_hb2, q_hb2;
- wire [15:0] i_out, q_out;
-
+ wire [23:0] i_hb1, q_hb1;
+ wire [23:0] i_hb2, q_hb2;
+
wire strobe_cic, strobe_hb1, strobe_hb2;
wire enable_hb1, enable_hb2;
wire [7:0] cic_decim_rate;
+ reg [23:0] adc_i_mux, adc_q_mux;
+ wire realmode;
+ wire swap_iq;
+
setting_reg #(.my_addr(BASE+0)) sr_0
(.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
.in(set_data),.out(phase_inc),.changed());
+ /*
setting_reg #(.my_addr(BASE+1)) sr_1
(.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
.in(set_data),.out({scale_i,scale_q}),.changed());
+ */
setting_reg #(.my_addr(BASE+2), .width(10)) sr_2
(.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
.in(set_data),.out({enable_hb1, enable_hb2, cic_decim_rate}),.changed());
- rx_dcoffset #(.WIDTH(14),.ADDR(BASE+3)) rx_dcoffset_a
- (.clk(clk),.rst(rst),.set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
- .adc_in(adc_a),.adc_out(adc_a_ofs));
-
- rx_dcoffset #(.WIDTH(14),.ADDR(BASE+4)) rx_dcoffset_b
- (.clk(clk),.rst(rst),.set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
- .adc_in(adc_b),.adc_out(adc_b_ofs));
-
- wire [7:0] muxctrl;
- setting_reg #(.my_addr(BASE+5), .width(8)) sr_8
- (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
- .in(set_data),.out(muxctrl),.changed());
-
- wire [1:0] gpio_ena;
- setting_reg #(.my_addr(BASE+6), .width(2)) sr_9
+ setting_reg #(.my_addr(BASE+3), .width(2)) sr_3
(.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
- .in(set_data),.out(gpio_ena),.changed());
+ .in(set_data),.out({realmode,swap_iq}),.changed());
- always @(posedge clk)
- case(muxctrl[3:0]) // The I mapping
- 0: adc_i <= adc_a_ofs;
- 1: adc_i <= adc_b_ofs;
- 2: adc_i <= 0;
- default: adc_i <= 0;
- endcase // case (muxctrl[3:0])
+ // MUX so we can do realmode signals on either input
always @(posedge clk)
- case(muxctrl[7:4]) // The Q mapping
- 0: adc_q <= adc_a_ofs;
- 1: adc_q <= adc_b_ofs;
- 2: adc_q <= 0;
- default: adc_q <= 0;
- endcase // case (muxctrl[7:4])
-
+ if(swap_iq)
+ begin
+ adc_i_mux <= adc_q;
+ adc_q_mux <= realmode ? 24'd0 : adc_i;
+ end
+ else
+ begin
+ adc_i_mux <= adc_i;
+ adc_q_mux <= realmode ? 24'd0 : adc_q;
+ end
+
+ // NCO
always @(posedge clk)
if(rst)
phase <= 0;
@@ -102,74 +88,55 @@ module dsp_core_rx
else
phase <= phase + phase_inc;
- MULT18X18S mult_i
- (.P(prod_i), // 36-bit multiplier output
- .A({{4{adc_i[13]}},adc_i} ), // 18-bit multiplier input
- .B({{2{scale_i[15]}},scale_i}), // 18-bit multiplier input
- .C(clk), // Clock input
- .CE(1), // Clock enable input
- .R(rst) // Synchronous reset input
- );
-
- MULT18X18S mult_q
- (.P(prod_q), // 36-bit multiplier output
- .A({{4{adc_q[13]}},adc_q} ), // 18-bit multiplier input
- .B({{2{scale_q[15]}},scale_q}), // 18-bit multiplier input
- .C(clk), // Clock input
- .CE(1), // Clock enable input
- .R(rst) // Synchronous reset input
- );
-
-
- cordic_z24 #(.bitwidth(24))
+ // CORDIC 24-bit I/O
+ cordic_z24 #(.bitwidth(25))
cordic(.clock(clk), .reset(rst), .enable(run),
- .xi(prod_i[23:0]),. yi(prod_q[23:0]), .zi(phase[31:8]),
+ .xi({adc_i_mux[23],adc_i_mux}),. yi({adc_q_mux[23],adc_q_mux}), .zi(phase[31:8]),
.xo(i_cordic),.yo(q_cordic),.zo() );
+ clip_reg #(.bits_in(25), .bits_out(24)) clip_i (.clk(clk), .in(i_cordic), .out(i_cordic_clip));
+ clip_reg #(.bits_in(25), .bits_out(24)) clip_q (.clk(clk), .in(q_cordic), .out(q_cordic_clip));
+
+ // CIC decimator 24 bit I/O
cic_strober cic_strober(.clock(clk),.reset(rst),.enable(run),.rate(cic_decim_rate),
.strobe_fast(1),.strobe_slow(strobe_cic) );
cic_decim #(.bw(24))
decim_i (.clock(clk),.reset(rst),.enable(run),
.rate(cic_decim_rate),.strobe_in(1'b1),.strobe_out(strobe_cic),
- .signal_in(i_cordic),.signal_out(i_cic));
+ .signal_in(i_cordic_clip),.signal_out(i_cic));
cic_decim #(.bw(24))
decim_q (.clock(clk),.reset(rst),.enable(run),
.rate(cic_decim_rate),.strobe_in(1'b1),.strobe_out(strobe_cic),
- .signal_in(q_cordic),.signal_out(q_cic));
+ .signal_in(q_cordic_clip),.signal_out(q_cic));
- round_reg #(.bits_in(24),.bits_out(18)) round_icic (.clk(clk),.in(i_cic),.out(i_cic_scaled));
- round_reg #(.bits_in(24),.bits_out(18)) round_qcic (.clk(clk),.in(q_cic),.out(q_cic_scaled));
- reg strobe_cic_d1;
- always @(posedge clk) strobe_cic_d1 <= strobe_cic;
-
- small_hb_dec #(.WIDTH(18)) small_hb_i
+ // First (small) halfband 24 bit I/O
+ small_hb_dec #(.WIDTH(24)) small_hb_i
(.clk(clk),.rst(rst),.bypass(~enable_hb1),.run(run),
- .stb_in(strobe_cic_d1),.data_in(i_cic_scaled),.stb_out(strobe_hb1),.data_out(i_hb1));
+ .stb_in(strobe_cic),.data_in(i_cic),.stb_out(strobe_hb1),.data_out(i_hb1));
- small_hb_dec #(.WIDTH(18)) small_hb_q
+ small_hb_dec #(.WIDTH(24)) small_hb_q
(.clk(clk),.rst(rst),.bypass(~enable_hb1),.run(run),
- .stb_in(strobe_cic_d1),.data_in(q_cic_scaled),.stb_out(),.data_out(q_hb1));
+ .stb_in(strobe_cic),.data_in(q_cic),.stb_out(),.data_out(q_hb1));
+ // Second (large) halfband 24 bit I/O
wire [8:0] cpi_hb = enable_hb1 ? {cic_decim_rate,1'b0} : {1'b0,cic_decim_rate};
- hb_dec #(.IWIDTH(18), .OWIDTH(18), .CWIDTH(18), .ACCWIDTH(24)) hb_i
+ hb_dec #(.WIDTH(24)) hb_i
(.clk(clk),.rst(rst),.bypass(~enable_hb2),.run(run),.cpi(cpi_hb),
.stb_in(strobe_hb1),.data_in(i_hb1),.stb_out(strobe_hb2),.data_out(i_hb2));
- hb_dec #(.IWIDTH(18), .OWIDTH(18), .CWIDTH(18), .ACCWIDTH(24)) hb_q
+ hb_dec #(.WIDTH(24)) hb_q
(.clk(clk),.rst(rst),.bypass(~enable_hb2),.run(run),.cpi(cpi_hb),
.stb_in(strobe_hb1),.data_in(q_hb1),.stb_out(),.data_out(q_hb2));
- round #(.bits_in(18),.bits_out(16)) round_iout (.in(i_hb2),.out(i_out));
- round #(.bits_in(18),.bits_out(16)) round_qout (.in(q_hb2),.out(q_out));
+ // Round final answer to 16 bits
+ round_sd #(.WIDTH_IN(24),.WIDTH_OUT(16)) round_i
+ (.clk(clk),.reset(rst), .in(i_hb2),.strobe_in(strobe_hb2), .out(sample[31:16]), .strobe_out(strobe));
- reg [31:0] sample_reg;
- always @(posedge clk)
- sample_reg <= {i_out,q_out};
+ round_sd #(.WIDTH_IN(24),.WIDTH_OUT(16)) round_q
+ (.clk(clk),.reset(rst), .in(q_hb2),.strobe_in(strobe_hb2), .out(sample[15:0]), .strobe_out());
- assign sample = sample_reg;
- assign strobe = strobe_hb2;
- assign debug = {enable_hb1, enable_hb2, run, strobe, strobe_cic, strobe_cic_d1, strobe_hb1, strobe_hb2};
+ assign debug = {enable_hb1, enable_hb2, run, strobe, strobe_cic, strobe_hb1, strobe_hb2};
endmodule // dsp_core_rx
diff --git a/fpga/usrp2/sdr_lib/dsp_core_rx_tb.v b/fpga/usrp2/sdr_lib/dsp_core_rx_tb.v
new file mode 100644
index 000000000..271db8cef
--- /dev/null
+++ b/fpga/usrp2/sdr_lib/dsp_core_rx_tb.v
@@ -0,0 +1,73 @@
+
+`timescale 1ns/1ns
+module dsp_core_rx_tb();
+
+ reg clk, rst;
+
+ initial rst = 1;
+ initial #1000 rst = 0;
+ initial clk = 0;
+ always #5 clk = ~clk;
+
+ initial $dumpfile("dsp_core_rx_tb.vcd");
+ initial $dumpvars(0,dsp_core_rx_tb);
+
+ reg signed [23:0] adc_in;
+ wire signed [15:0] adc_out_i, adc_out_q;
+
+ always @(posedge clk)
+ begin
+ $display(adc_in);
+ $display(adc_out_i);
+ $display(adc_out_q);
+ end
+
+ reg run;
+ reg set_stb;
+ reg [7:0] set_addr;
+ reg [31:0] set_data;
+
+ dsp_core_rx #(.BASE(0)) dsp_core_rx
+ (.clk(clk),.rst(rst),
+ .set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
+ .adc_i(adc_in), .adc_ovf_i(0),
+ .adc_q(0), .adc_ovf_q(0),
+ .sample({adc_out_i,adc_out_q}),
+ .run(run), .strobe(), .debug());
+
+ initial
+ begin
+ run <= 0;
+ @(negedge rst);
+ @(posedge clk);
+ set_addr <= 1;
+ set_data <= {16'd64,16'd64}; // set gains
+ set_stb <= 1;
+ @(posedge clk);
+ set_addr <= 2;
+ set_data <= {16'd0,8'd3,8'd1}; // set decim
+ set_stb <= 1;
+ @(posedge clk);
+ set_addr <= 0;
+ //set_data <= {32'h0000_0000};
+ set_data <= {32'h01CA_C083}; // 700 kHz
+ set_stb <= 1;
+ @(posedge clk);
+ set_stb <= 0;
+ @(posedge clk);
+ run <= 1;
+ end
+
+ always @(posedge clk)
+ //adc_in <= 24'd1000000;
+ adc_in <= 24'h80_0000;
+
+ /*
+ always @(posedge clk)
+ if(rst)
+ adc_in <= 0;
+ else
+ adc_in <= adc_in + 4;
+ //adc_in <= (($random % 473) + 23)/4;
+*/
+endmodule // dsp_core_rx_tb
diff --git a/fpga/usrp2/sdr_lib/dsp_core_tx.v b/fpga/usrp2/sdr_lib/dsp_core_tx.v
index 58bd82f6e..f02c63b42 100644
--- a/fpga/usrp2/sdr_lib/dsp_core_tx.v
+++ b/fpga/usrp2/sdr_lib/dsp_core_tx.v
@@ -21,8 +21,7 @@ module dsp_core_tx
(input clk, input rst,
input set_stb, input [7:0] set_addr, input [31:0] set_data,
- output reg [15:0] dac_a,
- output reg [15:0] dac_b,
+ output [23:0] tx_i, output [23:0] tx_q,
// To tx_control
input [31:0] sample,
@@ -50,10 +49,6 @@ module dsp_core_tx
(.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
.in(set_data),.out({enable_hb1, enable_hb2, interp_rate}),.changed());
- setting_reg #(.my_addr(BASE+4), .width(8)) sr_4
- (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
- .in(set_data),.out({dacmux_b,dacmux_a}),.changed());
-
// Strobes are all now delayed by 1 cycle for timing reasons
wire strobe_cic_pre, strobe_hb1_pre, strobe_hb2_pre;
reg strobe_cic = 1;
@@ -148,20 +143,9 @@ module dsp_core_tx
.CE(1), // Clock enable input
.R(rst) // Synchronous reset input
);
-
- always @(posedge clk)
- case(dacmux_a)
- 0 : dac_a <= prod_i[28:13];
- 1 : dac_a <= prod_q[28:13];
- default : dac_a <= 0;
- endcase // case(dacmux_a)
-
- always @(posedge clk)
- case(dacmux_b)
- 0 : dac_b <= prod_i[28:13];
- 1 : dac_b <= prod_q[28:13];
- default : dac_b <= 0;
- endcase // case(dacmux_b)
+
+ assign tx_i = prod_i[28:5];
+ assign tx_q = prod_q[28:5];
assign debug = {strobe_cic, strobe_hb1, strobe_hb2,run};
diff --git a/fpga/usrp2/sdr_lib/hb_dec.v b/fpga/usrp2/sdr_lib/hb_dec.v
index 9747f0adb..8d21c21c0 100644
--- a/fpga/usrp2/sdr_lib/hb_dec.v
+++ b/fpga/usrp2/sdr_lib/hb_dec.v
@@ -22,17 +22,27 @@
// myfilt = round(2^18 * halfgen4(.7/4,8))
module hb_dec
- #(parameter IWIDTH=18, OWIDTH=18, CWIDTH=18, ACCWIDTH=24)
+ #(parameter WIDTH=24)
(input clk,
input rst,
input bypass,
input run,
input [8:0] cpi, // Clocks per input -- equal to the decimation ratio ahead of this block
input stb_in,
- input [IWIDTH-1:0] data_in,
+ input [WIDTH-1:0] data_in,
output reg stb_out,
- output reg [OWIDTH-1:0] data_out);
+ output reg [WIDTH-1:0] data_out);
+ localparam INTWIDTH = 17;
+ localparam ACCWIDTH = WIDTH + 3;
+
+ // Round off inputs to 17 bits because of 18 bit multipliers
+ wire [INTWIDTH-1:0] data_rnd;
+ wire stb_rnd;
+
+ round_sd #(.WIDTH_IN(WIDTH),.WIDTH_OUT(INTWIDTH)) round_in
+ (.clk(clk),.reset(rst),.in(data_in),.strobe_in(stb_in),.out(data_rnd),.strobe_out(stb_rnd));
+
// Control
reg [3:0] addr_odd_a, addr_odd_b, addr_odd_c, addr_odd_d;
wire write_odd, write_even, do_mult;
@@ -45,16 +55,16 @@ module hb_dec
always @(posedge clk)
if(rst | ~run)
odd <= 0;
- else if(stb_in)
+ else if(stb_rnd)
odd <= ~odd;
- assign write_odd = stb_in & odd;
- assign write_even = stb_in & ~odd;
+ assign write_odd = stb_rnd & odd;
+ assign write_even = stb_rnd & ~odd;
always @(posedge clk)
if(rst | ~run)
phase <= 0;
- else if(stb_in & odd)
+ else if(stb_rnd & odd)
phase <= 1;
else if(phase == 4)
phase <= 0;
@@ -69,7 +79,7 @@ module hb_dec
if(rst)
stb_out_pre <= 0;
else
- stb_out_pre <= {stb_out_pre[14:0],(stb_in & odd)};
+ stb_out_pre <= {stb_out_pre[14:0],(stb_rnd & odd)};
always @*
case(phase)
@@ -93,11 +103,12 @@ module hb_dec
assign clear = stb_out_pre[3];
// Data
- wire [IWIDTH-1:0] data_odd_a, data_odd_b, data_odd_c, data_odd_d;
- wire [IWIDTH-1:0] sum1, sum2;
- wire [OWIDTH-1:0] final_sum;
- reg [CWIDTH-1:0] coeff1, coeff2;
- wire [35:0] prod1, prod2;
+ wire [INTWIDTH-1:0] data_odd_a, data_odd_b, data_odd_c, data_odd_d;
+ reg [INTWIDTH:0] sum1, sum2; // these are 18-bit inputs to mult
+ reg [WIDTH:0] final_sum;
+ wire [WIDTH-1:0] final_sum_clip;
+ reg [17:0] coeff1, coeff2;
+ wire [35:0] prod1, prod2;
always @* // Outer coeffs
case(phase_d1)
@@ -117,19 +128,19 @@ module hb_dec
default : coeff2 = -6107;
endcase // case(phase)
- srl #(.WIDTH(IWIDTH)) srl_odd_a
- (.clk(clk),.write(write_odd),.in(data_in),.addr(addr_odd_a),.out(data_odd_a));
- srl #(.WIDTH(IWIDTH)) srl_odd_b
- (.clk(clk),.write(write_odd),.in(data_in),.addr(addr_odd_b),.out(data_odd_b));
- srl #(.WIDTH(IWIDTH)) srl_odd_c
- (.clk(clk),.write(write_odd),.in(data_in),.addr(addr_odd_c),.out(data_odd_c));
- srl #(.WIDTH(IWIDTH)) srl_odd_d
- (.clk(clk),.write(write_odd),.in(data_in),.addr(addr_odd_d),.out(data_odd_d));
-
- add2_reg /*_and_round_reg*/ #(.WIDTH(IWIDTH)) add1 (.clk(clk),.in1(data_odd_a),.in2(data_odd_b),.sum(sum1));
- add2_reg /*_and_round_reg*/ #(.WIDTH(IWIDTH)) add2 (.clk(clk),.in1(data_odd_c),.in2(data_odd_d),.sum(sum2));
-
- wire [IWIDTH-1:0] data_even;
+ srl #(.WIDTH(INTWIDTH)) srl_odd_a
+ (.clk(clk),.write(write_odd),.in(data_rnd),.addr(addr_odd_a),.out(data_odd_a));
+ srl #(.WIDTH(INTWIDTH)) srl_odd_b
+ (.clk(clk),.write(write_odd),.in(data_rnd),.addr(addr_odd_b),.out(data_odd_b));
+ srl #(.WIDTH(INTWIDTH)) srl_odd_c
+ (.clk(clk),.write(write_odd),.in(data_rnd),.addr(addr_odd_c),.out(data_odd_c));
+ srl #(.WIDTH(INTWIDTH)) srl_odd_d
+ (.clk(clk),.write(write_odd),.in(data_rnd),.addr(addr_odd_d),.out(data_odd_d));
+
+ always @(posedge clk) sum1 <= {data_odd_a[INTWIDTH-1],data_odd_a} + {data_odd_b[INTWIDTH-1],data_odd_b};
+ always @(posedge clk) sum2 <= {data_odd_c[INTWIDTH-1],data_odd_c} + {data_odd_d[INTWIDTH-1],data_odd_d};
+
+ wire [INTWIDTH-1:0] data_even;
reg [3:0] addr_even;
always @(posedge clk)
@@ -140,49 +151,39 @@ module hb_dec
default : addr_even <= 7;
endcase // case(cpi)
- srl #(.WIDTH(IWIDTH)) srl_even
- (.clk(clk),.write(write_even),.in(data_in),.addr(addr_even),.out(data_even));
-
- localparam MWIDTH = ACCWIDTH-2;
- wire [MWIDTH-1:0] sum_of_prod;
+ srl #(.WIDTH(INTWIDTH)) srl_even
+ (.clk(clk),.write(write_even),.in(data_rnd),.addr(addr_even),.out(data_even));
MULT18X18S mult1(.C(clk), .CE(do_mult), .R(rst), .P(prod1), .A(coeff1), .B(sum1) );
MULT18X18S mult2(.C(clk), .CE(do_mult), .R(rst), .P(prod2), .A(coeff2), .B(sum2) );
- add2_and_round_reg #(.WIDTH(MWIDTH))
- add3 (.clk(clk),.in1(prod1[35:36-MWIDTH]),.in2(prod2[35:36-MWIDTH]),.sum(sum_of_prod));
- wire [ACCWIDTH-1:0] acc_out;
+ reg [35:0] sum_of_prod;
+ always @(posedge clk) sum_of_prod <= prod1 + prod2; // Can't overflow
- acc #(.IWIDTH(MWIDTH),.OWIDTH(ACCWIDTH))
- acc (.clk(clk),.clear(clear),.acc(do_acc),.in(sum_of_prod),.out(acc_out));
+ wire [ACCWIDTH-1:0] acc_out;
+ acc #(.IWIDTH(ACCWIDTH-2),.OWIDTH(ACCWIDTH))
+ acc (.clk(clk),.clear(clear),.acc(do_acc),.in(sum_of_prod[35:38-ACCWIDTH]),.out(acc_out));
- localparam SHIFT_FACTOR = ACCWIDTH-IWIDTH-5;
wire [ACCWIDTH-1:0] data_even_signext;
- wire [ACCWIDTH:0] final_sum_unrounded;
- sign_extend #(.bits_in(IWIDTH),.bits_out(ACCWIDTH-SHIFT_FACTOR))
- signext_data_even (.in(data_even),.out(data_even_signext[ACCWIDTH-1:SHIFT_FACTOR]));
- assign data_even_signext[SHIFT_FACTOR-1:0] = 0;
+ localparam SHIFT_FACTOR = 6;
- add2_reg /* add2_and_round_reg */ #(.WIDTH(ACCWIDTH+1))
- final_adder (.clk(clk), .in1({acc_out,1'b0}), .in2({data_even_signext,1'b0}), .sum(final_sum_unrounded));
-
- round_reg #(.bits_in(ACCWIDTH-4),.bits_out(OWIDTH))
- final_round (.clk(clk),.in(final_sum_unrounded[ACCWIDTH-5:0]),.out(final_sum));
-
- // Output
- always @(posedge clk)
- if(bypass)
- data_out <= data_in;
- else if(stb_out_pre[9])
- data_out <= final_sum;
+ sign_extend #(.bits_in(INTWIDTH),.bits_out(ACCWIDTH-SHIFT_FACTOR)) signext_data_even
+ (.in(data_even),.out(data_even_signext[ACCWIDTH-1:SHIFT_FACTOR]));
+ assign data_even_signext[SHIFT_FACTOR-1:0] = 0;
+ always @(posedge clk) final_sum <= acc_out + data_even_signext;
+
+ clip #(.bits_in(WIDTH+1), .bits_out(WIDTH)) clip (.in(final_sum), .out(final_sum_clip));
+
+ // Output MUX to allow for bypass
+ wire selected_stb = bypass ? stb_in : stb_out_pre[8];
+
always @(posedge clk)
- if(rst)
- stb_out <= 0;
- else if(bypass)
- stb_out <= stb_in;
- else
- stb_out <= stb_out_pre[9];
-
+ begin
+ stb_out <= selected_stb;
+ if(selected_stb)
+ data_out <= bypass ? data_in : final_sum_clip;
+ end
+
endmodule // hb_dec
diff --git a/fpga/usrp2/sdr_lib/hb_dec_tb.v b/fpga/usrp2/sdr_lib/hb_dec_tb.v
index 256f6085d..153cfba76 100644
--- a/fpga/usrp2/sdr_lib/hb_dec_tb.v
+++ b/fpga/usrp2/sdr_lib/hb_dec_tb.v
@@ -18,7 +18,7 @@
module hb_dec_tb( ) ;
// Parameters for instantiation
- parameter clocks = 9'd2 ; // Number of clocks per input
+ parameter clocks = 9'd12 ; // Number of clocks per input
parameter decim = 1 ; // Sets the filter to decimate
parameter rate = 2 ; // Sets the decimation rate
@@ -26,9 +26,9 @@ module hb_dec_tb( ) ;
reg reset ;
reg enable ;
reg strobe_in ;
- reg signed [17:0] data_in ;
+ reg signed [23:0] data_in ;
wire strobe_out ;
- wire signed [17:0] data_out ;
+ wire signed [23:0] data_out ;
initial
begin
@@ -65,8 +65,8 @@ module hb_dec_tb( ) ;
*/
- hb_dec #(.IWIDTH(18),.OWIDTH(18),.CWIDTH(18),.ACCWIDTH(24)) uut
- (.clk(clock),.rst(reset),.bypass(0),.cpi(clocks),.stb_in(strobe_in),.data_in(data_in),
+ hb_dec #(.WIDTH(24)) uut
+ (.clk(clock),.rst(reset),.bypass(0),.run(1),.cpi(clocks),.stb_in(strobe_in),.data_in(data_in),
.stb_out(strobe_out),.data_out(data_out) );
integer i, ri, ro, infile, outfile ;
diff --git a/fpga/usrp2/sdr_lib/input.dat b/fpga/usrp2/sdr_lib/input.dat
index 1e649ac2e..85b5887e8 100644
--- a/fpga/usrp2/sdr_lib/input.dat
+++ b/fpga/usrp2/sdr_lib/input.dat
@@ -6,7 +6,6 @@
0
0
0
--131072
0
0
0
@@ -16,6 +15,7 @@
0
0
0
+8388607
0
0
0
@@ -38,34 +38,6 @@
0
0
0
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
0
0
0
@@ -82,6 +54,7 @@
0
0
0
+8388607
0
0
0
@@ -96,200 +69,6 @@
0
0
0
-131071
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-131071
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-100000
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
--131072
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
--131072
-0
-0
0
0
0
@@ -313,6 +92,56 @@
0
0
0
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
+8388607
0
0
0
@@ -339,3 +168,4 @@
0
0
0
+
diff --git a/fpga/usrp2/sdr_lib/round.v b/fpga/usrp2/sdr_lib/round.v
index c4f9ec9cd..7a137d702 100644
--- a/fpga/usrp2/sdr_lib/round.v
+++ b/fpga/usrp2/sdr_lib/round.v
@@ -26,8 +26,10 @@ module round
#(parameter bits_in=0,
parameter bits_out=0)
(input [bits_in-1:0] in,
- output [bits_out-1:0] out);
+ output [bits_out-1:0] out,
+ output [bits_in-bits_out:0] err);
assign out = in[bits_in-1:bits_in-bits_out] + (in[bits_in-1] & |in[bits_in-bits_out-1:0]);
+ assign err = in - {out,{(bits_in-bits_out){1'b0}}};
endmodule // round
diff --git a/fpga/usrp2/sdr_lib/round_reg.v b/fpga/usrp2/sdr_lib/round_reg.v
index aa0972dab..6f2e974d7 100644
--- a/fpga/usrp2/sdr_lib/round_reg.v
+++ b/fpga/usrp2/sdr_lib/round_reg.v
@@ -27,13 +27,18 @@ module round_reg
parameter bits_out=0)
(input clk,
input [bits_in-1:0] in,
- output reg [bits_out-1:0] out);
+ output reg [bits_out-1:0] out,
+ output reg [bits_in-bits_out:0] err);
wire [bits_out-1:0] temp;
-
- round #(.bits_in(bits_in),.bits_out(bits_out)) round (.in(in),.out(temp));
+ wire [bits_in-bits_out:0] err_temp;
+
+ round #(.bits_in(bits_in),.bits_out(bits_out)) round (.in(in),.out(temp), .err(err_temp));
always @(posedge clk)
out <= temp;
+
+ always @(posedge clk)
+ err <= err_temp;
-endmodule // round
+endmodule // round_reg
diff --git a/fpga/usrp2/sdr_lib/round_sd.v b/fpga/usrp2/sdr_lib/round_sd.v
new file mode 100644
index 000000000..aeeb3502f
--- /dev/null
+++ b/fpga/usrp2/sdr_lib/round_sd.v
@@ -0,0 +1,22 @@
+
+
+module round_sd
+ #(parameter WIDTH_IN=18,
+ parameter WIDTH_OUT=16)
+ (input clk, input reset,
+ input [WIDTH_IN-1:0] in, input strobe_in,
+ output [WIDTH_OUT-1:0] out, output strobe_out);
+
+ localparam ERR_WIDTH = WIDTH_IN - WIDTH_OUT + 1;
+
+ wire [ERR_WIDTH-1:0] err;
+ wire [WIDTH_IN-1:0] err_ext, sum;
+
+ sign_extend #(.bits_in(ERR_WIDTH),.bits_out(WIDTH_IN)) ext_err (.in(err), .out(err_ext));
+
+ add2_and_clip_reg #(.WIDTH(WIDTH_IN)) add2_and_clip_reg
+ (.clk(clk), .rst(reset), .in1(in), .in2(err_ext), .strobe_in(strobe_in), .sum(sum), .strobe_out(strobe_out));
+
+ round #(.bits_in(WIDTH_IN),.bits_out(WIDTH_OUT)) round_sum (.in(sum), .out(out), .err(err));
+
+endmodule // round_sd
diff --git a/fpga/usrp2/sdr_lib/round_sd_tb.v b/fpga/usrp2/sdr_lib/round_sd_tb.v
new file mode 100644
index 000000000..1e8e9a323
--- /dev/null
+++ b/fpga/usrp2/sdr_lib/round_sd_tb.v
@@ -0,0 +1,58 @@
+
+module round_sd_tb();
+
+ reg clk, rst;
+
+ initial rst = 1;
+ initial #1000 rst = 0;
+ initial clk = 0;
+ always #5 clk = ~clk;
+
+ initial $dumpfile("round_sd_tb.vcd");
+ initial $dumpvars(0,round_sd_tb);
+
+ localparam WIDTH_IN = 8;
+ localparam WIDTH_OUT = 5;
+
+ reg [WIDTH_IN-1:0] adc_in, adc_in_del;
+ wire [WIDTH_OUT-1:0] adc_out;
+
+ integer factor = 1<<(WIDTH_IN-WIDTH_OUT);
+
+ always @(posedge clk)
+ if(~rst)
+ begin
+ if(adc_in_del[WIDTH_IN-1])
+ $write("-%d\t",-adc_in_del);
+ else
+ $write("%d\t",adc_in_del);
+ if(adc_out[WIDTH_OUT-1])
+ $write("-%d\t",-adc_out);
+ else
+ $write("%d\t",adc_out);
+ $write("\n");
+
+ //$write("%f\t",adc_in_del/factor);
+ //$write("%f\n",adc_in_del/factor-adc_out);
+ end
+
+ round_sd #(.WIDTH_IN(WIDTH_IN),.WIDTH_OUT(WIDTH_OUT))
+ round_sd(.clk(clk),.reset(rst), .in(adc_in), .strobe_in(1'b1), .out(adc_out), .strobe_out());
+
+ reg [5:0] counter = 0;
+
+ always @(posedge clk)
+ counter <= counter+1;
+
+ always @(posedge clk)
+ adc_in_del <= adc_in;
+
+ always @(posedge clk)
+ if(rst)
+ adc_in <= 0;
+ else if(counter == 63)
+ adc_in <= adc_in + 1;
+
+ initial #300000 $finish;
+
+endmodule // longfifo_tb
diff --git a/fpga/usrp2/sdr_lib/rx_dcoffset.v b/fpga/usrp2/sdr_lib/rx_dcoffset.v
index 64ff4110d..e43461261 100644
--- a/fpga/usrp2/sdr_lib/rx_dcoffset.v
+++ b/fpga/usrp2/sdr_lib/rx_dcoffset.v
@@ -18,43 +18,40 @@
module rx_dcoffset
- #(parameter WIDTH=14,
- parameter ADDR=8'd0)
- (input clk, input rst,
- input set_stb, input [7:0] set_addr, input [31:0] set_data,
- input signed [WIDTH-1:0] adc_in, output signed [WIDTH-1:0] adc_out);
-
- // Because of some extra delays to make timing easier, the transfer function is:
- // (z-1)/(z^2-z-alpha) where alpha is 1/2^n
+ #(parameter WIDTH=16,
+ parameter ADDR=8'd0,
+ parameter alpha_shift=16)
+ (input clk, input rst,
+ input set_stb, input [7:0] set_addr, input [31:0] set_data,
+ input [WIDTH-1:0] in, output [WIDTH-1:0] out);
- wire set_now = set_stb & (ADDR == set_addr);
+ wire set_now = set_stb & (ADDR == set_addr);
- reg fixed; // uses fixed offset
- wire signed [WIDTH-1:0] fixed_dco;
- reg signed [31:0] integrator;
+ reg fixed; // uses fixed offset
+ wire [WIDTH-1:0] fixed_dco;
+
+ localparam int_width = WIDTH + alpha_shift;
+ reg [int_width-1:0] integrator;
+ wire [WIDTH-1:0] quantized;
always @(posedge clk)
if(rst)
begin
fixed <= 0;
- integrator <= 32'd0;
+ integrator <= {int_width{1'b0}};
end
else if(set_now)
begin
- integrator <= {set_data[WIDTH-1:0],{(32-WIDTH){1'b0}}};
+ //integrator <= {set_data[30:0],{(31-int_width){1'b0}}};
fixed <= set_data[31];
end
else if(~fixed)
- integrator <= integrator + adc_out;
-
- wire [WIDTH:0] scaled_integrator;
-
- round #(.bits_in(33),.bits_out(15)) round (.in({integrator[31],integrator}),.out(scaled_integrator));
-
- wire [WIDTH:0] adc_out_int = {adc_in[WIDTH-1],adc_in} - scaled_integrator;
+ integrator <= integrator + {{(alpha_shift){out[WIDTH-1]}},out};
- clip_reg #(.bits_in(WIDTH+1),.bits_out(WIDTH)) clip_adc
- (.clk(clk),.in(adc_out_int),.out(adc_out));
+ round_sd #(.WIDTH_IN(int_width),.WIDTH_OUT(WIDTH)) round_sd
+ (.clk(clk), .reset(rst), .in(integrator), .strobe_in(1'b1), .out(quantized), .strobe_out());
+ add2_and_clip_reg #(.WIDTH(WIDTH)) add2_and_clip_reg
+ (.clk(clk), .rst(rst), .in1(in), .in2(-quantized), .strobe_in(1'b1), .sum(out), .strobe_out());
endmodule // rx_dcoffset
diff --git a/fpga/usrp2/sdr_lib/rx_dcoffset_tb.v b/fpga/usrp2/sdr_lib/rx_dcoffset_tb.v
index b0dd8cb05..b4fb66ad7 100644
--- a/fpga/usrp2/sdr_lib/rx_dcoffset_tb.v
+++ b/fpga/usrp2/sdr_lib/rx_dcoffset_tb.v
@@ -29,14 +29,26 @@ module rx_dcoffset_tb();
initial $dumpfile("rx_dcoffset_tb.vcd");
initial $dumpvars(0,rx_dcoffset_tb);
- reg [13:0] adc_in = 7;
+ reg [13:0] adc_in;
wire [13:0] adc_out;
always @(posedge clk)
- $display("%d\t%d",adc_in,adc_out);
+ begin
+ if(adc_in[13])
+ $write("-%d,",-adc_in);
+ else
+ $write("%d,",adc_in);
+ if(adc_out[13])
+ $write("-%d\n",-adc_out);
+ else
+ $write("%d\n",adc_out);
+ end
- rx_dcoffset #(.WIDTH(14),.ADDR(0))
+ rx_dcoffset #(.WIDTH(14),.ADDR(0), .alpha_shift(8))
rx_dcoffset(.clk(clk),.rst(rst),.set_stb(0),.set_addr(0),.set_data(0),
- .adc_in(adc_in),.adc_out(adc_out));
+ .in(adc_in),.out(adc_out));
+
+ always @(posedge clk)
+ adc_in <= (($random % 473) + 23)/4;
endmodule // longfifo_tb
diff --git a/fpga/usrp2/sdr_lib/rx_frontend.v b/fpga/usrp2/sdr_lib/rx_frontend.v
new file mode 100644
index 000000000..04b14787e
--- /dev/null
+++ b/fpga/usrp2/sdr_lib/rx_frontend.v
@@ -0,0 +1,73 @@
+
+module rx_frontend
+ #(parameter BASE = 0)
+ (input clk, input rst,
+ input set_stb, input [7:0] set_addr, input [31:0] set_data,
+
+ input [15:0] adc_a, input adc_ovf_a,
+ input [15:0] adc_b, input adc_ovf_b,
+
+ output [23:0] i_out, output [23:0] q_out,
+ input run,
+ output [31:0] debug
+ );
+
+ reg [15:0] adc_i, adc_q;
+ wire [17:0] adc_i_ofs, adc_q_ofs;
+ wire [35:0] corr_i, corr_q; wire [17:0] mag_corr,phase_corr;
+ wire swap_iq;
+ wire [23:0] i_final, q_final;
+
+ setting_reg #(.my_addr(BASE), .width(1)) sr_8
+ (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
+ .in(set_data),.out(swap_iq),.changed());
+
+ always @(posedge clk)
+ if(swap_iq) // Swap
+ {adc_i,adc_q} <= {adc_b,adc_a};
+ else
+ {adc_i,adc_q} <= {adc_a,adc_b};
+
+ setting_reg #(.my_addr(BASE+1),.width(18)) sr_1
+ (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
+ .in(set_data),.out(mag_corr),.changed());
+
+ setting_reg #(.my_addr(BASE+2),.width(18)) sr_2
+ (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
+ .in(set_data),.out(phase_corr),.changed());
+
+ rx_dcoffset #(.WIDTH(18),.ADDR(BASE+3)) rx_dcoffset_i
+ (.clk(clk),.rst(rst),.set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
+ .in({adc_i,2'b00}),.out(adc_i_ofs));
+
+ rx_dcoffset #(.WIDTH(18),.ADDR(BASE+4)) rx_dcoffset_q
+ (.clk(clk),.rst(rst),.set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
+ .in({adc_q,2'b00}),.out(adc_q_ofs));
+
+ MULT18X18S mult_mag_corr
+ (.P(corr_i), .A(adc_i_ofs), .B(mag_corr), .C(clk), .CE(1), .R(rst) );
+
+ MULT18X18S mult_phase_corr
+ (.P(corr_q), .A(adc_i_ofs), .B(phase_corr), .C(clk), .CE(1), .R(rst) );
+
+ add2_and_clip_reg #(.WIDTH(24)) add_clip_i
+ (.clk(clk), .rst(rst),
+ .in1({adc_i_ofs,6'd0}), .in2({{4{corr_i[35]}},corr_i[35:16]}), .strobe_in(1'b1),
+ .sum(i_final), .strobe_out());
+
+ add2_and_clip_reg #(.WIDTH(24)) add_clip_q
+ (.clk(clk), .rst(rst),
+ .in1({adc_q_ofs,6'd0}), .in2({{4{corr_q[35]}},corr_q[35:16]}), .strobe_in(1'b1),
+ .sum(q_final), .strobe_out());
+
+ assign i_out = i_final;
+ assign q_out = q_final;
+
+ /*
+ round_sd #(.WIDTH_IN(24),.WIDTH_OUT(18)) round_i
+ (.clk(clk), .reset(rst), .in(i_final), .strobe_in(1'b1), .out(i_out), .strobe_out());
+
+ round_sd #(.WIDTH_IN(24),.WIDTH_OUT(18)) round_q
+ (.clk(clk), .reset(rst), .in(q_final), .strobe_in(1'b1), .out(q_out), .strobe_out());
+ */
+endmodule // rx_frontend
diff --git a/fpga/usrp2/sdr_lib/rx_frontend_tb.v b/fpga/usrp2/sdr_lib/rx_frontend_tb.v
new file mode 100644
index 000000000..487b72687
--- /dev/null
+++ b/fpga/usrp2/sdr_lib/rx_frontend_tb.v
@@ -0,0 +1,45 @@
+
+`timescale 1ns/1ns
+module rx_frontend_tb();
+
+ reg clk, rst;
+
+ initial rst = 1;
+ initial #1000 rst = 0;
+ initial clk = 0;
+ always #5 clk = ~clk;
+
+ initial $dumpfile("rx_frontend_tb.vcd");
+ initial $dumpvars(0,rx_frontend_tb);
+
+ reg [15:0] adc_in;
+ wire [17:0] adc_out;
+
+ always @(posedge clk)
+ begin
+ if(adc_in[13])
+ $write("-%d,",-adc_in);
+ else
+ $write("%d,",adc_in);
+ if(adc_out[13])
+ $write("-%d\n",-adc_out);
+ else
+ $write("%d\n",adc_out);
+ end
+
+ rx_frontend #(.BASE(0)) rx_frontend
+ (.clk(clk),.rst(rst),
+ .set_stb(0),.set_addr(0),.set_data(0),
+ .adc_a(adc_in), .adc_ovf_a(0),
+ .adc_b(0), .adc_ovf_b(0),
+ .i_out(adc_out),.q_out(),
+ .run(), .debug());
+
+ always @(posedge clk)
+ if(rst)
+ adc_in <= 0;
+ else
+ adc_in <= adc_in + 4;
+ //adc_in <= (($random % 473) + 23)/4;
+
+endmodule // rx_frontend_tb
diff --git a/fpga/usrp2/sdr_lib/small_hb_dec.v b/fpga/usrp2/sdr_lib/small_hb_dec.v
index 151b8c287..a7f93e056 100644
--- a/fpga/usrp2/sdr_lib/small_hb_dec.v
+++ b/fpga/usrp2/sdr_lib/small_hb_dec.v
@@ -29,21 +29,30 @@ module small_hb_dec
input stb_in,
input [WIDTH-1:0] data_in,
output reg stb_out,
- output [WIDTH-1:0] data_out);
+ output reg [WIDTH-1:0] data_out);
- reg stb_in_d1;
- reg [WIDTH-1:0] data_in_d1;
- always @(posedge clk) stb_in_d1 <= stb_in;
- always @(posedge clk) data_in_d1 <= data_in;
+ // Round off inputs to 17 bits because of 18 bit multipliers
+ localparam INTWIDTH = 17;
+ wire [INTWIDTH-1:0] data_rnd;
+ wire stb_rnd;
+
+ round_sd #(.WIDTH_IN(WIDTH),.WIDTH_OUT(INTWIDTH)) round_in
+ (.clk(clk),.reset(rst),.in(data_in),.strobe_in(stb_in),.out(data_rnd),.strobe_out(stb_rnd));
+
+
+ reg stb_rnd_d1;
+ reg [INTWIDTH-1:0] data_rnd_d1;
+ always @(posedge clk) stb_rnd_d1 <= stb_rnd;
+ always @(posedge clk) data_rnd_d1 <= data_rnd;
wire go;
reg phase, go_d1, go_d2, go_d3, go_d4;
always @(posedge clk)
if(rst | ~run)
phase <= 0;
- else if(stb_in_d1)
+ else if(stb_rnd_d1)
phase <= ~phase;
- assign go = stb_in_d1 & phase;
+ assign go = stb_rnd_d1 & phase;
always @(posedge clk)
if(rst | ~run)
begin
@@ -63,11 +72,11 @@ module small_hb_dec
wire [17:0] coeff_a = -10690;
wire [17:0] coeff_b = 75809;
- reg [WIDTH-1:0] d1, d2, d3, d4 , d5, d6;
+ reg [INTWIDTH-1:0] d1, d2, d3, d4 , d5, d6;
always @(posedge clk)
- if(stb_in_d1 | rst)
+ if(stb_rnd_d1 | rst)
begin
- d1 <= data_in_d1;
+ d1 <= data_rnd_d1;
d2 <= d1;
d3 <= d2;
d4 <= d3;
@@ -76,16 +85,14 @@ module small_hb_dec
end
reg [17:0] sum_a, sum_b, middle, middle_d1;
- wire [17:0] sum_a_unreg, sum_b_unreg;
- add2 #(.WIDTH(18)) add2_a (.in1(data_in_d1),.in2(d6),.sum(sum_a_unreg));
- add2 #(.WIDTH(18)) add2_b (.in1(d2),.in2(d4),.sum(sum_b_unreg));
-
+
always @(posedge clk)
if(go)
begin
- sum_a <= sum_a_unreg;
- sum_b <= sum_b_unreg;
- middle <= d3;
+ sum_a <= {data_rnd_d1[INTWIDTH-1],data_rnd_d1} + {d6[INTWIDTH-1],d6};
+ sum_b <= {d2[INTWIDTH-1],d2} + {d4[INTWIDTH-1],d4};
+ //middle <= {d3[INTWIDTH-1],d3};
+ middle <= {d3,1'b0};
end
always @(posedge clk)
@@ -106,23 +113,22 @@ module small_hb_dec
else if(go_d3)
accum <= accum + {prod};
- wire [17:0] accum_rnd;
- round #(.bits_in(36),.bits_out(18)) round_acc (.in(accum),.out(accum_rnd));
+ wire [WIDTH:0] accum_rnd;
+ wire [WIDTH-1:0] accum_rnd_clip;
+
+ wire stb_round;
+
+ round_sd #(.WIDTH_IN(36),.WIDTH_OUT(WIDTH+1)) round_acc
+ (.clk(clk), .reset(rst), .in(accum), .strobe_in(go_d4), .out(accum_rnd), .strobe_out(stb_round));
- reg [17:0] final_sum;
+ clip #(.bits_in(WIDTH+1),.bits_out(WIDTH)) clip (.in(accum_rnd), .out(accum_rnd_clip));
+
+ // Output
always @(posedge clk)
- if(bypass)
- final_sum <= data_in_d1;
- else if(go_d4)
- final_sum <= accum_rnd;
+ begin
+ stb_out <= bypass ? stb_in : stb_round;
+ data_out <= bypass ? data_in : accum_rnd_clip;
+ end
- assign data_out = final_sum;
- always @(posedge clk)
- if(rst)
- stb_out <= 0;
- else if(bypass)
- stb_out <= stb_in_d1;
- else
- stb_out <= go_d4;
endmodule // small_hb_dec
diff --git a/fpga/usrp2/sdr_lib/tx_frontend.v b/fpga/usrp2/sdr_lib/tx_frontend.v
new file mode 100644
index 000000000..d8525dd25
--- /dev/null
+++ b/fpga/usrp2/sdr_lib/tx_frontend.v
@@ -0,0 +1,86 @@
+
+module tx_frontend
+ #(parameter BASE=0,
+ parameter WIDTH_OUT=16)
+ (input clk, input rst,
+ input set_stb, input [7:0] set_addr, input [31:0] set_data,
+ input [23:0] tx_i, input [23:0] tx_q, input run,
+ output reg [WIDTH_OUT-1:0] dac_a, output reg [WIDTH_OUT-1:0] dac_b
+ );
+
+ // IQ balance --> DC offset --> rounding --> mux
+
+ wire [23:0] i_dco, q_dco, i_ofs, q_ofs;
+ wire [WIDTH_OUT-1:0] i_final, q_final;
+ wire [7:0] mux_ctrl;
+ wire [35:0] corr_i, corr_q;
+ wire [23:0] i_bal, q_bal;
+ wire [17:0] mag_corr, phase_corr;
+
+ setting_reg #(.my_addr(BASE+0), .width(24)) sr_0
+ (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
+ .in(set_data),.out(i_dco),.changed());
+
+ setting_reg #(.my_addr(BASE+1), .width(24)) sr_1
+ (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
+ .in(set_data),.out(q_dco),.changed());
+
+ setting_reg #(.my_addr(BASE+2),.width(18)) sr_2
+ (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
+ .in(set_data),.out(mag_corr),.changed());
+
+ setting_reg #(.my_addr(BASE+3),.width(18)) sr_3
+ (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
+ .in(set_data),.out(phase_corr),.changed());
+
+ setting_reg #(.my_addr(BASE+4), .width(8)) sr_4
+ (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
+ .in(set_data),.out(mux_ctrl),.changed());
+
+ // IQ Balance
+ MULT18X18S mult_mag_corr
+ (.P(corr_i), .A(tx_i[23:6]), .B(mag_corr), .C(clk), .CE(1), .R(rst) );
+
+ MULT18X18S mult_phase_corr
+ (.P(corr_q), .A(tx_i[23:6]), .B(phase_corr), .C(clk), .CE(1), .R(rst) );
+
+ add2_and_clip_reg #(.WIDTH(24)) add_clip_i
+ (.clk(clk), .rst(rst),
+ .in1(tx_i), .in2({{4{corr_i[35]}},corr_i[35:16]}), .strobe_in(1'b1),
+ .sum(i_bal), .strobe_out());
+
+ add2_and_clip_reg #(.WIDTH(24)) add_clip_q
+ (.clk(clk), .rst(rst),
+ .in1(tx_q), .in2({{4{corr_q[35]}},corr_q[35:16]}), .strobe_in(1'b1),
+ .sum(q_bal), .strobe_out());
+
+ // DC Offset
+ add2_and_clip_reg #(.WIDTH(24)) add_dco_i
+ (.clk(clk), .rst(rst), .in1(i_dco), .in2(i_bal), .strobe_in(1'b1), .sum(i_ofs), .strobe_out());
+
+ add2_and_clip_reg #(.WIDTH(24)) add_dco_q
+ (.clk(clk), .rst(rst), .in1(q_dco), .in2(q_bal), .strobe_in(1'b1), .sum(q_ofs), .strobe_out());
+
+ // Rounding
+ round_sd #(.WIDTH_IN(24),.WIDTH_OUT(WIDTH_OUT)) round_i
+ (.clk(clk), .reset(rst), .in(i_ofs),.strobe_in(1'b1), .out(i_final), .strobe_out());
+
+ round_sd #(.WIDTH_IN(24),.WIDTH_OUT(WIDTH_OUT)) round_q
+ (.clk(clk), .reset(rst), .in(q_ofs),.strobe_in(1'b1), .out(q_final), .strobe_out());
+
+ // Mux
+ always @(posedge clk)
+ case(mux_ctrl[3:0])
+ 0 : dac_a <= i_final;
+ 1 : dac_a <= q_final;
+ default : dac_a <= 0;
+ endcase // case (mux_ctrl[3:0])
+
+ always @(posedge clk)
+ case(mux_ctrl[7:4])
+ 0 : dac_b <= i_final;
+ 1 : dac_b <= q_final;
+ default : dac_b <= 0;
+ endcase // case (mux_ctrl[7:4])
+
+endmodule // tx_frontend
diff --git a/fpga/usrp2/top/B100/u1plus_core.v b/fpga/usrp2/top/B100/u1plus_core.v
index 8a02f0fb8..3c861fe08 100644
--- a/fpga/usrp2/top/B100/u1plus_core.v
+++ b/fpga/usrp2/top/B100/u1plus_core.v
@@ -30,7 +30,6 @@ module u1plus_core
output sclk, output [15:0] sen, output mosi, input miso,
input cgen_st_status, input cgen_st_ld, input cgen_st_refmon, output cgen_sync_b, output cgen_ref_sel,
- output tx_underrun, output rx_overrun,
inout [15:0] io_tx, inout [15:0] io_rx,
output [13:0] tx_i, output [13:0] tx_q,
input [11:0] rx_i, input [11:0] rx_q,
@@ -41,24 +40,31 @@ module u1plus_core
localparam RXFIFOSIZE = 11;
// 64 total regs in address space
- localparam SR_RX_CTRL = 0; // 9 regs (+0 to +8)
- localparam SR_RX_DSP = 16; // 7 regs (+0 to +6)
- localparam SR_TX_CTRL = 24; // 6 regs (+0 to +5)
- localparam SR_TX_DSP = 32; // 5 regs (+0 to +4)
- localparam SR_TIME64 = 40; // 6 regs (+0 to +5)
- localparam SR_CLEAR_RX_FIFO = 48; // 1 reg
- localparam SR_CLEAR_TX_FIFO = 49; // 1 reg
- localparam SR_GLOBAL_RESET = 50; // 1 reg
- localparam SR_REG_TEST32 = 52; // 1 reg
-
- wire [7:0] COMPAT_NUM = 8'd3;
+ localparam SR_RX_CTRL0 = 0; // 9 regs (+0 to +8)
+ localparam SR_RX_DSP0 = 10; // 4 regs (+0 to +3)
+ localparam SR_RX_CTRL1 = 16; // 9 regs (+0 to +8)
+ localparam SR_RX_DSP1 = 26; // 4 regs (+0 to +3)
+ localparam SR_TX_CTRL = 32; // 4 regs (+0 to +3)
+ localparam SR_TX_DSP = 38; // 3 regs (+0 to +2)
+
+ localparam SR_TIME64 = 42; // 6 regs (+0 to +5)
+ localparam SR_RX_FRONT = 48; // 5 regs (+0 to +4)
+ localparam SR_TX_FRONT = 54; // 5 regs (+0 to +4)
+
+ localparam SR_REG_TEST32 = 60; // 1 reg
+ localparam SR_CLEAR_RX_FIFO = 61; // 1 reg
+ localparam SR_CLEAR_TX_FIFO = 62; // 1 reg
+ localparam SR_GLOBAL_RESET = 63; // 1 reg
+
+ wire [7:0] COMPAT_NUM = 8'd5;
wire wb_clk = clk_fpga;
wire wb_rst, global_reset;
wire pps_int;
wire [63:0] vita_time, vita_time_pps;
- reg [15:0] reg_leds, reg_cgen_ctrl, reg_test, xfer_rate;
+ reg [15:0] reg_leds, reg_cgen_ctrl, reg_test;
+ wire [15:0] xfer_rate = 0;
wire [7:0] test_rate;
wire [3:0] test_ctrl;
@@ -72,11 +78,11 @@ module u1plus_core
wire [31:0] debug_vt;
wire gpif_rst;
- wire rx_overrun_dsp, rx_overrun_gpmc, tx_underrun_dsp, tx_underrun_gpmc;
reg [7:0] frames_per_packet;
- assign rx_overrun = rx_overrun_gpmc | rx_overrun_dsp;
- assign tx_underrun = tx_underrun_gpmc | tx_underrun_dsp;
+ wire rx_overrun_dsp0, rx_overrun_dsp1, rx_overrun_gpif, tx_underrun_dsp, tx_underrun_gpif;
+ wire rx_overrun = rx_overrun_gpif | rx_overrun_dsp0 | rx_overrun_dsp1;
+ wire tx_underrun = tx_underrun_gpif | tx_underrun_dsp;
setting_reg #(.my_addr(SR_GLOBAL_RESET), .width(1)) sr_reset
(.clk(wb_clk),.rst(wb_rst),.strobe(set_stb),.addr(set_addr),
@@ -97,13 +103,12 @@ module u1plus_core
wire [sw-1:0] m0_sel;
wire m0_cyc, m0_stb, m0_we, m0_ack, m0_err, m0_rty;
- wire [31:0] debug_gpmc;
+ wire [31:0] debug_gpif;
wire [35:0] tx_data, rx_data, tx_err_data;
wire tx_src_rdy, tx_dst_rdy, rx_src_rdy, rx_dst_rdy,
tx_err_src_rdy, tx_err_dst_rdy;
- wire bus_error;
wire clear_tx, clear_rx;
setting_reg #(.my_addr(SR_CLEAR_RX_FIFO), .width(1)) sr_clear_rx
@@ -128,36 +133,83 @@ module u1plus_core
.rx_data_i(rx_data), .rx_src_rdy_i(rx_src_rdy), .rx_dst_rdy_o(rx_dst_rdy),
.tx_err_data_i(tx_err_data), .tx_err_src_rdy_i(tx_err_src_rdy), .tx_err_dst_rdy_o(tx_err_dst_rdy),
- .tx_underrun(tx_underrun_gpmc), .rx_overrun(rx_overrun_gpmc),
+ .tx_underrun(tx_underrun_gpif), .rx_overrun(rx_overrun_gpif),
.frames_per_packet(frames_per_packet), .test_len(test_len), .test_rate(test_rate), .test_ctrl(test_ctrl),
.debug0(debug0), .debug1(debug1));
// /////////////////////////////////////////////////////////////////////////
- // DSP RX
- wire [31:0] sample_rx;
- wire strobe_rx, run_rx;
- wire [31:0] debug_rx_dsp, vr_debug;
+ // RX ADC Frontend, does IQ Balance, DC Offset, muxing
+
+ wire [23:0] adc_i, adc_q; // 24 bits is total overkill here, but it matches u2/u2p
+ wire run_rx, run_rx0, run_rx1;
+
+ rx_frontend #(.BASE(SR_RX_FRONT)) rx_frontend
+ (.clk(wb_clk),.rst(wb_rst),
+ .set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
+ .adc_a({rx_i,4'b00}),.adc_ovf_a(0),
+ .adc_b({rx_q,4'b00}),.adc_ovf_b(0),
+ .i_out(adc_i), .q_out(adc_q), .run(run_rx0 | run_rx1), .debug());
+
+ // /////////////////////////////////////////////////////////////////////////
+ // DSP RX 0
+
+ wire [31:0] sample_rx0;
+ wire strobe_rx0;
+ wire [35:0] vita_rx_data0;
+ wire vita_rx_src_rdy0, vita_rx_dst_rdy0;
- dsp_core_rx #(.BASE(SR_RX_DSP)) dsp_core_rx
+ dsp_core_rx #(.BASE(SR_RX_DSP0)) dsp_core_rx0
(.clk(wb_clk),.rst(wb_rst),
.set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
- .adc_a({rx_i,2'b0}),.adc_ovf_a(0),.adc_b({rx_q,2'b0}),.adc_ovf_b(0),
- .sample(sample_rx), .run(run_rx), .strobe(strobe_rx),
- .debug(debug_rx_dsp) );
+ .adc_i(adc_i),.adc_ovf_i(0),.adc_q(adc_q),.adc_ovf_q(0),
+ .sample(sample_rx0), .run(run_rx0), .strobe(strobe_rx0),
+ .debug() );
+
+ vita_rx_chain #(.BASE(SR_RX_CTRL0), .UNIT(0), .FIFOSIZE(9), .PROT_ENG_FLAGS(0)) vita_rx_chain0
+ (.clk(wb_clk),.reset(wb_rst),.clear(clear_rx),
+ .set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
+ .vita_time(vita_time), .overrun(rx_overrun_dsp0),
+ .sample(sample_rx0), .run(run_rx0), .strobe(strobe_rx0),
+ .rx_data_o(vita_rx_data0), .rx_dst_rdy_i(vita_rx_dst_rdy0), .rx_src_rdy_o(vita_rx_src_rdy0),
+ .debug() );
- vita_rx_chain #(.BASE(SR_RX_CTRL), .UNIT(0), .FIFOSIZE(9), .PROT_ENG_FLAGS(0)) vita_rx_chain
+ // /////////////////////////////////////////////////////////////////////////
+ // DSP RX 1
+
+ wire [31:0] sample_rx1;
+ wire strobe_rx1;
+ wire [35:0] vita_rx_data1;
+ wire vita_rx_src_rdy1, vita_rx_dst_rdy1;
+
+ dsp_core_rx #(.BASE(SR_RX_DSP1)) dsp_core_rx1
+ (.clk(wb_clk),.rst(wb_rst),
+ .set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
+ .adc_i(adc_i),.adc_ovf_i(0),.adc_q(adc_q),.adc_ovf_q(0),
+ .sample(sample_rx1), .run(run_rx1), .strobe(strobe_rx1),
+ .debug() );
+
+ vita_rx_chain #(.BASE(SR_RX_CTRL1), .UNIT(1), .FIFOSIZE(9), .PROT_ENG_FLAGS(0)) vita_rx_chain1
(.clk(wb_clk),.reset(wb_rst),.clear(clear_rx),
.set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
- .vita_time(vita_time), .overrun(rx_overrun_dsp),
- .sample(sample_rx), .run(run_rx), .strobe(strobe_rx),
- .rx_data_o(rx_data), .rx_dst_rdy_i(rx_dst_rdy), .rx_src_rdy_o(rx_src_rdy),
- .debug(vr_debug) );
+ .vita_time(vita_time), .overrun(rx_overrun_dsp1),
+ .sample(sample_rx1), .run(run_rx1), .strobe(strobe_rx1),
+ .rx_data_o(vita_rx_data1), .rx_dst_rdy_i(vita_rx_dst_rdy1), .rx_src_rdy_o(vita_rx_src_rdy1),
+ .debug() );
+
+ // /////////////////////////////////////////////////////////////////////////
+ // RX Stream muxing
+
+ fifo36_mux #(.prio(0)) mux_data_streams
+ (.clk(wb_clk), .reset(wb_rst), .clear(0),
+ .data0_i(vita_rx_data0), .src0_rdy_i(vita_rx_src_rdy0), .dst0_rdy_o(vita_rx_dst_rdy0),
+ .data1_i(vita_rx_data1), .src1_rdy_i(vita_rx_src_rdy1), .dst1_rdy_o(vita_rx_dst_rdy1),
+ .data_o(rx_data), .src_rdy_o(rx_src_rdy), .dst_rdy_i(rx_dst_rdy));
// ///////////////////////////////////////////////////////////////////////////////////
// DSP TX
- wire [15:0] tx_i_int, tx_q_int;
+ wire [23:0] tx_i_int, tx_q_int;
wire run_tx;
vita_tx_chain #(.BASE_CTRL(SR_TX_CTRL), .BASE_DSP(SR_TX_DSP),
@@ -170,13 +222,16 @@ module u1plus_core
.vita_time(vita_time),
.tx_data_i(tx_data), .tx_src_rdy_i(tx_src_rdy), .tx_dst_rdy_o(tx_dst_rdy),
.err_data_o(tx_err_data), .err_src_rdy_o(tx_err_src_rdy), .err_dst_rdy_i(tx_err_dst_rdy),
- .dac_a(tx_i_int),.dac_b(tx_q_int),
+ .tx_i(tx_i_int),.tx_q(tx_q_int),
.underrun(tx_underrun_dsp), .run(run_tx),
.debug(debug_vt));
-
- assign tx_i = tx_i_int[15:2];
- assign tx_q = tx_q_int[15:2];
-
+
+ tx_frontend #(.BASE(SR_TX_FRONT), .WIDTH_OUT(14)) tx_frontend
+ (.clk(wb_clk), .rst(wb_rst),
+ .set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
+ .tx_i(tx_i_int), .tx_q(tx_q_int), .run(1'b1),
+ .dac_a(tx_i), .dac_b(tx_q));
+
// /////////////////////////////////////////////////////////////////////////////////////
// Wishbone Intercon, single master
wire [dw-1:0] s0_dat_mosi, s1_dat_mosi, s0_dat_miso, s1_dat_miso, s2_dat_mosi, s3_dat_mosi, s2_dat_miso, s3_dat_miso,
@@ -277,8 +332,8 @@ module u1plus_core
reg_test <= s0_dat_mosi;
REG_RX_FRAMELEN :
frames_per_packet <= s0_dat_mosi[7:0];
- REG_XFER_RATE :
- xfer_rate <= s0_dat_mosi;
+ //REG_XFER_RATE :
+ //xfer_rate <= s0_dat_mosi;
endcase // case (s0_adr[6:0])
assign test_ctrl = xfer_rate[11:8];
@@ -300,14 +355,16 @@ module u1plus_core
// /////////////////////////////////////////////////////////////////////////////////////
// Slave 1, UART
// depth of 3 is 128 entries, clkdiv of 278 gives 230.4k with a 64 MHz system clock
-
+
+/*
simple_uart #(.TXDEPTH(3),.RXDEPTH(3), .CLKDIV_DEFAULT(278)) uart
(.clk_i(wb_clk),.rst_i(wb_rst),
.we_i(s1_we),.stb_i(s1_stb),.cyc_i(s1_cyc),.ack_o(s1_ack),
.adr_i(s1_adr[3:1]),.dat_i({16'd0,s1_dat_mosi}),.dat_o(s1_dat_miso),
.rx_int_o(),.tx_int_o(),
.tx_o(debug_txd),.rx_i(debug_rxd),.baud_o());
-
+*/
+
// /////////////////////////////////////////////////////////////////////////////////////
// Slave 2, SPI
@@ -401,9 +458,8 @@ module u1plus_core
// Debug circuitry
assign debug_clk = { gpif_clk, clk_fpga };
- assign debug = debug0;
+ assign debug = 0;
assign debug_gpio_0 = 0;
assign debug_gpio_1 = 0;
- //assign {io_tx,io_rx} = {debug1};
endmodule // u1plus_core
diff --git a/fpga/usrp2/top/E1x0/Makefile.passthru b/fpga/usrp2/top/E1x0/Makefile.passthru
deleted file mode 100644
index f2d835608..000000000
--- a/fpga/usrp2/top/E1x0/Makefile.passthru
+++ /dev/null
@@ -1,98 +0,0 @@
-#
-# Copyright 2008 Ettus Research LLC
-#
-
-##################################################
-# Project Setup
-##################################################
-TOP_MODULE = passthru
-BUILD_DIR = $(abspath build$(ISE))
-
-##################################################
-# Include other makefiles
-##################################################
-
-include ../Makefile.common
-include ../../fifo/Makefile.srcs
-include ../../control_lib/Makefile.srcs
-include ../../sdr_lib/Makefile.srcs
-include ../../serdes/Makefile.srcs
-include ../../simple_gemac/Makefile.srcs
-include ../../timing/Makefile.srcs
-include ../../opencores/Makefile.srcs
-include ../../vrt/Makefile.srcs
-include ../../udp/Makefile.srcs
-include ../../coregen/Makefile.srcs
-include ../../gpmc/Makefile.srcs
-
-##################################################
-# Project Properties
-##################################################
-export PROJECT_PROPERTIES := \
-family "Spartan-3A DSP" \
-device xc3sd1800a \
-package cs484 \
-speed -4 \
-top_level_module_type "HDL" \
-synthesis_tool "XST (VHDL/Verilog)" \
-simulator "ISE Simulator (VHDL/Verilog)" \
-"Preferred Language" "Verilog" \
-"Enable Message Filtering" FALSE \
-"Display Incremental Messages" FALSE
-
-##################################################
-# Sources
-##################################################
-TOP_SRCS = \
-passthru.v \
-passthru.ucf
-
-SOURCES = $(abspath $(TOP_SRCS)) $(FIFO_SRCS) \
-$(CONTROL_LIB_SRCS) $(SDR_LIB_SRCS) $(SERDES_SRCS) \
-$(SIMPLE_GEMAC_SRCS) $(TIMING_SRCS) $(OPENCORES_SRCS) \
-$(VRT_SRCS) $(UDP_SRCS) $(COREGEN_SRCS) \
-$(GPMC_SRCS)
-
-##################################################
-# Process Properties
-##################################################
-SYNTHESIZE_PROPERTIES = \
-"Number of Clock Buffers" 8 \
-"Pack I/O Registers into IOBs" Yes \
-"Optimization Effort" High \
-"Optimize Instantiated Primitives" TRUE \
-"Register Balancing" Yes \
-"Use Clock Enable" Auto \
-"Use Synchronous Reset" Auto \
-"Use Synchronous Set" Auto
-
-TRANSLATE_PROPERTIES = \
-"Macro Search Path" "$(shell pwd)/../../coregen/"
-
-MAP_PROPERTIES = \
-"Allow Logic Optimization Across Hierarchy" TRUE \
-"Map to Input Functions" 4 \
-"Optimization Strategy (Cover Mode)" Speed \
-"Pack I/O Registers/Latches into IOBs" "For Inputs and Outputs" \
-"Perform Timing-Driven Packing and Placement" TRUE \
-"Map Effort Level" High \
-"Extra Effort" Normal \
-"Combinatorial Logic Optimization" TRUE \
-"Register Duplication" TRUE
-
-PLACE_ROUTE_PROPERTIES = \
-"Place & Route Effort Level (Overall)" High
-
-STATIC_TIMING_PROPERTIES = \
-"Number of Paths in Error/Verbose Report" 10 \
-"Report Type" "Error Report"
-
-GEN_PROG_FILE_PROPERTIES = \
-"Configuration Rate" 6 \
-"Create Binary Configuration File" TRUE \
-"Done (Output Events)" 5 \
-"Enable Bitstream Compression" TRUE \
-"Enable Outputs (Output Events)" 6 \
-"Unused IOB Pins" "Pull Up"
-
-SIM_MODEL_PROPERTIES = ""
diff --git a/fpga/usrp2/top/E1x0/core_compile b/fpga/usrp2/top/E1x0/core_compile
index dc0cd081e..02d7f006e 100755
--- a/fpga/usrp2/top/E1x0/core_compile
+++ b/fpga/usrp2/top/E1x0/core_compile
@@ -1,3 +1,3 @@
-iverilog -Wall -y. -y ../../control_lib/ -y ../../fifo/ -y ../../gpmc/ -y ../../models/ -y ../../sdr_lib/ -y ../../coregen/ -y ../../vrt/ -y ../../opencores/i2c/rtl/verilog/ -y ../../opencores/spi/rtl/verilog/ -y ../../timing/ -y ../../opencores/8b10b/ -I ../../opencores/spi/rtl/verilog/ -I ../../opencores/i2c/rtl/verilog/ -y ../../simple_gemac u1e_core.v 2>&1 | grep -v timescale | grep -v coregen | grep -v models
+iverilog -Wall -y. -y ../../control_lib/ -y ../../fifo/ -y ../../gpmc/ -y ../../models/ -y ../../sdr_lib/ -y ../../coregen/ -y ../../vrt/ -y ../../opencores/i2c/rtl/verilog/ -y ../../opencores/spi/rtl/verilog/ -y ../../timing/ -y ../../opencores/8b10b/ -I ../../opencores/spi/rtl/verilog/ -I ../../opencores/i2c/rtl/verilog/ -y ../../simple_gemac -y $XILINX/verilog/src/unisims u1e_core.v 2>&1 | grep -v timescale | grep -v coregen | grep -v models
diff --git a/fpga/usrp2/top/E1x0/passthru.ucf b/fpga/usrp2/top/E1x0/passthru.ucf
deleted file mode 100644
index 64e6f0440..000000000
--- a/fpga/usrp2/top/E1x0/passthru.ucf
+++ /dev/null
@@ -1,6 +0,0 @@
-NET "overo_gpio145" LOC = "C7" ;
-NET "cgen_mosi" LOC = "E22" ;
-NET "cgen_sclk" LOC = "J19" ;
-NET "cgen_sen_b" LOC = "H20" ;
-NET "fpga_cfg_din" LOC = "W17" ;
-NET "fpga_cfg_cclk" LOC = "V17" ;
diff --git a/fpga/usrp2/top/E1x0/passthru.v b/fpga/usrp2/top/E1x0/passthru.v
deleted file mode 100644
index 486257366..000000000
--- a/fpga/usrp2/top/E1x0/passthru.v
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// Copyright 2011 Ettus Research LLC
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-//
-
-`timescale 1ns / 1ps
-//////////////////////////////////////////////////////////////////////////////////
-
-module passthru
- (input overo_gpio145,
- output cgen_sclk,
- output cgen_sen_b,
- output cgen_mosi,
- input fpga_cfg_din,
- input fpga_cfg_cclk
- );
-
- assign cgen_sclk = fpga_cfg_cclk;
- assign cgen_sen_b = overo_gpio145;
- assign cgen_mosi = fpga_cfg_din;
-
-
-endmodule // passthru
diff --git a/fpga/usrp2/top/E1x0/u1e.v b/fpga/usrp2/top/E1x0/u1e.v
index adf42fd07..4f85b7d6e 100644
--- a/fpga/usrp2/top/E1x0/u1e.v
+++ b/fpga/usrp2/top/E1x0/u1e.v
@@ -36,11 +36,12 @@ module u1e
output cgen_sclk, output cgen_sen_b, output cgen_mosi, input cgen_miso, // Clock gen SPI
input cgen_st_status, input cgen_st_ld, input cgen_st_refmon, output cgen_sync_b, output cgen_ref_sel,
+ input overo_gpio65, input overo_gpio128, input overo_gpio145, output overo_gpio147, //aux SPI
- output overo_gpio144, output overo_gpio145, output overo_gpio146, output overo_gpio147, // Fifo controls
+ output overo_gpio144, output overo_gpio146, // Fifo controls
input overo_gpio0, input overo_gpio14, input overo_gpio21, input overo_gpio22, // Misc GPIO
- input overo_gpio23, input overo_gpio64, input overo_gpio65, input overo_gpio127, // Misc GPIO
- input overo_gpio128, input overo_gpio163, input overo_gpio170, input overo_gpio176, // Misc GPIO
+ input overo_gpio23, input overo_gpio64, input overo_gpio127, // Misc GPIO
+ input overo_gpio176, input overo_gpio163, input overo_gpio170, // Misc GPIO
inout [15:0] io_tx, inout [15:0] io_rx,
@@ -75,19 +76,29 @@ module u1e
clk_doubler (.CLKFB(clk_fb), .CLKIN(clk_fpga_in), .RST(dcm_rst),
.DSSEN(0), .PSCLK(0), .PSEN(0), .PSINCDEC(0), .PSDONE(),
.CLKDV(), .CLKFX(), .CLKFX180(),
- .CLK2X(), .CLK2X180(),
+ .CLK2X(clk_2x), .CLK2X180(),
.CLK0(clk_fb), .CLK90(clk_fpga), .CLK180(), .CLK270(),
.LOCKED(dcm_locked), .STATUS());
-
+
// /////////////////////////////////////////////////////////////////////////
// SPI
wire mosi, sclk, miso;
assign { db_sclk_tx, db_mosi_tx } = ~db_sen_tx ? {sclk,mosi} : 2'b0;
assign { db_sclk_rx, db_mosi_rx } = ~db_sen_rx ? {sclk,mosi} : 2'b0;
assign { sclk_codec, mosi_codec } = ~sen_codec ? {sclk,mosi} : 2'b0;
- assign { cgen_sclk, cgen_mosi } = ~cgen_sen_b ? {sclk,mosi} : 2'b0;
+ //assign { cgen_sclk, cgen_mosi } = ~cgen_sen_b ? {sclk,mosi} : 2'b0; //replaced by aux spi
assign miso = (~db_sen_tx & db_miso_tx) | (~db_sen_rx & db_miso_rx) |
- (~sen_codec & miso_codec) | (~cgen_sen_b & cgen_miso);
+ (~sen_codec & miso_codec) | (~cgen_sen_b & cgen_miso);
+
+ //assign the aux spi to the cgen (bypasses wishbone)
+ assign cgen_sclk = overo_gpio65;
+ assign cgen_sen_b = overo_gpio128;
+ assign cgen_mosi = overo_gpio145;
+ wire proc_int; //re-purpose gpio for interrupt when we are not using aux spi
+ assign overo_gpio147 = (cgen_sen_b == 1'b0)? cgen_miso : proc_int;
+
+ wire _cgen_sen_b;
+ //assign cgen_sen_b = _cgen_sen_b; //replaced by aux spi
// /////////////////////////////////////////////////////////////////////////
// TX DAC -- handle the interleaved data bus to DAC, with clock doubling DLL
@@ -130,25 +141,22 @@ module u1e
// /////////////////////////////////////////////////////////////////////////
// Main U1E Core
- u1e_core u1e_core(.clk_fpga(clk_fpga), .rst_fpga(~debug_pb),
+ u1e_core u1e_core(.clk_fpga(clk_fpga), .bus_clk(clk_2x), .rst_fpga(~debug_pb),
.debug_led(debug_led), .debug(debug), .debug_clk(debug_clk),
.debug_txd(FPGA_TXD), .debug_rxd(FPGA_RXD),
.EM_CLK(EM_CLK), .EM_D(EM_D), .EM_A(EM_A), .EM_NBE(EM_NBE),
.EM_WAIT0(EM_WAIT0), .EM_NCS4(EM_NCS4), .EM_NCS5(EM_NCS5),
.EM_NCS6(EM_NCS6), .EM_NWE(EM_NWE), .EM_NOE(EM_NOE),
.db_sda(db_sda), .db_scl(db_scl),
- .sclk(sclk), .sen({cgen_sen_b,sen_codec,db_sen_tx,db_sen_rx}), .mosi(mosi), .miso(miso),
+ .sclk(sclk), .sen({_cgen_sen_b,sen_codec,db_sen_tx,db_sen_rx}), .mosi(mosi), .miso(miso),
.cgen_st_status(cgen_st_status), .cgen_st_ld(cgen_st_ld),.cgen_st_refmon(cgen_st_refmon),
.cgen_sync_b(cgen_sync_b), .cgen_ref_sel(cgen_ref_sel),
- .tx_have_space(overo_gpio144), .tx_underrun(overo_gpio145),
- .rx_have_data(overo_gpio146), .rx_overrun(overo_gpio147),
+ .tx_have_space(overo_gpio144),
+ .rx_have_data(overo_gpio146),
.io_tx(io_tx), .io_rx(io_rx),
.tx_i(tx_i), .tx_q(tx_q),
.rx_i(DA), .rx_q(DB),
- .misc_gpio( {{overo_gpio128,overo_gpio163,overo_gpio170,overo_gpio176},
- {overo_gpio0,overo_gpio14,overo_gpio21,overo_gpio22},
- {overo_gpio23,overo_gpio64,overo_gpio65,overo_gpio127}}),
- .pps_in(PPS_IN) );
+ .pps_in(PPS_IN), .proc_int(proc_int) );
// /////////////////////////////////////////////////////////////////////////
// Local Debug
diff --git a/fpga/usrp2/top/E1x0/u1e_core.v b/fpga/usrp2/top/E1x0/u1e_core.v
index 4c513587b..d481867e3 100644
--- a/fpga/usrp2/top/E1x0/u1e_core.v
+++ b/fpga/usrp2/top/E1x0/u1e_core.v
@@ -18,7 +18,7 @@
module u1e_core
- (input clk_fpga, input rst_fpga,
+ (input clk_fpga, input bus_clk, input rst_fpga,
output [3:0] debug_led, output [31:0] debug, output [1:0] debug_clk,
output debug_txd, input debug_rxd,
@@ -31,29 +31,36 @@ module u1e_core
output sclk, output [15:0] sen, output mosi, input miso,
input cgen_st_status, input cgen_st_ld, input cgen_st_refmon, output cgen_sync_b, output cgen_ref_sel,
- output tx_have_space, output tx_underrun, output rx_have_data, output rx_overrun,
+ output tx_have_space, output rx_have_data,
inout [15:0] io_tx, inout [15:0] io_rx,
output [13:0] tx_i, output [13:0] tx_q,
input [11:0] rx_i, input [11:0] rx_q,
- input [11:0] misc_gpio, input pps_in
+ input pps_in, output proc_int
);
localparam TXFIFOSIZE = 13;
localparam RXFIFOSIZE = 13;
// 64 total regs in address space
- localparam SR_RX_CTRL = 0; // 9 regs (+0 to +8)
- localparam SR_RX_DSP = 16; // 7 regs (+0 to +6)
- localparam SR_TX_CTRL = 24; // 6 regs (+0 to +5)
- localparam SR_TX_DSP = 32; // 5 regs (+0 to +4)
- localparam SR_TIME64 = 40; // 6 regs (+0 to +5)
- localparam SR_CLEAR_RX_FIFO = 48; // 1 reg
- localparam SR_CLEAR_TX_FIFO = 49; // 1 reg
- localparam SR_GLOBAL_RESET = 50; // 1 reg
- localparam SR_REG_TEST32 = 52; // 1 reg
-
- wire [7:0] COMPAT_NUM = 8'd4;
+ localparam SR_RX_CTRL0 = 0; // 9 regs (+0 to +8)
+ localparam SR_RX_DSP0 = 10; // 4 regs (+0 to +3)
+ localparam SR_RX_CTRL1 = 16; // 9 regs (+0 to +8)
+ localparam SR_RX_DSP1 = 26; // 4 regs (+0 to +3)
+ localparam SR_ERR_CTRL = 30; // 1 reg
+ localparam SR_TX_CTRL = 32; // 4 regs (+0 to +3)
+ localparam SR_TX_DSP = 38; // 3 regs (+0 to +2)
+
+ localparam SR_TIME64 = 42; // 6 regs (+0 to +5)
+ localparam SR_RX_FRONT = 48; // 5 regs (+0 to +4)
+ localparam SR_TX_FRONT = 54; // 5 regs (+0 to +4)
+
+ localparam SR_REG_TEST32 = 60; // 1 reg
+ localparam SR_CLEAR_RX_FIFO = 61; // 1 reg
+ localparam SR_CLEAR_TX_FIFO = 62; // 1 reg
+ localparam SR_GLOBAL_RESET = 63; // 1 reg
+
+ wire [7:0] COMPAT_NUM = 8'd5;
wire wb_clk = clk_fpga;
wire wb_rst, global_reset;
@@ -69,9 +76,9 @@ module u1e_core
wire set_stb;
wire [31:0] debug_vt;
- wire rx_overrun_dsp, rx_overrun_gpmc, tx_underrun_dsp, tx_underrun_gpmc;
- assign rx_overrun = rx_overrun_gpmc | rx_overrun_dsp;
- assign tx_underrun = tx_underrun_gpmc | tx_underrun_dsp;
+ wire rx_overrun_dsp0, rx_overrun_dsp1, rx_overrun_gpmc, tx_underrun_dsp, tx_underrun_gpmc;
+ wire rx_overrun = rx_overrun_gpmc | rx_overrun_dsp0 | rx_overrun_dsp1;
+ wire tx_underrun = tx_underrun_gpmc | tx_underrun_dsp;
setting_reg #(.my_addr(SR_GLOBAL_RESET), .width(1)) sr_reset
(.clk(wb_clk),.rst(wb_rst),.strobe(set_stb),.addr(set_addr),
@@ -110,7 +117,7 @@ module u1e_core
.in(set_data),.out(),.changed(clear_tx));
gpmc_async #(.TXFIFOSIZE(TXFIFOSIZE), .RXFIFOSIZE(RXFIFOSIZE))
- gpmc (.arst(wb_rst),
+ gpmc (.arst(wb_rst), .bus_clk(bus_clk),
.EM_CLK(EM_CLK), .EM_D(EM_D), .EM_A(EM_A), .EM_NBE(EM_NBE),
.EM_WAIT0(EM_WAIT0), .EM_NCS4(EM_NCS4), .EM_NCS6(EM_NCS6), .EM_NWE(EM_NWE),
.EM_NOE(EM_NOE),
@@ -133,44 +140,82 @@ module u1e_core
.test_rate(test_rate), .test_ctrl(test_ctrl),
.debug(debug_gpmc));
- wire rx_sof = rx_data[32];
- wire rx_eof = rx_data[33];
wire rx_src_rdy_int, rx_dst_rdy_int, tx_src_rdy_int, tx_dst_rdy_int;
wire [31:0] debug_rx_dsp, vrc_debug, vrf_debug, vr_debug;
// /////////////////////////////////////////////////////////////////////////
- // DSP RX
- wire [31:0] sample_rx;
- wire strobe_rx, run_rx;
- wire [35:0] vita_rx_data;
- wire vita_rx_src_rdy, vita_rx_dst_rdy;
+ // RX ADC Frontend, does IQ Balance, DC Offset, muxing
+
+ wire [23:0] adc_i, adc_q; // 24 bits is total overkill here, but it matches u2/u2p
+ wire run_rx, run_rx0, run_rx1;
- dsp_core_rx #(.BASE(SR_RX_DSP)) dsp_core_rx
+ rx_frontend #(.BASE(SR_RX_FRONT)) rx_frontend
(.clk(wb_clk),.rst(wb_rst),
.set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
- .adc_a({rx_i,2'b0}),.adc_ovf_a(0),.adc_b({rx_q,2'b0}),.adc_ovf_b(0),
- .sample(sample_rx), .run(run_rx), .strobe(strobe_rx),
- .debug(debug_rx_dsp) );
+ .adc_a({rx_i,4'b00}),.adc_ovf_a(0),
+ .adc_b({rx_q,4'b00}),.adc_ovf_b(0),
+ .i_out(adc_i), .q_out(adc_q), .run(run_rx0 | run_rx1), .debug());
+
+ // /////////////////////////////////////////////////////////////////////////
+ // DSP RX 0
- vita_rx_chain #(.BASE(SR_RX_CTRL), .UNIT(0), .FIFOSIZE(9), .PROT_ENG_FLAGS(0)) vita_rx_chain
+ wire [31:0] sample_rx0;
+ wire strobe_rx0;
+ wire [35:0] vita_rx_data0;
+ wire vita_rx_src_rdy0, vita_rx_dst_rdy0;
+
+ dsp_core_rx #(.BASE(SR_RX_DSP0)) dsp_core_rx0
+ (.clk(wb_clk),.rst(wb_rst),
+ .set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
+ .adc_i(adc_i),.adc_ovf_i(0),.adc_q(adc_q),.adc_ovf_q(0),
+ .sample(sample_rx0), .run(run_rx0), .strobe(strobe_rx0),
+ .debug() );
+
+ vita_rx_chain #(.BASE(SR_RX_CTRL0), .UNIT(0), .FIFOSIZE(9), .PROT_ENG_FLAGS(0)) vita_rx_chain0
(.clk(wb_clk),.reset(wb_rst),.clear(clear_rx),
.set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
- .vita_time(vita_time), .overrun(rx_overrun_dsp),
- .sample(sample_rx), .run(run_rx), .strobe(strobe_rx),
- .rx_data_o(vita_rx_data), .rx_dst_rdy_i(vita_rx_dst_rdy), .rx_src_rdy_o(vita_rx_src_rdy),
- .debug(vr_debug) );
+ .vita_time(vita_time), .overrun(rx_overrun_dsp0),
+ .sample(sample_rx0), .run(run_rx0), .strobe(strobe_rx0),
+ .rx_data_o(vita_rx_data0), .rx_dst_rdy_i(vita_rx_dst_rdy0), .rx_src_rdy_o(vita_rx_src_rdy0),
+ .debug() );
- fifo36_mux #(.prio(0)) mux_err_stream
+ // /////////////////////////////////////////////////////////////////////////
+ // DSP RX 1
+
+ wire [31:0] sample_rx1;
+ wire strobe_rx1;
+ wire [35:0] vita_rx_data1;
+ wire vita_rx_src_rdy1, vita_rx_dst_rdy1;
+
+ dsp_core_rx #(.BASE(SR_RX_DSP1)) dsp_core_rx1
+ (.clk(wb_clk),.rst(wb_rst),
+ .set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
+ .adc_i(adc_i),.adc_ovf_i(0),.adc_q(adc_q),.adc_ovf_q(0),
+ .sample(sample_rx1), .run(run_rx1), .strobe(strobe_rx1),
+ .debug() );
+
+ vita_rx_chain #(.BASE(SR_RX_CTRL1), .UNIT(1), .FIFOSIZE(9), .PROT_ENG_FLAGS(0)) vita_rx_chain1
+ (.clk(wb_clk),.reset(wb_rst),.clear(clear_rx),
+ .set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
+ .vita_time(vita_time), .overrun(rx_overrun_dsp1),
+ .sample(sample_rx1), .run(run_rx1), .strobe(strobe_rx1),
+ .rx_data_o(vita_rx_data1), .rx_dst_rdy_i(vita_rx_dst_rdy1), .rx_src_rdy_o(vita_rx_src_rdy1),
+ .debug() );
+
+ // /////////////////////////////////////////////////////////////////////////
+ // RX Stream muxing
+
+ fifo36_mux #(.prio(0)) mux_data_streams
(.clk(wb_clk), .reset(wb_rst), .clear(0),
- .data0_i(vita_rx_data), .src0_rdy_i(vita_rx_src_rdy), .dst0_rdy_o(vita_rx_dst_rdy),
- .data1_i(tx_err_data), .src1_rdy_i(tx_err_src_rdy), .dst1_rdy_o(tx_err_dst_rdy),
+ .data0_i(vita_rx_data0), .src0_rdy_i(vita_rx_src_rdy0), .dst0_rdy_o(vita_rx_dst_rdy0),
+ .data1_i(vita_rx_data1), .src1_rdy_i(vita_rx_src_rdy1), .dst1_rdy_o(vita_rx_dst_rdy1),
.data_o(rx_data), .src_rdy_o(rx_src_rdy), .dst_rdy_i(rx_dst_rdy));
-
+
// ///////////////////////////////////////////////////////////////////////////////////
// DSP TX
- wire [15:0] tx_i_int, tx_q_int;
+ wire [23:0] tx_i_int, tx_q_int;
wire run_tx;
vita_tx_chain #(.BASE_CTRL(SR_TX_CTRL), .BASE_DSP(SR_TX_DSP),
@@ -183,13 +228,16 @@ module u1e_core
.vita_time(vita_time),
.tx_data_i(tx_data), .tx_src_rdy_i(tx_src_rdy), .tx_dst_rdy_o(tx_dst_rdy),
.err_data_o(tx_err_data), .err_src_rdy_o(tx_err_src_rdy), .err_dst_rdy_i(tx_err_dst_rdy),
- .dac_a(tx_i_int),.dac_b(tx_q_int),
+ .tx_i(tx_i_int),.tx_q(tx_q_int),
.underrun(tx_underrun_dsp), .run(run_tx),
.debug(debug_vt));
-
- assign tx_i = tx_i_int[15:2];
- assign tx_q = tx_q_int[15:2];
-
+
+ tx_frontend #(.BASE(SR_TX_FRONT), .WIDTH_OUT(14)) tx_frontend
+ (.clk(wb_clk), .rst(wb_rst),
+ .set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
+ .tx_i(tx_i_int), .tx_q(tx_q_int), .run(1'b1),
+ .dac_a(tx_i), .dac_b(tx_q));
+
// /////////////////////////////////////////////////////////////////////////////////////
// Wishbone Intercon, single master
wire [dw-1:0] s0_dat_mosi, s1_dat_mosi, s0_dat_miso, s1_dat_miso, s2_dat_mosi, s3_dat_mosi, s2_dat_miso, s3_dat_miso,
@@ -255,7 +303,7 @@ module u1e_core
.sf_dat_o(sf_dat_mosi),.sf_adr_o(sf_adr),.sf_sel_o(sf_sel),.sf_we_o(sf_we),.sf_cyc_o(sf_cyc),.sf_stb_o(sf_stb),
.sf_dat_i(sf_dat_miso),.sf_ack_i(sf_ack),.sf_err_i(0),.sf_rty_i(0) );
- assign s5_ack = 0; assign s9_ack = 0; assign sa_ack = 0; assign sb_ack = 0;
+ assign s9_ack = 0; assign sa_ack = 0; assign sb_ack = 0;
assign sc_ack = 0; assign sd_ack = 0; assign se_ack = 0; assign sf_ack = 0;
// /////////////////////////////////////////////////////////////////////////////////////
@@ -336,7 +384,7 @@ module u1e_core
wire scl_pad_i, scl_pad_o, scl_pad_oen_o, sda_pad_i, sda_pad_o, sda_pad_oen_o;
i2c_master_top #(.ARST_LVL(1)) i2c
(.wb_clk_i(wb_clk),.wb_rst_i(wb_rst),.arst_i(1'b0),
- .wb_adr_i(s3_adr[4:2]),.wb_dat_i(s3_dat_mosi[7:0]),.wb_dat_o(s3_dat_miso[7:0]),
+ .wb_adr_i(s3_adr[3:1]),.wb_dat_i(s3_dat_mosi[7:0]),.wb_dat_o(s3_dat_miso[7:0]),
.wb_we_i(s3_we),.wb_stb_i(s3_stb),.wb_cyc_i(s3_cyc),
.wb_ack_o(s3_ack),.wb_inta_o(),
.scl_pad_i(scl_pad_i),.scl_pad_o(scl_pad_o),.scl_padoen_o(scl_pad_oen_o),
@@ -361,6 +409,43 @@ module u1e_core
.atr(atr_lines),.debug_0(debug_gpio_0),.debug_1(debug_gpio_1),
.gpio( {io_tx,io_rx} ) );
+ ////////////////////////////////////////////////////////////////////////////
+ // FIFO to WB slave for async messages - Slave #5
+
+ //signals between fifo and buffer module
+ wire [35:0] _tx_err_data;
+ wire _tx_err_src_rdy, _tx_err_dst_rdy;
+
+ fifo_cascade #(.WIDTH(36), .SIZE(9/*512 lines plenty for short pkts*/)) err_fifo(
+ .clk(wb_clk), .reset(wb_rst), .clear(wb_rst),
+ .datain(tx_err_data), .src_rdy_i(tx_err_src_rdy), .dst_rdy_o(tx_err_dst_rdy),
+ .dataout(_tx_err_data), .src_rdy_o(_tx_err_src_rdy), .dst_rdy_i(_tx_err_dst_rdy)
+ );
+
+ wire [31:0] err_status, err_data32;
+ //the buffer is 32 bits, but the data is 16, so mux based on the addr bit
+ assign s5_dat_miso = (s5_adr[1] == 1'b0)? err_data32[15:0] : err_data32[31:16];
+
+ buffer_int2 #(.BASE(SR_ERR_CTRL), .BUF_SIZE(5)) fifo_to_wb(
+ .clk(wb_clk), .rst(wb_rst),
+ .set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
+ .status(err_status),
+ // Wishbone interface to RAM
+ .wb_clk_i(wb_clk), .wb_rst_i(wb_rst),
+ .wb_we_i(s5_we), .wb_stb_i(s5_stb),
+ .wb_adr_i(s5_adr), .wb_dat_i({16'b0, s5_dat_mosi}),
+ .wb_dat_o(err_data32), .wb_ack_o(s5_ack),
+ // Write FIFO Interface
+ .wr_data_i(_tx_err_data), .wr_ready_i(_tx_err_src_rdy), .wr_ready_o(_tx_err_dst_rdy),
+ // Read FIFO Interface
+ .rd_data_o(), .rd_ready_o(), .rd_ready_i(1'b0)
+ );
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Interrupts
+
+ assign proc_int = (|err_status[1:0]);
+
// /////////////////////////////////////////////////////////////////////////
// Settings Bus -- Slave #8 + 9
@@ -369,7 +454,7 @@ module u1e_core
(.wb_clk(wb_clk),.wb_rst(wb_rst),.wb_adr_i(s8_adr),.wb_dat_i(s8_dat_mosi),
.wb_stb_i(s8_stb),.wb_we_i(s8_we),.wb_ack_o(s8_ack),
.strobe(set_stb),.addr(set_addr),.data(set_data) );
-
+
// /////////////////////////////////////////////////////////////////////////
// ATR Controller -- Slave #6
@@ -384,8 +469,9 @@ module u1e_core
wire [31:0] reg_test32;
+ //this setting reg is persistent across resets, to check for fpga loaded
setting_reg #(.my_addr(SR_REG_TEST32)) sr_reg_test32
- (.clk(wb_clk),.rst(wb_rst),.strobe(set_stb),.addr(set_addr),
+ (.clk(wb_clk),.rst(/*wb_rst*/1'b0),.strobe(set_stb),.addr(set_addr),
.in(set_data),.out(reg_test32),.changed());
wb_readback_mux_16LE readback_mux_32
@@ -394,7 +480,7 @@ module u1e_core
.word00(vita_time[63:32]), .word01(vita_time[31:0]),
.word02(vita_time_pps[63:32]), .word03(vita_time_pps[31:0]),
- .word04(reg_test32), .word05(32'b0),
+ .word04(reg_test32), .word05(err_status),
.word06(32'b0), .word07(32'b0),
.word08(32'b0), .word09(32'b0),
.word10(32'b0), .word11(32'b0),
@@ -423,7 +509,7 @@ module u1e_core
*/
assign debug = debug_gpmc;
- assign debug_gpio_0 = { {run_tx, 1'b0, run_rx, strobe_rx, tx_i[11:0]},
+ assign debug_gpio_0 = { {run_tx, 1'b0, run_rx, strobe_rx0, tx_i[11:0]},
{2'b00, tx_src_rdy, tx_dst_rdy, tx_q[11:0]} };
assign debug_gpio_1 = debug_vt;
@@ -431,7 +517,7 @@ module u1e_core
/*
assign debug_gpio_1 = { {rx_enable, rx_src_rdy, rx_dst_rdy, rx_src_rdy & ~rx_dst_rdy},
{tx_enable, tx_src_rdy, tx_dst_rdy, tx_dst_rdy & ~tx_src_rdy},
- {rx_sof, rx_eof, rx_src_rdy, rx_dst_rdy, rx_data[33:32],2'b0},
+ {2'b0, rx_src_rdy, rx_dst_rdy, rx_data[33:32],2'b0},
{2'b0, bus_error, debug_gpmc[4:0] },
{misc_gpio[7:0]} };
*/
diff --git a/fpga/usrp2/top/N2x0/u2plus_core.v b/fpga/usrp2/top/N2x0/u2plus_core.v
index 8a7c6ddee..e2142ad06 100644
--- a/fpga/usrp2/top/N2x0/u2plus_core.v
+++ b/fpga/usrp2/top/N2x0/u2plus_core.v
@@ -428,7 +428,7 @@ module u2plus_core
// Buffer Pool Status -- Slave #5
//compatibility number -> increment when the fpga has been sufficiently altered
- localparam compat_num = 32'd6;
+ localparam compat_num = {16'd7, 16'd0}; //major, minor
wb_readback_mux buff_pool_status
(.wb_clk_i(wb_clk), .wb_rst_i(wb_rst), .wb_stb_i(s5_stb),
@@ -584,6 +584,17 @@ module u2plus_core
.sclk_pad_o(spiflash_clk),.mosi_pad_o(spiflash_mosi),.miso_pad_i(spiflash_miso) );
// /////////////////////////////////////////////////////////////////////////
+ // ADC Frontend
+ wire [23:0] adc_i, adc_q;
+
+ rx_frontend #(.BASE(SR_RX_FRONT)) rx_frontend
+ (.clk(dsp_clk),.rst(dsp_rst),
+ .set_stb(set_stb_dsp),.set_addr(set_addr_dsp),.set_data(set_data_dsp),
+ .adc_a({adc_a,2'b00}),.adc_ovf_a(adc_ovf_a),
+ .adc_b({adc_b,2'b00}),.adc_ovf_b(adc_ovf_b),
+ .i_out(adc_i), .q_out(adc_q), .run(run_rx0_d1 | run_rx1_d1), .debug());
+
+ // /////////////////////////////////////////////////////////////////////////
// DSP RX 0
wire [31:0] sample_rx0;
wire clear_rx0, strobe_rx0;
@@ -594,7 +605,7 @@ module u2plus_core
dsp_core_rx #(.BASE(SR_RX_DSP0)) dsp_core_rx0
(.clk(dsp_clk),.rst(dsp_rst),
.set_stb(set_stb_dsp),.set_addr(set_addr_dsp),.set_data(set_data_dsp),
- .adc_a(adc_a),.adc_ovf_a(adc_ovf_a),.adc_b(adc_b),.adc_ovf_b(adc_ovf_b),
+ .adc_i(adc_i),.adc_ovf_i(adc_ovf_a),.adc_q(adc_q),.adc_ovf_q(adc_ovf_b),
.sample(sample_rx0), .run(run_rx0_d1), .strobe(strobe_rx0),
.debug() );
@@ -622,7 +633,7 @@ module u2plus_core
dsp_core_rx #(.BASE(SR_RX_DSP1)) dsp_core_rx1
(.clk(dsp_clk),.rst(dsp_rst),
.set_stb(set_stb_dsp),.set_addr(set_addr_dsp),.set_data(set_data_dsp),
- .adc_a(adc_a),.adc_ovf_a(adc_ovf_a),.adc_b(adc_b),.adc_ovf_b(adc_ovf_b),
+ .adc_i(adc_i),.adc_ovf_i(adc_ovf_a),.adc_q(adc_q),.adc_ovf_q(adc_ovf_b),
.sample(sample_rx1), .run(run_rx1_d1), .strobe(strobe_rx1),
.debug() );
@@ -676,6 +687,8 @@ module u2plus_core
.debug(debug_extfifo),
.debug2(debug_extfifo2) );
+ wire [23:0] tx_i, tx_q;
+
vita_tx_chain #(.BASE_CTRL(SR_TX_CTRL), .BASE_DSP(SR_TX_DSP),
.REPORT_ERROR(1), .DO_FLOW_CONTROL(1),
.PROT_ENG_FLAGS(1), .USE_TRANS_HEADER(1),
@@ -686,10 +699,16 @@ module u2plus_core
.vita_time(vita_time),
.tx_data_i(tx_data), .tx_src_rdy_i(tx_src_rdy), .tx_dst_rdy_o(tx_dst_rdy),
.err_data_o(tx_err_data), .err_src_rdy_o(tx_err_src_rdy), .err_dst_rdy_i(tx_err_dst_rdy),
- .dac_a(dac_a),.dac_b(dac_b),
+ .tx_i(tx_i),.tx_q(tx_q),
.underrun(underrun), .run(run_tx),
.debug(debug_vt));
-
+
+ tx_frontend #(.BASE(SR_TX_FRONT)) tx_frontend
+ (.clk(dsp_clk), .rst(dsp_rst),
+ .set_stb(set_stb_dsp),.set_addr(set_addr_dsp),.set_data(set_data_dsp),
+ .tx_i(tx_i), .tx_q(tx_q), .run(1'b1),
+ .dac_a(dac_a), .dac_b(dac_b));
+
// ///////////////////////////////////////////////////////////////////////////////////
// SERDES
diff --git a/fpga/usrp2/top/USRP2/u2_core.v b/fpga/usrp2/top/USRP2/u2_core.v
index ca9762ac5..2e3d41731 100644
--- a/fpga/usrp2/top/USRP2/u2_core.v
+++ b/fpga/usrp2/top/USRP2/u2_core.v
@@ -283,7 +283,7 @@ module u2_core
.sf_dat_o(sf_dat_o),.sf_adr_o(sf_adr),.sf_sel_o(sf_sel),.sf_we_o(sf_we),.sf_cyc_o(sf_cyc),.sf_stb_o(sf_stb),
.sf_dat_i(sf_dat_i),.sf_ack_i(sf_ack),.sf_err_i(0),.sf_rty_i(0));
- //////////////////////////////////////////////////////////////////////////////////////////
+ // ////////////////////////////////////////////////////////////////////////////////////////
// Reset Controller
system_control sysctrl (.wb_clk_i(wb_clk), // .por_i(por),
.ram_loader_rst_o(ram_loader_rst),
@@ -433,7 +433,7 @@ module u2_core
// Buffer Pool Status -- Slave #5
//compatibility number -> increment when the fpga has been sufficiently altered
- localparam compat_num = 32'd6;
+ localparam compat_num = {16'd7, 16'd0}; //major, minor
wb_readback_mux buff_pool_status
(.wb_clk_i(wb_clk), .wb_rst_i(wb_rst), .wb_stb_i(s5_stb),
@@ -583,6 +583,17 @@ module u2_core
assign sd_dat_i[31:8] = 0;
// /////////////////////////////////////////////////////////////////////////
+ // ADC Frontend
+ wire [23:0] adc_i, adc_q;
+
+ rx_frontend #(.BASE(SR_RX_FRONT)) rx_frontend
+ (.clk(dsp_clk),.rst(dsp_rst),
+ .set_stb(set_stb_dsp),.set_addr(set_addr_dsp),.set_data(set_data_dsp),
+ .adc_a({adc_a,2'b00}),.adc_ovf_a(adc_ovf_a),
+ .adc_b({adc_b,2'b00}),.adc_ovf_b(adc_ovf_b),
+ .i_out(adc_i), .q_out(adc_q), .run(run_rx0_d1 | run_rx1_d1), .debug());
+
+ // /////////////////////////////////////////////////////////////////////////
// DSP RX 0
wire [31:0] sample_rx0;
wire clear_rx0, strobe_rx0;
@@ -593,7 +604,7 @@ module u2_core
dsp_core_rx #(.BASE(SR_RX_DSP0)) dsp_core_rx0
(.clk(dsp_clk),.rst(dsp_rst),
.set_stb(set_stb_dsp),.set_addr(set_addr_dsp),.set_data(set_data_dsp),
- .adc_a(adc_a),.adc_ovf_a(adc_ovf_a),.adc_b(adc_b),.adc_ovf_b(adc_ovf_b),
+ .adc_i(adc_i),.adc_ovf_i(adc_ovf_a),.adc_q(adc_q),.adc_ovf_q(adc_ovf_b),
.sample(sample_rx0), .run(run_rx0_d1), .strobe(strobe_rx0),
.debug() );
@@ -621,7 +632,7 @@ module u2_core
dsp_core_rx #(.BASE(SR_RX_DSP1)) dsp_core_rx1
(.clk(dsp_clk),.rst(dsp_rst),
.set_stb(set_stb_dsp),.set_addr(set_addr_dsp),.set_data(set_data_dsp),
- .adc_a(adc_a),.adc_ovf_a(adc_ovf_a),.adc_b(adc_b),.adc_ovf_b(adc_ovf_b),
+ .adc_i(adc_i),.adc_ovf_i(adc_ovf_a),.adc_q(adc_q),.adc_ovf_q(adc_ovf_b),
.sample(sample_rx1), .run(run_rx1_d1), .strobe(strobe_rx1),
.debug() );
@@ -673,6 +684,8 @@ module u2_core
.debug(debug_extfifo),
.debug2(debug_extfifo2) );
+ wire [23:0] tx_i, tx_q;
+
vita_tx_chain #(.BASE_CTRL(SR_TX_CTRL), .BASE_DSP(SR_TX_DSP),
.REPORT_ERROR(1), .DO_FLOW_CONTROL(1),
.PROT_ENG_FLAGS(1), .USE_TRANS_HEADER(1),
@@ -683,10 +696,16 @@ module u2_core
.vita_time(vita_time),
.tx_data_i(tx_data), .tx_src_rdy_i(tx_src_rdy), .tx_dst_rdy_o(tx_dst_rdy),
.err_data_o(tx_err_data), .err_src_rdy_o(tx_err_src_rdy), .err_dst_rdy_i(tx_err_dst_rdy),
- .dac_a(dac_a),.dac_b(dac_b),
+ .tx_i(tx_i),.tx_q(tx_q),
.underrun(underrun), .run(run_tx),
.debug(debug_vt));
-
+
+ tx_frontend #(.BASE(SR_TX_FRONT)) tx_frontend
+ (.clk(dsp_clk), .rst(dsp_rst),
+ .set_stb(set_stb_dsp),.set_addr(set_addr_dsp),.set_data(set_data_dsp),
+ .tx_i(tx_i), .tx_q(tx_q), .run(1'b1),
+ .dac_a(dac_a), .dac_b(dac_b));
+
// ///////////////////////////////////////////////////////////////////////////////////
// SERDES
diff --git a/fpga/usrp2/vrt/vita_tx_chain.v b/fpga/usrp2/vrt/vita_tx_chain.v
index 542968afa..ac9f08fc8 100644
--- a/fpga/usrp2/vrt/vita_tx_chain.v
+++ b/fpga/usrp2/vrt/vita_tx_chain.v
@@ -29,7 +29,7 @@ module vita_tx_chain
input [63:0] vita_time,
input [35:0] tx_data_i, input tx_src_rdy_i, output tx_dst_rdy_o,
output [35:0] err_data_o, output err_src_rdy_o, input err_dst_rdy_i,
- output [15:0] dac_a, output [15:0] dac_b,
+ output [23:0] tx_i, output [23:0] tx_q,
output underrun, output run,
output [31:0] debug);
@@ -84,7 +84,7 @@ module vita_tx_chain
(.clk(clk),.rst(reset),
.set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
.sample(sample_tx), .run(run), .strobe(strobe_tx),
- .dac_a(dac_a),.dac_b(dac_b),
+ .tx_i(tx_i),.tx_q(tx_q),
.debug(debug_tx_dsp) );
wire [35:0] flow_data, err_data_int;