From 9deeeb264622b74b6c80a12b46a2b089b9817412 Mon Sep 17 00:00:00 2001 From: Yuanlong Xiao Date: Tue, 8 Oct 2024 15:44:34 -0700 Subject: [PATCH] feat(vck5000 AIE): check in AIE VecAdd benchmark --- README.md | 161 +- benchmarks/for_dev/bandwidth4/Makefile | 4 +- .../{ab_config.json => floorplan_config.json} | 0 .../for_dev/bandwidth4/design/run_tapa.sh | 9 + benchmarks/tapa_flow/bandwidth23/README.md | 2 +- benchmarks/tapa_flow/bandwidth52/README.md | 2 +- .../tapa_flow/bandwidth52/design/run_tapa.sh | 6 +- .../tapa_flow/bloomFilter/b3_8_5_8/Makefile | 3 +- .../tapa_flow/bloomFilter/b3_8_5_8/README.md | 10 +- .../{ab_config.json => floorplan_config.json} | 0 .../tapa_flow/bloomFilter/b5_8_5_8/Makefile | 4 +- .../tapa_flow/bloomFilter/b5_8_5_8/README.md | 10 +- .../{ab_config.json => floorplan_config.json} | 0 .../tapa_flow/bloomFilter/b7_8_4_16/Makefile | 4 +- .../tapa_flow/bloomFilter/b7_8_4_16/README.md | 10 +- .../{ab_config.json => floorplan_config.json} | 0 benchmarks/tapa_flow/callipepla/README.md | 8 +- .../tapa_flow/digit_recognizer/README.md | 9 +- .../knn_chipknn/k16D_float_27PEs/README.md | 12 +- .../knn_chipknn/k2D_float_15PEs/README.md | 12 +- .../knn_chipknn/k2D_float_8PEs/README.md | 12 +- .../knn_chipknn/k64D_8bit_30PEs/README.md | 12 +- .../config/run_u55c.py/floorplan_config.json | 1 - benchmarks/tapa_flow/orcDecoder/README.md | 8 +- benchmarks/tapa_flow/serpens/Makefile | 52 +- benchmarks/tapa_flow/serpens/README.md | 142 +- .../tapa_flow/serpens/design/Serpens.xo | Bin 294431 -> 0 bytes .../config/run_u55c.py/floorplan_config.json | 38 + .../config/run_u55c.py}/impl_config.json | 0 .../link_config.ini} | 0 .../serpens/design/generated/Serpens.xo | Bin 0 -> 301768 bytes benchmarks/tapa_flow/serpens/run.py | 141 - benchmarks/tapa_flow/serpens/run_u55c.py | 22 + benchmarks/tapa_flow/sextans/Makefile | 60 +- benchmarks/tapa_flow/sextans/README.md | 139 +- .../config/run_u55c.py/floorplan_config.json | 40 + .../config/run_u55c.py}/impl_config.json | 0 .../config/{ => run_u55c.py}/link_config.ini | 4 - .../sextans/design/generated/Sextans.xo | Bin 337716 -> 342232 bytes .../design/generated/cpp/FloatvAddFloatv.cpp | 440 - .../design/generated/cpp/FloatvMultConst.cpp | 436 - .../sextans/design/generated/cpp/Merger.cpp | 442 - .../sextans/design/generated/cpp/PEG_Bmtx.cpp | 601 - .../sextans/design/generated/cpp/PEG_Cmtx.cpp | 550 - .../design/generated/cpp/Scatter_1_2.cpp | 437 - .../sextans/design/generated/cpp/Sextans.cpp | 497 - .../generated/cpp/black_hole_float_v16.cpp | 418 - .../design/generated/cpp/black_hole_int.cpp | 418 - .../sextans/design/generated/cpp/read_A.cpp | 452 - .../sextans/design/generated/cpp/read_B.cpp | 451 - .../sextans/design/generated/cpp/read_C.cpp | 458 - .../generated/cpp/read_edge_list_ptr.cpp | 463 - .../sextans/design/generated/cpp/write_C.cpp | 475 - .../flatten/flatten-f5eeaffa-sextans.cpp | 822 - .../sextans/design/generated/graph.json | 6798 ------ .../design/generated/hdl/FloatvAddFloatv.v | 242 - ...atvAddFloatv_FloatvAddFloatv_Pipeline_cc.v | 1516 -- ...AddFloatv_fadd_32ns_32ns_32_7_full_dsp_1.v | 76 - ...oatv_fadd_32ns_32ns_32_7_full_dsp_1_ip.tcl | 45 - .../design/generated/hdl/FloatvMultConst.v | 360 - ...atvMultConst_FloatvMultConst_Pipeline_cc.v | 934 - ...t_flow_control_loop_pipe_sequential_init.v | 104 - ...vMultConst_fmul_32ns_32ns_32_4_max_dsp_1.v | 76 - ...Const_fmul_32ns_32ns_32_4_max_dsp_1_ip.tcl | 45 - .../hdl/FloatvMultConst_mul_32s_14ns_32_2_1.v | 30 - .../FloatvMultConst_mul_mul_16s_28s_32_4_1.v | 62 - .../sextans/design/generated/hdl/Merger.v | 242 - .../Merger_Merger_Pipeline_VITIS_LOOP_410_1.v | 201 - .../sextans/design/generated/hdl/PEG_Bmtx.v | 8124 ------- .../PEG_Bmtx_PEG_Bmtx_Pipeline_computation.v | 4524 ---- .../hdl/PEG_Bmtx_PEG_Bmtx_Pipeline_read_B.v | 4606 ---- ...x_flow_control_loop_pipe_sequential_init.v | 104 - .../PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1.v | 76 - ..._Bmtx_fmul_32ns_32ns_32_4_max_dsp_1_ip.tcl | 45 - .../hdl/PEG_Bmtx_local_B_RAM_AUTO_1R1W.v | 77 - .../hdl/PEG_Bmtx_mul_mul_16s_14ns_30_4_1.v | 62 - .../generated/hdl/PEG_Bmtx_mux_42_32_1_1.v | 47 - .../sextans/design/generated/hdl/PEG_Cmtx.v | 2486 --- .../PEG_Cmtx_PEG_Cmtx_Pipeline_computation.v | 3460 --- .../hdl/PEG_Cmtx_PEG_Cmtx_Pipeline_init_C.v | 696 - ...PEG_Cmtx_PEG_Cmtx_Pipeline_write_C_outer.v | 671 - .../PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1.v | 76 - ...Cmtx_fadd_32ns_32ns_32_7_full_dsp_1_ip.tcl | 45 - ...x_flow_control_loop_pipe_sequential_init.v | 104 - .../hdl/PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W.v | 67 - .../hdl/PEG_Cmtx_mul_mul_16s_14ns_30_4_1.v | 62 - .../generated/hdl/PEG_Cmtx_mux_42_64_1_1.v | 47 - .../design/generated/hdl/Scatter_1_2.v | 237 - ..._2_Scatter_1_2_Pipeline_VITIS_LOOP_405_1.v | 173 - .../sextans/design/generated/hdl/Sextans.v | 17991 ---------------- .../generated/hdl/Sextans_control_s_axi.v | 1574 -- .../design/generated/hdl/Sextans_fsm.v | 4484 ---- .../hdl/a_axi_write_broadcastor_1_to_3.v | 269 - .../hdl/a_axi_write_broadcastor_1_to_4.v | 346 - .../sextans/design/generated/hdl/arbiter.v | 159 - .../sextans/design/generated/hdl/async_mmap.v | 524 - .../design/generated/hdl/axi_crossbar.v | 391 - .../design/generated/hdl/axi_crossbar_addr.v | 418 - .../design/generated/hdl/axi_crossbar_rd.v | 569 - .../design/generated/hdl/axi_crossbar_wr.v | 678 - .../design/generated/hdl/axi_pipeline.v | 214 - .../design/generated/hdl/axi_register_rd.v | 530 - .../design/generated/hdl/axi_register_wr.v | 691 - .../generated/hdl/black_hole_float_v16.v | 193 - ...hole_float_v16_Pipeline_VITIS_LOOP_400_1.v | 118 - .../design/generated/hdl/black_hole_int.v | 193 - ...black_hole_int_Pipeline_VITIS_LOOP_399_1.v | 118 - .../design/generated/hdl/detect_burst.v | 156 - .../sextans/design/generated/hdl/fifo.v | 107 - .../sextans/design/generated/hdl/fifo_bram.v | 151 - .../sextans/design/generated/hdl/fifo_fwd.v | 58 - .../sextans/design/generated/hdl/fifo_srl.v | 84 - .../design/generated/hdl/generate_last.v | 71 - .../design/generated/hdl/priority_encoder.v | 92 - .../sextans/design/generated/hdl/read_A.v | 374 - ...A_flow_control_loop_pipe_sequential_init.v | 104 - .../hdl/read_A_mul_mul_16s_14ns_30_4_1.v | 62 - .../hdl/read_A_read_A_Pipeline_rd_A.v | 303 - .../sextans/design/generated/hdl/read_B.v | 380 - ...B_flow_control_loop_pipe_sequential_init.v | 104 - .../hdl/read_B_mul_14ns_29s_32_2_1.v | 30 - .../hdl/read_B_read_B_Pipeline_rd_B.v | 303 - .../sextans/design/generated/hdl/read_C.v | 457 - ...C_flow_control_loop_pipe_sequential_init.v | 104 - .../hdl/read_C_mul_mul_14ns_28s_32_4_1.v | 62 - .../hdl/read_C_read_C_Pipeline_rd_C.v | 303 - .../design/generated/hdl/read_edge_list_ptr.v | 484 - ...r_flow_control_loop_pipe_sequential_init.v | 104 - ...ad_edge_list_ptr_mul_mul_16s_14ns_30_4_1.v | 62 - ...t_ptr_read_edge_list_ptr_Pipeline_rd_ptr.v | 303 - .../design/generated/hdl/relay_station.v | 525 - .../sextans/design/generated/hdl/write_C.v | 472 - ...C_flow_control_loop_pipe_sequential_init.v | 104 - .../hdl/write_C_mul_mul_14ns_28s_32_4_1.v | 62 - .../hdl/write_C_write_C_Pipeline_wr_C.v | 334 - .../sextans/design/generated/log/tapac.INFO | 1 - ...cheng-Guo.log.INFO.20240329-144003.2834442 | 3487 --- .../sextans/design/generated/report.json | 195 - .../sextans/design/generated/report.yaml | 148 - .../report/FloatvAddFloatv.sched.adb.xml | 342 - .../FloatvAddFloatv.verbose.sched.rpt.xml | 45 - .../FloatvAddFloatv_Pipeline_cc.sched.adb.xml | 4126 ---- ...ddFloatv_Pipeline_cc.verbose.sched.rpt.xml | 46 - .../FloatvAddFloatv_Pipeline_cc_csynth.xml | 233 - .../report/FloatvAddFloatv_csynth.xml | 302 - .../report/FloatvMultConst.sched.adb.xml | 717 - .../FloatvMultConst.verbose.sched.rpt.xml | 45 - .../FloatvMultConst_Pipeline_cc.sched.adb.xml | 2233 -- ...ultConst_Pipeline_cc.verbose.sched.rpt.xml | 46 - .../FloatvMultConst_Pipeline_cc_csynth.xml | 222 - .../report/FloatvMultConst_csynth.xml | 266 - .../generated/report/Merger.sched.adb.xml | 342 - .../report/Merger.verbose.sched.rpt.xml | 45 - ...er_Pipeline_VITIS_LOOP_410_1.sched.adb.xml | 772 - ...ine_VITIS_LOOP_410_1.verbose.sched.rpt.xml | 46 - ...erger_Pipeline_VITIS_LOOP_410_1_csynth.xml | 233 - .../design/generated/report/Merger_csynth.xml | 302 - .../generated/report/PEG_Bmtx.sched.adb.xml | 3487 --- .../report/PEG_Bmtx.verbose.sched.rpt.xml | 47 - ...EG_Bmtx_Pipeline_computation.sched.adb.xml | 10765 --------- ...Pipeline_computation.verbose.sched.rpt.xml | 46 - .../PEG_Bmtx_Pipeline_computation_csynth.xml | 4560 ---- .../PEG_Bmtx_Pipeline_read_B.sched.adb.xml | 7634 ------- ...Bmtx_Pipeline_read_B.verbose.sched.rpt.xml | 46 - .../PEG_Bmtx_Pipeline_read_B_csynth.xml | 6056 ------ .../generated/report/PEG_Bmtx_csynth.xml | 1118 - .../generated/report/PEG_Cmtx.sched.adb.xml | 2089 -- .../report/PEG_Cmtx.verbose.sched.rpt.xml | 47 - ...EG_Cmtx_Pipeline_computation.sched.adb.xml | 9157 -------- ...Pipeline_computation.verbose.sched.rpt.xml | 46 - .../PEG_Cmtx_Pipeline_computation_csynth.xml | 1535 -- .../PEG_Cmtx_Pipeline_init_C.sched.adb.xml | 995 - ...Cmtx_Pipeline_init_C.verbose.sched.rpt.xml | 46 - .../PEG_Cmtx_Pipeline_init_C_csynth.xml | 864 - ..._Cmtx_Pipeline_write_C_outer.sched.adb.xml | 1623 -- ...peline_write_C_outer.verbose.sched.rpt.xml | 46 - ...PEG_Cmtx_Pipeline_write_C_outer_csynth.xml | 721 - .../generated/report/PEG_Cmtx_csynth.xml | 650 - .../report/Scatter_1_2.sched.adb.xml | 297 - .../report/Scatter_1_2.verbose.sched.rpt.xml | 45 - ..._2_Pipeline_VITIS_LOOP_405_1.sched.adb.xml | 378 - ...ine_VITIS_LOOP_405_1.verbose.sched.rpt.xml | 46 - ...r_1_2_Pipeline_VITIS_LOOP_405_1_csynth.xml | 233 - .../generated/report/Scatter_1_2_csynth.xml | 266 - .../generated/report/Sextans.sched.adb.xml | 3864 ---- .../report/Sextans.verbose.sched.rpt.xml | 45 - .../generated/report/Sextans_csynth.xml | 276 - .../report/black_hole_float_v16.sched.adb.xml | 207 - ...black_hole_float_v16.verbose.sched.rpt.xml | 45 - ...16_Pipeline_VITIS_LOOP_400_1.sched.adb.xml | 129 - ...ine_VITIS_LOOP_400_1.verbose.sched.rpt.xml | 46 - ...t_v16_Pipeline_VITIS_LOOP_400_1_csynth.xml | 167 - .../report/black_hole_float_v16_csynth.xml | 194 - .../report/black_hole_int.sched.adb.xml | 207 - .../black_hole_int.verbose.sched.rpt.xml | 45 - ...nt_Pipeline_VITIS_LOOP_399_1.sched.adb.xml | 129 - ...ine_VITIS_LOOP_399_1.verbose.sched.rpt.xml | 46 - ...e_int_Pipeline_VITIS_LOOP_399_1_csynth.xml | 167 - .../report/black_hole_int_csynth.xml | 194 - .../design/generated/report/csynth.xml | 1339 -- .../generated/report/read_A.sched.adb.xml | 980 - .../report/read_A.verbose.sched.rpt.xml | 46 - .../report/read_A_Pipeline_rd_A.sched.adb.xml | 674 - ...read_A_Pipeline_rd_A.verbose.sched.rpt.xml | 46 - .../report/read_A_Pipeline_rd_A_csynth.xml | 259 - .../design/generated/report/read_A_csynth.xml | 465 - .../generated/report/read_B.sched.adb.xml | 971 - .../report/read_B.verbose.sched.rpt.xml | 46 - .../report/read_B_Pipeline_rd_B.sched.adb.xml | 674 - ...read_B_Pipeline_rd_B.verbose.sched.rpt.xml | 46 - .../report/read_B_Pipeline_rd_B_csynth.xml | 259 - .../design/generated/report/read_B_csynth.xml | 465 - .../generated/report/read_C.sched.adb.xml | 1115 - .../report/read_C.verbose.sched.rpt.xml | 46 - .../report/read_C_Pipeline_rd_C.sched.adb.xml | 674 - ...read_C_Pipeline_rd_C.verbose.sched.rpt.xml | 46 - .../report/read_C_Pipeline_rd_C_csynth.xml | 259 - .../design/generated/report/read_C_csynth.xml | 501 - .../report/read_edge_list_ptr.sched.adb.xml | 1250 -- .../read_edge_list_ptr.verbose.sched.rpt.xml | 46 - ...dge_list_ptr_Pipeline_rd_ptr.sched.adb.xml | 674 - ..._ptr_Pipeline_rd_ptr.verbose.sched.rpt.xml | 46 - ...d_edge_list_ptr_Pipeline_rd_ptr_csynth.xml | 259 - .../report/read_edge_list_ptr_csynth.xml | 525 - .../generated/report/write_C.sched.adb.xml | 1118 - .../report/write_C.verbose.sched.rpt.xml | 46 - .../write_C_Pipeline_wr_C.sched.adb.xml | 798 - ...rite_C_Pipeline_wr_C.verbose.sched.rpt.xml | 46 - .../report/write_C_Pipeline_wr_C_csynth.xml | 292 - .../generated/report/write_C_csynth.xml | 549 - .../sextans/design/generated/settings.json | 8 - .../design/generated/tar/FloatvAddFloatv.tar | Bin 481280 -> 0 bytes .../design/generated/tar/FloatvMultConst.tar | Bin 378880 -> 0 bytes .../sextans/design/generated/tar/Merger.tar | Bin 235520 -> 0 bytes .../sextans/design/generated/tar/PEG_Bmtx.tar | Bin 2519040 -> 0 bytes .../sextans/design/generated/tar/PEG_Cmtx.tar | Bin 1454080 -> 0 bytes .../design/generated/tar/Scatter_1_2.tar | Bin 204800 -> 0 bytes .../sextans/design/generated/tar/Sextans.tar | Bin 481280 -> 0 bytes .../generated/tar/black_hole_float_v16.tar | Bin 174080 -> 0 bytes .../design/generated/tar/black_hole_int.tar | Bin 163840 -> 0 bytes .../sextans/design/generated/tar/read_A.tar | Bin 307200 -> 0 bytes .../sextans/design/generated/tar/read_B.tar | Bin 307200 -> 0 bytes .../sextans/design/generated/tar/read_C.tar | Bin 327680 -> 0 bytes .../generated/tar/read_edge_list_ptr.tar | Bin 358400 -> 0 bytes .../sextans/design/generated/tar/write_C.tar | Bin 348160 -> 0 bytes .../tapa_flow/sextans/design/run_tapa.sh | 16 +- benchmarks/tapa_flow/sextans/run.py | 143 - benchmarks/tapa_flow/sextans/run_u55c.py | 22 + .../stencil_sasa/high_congestion/Makefile | 13 +- .../stencil_sasa/high_congestion/README.md | 168 +- .../high_congestion/autobridge_fail | 0 .../floorplan_config.json} | 0 .../config/run_u55c.py/impl_config.json | 7 + .../{run.py => run_u55c.py}/link_config.ini | 0 .../high_congestion/{run.py => run_u55c.py} | 0 .../stencil_sasa/low_congestion/Makefile | 13 +- .../stencil_sasa/low_congestion/README.md | 155 +- .../floorplan_config.json} | 0 .../config/run_u55c.py/impl_config.json | 7 + .../{run.py => run_u55c.py}/link_config.ini | 0 .../low_congestion/{run.py => run_u55c.py} | 0 benchmarks/vitis_flow/vck5000_VecAdd/Makefile | 83 + .../vitis_flow/vck5000_VecAdd/data/gen.py | 27 + .../vck5000_VecAdd/design/aie/common.h | 18 + .../vck5000_VecAdd/design/aie/graph.cpp | 20 + .../vck5000_VecAdd/design/aie/graph.h | 121 + .../design/aie/kernel_lshift.cpp | 49 + .../vck5000_VecAdd/design/aie/kernel_lshift.h | 13 + .../design/aie/kernel_rshift.cpp | 49 + .../vck5000_VecAdd/design/aie/kernel_rshift.h | 13 + .../design/aie/kernel_rshift_last.cpp | 48 + .../design/aie/kernel_rshift_last.h | 12 + .../vck5000_VecAdd/design/aie/kernel_vadd.cpp | 65 + .../vck5000_VecAdd/design/aie/kernel_vadd.h | 14 + .../design/cfg/xclbin_overlay.cfg | 20 + .../design/hls/krnl_input_mover.cpp | 74 + .../design/hls/krnl_output_mover.cpp | 41 + .../design/host/host_overlay.cpp | 113 + .../vck5000_VecAdd/design/host/setup_emu.sh | 59 + .../vck5000_VecAdd/design/host/xrt.ini | 6 + .../design/scripts/launch_hw_emu.sh | 14 + getting_started/README.md | 9 + getting_started/aie_source/Makefile | 86 + getting_started/aie_source/README.md | 199 + getting_started/aie_source/data/bkgen.py | 26 + getting_started/aie_source/data/gen.py | 30 + getting_started/aie_source/data/matmul.py | 20 + .../aie_source/design/aie/VecAdd.cpp | 20 + .../aie_source/design/aie/VecAdd.h | 74 + .../aie_source/design/aie/add_kernel.cpp | 17 + .../aie_source/design/aie/add_kernel.h | 8 + .../aie_source/design/aie/common.h | 14 + .../aie_source/design/aie/read_mem.cpp | 16 + .../aie_source/design/aie/read_mem.h | 7 + .../aie_source/design/aie/write_mem.cpp | 17 + .../aie_source/design/aie/write_mem.h | 7 + .../config/run_u55c.py/floorplan_config.json | 14 + .../config/run_u55c.py/impl_config.json | 7 + .../config/run_u55c.py}/link_config.ini | 0 getting_started/aie_source/design/main.cpp | 49 + getting_started/aie_source/run_u55c.py | 42 + getting_started/aie_source_gmio/Makefile | 88 + getting_started/aie_source_gmio/README.md | 199 + getting_started/aie_source_gmio/data/bkgen.py | 26 + getting_started/aie_source_gmio/data/gen.py | 30 + .../aie_source_gmio/data/matmul.py | 20 + .../aie_source_gmio/design/aie/VecAdd.cpp | 49 + .../aie_source_gmio/design/aie/VecAdd.h | 62 + .../aie_source_gmio/design/aie/add_kernel.cpp | 17 + .../aie_source_gmio/design/aie/add_kernel.h | 8 + .../aie_source_gmio/design/aie/common.h | 14 + .../aie_source_gmio/design/aie/read_mem.cpp | 16 + .../aie_source_gmio/design/aie/read_mem.h | 7 + .../design/aie/weighted_sum.cc | 16 + .../aie_source_gmio/design/aie/weighted_sum.h | 6 + .../aie_source_gmio/design/aie/write_mem.cpp | 17 + .../aie_source_gmio/design/aie/write_mem.h | 7 + .../config/run_u55c.py/floorplan_config.json | 14 + .../config/run_u55c.py/impl_config.json | 7 + .../design/config/run_u55c.py/link_config.ini | 4 + .../aie_source_gmio/design/main.cpp | 49 + getting_started/aie_source_gmio/run_u55c.py | 42 + .../device_factory_part_num/README.md | 2 +- .../device_factory_vitis_platform/README.md | 2 +- getting_started/mixed_sources/README.md | 13 +- getting_started/tapa_aie_source/Makefile | 138 + getting_started/tapa_aie_source/README.md | 199 + .../tapa_aie_source/design/VecAdd.cpp | 49 + .../config/run_u55c.py/floorplan_config.json | 14 + .../config/run_u55c.py/impl_config.json | 7 + .../design/config/run_u55c.py/link_config.ini | 4 + .../tapa_aie_source/design/main.cpp | 49 + .../flatten-67e77237-VecAdd.cpp | 38 + getting_started/tapa_aie_source/run_u55c.py | 42 + getting_started/tapa_source/Makefile | 60 +- getting_started/tapa_source/README.md | 149 +- .../config/run_u55c.py/floorplan_config.json | 14 + .../config/run_u55c.py/impl_config.json | 7 + .../design/config/run_u55c.py/link_config.ini | 4 + getting_started/tapa_source/design/main.cpp | 20 +- getting_started/tapa_source/run.py | 76 - getting_started/tapa_source/run_u55c.py | 42 + getting_started/vitis_source/README.md | 13 +- 343 files changed, 3512 insertions(+), 167591 deletions(-) rename benchmarks/for_dev/bandwidth4/design/config/run_vck5000.py/{ab_config.json => floorplan_config.json} (100%) create mode 100644 benchmarks/for_dev/bandwidth4/design/run_tapa.sh rename benchmarks/tapa_flow/bloomFilter/b3_8_5_8/design/config/run.py/{ab_config.json => floorplan_config.json} (100%) rename benchmarks/tapa_flow/bloomFilter/b5_8_5_8/design/config/run.py/{ab_config.json => floorplan_config.json} (100%) rename benchmarks/tapa_flow/bloomFilter/b7_8_4_16/design/config/run.py/{ab_config.json => floorplan_config.json} (100%) delete mode 100644 benchmarks/tapa_flow/serpens/design/Serpens.xo create mode 100644 benchmarks/tapa_flow/serpens/design/config/run_u55c.py/floorplan_config.json rename benchmarks/tapa_flow/{stencil_sasa/high_congestion/design/config/run.py => serpens/design/config/run_u55c.py}/impl_config.json (100%) rename benchmarks/tapa_flow/serpens/design/config/{link_config_a24.ini => run_u55c.py/link_config.ini} (100%) create mode 100644 benchmarks/tapa_flow/serpens/design/generated/Serpens.xo delete mode 100644 benchmarks/tapa_flow/serpens/run.py create mode 100644 benchmarks/tapa_flow/serpens/run_u55c.py create mode 100644 benchmarks/tapa_flow/sextans/design/config/run_u55c.py/floorplan_config.json rename benchmarks/tapa_flow/{stencil_sasa/low_congestion/design/config/run.py => sextans/design/config/run_u55c.py}/impl_config.json (100%) rename benchmarks/tapa_flow/sextans/design/config/{ => run_u55c.py}/link_config.ini (99%) delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/cpp/FloatvAddFloatv.cpp delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/cpp/FloatvMultConst.cpp delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/cpp/Merger.cpp delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/cpp/PEG_Bmtx.cpp delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/cpp/PEG_Cmtx.cpp delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/cpp/Scatter_1_2.cpp delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/cpp/Sextans.cpp delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/cpp/black_hole_float_v16.cpp delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/cpp/black_hole_int.cpp delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/cpp/read_A.cpp delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/cpp/read_B.cpp delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/cpp/read_C.cpp delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/cpp/read_edge_list_ptr.cpp delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/cpp/write_C.cpp delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/flatten/flatten-f5eeaffa-sextans.cpp delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/graph.json delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv_FloatvAddFloatv_Pipeline_cc.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1_ip.tcl delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_FloatvMultConst_Pipeline_cc.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_flow_control_loop_pipe_sequential_init.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1_ip.tcl delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_mul_32s_14ns_32_2_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_mul_mul_16s_28s_32_4_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/Merger.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/Merger_Merger_Pipeline_VITIS_LOOP_410_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_PEG_Bmtx_Pipeline_computation.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_PEG_Bmtx_Pipeline_read_B.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_flow_control_loop_pipe_sequential_init.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1_ip.tcl delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_local_B_RAM_AUTO_1R1W.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_mul_mul_16s_14ns_30_4_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_mux_42_32_1_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_PEG_Cmtx_Pipeline_computation.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_PEG_Cmtx_Pipeline_init_C.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_PEG_Cmtx_Pipeline_write_C_outer.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1_ip.tcl delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_flow_control_loop_pipe_sequential_init.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_mul_mul_16s_14ns_30_4_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_mux_42_64_1_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/Scatter_1_2.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/Scatter_1_2_Scatter_1_2_Pipeline_VITIS_LOOP_405_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/Sextans.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/Sextans_control_s_axi.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/Sextans_fsm.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/a_axi_write_broadcastor_1_to_3.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/a_axi_write_broadcastor_1_to_4.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/arbiter.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/async_mmap.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar_addr.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar_rd.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar_wr.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/axi_pipeline.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/axi_register_rd.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/axi_register_wr.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_float_v16.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_float_v16_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_int.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_int_black_hole_int_Pipeline_VITIS_LOOP_399_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/detect_burst.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/fifo.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/fifo_bram.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/fifo_fwd.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/fifo_srl.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/generate_last.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/priority_encoder.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_A.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_A_flow_control_loop_pipe_sequential_init.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_A_mul_mul_16s_14ns_30_4_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_A_read_A_Pipeline_rd_A.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_B.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_B_flow_control_loop_pipe_sequential_init.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_B_mul_14ns_29s_32_2_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_B_read_B_Pipeline_rd_B.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_C.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_C_flow_control_loop_pipe_sequential_init.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_C_mul_mul_14ns_28s_32_4_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_C_read_C_Pipeline_rd_C.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr_flow_control_loop_pipe_sequential_init.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr_mul_mul_16s_14ns_30_4_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr_read_edge_list_ptr_Pipeline_rd_ptr.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/relay_station.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/write_C.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/write_C_flow_control_loop_pipe_sequential_init.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/write_C_mul_mul_14ns_28s_32_4_1.v delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/hdl/write_C_write_C_Pipeline_wr_C.v delete mode 120000 benchmarks/tapa_flow/sextans/design/generated/log/tapac.INFO delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/log/tapac.inglewood.Licheng-Guo.log.INFO.20240329-144003.2834442 delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report.json delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report.yaml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_Pipeline_cc.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_Pipeline_cc.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_Pipeline_cc_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_Pipeline_cc.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_Pipeline_cc.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_Pipeline_cc_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/Merger.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/Merger.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/Merger_Pipeline_VITIS_LOOP_410_1.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/Merger_Pipeline_VITIS_LOOP_410_1.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/Merger_Pipeline_VITIS_LOOP_410_1_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/Merger_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_computation.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_computation.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_computation_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_read_B.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_read_B.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_read_B_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_computation.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_computation.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_computation_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_init_C.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_init_C.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_init_C_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_write_C_outer.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_write_C_outer.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_write_C_outer_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_Pipeline_VITIS_LOOP_405_1.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_Pipeline_VITIS_LOOP_405_1.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_Pipeline_VITIS_LOOP_405_1_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/Sextans.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/Sextans.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/Sextans_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_Pipeline_VITIS_LOOP_400_1.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_Pipeline_VITIS_LOOP_400_1.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_Pipeline_VITIS_LOOP_399_1.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_Pipeline_VITIS_LOOP_399_1.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_Pipeline_VITIS_LOOP_399_1_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_A.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_A.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_A_Pipeline_rd_A.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_A_Pipeline_rd_A.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_A_Pipeline_rd_A_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_A_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_B.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_B.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_B_Pipeline_rd_B.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_B_Pipeline_rd_B.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_B_Pipeline_rd_B_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_B_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_C.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_C.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_C_Pipeline_rd_C.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_C_Pipeline_rd_C.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_C_Pipeline_rd_C_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_C_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_Pipeline_rd_ptr.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_Pipeline_rd_ptr.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_Pipeline_rd_ptr_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/write_C.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/write_C.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/write_C_Pipeline_wr_C.sched.adb.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/write_C_Pipeline_wr_C.verbose.sched.rpt.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/write_C_Pipeline_wr_C_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/report/write_C_csynth.xml delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/settings.json delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/tar/FloatvAddFloatv.tar delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/tar/FloatvMultConst.tar delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/tar/Merger.tar delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/tar/PEG_Bmtx.tar delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/tar/PEG_Cmtx.tar delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/tar/Scatter_1_2.tar delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/tar/Sextans.tar delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/tar/black_hole_float_v16.tar delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/tar/black_hole_int.tar delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/tar/read_A.tar delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/tar/read_B.tar delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/tar/read_C.tar delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/tar/read_edge_list_ptr.tar delete mode 100644 benchmarks/tapa_flow/sextans/design/generated/tar/write_C.tar delete mode 100644 benchmarks/tapa_flow/sextans/run.py create mode 100644 benchmarks/tapa_flow/sextans/run_u55c.py delete mode 100644 benchmarks/tapa_flow/stencil_sasa/high_congestion/autobridge_fail rename benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/{run.py/ab_config.json => run_u55c.py/floorplan_config.json} (100%) create mode 100644 benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/run_u55c.py/impl_config.json rename benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/{run.py => run_u55c.py}/link_config.ini (100%) rename benchmarks/tapa_flow/stencil_sasa/high_congestion/{run.py => run_u55c.py} (100%) rename benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/{run.py/ab_config.json => run_u55c.py/floorplan_config.json} (100%) create mode 100644 benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/run_u55c.py/impl_config.json rename benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/{run.py => run_u55c.py}/link_config.ini (100%) rename benchmarks/tapa_flow/stencil_sasa/low_congestion/{run.py => run_u55c.py} (100%) create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/Makefile create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/data/gen.py create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/aie/common.h create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/aie/graph.cpp create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/aie/graph.h create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_lshift.cpp create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_lshift.h create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift.cpp create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift.h create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift_last.cpp create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift_last.h create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_vadd.cpp create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_vadd.h create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/cfg/xclbin_overlay.cfg create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/hls/krnl_input_mover.cpp create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/hls/krnl_output_mover.cpp create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/host/host_overlay.cpp create mode 100755 benchmarks/vitis_flow/vck5000_VecAdd/design/host/setup_emu.sh create mode 100644 benchmarks/vitis_flow/vck5000_VecAdd/design/host/xrt.ini create mode 100755 benchmarks/vitis_flow/vck5000_VecAdd/design/scripts/launch_hw_emu.sh create mode 100644 getting_started/aie_source/Makefile create mode 100644 getting_started/aie_source/README.md create mode 100755 getting_started/aie_source/data/bkgen.py create mode 100755 getting_started/aie_source/data/gen.py create mode 100755 getting_started/aie_source/data/matmul.py create mode 100644 getting_started/aie_source/design/aie/VecAdd.cpp create mode 100644 getting_started/aie_source/design/aie/VecAdd.h create mode 100644 getting_started/aie_source/design/aie/add_kernel.cpp create mode 100644 getting_started/aie_source/design/aie/add_kernel.h create mode 100644 getting_started/aie_source/design/aie/common.h create mode 100644 getting_started/aie_source/design/aie/read_mem.cpp create mode 100644 getting_started/aie_source/design/aie/read_mem.h create mode 100644 getting_started/aie_source/design/aie/write_mem.cpp create mode 100644 getting_started/aie_source/design/aie/write_mem.h create mode 100644 getting_started/aie_source/design/config/run_u55c.py/floorplan_config.json create mode 100644 getting_started/aie_source/design/config/run_u55c.py/impl_config.json rename getting_started/{tapa_source/design => aie_source/design/config/run_u55c.py}/link_config.ini (100%) create mode 100644 getting_started/aie_source/design/main.cpp create mode 100644 getting_started/aie_source/run_u55c.py create mode 100644 getting_started/aie_source_gmio/Makefile create mode 100644 getting_started/aie_source_gmio/README.md create mode 100755 getting_started/aie_source_gmio/data/bkgen.py create mode 100755 getting_started/aie_source_gmio/data/gen.py create mode 100755 getting_started/aie_source_gmio/data/matmul.py create mode 100644 getting_started/aie_source_gmio/design/aie/VecAdd.cpp create mode 100644 getting_started/aie_source_gmio/design/aie/VecAdd.h create mode 100644 getting_started/aie_source_gmio/design/aie/add_kernel.cpp create mode 100644 getting_started/aie_source_gmio/design/aie/add_kernel.h create mode 100644 getting_started/aie_source_gmio/design/aie/common.h create mode 100644 getting_started/aie_source_gmio/design/aie/read_mem.cpp create mode 100644 getting_started/aie_source_gmio/design/aie/read_mem.h create mode 100644 getting_started/aie_source_gmio/design/aie/weighted_sum.cc create mode 100644 getting_started/aie_source_gmio/design/aie/weighted_sum.h create mode 100644 getting_started/aie_source_gmio/design/aie/write_mem.cpp create mode 100644 getting_started/aie_source_gmio/design/aie/write_mem.h create mode 100644 getting_started/aie_source_gmio/design/config/run_u55c.py/floorplan_config.json create mode 100644 getting_started/aie_source_gmio/design/config/run_u55c.py/impl_config.json create mode 100644 getting_started/aie_source_gmio/design/config/run_u55c.py/link_config.ini create mode 100644 getting_started/aie_source_gmio/design/main.cpp create mode 100644 getting_started/aie_source_gmio/run_u55c.py create mode 100644 getting_started/tapa_aie_source/Makefile create mode 100644 getting_started/tapa_aie_source/README.md create mode 100644 getting_started/tapa_aie_source/design/VecAdd.cpp create mode 100644 getting_started/tapa_aie_source/design/config/run_u55c.py/floorplan_config.json create mode 100644 getting_started/tapa_aie_source/design/config/run_u55c.py/impl_config.json create mode 100644 getting_started/tapa_aie_source/design/config/run_u55c.py/link_config.ini create mode 100644 getting_started/tapa_aie_source/design/main.cpp create mode 100644 getting_started/tapa_aie_source/flatten-67e77237-VecAdd.cpp create mode 100644 getting_started/tapa_aie_source/run_u55c.py create mode 100644 getting_started/tapa_source/design/config/run_u55c.py/floorplan_config.json create mode 100644 getting_started/tapa_source/design/config/run_u55c.py/impl_config.json create mode 100644 getting_started/tapa_source/design/config/run_u55c.py/link_config.ini delete mode 100644 getting_started/tapa_source/run.py create mode 100644 getting_started/tapa_source/run_u55c.py diff --git a/README.md b/README.md index 011585b8..7d0dbbd7 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ git clone https://github.com/rapidstream-org/rapidstream-cookbook.git cd rapidstream-cookbook ``` -You must have RapidStream installed, a valid RapidStream license, and a valid Vivado Design Suite license to download or run the cookbooks. If you are an academic researcher or would like to contribute to this cookbook, please contact us at https://rapidstream-da.com/ for a free RapidStream license. +You must have RapidStream installed from [here](https://tapa.readthedocs.io/en/main/user/installation.html) with a valid RapidStream license, and a valid Vivado Design Suite license to download or run the cookbooks. If you are an academic researcher or would like to contribute to this cookbook, please contact us at https://rapidstream-da.com/ for a free RapidStream license. We recommend using Vivado version 2023.2 or later. Source the Vivado settings script before running the RapidStream Python scripts. For example, to source the Vivado settings script, run the following command: @@ -39,10 +39,11 @@ We recommend using Vivado version 2023.2 or later. Source the Vivado settings sc source /Vivado/2023.2/settings64.sh ``` -All RapidStream Python script recipes (`*.py`) in this cookbook should be executed using the `rapidstream` command. For example, to run `getting_started/mixed_sources/run.py`, use the following command: +We've created a `Makefile` for each recipe in this repository to help you get started quickly. Simply navigate to the specific example directory and run `make` to compile. ```bash -rapidstream getting_started/mixed_sources/run.py +cd getting_started/mixed_sources +make ``` The default branch always matches the latest RapidStream release. Please update your software before using the recipes. @@ -62,6 +63,9 @@ Recipes AMD Vitis Design Mixed Sources Design + + Rapidstream TAPA Design + Custom Devices Custom Vitis Platforms @@ -71,6 +75,78 @@ Recipes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

TAPA Flow Benchmarks

+ Discover how RapidStream flow streamlines FPGA acceleration design of state-of-the-art architectures, enabling you to achieve optimal performance for performance-critical systems. +
Scientific Computation
DesignDeveloperPlatformsSourcesPurpose
SerpensSong et al.
(FPGA '22)
Vitis U55C XDMATAPA HLSAccelerator for general-purpose sparse-matrix dense-matrix multiplication.
SextansSong et al.
(FPGA '22)
Vitis U55C XDMATAPA HLSAccelerator for general-purpose sparse-matrix dense-matrix multiplication.
CallipeplaSong et al.
(FPGA '22)
Vitis U55C XDMATAPA HLSAccelerator for general-purpose sparse-matrix dense-matrix multiplication.
KNN Digit RecognitionXiao et al.
(FPL '22)
Vitis U55C XDMATAPA HLSK-Nearest Neighbours for Digit Recognition.
Bloom FilterSimon Fraser UniversityVitis U55C XDMATAPA HLSAccelerator for Bloom Filter.
Stencil ApplicationSimon Fraser UniversityVitis U55C XDMATAPA HLSAccelerator for Stencil Application.
KNNSimon Fraser UniversityVitis U55C XDMATAPA HLSAccelerator for K-Nearest-Neighbor.
ORC DecoderSimon Fraser UniversityVitis U55C XDMATAPA HLSAccelerator for ORC Decoder.
+ @@ -169,85 +245,6 @@ Recipes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

TAPA Flow Benchmarks

- Discover how RapidStream flow streamlines FPGA acceleration design of state-of-the-art architectures, enabling you to achieve optimal performance for performance-critical systems. -
Scientific Computation
DesignDeveloperPlatformsSourcesPurpose
SerpensSong et al.
(FPGA '22)
Vitis U280 XDMATAPA HLSAccelerator for general-purpose sparse-matrix dense-matrix multiplication.
SextansSong et al.
(FPGA '22)
Vitis U250 XDMATAPA HLSAccelerator for general-purpose sparse-matrix dense-matrix multiplication.
CallipeplaSong et al.
(FPGA '22)
Vitis U280 XDMATAPA HLSAccelerator for general-purpose sparse-matrix dense-matrix multiplication.
KNN Digit RecognitionXiao et al.
(FPL '22)
Vitis U280 XDMATAPA HLSK-Nearest Neighbours for Digit Recognition.
Bloom FilterSimon Fraser UniversityVitis U280 XDMATAPA HLSAccelerator for Bloom Filter.
Stencil ApplicationSimon Fraser UniversityVitis U280 XDMATAPA HLSAccelerator for Stencil Application.
KNNSimon Fraser UniversityVitis U280 XDMATAPA HLSAccelerator for K-Nearest-Neighbor.
ORC DecoderSimon Fraser UniversityVitis U280 XDMATAPA HLSAccelerator for ORC Decoder.
Convolutional neural networkWang et al.
(FPGA '21)
Vitis U250 XDMATAPA HLSSystolic array accelerator for a convolutional neural network layer.
- How to Get Help --------------- diff --git a/benchmarks/for_dev/bandwidth4/Makefile b/benchmarks/for_dev/bandwidth4/Makefile index 7a282504..fc95f070 100644 --- a/benchmarks/for_dev/bandwidth4/Makefile +++ b/benchmarks/for_dev/bandwidth4/Makefile @@ -3,9 +3,9 @@ ROOT_DIR := $(shell git rev-parse --show-toplevel) KERNEL_NAME := bandwidth4 -RS_SCRIPT := $(CURDIR)/run.py +RS_SCRIPT := $(CURDIR)/run_vck5000.py SRC_DIR := $(CURDIR)/design -AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/ab_config.json +AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/floorplan_config.json IMPL_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/impl_config.json LINK_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/link_config.ini FIX_NOC_TCL := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/fix_noc.tcl diff --git a/benchmarks/for_dev/bandwidth4/design/config/run_vck5000.py/ab_config.json b/benchmarks/for_dev/bandwidth4/design/config/run_vck5000.py/floorplan_config.json similarity index 100% rename from benchmarks/for_dev/bandwidth4/design/config/run_vck5000.py/ab_config.json rename to benchmarks/for_dev/bandwidth4/design/config/run_vck5000.py/floorplan_config.json diff --git a/benchmarks/for_dev/bandwidth4/design/run_tapa.sh b/benchmarks/for_dev/bandwidth4/design/run_tapa.sh new file mode 100644 index 00000000..fa89bcfe --- /dev/null +++ b/benchmarks/for_dev/bandwidth4/design/run_tapa.sh @@ -0,0 +1,9 @@ +WORK_DIR=work.out + +tapa compile \ + --top bandwidth4 \ + --part-num xcu55c-fsvh2892-2L-e \ + --clock-period 3.33 \ + -o ${WORK_DIR}/bandwidth4.xo \ + -f src/bandwidth4.cpp \ + 2>&1 | tee tapa.log diff --git a/benchmarks/tapa_flow/bandwidth23/README.md b/benchmarks/tapa_flow/bandwidth23/README.md index 9dc435d9..66231a5e 100644 --- a/benchmarks/tapa_flow/bandwidth23/README.md +++ b/benchmarks/tapa_flow/bandwidth23/README.md @@ -90,7 +90,7 @@ The RapidStream flow for TAPA requires the following key inputs: - **tapa-xo-path**: The path to the tapa-generated `xo` file (bandwidth23.xo). - **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. - **floorplan-config**: The configure file ([ab_config.json](design/config/run_vck5000.py/ab_config.json)) to guide integrated Autobridge to floorplan the design. -- **implementation-config**: The configure file ([impl_config.json](design/config/run_vck5000.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **implementation-config**: The configure file ([impl_config.json](design/config/run_vck5000.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). - **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_vck5000.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is the same for vitis link configure file. diff --git a/benchmarks/tapa_flow/bandwidth52/README.md b/benchmarks/tapa_flow/bandwidth52/README.md index a9becda5..6abebf52 100644 --- a/benchmarks/tapa_flow/bandwidth52/README.md +++ b/benchmarks/tapa_flow/bandwidth52/README.md @@ -76,7 +76,7 @@ The RapidStream flow for TAPA requires the following key inputs: - **tapa-xo-path**: The path to the tapa-generated `xo` file (bandwidth52.xo). - **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. - **floorplan-config**: The configure file ([ab_config.json](design/config/run_vhk158.py/ab_config.json)) to guide integrated Autobridge to floorplan the design. -- **implementation-config**: The configure file ([impl_config.json](design/config/run_vhk158.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **implementation-config**: The configure file ([impl_config.json](design/config/run_vhk158.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). - **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_vhk158.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is the same for vitis link configure file. diff --git a/benchmarks/tapa_flow/bandwidth52/design/run_tapa.sh b/benchmarks/tapa_flow/bandwidth52/design/run_tapa.sh index 0071559b..4667a689 100644 --- a/benchmarks/tapa_flow/bandwidth52/design/run_tapa.sh +++ b/benchmarks/tapa_flow/bandwidth52/design/run_tapa.sh @@ -1,9 +1,9 @@ WORK_DIR=work.out tapa compile \ - --top data_decoding \ + --top bandwidth52 \ --part-num xcu55c-fsvh2892-2L-e \ --clock-period 3.33 \ - -o ${WORK_DIR}/data_decoding.xo \ - -f src/data_decoder.cpp \ + -o ${WORK_DIR}/bandwidth52.xo \ + -f src/bandwidth52.cpp \ 2>&1 | tee tapa.log diff --git a/benchmarks/tapa_flow/bloomFilter/b3_8_5_8/Makefile b/benchmarks/tapa_flow/bloomFilter/b3_8_5_8/Makefile index 127b982f..798bc3a7 100644 --- a/benchmarks/tapa_flow/bloomFilter/b3_8_5_8/Makefile +++ b/benchmarks/tapa_flow/bloomFilter/b3_8_5_8/Makefile @@ -4,7 +4,7 @@ ROOT_DIR := $(shell git rev-parse --show-toplevel) KERNEL_NAME := workload RS_SCRIPT := $(CURDIR)/run.py -AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/ab_config.json +AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/floorplan_config.json IMPL_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/impl_config.json LINK_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/link_config.ini PLATFORM := xilinx_u55c_gen3x16_xdma_3_202210_1 @@ -32,7 +32,6 @@ $(RS_TARGET):$(TAPA_XO) $(DEVICE_CONFIG) --tapa-xo-path $< \ --device-config $(DEVICE_CONFIG) \ --floorplan-config $(AB_CONFIG) \ - --single-reg \ --run-impl \ --implementation-config $(IMPL_CONFIG) \ --connectivity-ini $(LINK_CONFIG) diff --git a/benchmarks/tapa_flow/bloomFilter/b3_8_5_8/README.md b/benchmarks/tapa_flow/bloomFilter/b3_8_5_8/README.md index a24dfc60..5044244b 100644 --- a/benchmarks/tapa_flow/bloomFilter/b3_8_5_8/README.md +++ b/benchmarks/tapa_flow/bloomFilter/b3_8_5_8/README.md @@ -12,7 +12,7 @@ The contributor(s) of this file has/have agreed to the RapidStream Contributor L In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. The basic steps include: -- Compile the HLS C++ code into a Vitis-compatible .xo file using TAPA. +- Compile the TAPA C++ code into a Vitis-compatible .xo file using TAPA. - Optimize the .xo file with RapidStream to obtain an optimized .xo file. - Use Vitis to compile the optimized .xo file into an .xclbin file for FPGA deployment. @@ -41,10 +41,10 @@ tapa compile \ The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. The RapidStream flow for TAPA requires the following key inputs: -- **tapa-xo-path**: The path to the tapa-generated `xo` file (bandwidth52.xo). +- **tapa-xo-path**: The path to the tapa-generated `xo` file (multistream_MurmurHash3.xo). - **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. -- **floorplan-config**: The configure file ([ab_config.json](design/config/run.py/ab_config.json)) to guide integrated Autobridge to floorplan the design. -- **implementation-config**: The configure file ([impl_config.json](design/config/run.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **floorplan-config**: The configure file ([floorplan_config.json](design/config/run.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. +- **implementation-config**: The configure file ([impl_config.json](design/config/run.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). - **connectivity-ini**: The link configure file ([link_config.ini](design/config/run.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is the same for vitis link configure file. @@ -55,7 +55,7 @@ You can run the command below or execute `make all` supported by our [Makefile]( rapidstream-tapaopt --work-dir build/run.py \ --tapa-xo-path ../../design/generated/multistream_MurmurHash3.xo \ --device-config build/run.py/device.json \ - --floorplan-config design/config/run.py/ab_config.json \ + --floorplan-config design/config/run.py/floorplan_config.json \ --implementation-config design/config/run.py/impl_config.json \ --connectivity-ini design/config/run.py/link_config.ini ``` diff --git a/benchmarks/tapa_flow/bloomFilter/b3_8_5_8/design/config/run.py/ab_config.json b/benchmarks/tapa_flow/bloomFilter/b3_8_5_8/design/config/run.py/floorplan_config.json similarity index 100% rename from benchmarks/tapa_flow/bloomFilter/b3_8_5_8/design/config/run.py/ab_config.json rename to benchmarks/tapa_flow/bloomFilter/b3_8_5_8/design/config/run.py/floorplan_config.json diff --git a/benchmarks/tapa_flow/bloomFilter/b5_8_5_8/Makefile b/benchmarks/tapa_flow/bloomFilter/b5_8_5_8/Makefile index 080c6a8d..798bc3a7 100644 --- a/benchmarks/tapa_flow/bloomFilter/b5_8_5_8/Makefile +++ b/benchmarks/tapa_flow/bloomFilter/b5_8_5_8/Makefile @@ -4,7 +4,7 @@ ROOT_DIR := $(shell git rev-parse --show-toplevel) KERNEL_NAME := workload RS_SCRIPT := $(CURDIR)/run.py -AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/ab_config.json +AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/floorplan_config.json IMPL_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/impl_config.json LINK_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/link_config.ini PLATFORM := xilinx_u55c_gen3x16_xdma_3_202210_1 @@ -24,7 +24,6 @@ DEVICE_GEN := $(CURDIR)/gen_device.py all: $(RS_TARGET) cd $(RSPATH) && $(RSPYTHON) $(SLACK_GETTER) -d $(TEMP_DIR) -i $(TIMING_RPT) -o $(BUILD_LOG) -c clk_kernel_00_unbuffered_net -p 3.333 - @echo $(SUCCESS) $(RS_TARGET):$(TAPA_XO) $(DEVICE_CONFIG) mkdir -p $(TEMP_DIR) @@ -33,7 +32,6 @@ $(RS_TARGET):$(TAPA_XO) $(DEVICE_CONFIG) --tapa-xo-path $< \ --device-config $(DEVICE_CONFIG) \ --floorplan-config $(AB_CONFIG) \ - --single-reg \ --run-impl \ --implementation-config $(IMPL_CONFIG) \ --connectivity-ini $(LINK_CONFIG) diff --git a/benchmarks/tapa_flow/bloomFilter/b5_8_5_8/README.md b/benchmarks/tapa_flow/bloomFilter/b5_8_5_8/README.md index a24dfc60..5044244b 100644 --- a/benchmarks/tapa_flow/bloomFilter/b5_8_5_8/README.md +++ b/benchmarks/tapa_flow/bloomFilter/b5_8_5_8/README.md @@ -12,7 +12,7 @@ The contributor(s) of this file has/have agreed to the RapidStream Contributor L In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. The basic steps include: -- Compile the HLS C++ code into a Vitis-compatible .xo file using TAPA. +- Compile the TAPA C++ code into a Vitis-compatible .xo file using TAPA. - Optimize the .xo file with RapidStream to obtain an optimized .xo file. - Use Vitis to compile the optimized .xo file into an .xclbin file for FPGA deployment. @@ -41,10 +41,10 @@ tapa compile \ The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. The RapidStream flow for TAPA requires the following key inputs: -- **tapa-xo-path**: The path to the tapa-generated `xo` file (bandwidth52.xo). +- **tapa-xo-path**: The path to the tapa-generated `xo` file (multistream_MurmurHash3.xo). - **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. -- **floorplan-config**: The configure file ([ab_config.json](design/config/run.py/ab_config.json)) to guide integrated Autobridge to floorplan the design. -- **implementation-config**: The configure file ([impl_config.json](design/config/run.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **floorplan-config**: The configure file ([floorplan_config.json](design/config/run.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. +- **implementation-config**: The configure file ([impl_config.json](design/config/run.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). - **connectivity-ini**: The link configure file ([link_config.ini](design/config/run.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is the same for vitis link configure file. @@ -55,7 +55,7 @@ You can run the command below or execute `make all` supported by our [Makefile]( rapidstream-tapaopt --work-dir build/run.py \ --tapa-xo-path ../../design/generated/multistream_MurmurHash3.xo \ --device-config build/run.py/device.json \ - --floorplan-config design/config/run.py/ab_config.json \ + --floorplan-config design/config/run.py/floorplan_config.json \ --implementation-config design/config/run.py/impl_config.json \ --connectivity-ini design/config/run.py/link_config.ini ``` diff --git a/benchmarks/tapa_flow/bloomFilter/b5_8_5_8/design/config/run.py/ab_config.json b/benchmarks/tapa_flow/bloomFilter/b5_8_5_8/design/config/run.py/floorplan_config.json similarity index 100% rename from benchmarks/tapa_flow/bloomFilter/b5_8_5_8/design/config/run.py/ab_config.json rename to benchmarks/tapa_flow/bloomFilter/b5_8_5_8/design/config/run.py/floorplan_config.json diff --git a/benchmarks/tapa_flow/bloomFilter/b7_8_4_16/Makefile b/benchmarks/tapa_flow/bloomFilter/b7_8_4_16/Makefile index 080c6a8d..798bc3a7 100644 --- a/benchmarks/tapa_flow/bloomFilter/b7_8_4_16/Makefile +++ b/benchmarks/tapa_flow/bloomFilter/b7_8_4_16/Makefile @@ -4,7 +4,7 @@ ROOT_DIR := $(shell git rev-parse --show-toplevel) KERNEL_NAME := workload RS_SCRIPT := $(CURDIR)/run.py -AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/ab_config.json +AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/floorplan_config.json IMPL_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/impl_config.json LINK_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/link_config.ini PLATFORM := xilinx_u55c_gen3x16_xdma_3_202210_1 @@ -24,7 +24,6 @@ DEVICE_GEN := $(CURDIR)/gen_device.py all: $(RS_TARGET) cd $(RSPATH) && $(RSPYTHON) $(SLACK_GETTER) -d $(TEMP_DIR) -i $(TIMING_RPT) -o $(BUILD_LOG) -c clk_kernel_00_unbuffered_net -p 3.333 - @echo $(SUCCESS) $(RS_TARGET):$(TAPA_XO) $(DEVICE_CONFIG) mkdir -p $(TEMP_DIR) @@ -33,7 +32,6 @@ $(RS_TARGET):$(TAPA_XO) $(DEVICE_CONFIG) --tapa-xo-path $< \ --device-config $(DEVICE_CONFIG) \ --floorplan-config $(AB_CONFIG) \ - --single-reg \ --run-impl \ --implementation-config $(IMPL_CONFIG) \ --connectivity-ini $(LINK_CONFIG) diff --git a/benchmarks/tapa_flow/bloomFilter/b7_8_4_16/README.md b/benchmarks/tapa_flow/bloomFilter/b7_8_4_16/README.md index a24dfc60..5044244b 100644 --- a/benchmarks/tapa_flow/bloomFilter/b7_8_4_16/README.md +++ b/benchmarks/tapa_flow/bloomFilter/b7_8_4_16/README.md @@ -12,7 +12,7 @@ The contributor(s) of this file has/have agreed to the RapidStream Contributor L In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. The basic steps include: -- Compile the HLS C++ code into a Vitis-compatible .xo file using TAPA. +- Compile the TAPA C++ code into a Vitis-compatible .xo file using TAPA. - Optimize the .xo file with RapidStream to obtain an optimized .xo file. - Use Vitis to compile the optimized .xo file into an .xclbin file for FPGA deployment. @@ -41,10 +41,10 @@ tapa compile \ The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. The RapidStream flow for TAPA requires the following key inputs: -- **tapa-xo-path**: The path to the tapa-generated `xo` file (bandwidth52.xo). +- **tapa-xo-path**: The path to the tapa-generated `xo` file (multistream_MurmurHash3.xo). - **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. -- **floorplan-config**: The configure file ([ab_config.json](design/config/run.py/ab_config.json)) to guide integrated Autobridge to floorplan the design. -- **implementation-config**: The configure file ([impl_config.json](design/config/run.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **floorplan-config**: The configure file ([floorplan_config.json](design/config/run.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. +- **implementation-config**: The configure file ([impl_config.json](design/config/run.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). - **connectivity-ini**: The link configure file ([link_config.ini](design/config/run.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is the same for vitis link configure file. @@ -55,7 +55,7 @@ You can run the command below or execute `make all` supported by our [Makefile]( rapidstream-tapaopt --work-dir build/run.py \ --tapa-xo-path ../../design/generated/multistream_MurmurHash3.xo \ --device-config build/run.py/device.json \ - --floorplan-config design/config/run.py/ab_config.json \ + --floorplan-config design/config/run.py/floorplan_config.json \ --implementation-config design/config/run.py/impl_config.json \ --connectivity-ini design/config/run.py/link_config.ini ``` diff --git a/benchmarks/tapa_flow/bloomFilter/b7_8_4_16/design/config/run.py/ab_config.json b/benchmarks/tapa_flow/bloomFilter/b7_8_4_16/design/config/run.py/floorplan_config.json similarity index 100% rename from benchmarks/tapa_flow/bloomFilter/b7_8_4_16/design/config/run.py/ab_config.json rename to benchmarks/tapa_flow/bloomFilter/b7_8_4_16/design/config/run.py/floorplan_config.json diff --git a/benchmarks/tapa_flow/callipepla/README.md b/benchmarks/tapa_flow/callipepla/README.md index 93fd938a..5844ff8f 100644 --- a/benchmarks/tapa_flow/callipepla/README.md +++ b/benchmarks/tapa_flow/callipepla/README.md @@ -12,7 +12,7 @@ The contributor(s) of this file has/have agreed to the RapidStream Contributor L In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. [TAPA](https://tapa.readthedocs.io/en/release/overview/overview.html), a dataflow HLS framework, features fast compilation, an expressive programming model, and the ability to generate high-frequency FPGA accelerators. We will guide you through the process using a preconditioned conjugate gradient linear solver application from [Callipepla](https://github.com/linghaosong/Callipepla). The basic steps include: -- Compile the HLS C++ code into a Vitis-compatible .xo file using TAPA. +- Compile the TAPA C++ code into a Vitis-compatible .xo file using TAPA. - Optimize the .xo file with RapidStream to obtain an optimized .xo file. - Use Vitis to compile the optimized .xo file into an .xclbin file for FPGA deployment. @@ -36,7 +36,7 @@ tapa compile \ ### Step 2: Define Virtual Device In this tutorial, we use the [Alveo U55C](https://www.amd.com/en/products/accelerators/alveo/u55c/a-u55c-p00g-pq-g.html) as an example. The device is organized into six slots, each -containing 16 clock regions of logic. In actual implementations, the available slots are reduced +containing 16 clock regions of logic. In actual implementations, the available reousrce of each slot is reduced based on the platform specifics, as some resources are reserved for shell logic. AU55C Device @@ -59,8 +59,8 @@ The RapidStream flow for TAPA requires the following key inputs: - **tapa-xo-path**: The path to the tapa-generated `xo` file (Callipepla.xo.xo). - **device-config**: The virtual device (`device.json`) generated in previous step 1 by calling rapidstream APIs based on platform. -- **floorplan-config**: The configure file ([ab_config.json](design/config/run_u55c.py/ab_config.json)) to guide integrated Autobridge to floorplan the design. -- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **floorplan-config**: The configure file ([floorplan_config.json](design/config/run_u55c.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. +- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). - **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_u55c.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is the same for vitis link configure file. diff --git a/benchmarks/tapa_flow/digit_recognizer/README.md b/benchmarks/tapa_flow/digit_recognizer/README.md index 910224d2..1c784a5a 100644 --- a/benchmarks/tapa_flow/digit_recognizer/README.md +++ b/benchmarks/tapa_flow/digit_recognizer/README.md @@ -60,10 +60,11 @@ cd build/run_u55c.py && tapa compile \ 2>&1 | tee tapa.log ``` + ### Step 2: Define Virtual Device In this tutorial, we use the [Alveo U55C](https://www.amd.com/en/products/accelerators/alveo/u55c/a-u55c-p00g-pq-g.html) as an example. The device is organized into six slots, each -containing 16 clock regions of logic. In actual implementations, the available slots are reduced +containing 16 clock regions of logic. In actual implementations, the available reousrce of each slot is reduced based on the platform specifics, as some resources are reserved for shell logic. AU55C Device @@ -85,7 +86,7 @@ The RapidStream flow for TAPA requires the following key inputs: - **tapa-xo-path**: The path to the tapa-generated `xo` file (digit_recognizer.xo). - **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. - **floorplan-config**: The configure file ([floorplan_config.json](design/config/run_u55c.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. -- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). - **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_u55c.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is the same for vitis link configure file. @@ -104,7 +105,7 @@ rapidstream-tapaopt --work-dir build/run_u55c.py \ If everything is successful, you should at least get one optimized `.xclbin` file. -### Step 3: Check the Group Module Report +### Step 4: Check the Group Module Report RapidStream mandates a clear distinction between communication and computation within user designs. @@ -119,7 +120,7 @@ To generate a report on group types, execute the commands below or `run make sho ```bash rapidstream ../../../../common/util/get_group.py \ - -i build/passes/0-imported.json \ + -i build/passes/1-importer.json \ -o build/module_types.csv ``` diff --git a/benchmarks/tapa_flow/knn_chipknn/k16D_float_27PEs/README.md b/benchmarks/tapa_flow/knn_chipknn/k16D_float_27PEs/README.md index 07eae322..dd94a36d 100644 --- a/benchmarks/tapa_flow/knn_chipknn/k16D_float_27PEs/README.md +++ b/benchmarks/tapa_flow/knn_chipknn/k16D_float_27PEs/README.md @@ -12,7 +12,7 @@ The contributor(s) of this file has/have agreed to the RapidStream Contributor L In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. The basic steps include: -- Compile the HLS C++ code into a Vitis-compatible .xo file using TAPA. +- Compile the TAPA C++ code into a Vitis-compatible .xo file using TAPA. - Optimize the .xo file with RapidStream to obtain an optimized .xo file. - Use Vitis to compile the optimized .xo file into an .xclbin file for FPGA deployment. @@ -39,7 +39,7 @@ cd build/run_u55c.py && tapa compile \ ### Step 2: Define Virtual Device In this tutorial, we use the [Alveo U55C](https://www.amd.com/en/products/accelerators/alveo/u55c/a-u55c-p00g-pq-g.html) as an example. The device is organized into six slots, each -containing 16 clock regions of logic. In actual implementations, the available slots are reduced +containing 16 clock regions of logic. In actual implementations, the available resource of each slot is reduced based on the platform specifics, as some resources are reserved for shell logic. AU55C Device @@ -58,10 +58,10 @@ rapidstream run_u55c.py The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. The RapidStream flow for TAPA requires the following key inputs: -- **tapa-xo-path**: The path to the tapa-generated `xo` file (digit_recognizer.xo). +- **tapa-xo-path**: The path to the tapa-generated `xo` file (knn.xo). - **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. - **floorplan-config**: The configure file ([floorplan_config.json](design/config/run_u55c.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. -- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). - **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_u55c.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is the same for vitis link configure file. @@ -70,7 +70,7 @@ You can run the command below or execute `make all` supported by our [Makefile]( ```bash rapidstream-tapaopt --work-dir build/run_u55c.py \ - --tapa-xo-path build/run_u55c.py/digit_recognizer.xo \ + --tapa-xo-path build/run_u55c.py/knn.xo \ --device-config build/run_u55c.py/device.json \ --floorplan-config design/config/run_u55c.py/floorplan_config.json \ --implementation-config design/config/run_u55c.py/impl_config.json \ @@ -96,7 +96,7 @@ To generate a report on group types, execute the commands below or `run make sho ```bash rapidstream ../../../common/util/get_group.py \ - -i build/passes/0-imported.json \ + -i build/passes/1-importer.json \ -o build/module_types.csv ``` diff --git a/benchmarks/tapa_flow/knn_chipknn/k2D_float_15PEs/README.md b/benchmarks/tapa_flow/knn_chipknn/k2D_float_15PEs/README.md index 07eae322..dd94a36d 100644 --- a/benchmarks/tapa_flow/knn_chipknn/k2D_float_15PEs/README.md +++ b/benchmarks/tapa_flow/knn_chipknn/k2D_float_15PEs/README.md @@ -12,7 +12,7 @@ The contributor(s) of this file has/have agreed to the RapidStream Contributor L In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. The basic steps include: -- Compile the HLS C++ code into a Vitis-compatible .xo file using TAPA. +- Compile the TAPA C++ code into a Vitis-compatible .xo file using TAPA. - Optimize the .xo file with RapidStream to obtain an optimized .xo file. - Use Vitis to compile the optimized .xo file into an .xclbin file for FPGA deployment. @@ -39,7 +39,7 @@ cd build/run_u55c.py && tapa compile \ ### Step 2: Define Virtual Device In this tutorial, we use the [Alveo U55C](https://www.amd.com/en/products/accelerators/alveo/u55c/a-u55c-p00g-pq-g.html) as an example. The device is organized into six slots, each -containing 16 clock regions of logic. In actual implementations, the available slots are reduced +containing 16 clock regions of logic. In actual implementations, the available resource of each slot is reduced based on the platform specifics, as some resources are reserved for shell logic. AU55C Device @@ -58,10 +58,10 @@ rapidstream run_u55c.py The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. The RapidStream flow for TAPA requires the following key inputs: -- **tapa-xo-path**: The path to the tapa-generated `xo` file (digit_recognizer.xo). +- **tapa-xo-path**: The path to the tapa-generated `xo` file (knn.xo). - **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. - **floorplan-config**: The configure file ([floorplan_config.json](design/config/run_u55c.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. -- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). - **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_u55c.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is the same for vitis link configure file. @@ -70,7 +70,7 @@ You can run the command below or execute `make all` supported by our [Makefile]( ```bash rapidstream-tapaopt --work-dir build/run_u55c.py \ - --tapa-xo-path build/run_u55c.py/digit_recognizer.xo \ + --tapa-xo-path build/run_u55c.py/knn.xo \ --device-config build/run_u55c.py/device.json \ --floorplan-config design/config/run_u55c.py/floorplan_config.json \ --implementation-config design/config/run_u55c.py/impl_config.json \ @@ -96,7 +96,7 @@ To generate a report on group types, execute the commands below or `run make sho ```bash rapidstream ../../../common/util/get_group.py \ - -i build/passes/0-imported.json \ + -i build/passes/1-importer.json \ -o build/module_types.csv ``` diff --git a/benchmarks/tapa_flow/knn_chipknn/k2D_float_8PEs/README.md b/benchmarks/tapa_flow/knn_chipknn/k2D_float_8PEs/README.md index 07eae322..dd94a36d 100644 --- a/benchmarks/tapa_flow/knn_chipknn/k2D_float_8PEs/README.md +++ b/benchmarks/tapa_flow/knn_chipknn/k2D_float_8PEs/README.md @@ -12,7 +12,7 @@ The contributor(s) of this file has/have agreed to the RapidStream Contributor L In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. The basic steps include: -- Compile the HLS C++ code into a Vitis-compatible .xo file using TAPA. +- Compile the TAPA C++ code into a Vitis-compatible .xo file using TAPA. - Optimize the .xo file with RapidStream to obtain an optimized .xo file. - Use Vitis to compile the optimized .xo file into an .xclbin file for FPGA deployment. @@ -39,7 +39,7 @@ cd build/run_u55c.py && tapa compile \ ### Step 2: Define Virtual Device In this tutorial, we use the [Alveo U55C](https://www.amd.com/en/products/accelerators/alveo/u55c/a-u55c-p00g-pq-g.html) as an example. The device is organized into six slots, each -containing 16 clock regions of logic. In actual implementations, the available slots are reduced +containing 16 clock regions of logic. In actual implementations, the available resource of each slot is reduced based on the platform specifics, as some resources are reserved for shell logic. AU55C Device @@ -58,10 +58,10 @@ rapidstream run_u55c.py The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. The RapidStream flow for TAPA requires the following key inputs: -- **tapa-xo-path**: The path to the tapa-generated `xo` file (digit_recognizer.xo). +- **tapa-xo-path**: The path to the tapa-generated `xo` file (knn.xo). - **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. - **floorplan-config**: The configure file ([floorplan_config.json](design/config/run_u55c.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. -- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). - **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_u55c.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is the same for vitis link configure file. @@ -70,7 +70,7 @@ You can run the command below or execute `make all` supported by our [Makefile]( ```bash rapidstream-tapaopt --work-dir build/run_u55c.py \ - --tapa-xo-path build/run_u55c.py/digit_recognizer.xo \ + --tapa-xo-path build/run_u55c.py/knn.xo \ --device-config build/run_u55c.py/device.json \ --floorplan-config design/config/run_u55c.py/floorplan_config.json \ --implementation-config design/config/run_u55c.py/impl_config.json \ @@ -96,7 +96,7 @@ To generate a report on group types, execute the commands below or `run make sho ```bash rapidstream ../../../common/util/get_group.py \ - -i build/passes/0-imported.json \ + -i build/passes/1-importer.json \ -o build/module_types.csv ``` diff --git a/benchmarks/tapa_flow/knn_chipknn/k64D_8bit_30PEs/README.md b/benchmarks/tapa_flow/knn_chipknn/k64D_8bit_30PEs/README.md index 07eae322..dd94a36d 100644 --- a/benchmarks/tapa_flow/knn_chipknn/k64D_8bit_30PEs/README.md +++ b/benchmarks/tapa_flow/knn_chipknn/k64D_8bit_30PEs/README.md @@ -12,7 +12,7 @@ The contributor(s) of this file has/have agreed to the RapidStream Contributor L In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. The basic steps include: -- Compile the HLS C++ code into a Vitis-compatible .xo file using TAPA. +- Compile the TAPA C++ code into a Vitis-compatible .xo file using TAPA. - Optimize the .xo file with RapidStream to obtain an optimized .xo file. - Use Vitis to compile the optimized .xo file into an .xclbin file for FPGA deployment. @@ -39,7 +39,7 @@ cd build/run_u55c.py && tapa compile \ ### Step 2: Define Virtual Device In this tutorial, we use the [Alveo U55C](https://www.amd.com/en/products/accelerators/alveo/u55c/a-u55c-p00g-pq-g.html) as an example. The device is organized into six slots, each -containing 16 clock regions of logic. In actual implementations, the available slots are reduced +containing 16 clock regions of logic. In actual implementations, the available resource of each slot is reduced based on the platform specifics, as some resources are reserved for shell logic. AU55C Device @@ -58,10 +58,10 @@ rapidstream run_u55c.py The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. The RapidStream flow for TAPA requires the following key inputs: -- **tapa-xo-path**: The path to the tapa-generated `xo` file (digit_recognizer.xo). +- **tapa-xo-path**: The path to the tapa-generated `xo` file (knn.xo). - **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. - **floorplan-config**: The configure file ([floorplan_config.json](design/config/run_u55c.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. -- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). - **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_u55c.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is the same for vitis link configure file. @@ -70,7 +70,7 @@ You can run the command below or execute `make all` supported by our [Makefile]( ```bash rapidstream-tapaopt --work-dir build/run_u55c.py \ - --tapa-xo-path build/run_u55c.py/digit_recognizer.xo \ + --tapa-xo-path build/run_u55c.py/knn.xo \ --device-config build/run_u55c.py/device.json \ --floorplan-config design/config/run_u55c.py/floorplan_config.json \ --implementation-config design/config/run_u55c.py/impl_config.json \ @@ -96,7 +96,7 @@ To generate a report on group types, execute the commands below or `run make sho ```bash rapidstream ../../../common/util/get_group.py \ - -i build/passes/0-imported.json \ + -i build/passes/1-importer.json \ -o build/module_types.csv ``` diff --git a/benchmarks/tapa_flow/knn_chipknn/k64D_8bit_30PEs/design/config/run_u55c.py/floorplan_config.json b/benchmarks/tapa_flow/knn_chipknn/k64D_8bit_30PEs/design/config/run_u55c.py/floorplan_config.json index 5be2b7b5..5c7c3677 100644 --- a/benchmarks/tapa_flow/knn_chipknn/k64D_8bit_30PEs/design/config/run_u55c.py/floorplan_config.json +++ b/benchmarks/tapa_flow/knn_chipknn/k64D_8bit_30PEs/design/config/run_u55c.py/floorplan_config.json @@ -3,7 +3,6 @@ "dse_range_min": 0.7, "partition_strategy": "flat", "port_pre_assignments": { - ".*final_out.*": "HBM[0]", ".*final_out_.*": "HBM[29]", ".*in_0_.*": "HBM[0]", ".*in_10_.*": "HBM[10]", diff --git a/benchmarks/tapa_flow/orcDecoder/README.md b/benchmarks/tapa_flow/orcDecoder/README.md index 33155d25..7b7478cb 100644 --- a/benchmarks/tapa_flow/orcDecoder/README.md +++ b/benchmarks/tapa_flow/orcDecoder/README.md @@ -12,7 +12,7 @@ The contributor(s) of this file has/have agreed to the RapidStream Contributor L In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. The basic steps include: -- Compile the HLS C++ code into a Vitis-compatible .xo file using TAPA. +- Compile the TAPA C++ code into a Vitis-compatible .xo file using TAPA. - Optimize the .xo file with RapidStream to obtain an optimized .xo file. - Use Vitis to compile the optimized .xo file into an .xclbin file for FPGA deployment. @@ -41,7 +41,7 @@ cd build/run_u55c.py && tapa compile \ ### Step 2: Define Virtual Device In this tutorial, we use the [Alveo U55C](https://www.amd.com/en/products/accelerators/alveo/u55c/a-u55c-p00g-pq-g.html) as an example. The device is organized into six slots, each -containing 16 clock regions of logic. In actual implementations, the available slots are reduced +containing 16 clock regions of logic. In actual implementations, the available resource of each slot is reduced based on the platform specifics, as some resources are reserved for shell logic. AU55C Device @@ -60,10 +60,10 @@ rapidstream run_u55c.py The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. The RapidStream flow for TAPA requires the following key inputs: -- **tapa-xo-path**: The path to the tapa-generated `xo` file (digit_recognizer.xo). +- **tapa-xo-path**: The path to the tapa-generated `xo` file (data_decoding.xo). - **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. - **floorplan-config**: The configure file ([floorplan_config.json](design/config/run_u55c.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. -- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). - **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_u55c.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is the same for vitis link configure file. diff --git a/benchmarks/tapa_flow/serpens/Makefile b/benchmarks/tapa_flow/serpens/Makefile index ea0da5f4..af9324d5 100644 --- a/benchmarks/tapa_flow/serpens/Makefile +++ b/benchmarks/tapa_flow/serpens/Makefile @@ -1,21 +1,47 @@ # Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. # The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. -ROOT_DIR := $(shell git rev-parse --show-toplevel) -GRP_UTIL := $(ROOT_DIR)/common/util/get_group.py -KRNL_NAME := Serpens -TEMP_DIR := $(CURDIR)/build -RS_TARGET := $(CURDIR)/$(TEMP_DIR)/dse/candidate_3/exported/impl/vitis_run_hw -TAPA_XO := $(CURDIR)/design/generated/$(KRNL_NAME).xo -PLATFORM := xilinx_u280_gen3x16_xdma_1_202211_1 -PART := xcu280-fsvh2892-2L-e -RUN_FILE := $(CURDIR)/run.py +ROOT_DIR := $(shell git rev-parse --show-toplevel) +KERNEL_NAME := Serpens +RS_SCRIPT := $(CURDIR)/run_u55c.py +AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/floorplan_config.json +IMPL_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/impl_config.json +LINK_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/link_config.ini +PLATFORM := xilinx_u55c_gen3x16_xdma_3_202210_1 +GRP_UTIL := $(ROOT_DIR)/common/util/get_group.py +TEMP_DIR := $(CURDIR)/build/$(notdir $(RS_SCRIPT)) +RS_TARGET := $(TEMP_DIR)/dse/solution_0/vitis_run_hw/$(KERNEL_NAME)_$(PLATFORM).xclbin +TAPA_XO := $(CURDIR)/design/generated/$(KERNEL_NAME).xo +BUILD_LOG := $(TEMP_DIR)/build.json +SUCCESS := "Build Successful" +TIMING_RPT := impl_1_hw_bb_locked_timing_summary_routed.rpt +SLACK_GETTER := $(ROOT_DIR)/common/util/get_slack.py +RSPATH := $(CURDIR) +RSXX := rapidstream +RSPYTHON := rapidstream +DEVICE_CONFIG := $(TEMP_DIR)/device.json +DEVICE_GEN := $(CURDIR)/gen_device.py all: $(RS_TARGET) - -$(RS_TARGET):$(TAPA_XO) - rapidstream $(RUN_FILE) - + cd $(RSPATH) && $(RSPYTHON) $(SLACK_GETTER) -d $(TEMP_DIR) -i $(TIMING_RPT) -o $(BUILD_LOG) -c clk_kernel_00_unbuffered_net -p 3.333 + @echo $(SUCCESS) + +$(RS_TARGET):$(TAPA_XO) $(DEVICE_CONFIG) $(RS_SCRIPT) + mkdir -p $(TEMP_DIR) + cd $(RSPATH) && $(RSXX)-tapaopt \ + --work-dir $(TEMP_DIR) \ + --tapa-xo-path $< \ + --device-config $(DEVICE_CONFIG) \ + --floorplan-config $(AB_CONFIG) \ + --run-impl \ + --implementation-config $(IMPL_CONFIG) \ + --connectivity-ini $(LINK_CONFIG) + +device: $(DEVICE_CONFIG) + +$(DEVICE_CONFIG):$(RS_SCRIPT) + mkdir -p $(TEMP_DIR) + cd $(RSPATH) && $(RSPYTHON) $< show_groups: rapidstream $(GRP_UTIL) -i $(TEMP_DIR)/passes/0-imported.json \ diff --git a/benchmarks/tapa_flow/serpens/README.md b/benchmarks/tapa_flow/serpens/README.md index c9638cbb..eb396abb 100644 --- a/benchmarks/tapa_flow/serpens/README.md +++ b/benchmarks/tapa_flow/serpens/README.md @@ -12,7 +12,7 @@ The contributor(s) of this file has/have agreed to the RapidStream Contributor L In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. [TAPA](https://tapa.readthedocs.io/en/release/overview/overview.html), a dataflow HLS framework, features fast compilation, an expressive programming model, and the ability to generate high-frequency FPGA accelerators. We will guide you through the process using a High bandwidth memory based accelerator for general-purpose sparse matrix-vector multiplication from [Serpnes](https://github.com/linghaosong/Serpens). The basic steps include: -- Compile the HLS C++ code into a Vitis-compatible .xo file using TAPA. +- Compile the TAPA C++ code into a Vitis-compatible .xo file using TAPA. - Optimize the .xo file with RapidStream to obtain an optimized .xo file. - Use Vitis to compile the optimized .xo file into an .xclbin file for FPGA deployment. @@ -24,118 +24,66 @@ In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. We utilize TAPA to generate the `.xo` file. If you have not installed TAPA, we've already compiled the C++ source to `.xo` using TAPA. The original C++ source files are located in [design/src](design/src). The generated `.xo` file can be found at [design/generated/Serpens.xo](design/generated/Serpens.xo). To compile C++ to `.xo` using TAPA, we use the script [design/run_tapa.sh](design/run_tapa.sh), with the detailed commands shown below. For your convenience, we have also backed up all the generated metadata by TAPA in the [design/generated](design/generated/) directory. ```bash -WORK_DIR=generated - -tapac \ - --work-dir ${WORK_DIR} \ - --top Serpens \ - --part-num xcu280-fsvh2892-2L-e \ - --clock-period 3.33 \ - -o ${WORK_DIR}/Serpens.xo \ - --connectivity design/config/link_config_a24.ini \ - design/src/serpens.cpp \ - 2>&1 | tee ${WORK_DIR}/tapa.log +mkdir -p build/run_u55c.py +cd build/run_u55c.py && tapa compile \ +--top Serpens \ +--part-num xcu55c-fsvh2892-2L-e \ +--clock-period 3.33 \ +-o Serpens.xo \ +-f $< \ +2>&1 | tee tapa.log ``` -### Step 2: Use Rapidstream to Optimize `.xo` Design -The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. -The RapidStream flow for TAPA requires the following key inputs: +### Step 2: Define Virtual Device -- **Platform**: The Vitis platform (e.g., `xilinx_u280_gen3x16_xdma_1_202211_1`). -- **Device**: virtual device define by calling rapidstream APIs based on platform (e.g., `get_u280_vitis_device_factory`). -- **.xo file**: The `.xo` file generated by TAPA -- **Connectivity** (.ini): Include the configuration file for `v++` ([link_config_a24.ini](design/config/link_config_a24.ini)). -- **top_module_name**: Top module name for the kernel. -- **Clock**: All the clock and frequencies. -- **Flatten Module**: Within a design, not all modules need to be optimized. The flatten module name is the target module rapidstream will optimize. - -The Python snippet below shows how we initiate rapidstream instance to set up the rapidstream environment. - -```Python -from rapidstream import get_u280_vitis_device_factory, RapidStreamTAPA -import os - -CURR_DIR = os.path.dirname(os.path.abspath(__file__)) -INI_PATH = f"{CURR_DIR}/design/config/link_config_a24.ini" -VITIS_PLATFORM = "xilinx_u280_gen3x16_xdma_1_202211_1" -XO_PATH = f"{CURR_DIR}/design/generated/Sextans.xo" -factory = get_u280_vitis_device_factory(VITIS_PLATFORM) -rs = RapidStreamTAPA(f"{CURR_DIR}build") -rs.set_virtual_device(factory.generate_virtual_device()) -rs.add_xo_file(XO_PATH) -rs.set_vitis_platform(VITIS_PLATFORM) -rs.set_vitis_connectivity_config(INI_PATH) -rs.set_top_module_name("Sextans") -rs.add_clock("ap_clk", 3.33) -rs.add_flatten_targets(["Sextans"]) -``` +In this tutorial, we use the [Alveo U55C](https://www.amd.com/en/products/accelerators/alveo/u55c/a-u55c-p00g-pq-g.html) as an example. The device is organized into six slots, each +containing 16 clock regions of logic. In actual implementations, the available resource of each slot is reduced + based on the platform specifics, as some resources are reserved for shell logic. + +AU55C Device -To leverage the multi-port capabilities of high-bandwidth memory, we utilize nearly 32 AXI ports of HBM, as illustrated below. - -au280_callipepla - - -As a result, it is necessary to assign the kernel ports to the appropriate slots. The Python code below demonstrates this process. For comprehensive linking details, please refer to the [design/config/link_config_a24.ini](design/config/link_config_a24.ini) file. - - ```Python -right_slot = "SLOT_X1Y0:SLOT_X1Y0" -left_slot = "SLOT_X0Y0:SLOT_X0Y0" -left_args = [ - "edge_list_ptr", - "edge_list_ch_0", - "edge_list_ch_1", - "edge_list_ch_2", - "edge_list_ch_3", - "edge_list_ch_4", - "edge_list_ch_5", - "edge_list_ch_6", - "edge_list_ch_7", - "mat_B_ch_0", - "mat_B_ch_1", - "mat_B_ch_2", - "mat_B_ch_3", -] -for arg in left_args: - rs.assign_port_to_region(f"m_axi_{arg}_.*", left_slot) -right_args = [ - "mat_C_ch_0", - "mat_C_ch_1", - "mat_C_ch_2", - "mat_C_ch_3", - "mat_C_ch_4", - "mat_C_ch_5", - "mat_C_ch_6", - "mat_C_ch_7", - "mat_C_ch_in_0", - "mat_C_ch_in_1", - "mat_C_ch_in_2", - "mat_C_ch_in_3", - "mat_C_ch_in_4", - "mat_C_ch_in_5", - "mat_C_ch_in_6", - "mat_C_ch_in_7", -] -for arg in right_args: - rs.assign_port_to_region(f"m_axi_{arg}_.*", right_slot) -rs.assign_port_to_region("s_axi_control_.*", left_slot) -rs.assign_port_to_region("ap_clk", left_slot) -rs.assign_port_to_region("ap_rst_n", left_slot) -rs.assign_port_to_region("interrupt", left_slot) +To generate a `device.json` file that details the device features, such as slot resources and + locations, you can either run the `run_u55c.py` script by invoking RapidStream as shown below or + simply enter `make device` in the terminal. + +```bash +rapidstream run_u55c.py ``` -For the complete detail, please refore to [./run.py](./run.py) file. Call the rapidstream by launching the command below or `make all`. + +### Step 3: Use Rapidstream to Optimize `.xo` Design + +The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. +The RapidStream flow for TAPA requires the following key inputs: + +- **tapa-xo-path**: The path to the tapa-generated `xo` file (digit_recognizer.xo). +- **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. +- **floorplan-config**: The configure file ([floorplan_config.json](design/config/run_u55c.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. +- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). +- **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_u55c.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is +the same for vitis link configure file. + +We encapulate the rapidstream command for TAPA as `rapidstream-tapaopt` for invoking. +You can run the command below or execute `make all` supported by our [Makefile](Makefile). ```bash -rapidstream run.py +rapidstream-tapaopt --work-dir build/run_u55c.py \ + --tapa-xo-path design/generated/Serpens.xo \ + --device-config build/run_u55c.py/device.json \ + --floorplan-config design/config/run_u55c.py/floorplan_config.json \ + --implementation-config design/config/run_u55c.py/impl_config.json \ + --connectivity-ini design/config/run_u55c.py/link_config.ini ``` + + If everything is successful, you should at least get one optimized `.xclbin` file. -### Step 3: Check the Group Module Report +### Step 4: Check the Group Module Report RapidStream mandates a clear distinction between communication and computation within user designs. diff --git a/benchmarks/tapa_flow/serpens/design/Serpens.xo b/benchmarks/tapa_flow/serpens/design/Serpens.xo deleted file mode 100644 index dd3b7ad65257c317276220c754a0e692944a063a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294431 zcmb5Vb9C&>w)Y*|wr$(CZQHhO+jds$tgP6{im_tb)|0*WJ?a`yE#;kA6 z->17r&8pEgOFU_0vJ~`VaLAZv3b>owT0H;DlyF-KrM;_&CS!LeGZS z(XhxA-K&!E`t`(R*g#6sCevCERK(rXr26(0o)3!s^mL_#gST^iKjkATYG+?D-0O!= z`dC`(l(cy?9cXRFchHi7EM-Ib}roQ)!m0jp$_l-BOu`c+Dy{M9i1hpnFgIFUkjlw6Y|1 zRP95pb`w=(ev)9m5EEp0|7nJ@bP)w~gkI=~MCgb<(7_eZ!9mc$1yGS=AfrQ|piV`m z+=|RY6F7>TimZjmM#YxA9>QMesdS&2Tb-ML^bKivn$B%tSSS|Z55OcN8??|TZCvC_>dfE-`M;5As z_pm$bM3d_9(>jnQRwio)=X$*6dWh;2m2dm}kZO$@s=9Z#UP-i64=0`_{Q2_zl*OV> zxZe7g(-ocTNs^f(%q_*>`iSdWQZJv{a0?sX*rNSwB)yjgrI9VZVRZ#s}ZAq zc?7FSjdCAXOGZ7RQ7+*ULZjB?GNuu$FZkdzfQ<#CAuPm_QSF3?o0B=3^HPKX-C9q< z;}A_*E#fbon!wCaySkxCR-%mP2L|NTG2OLE-J0mk3)l?khlWA3OQYDy^WZ+6iqujz zXY?~uvjLDpp$(dr%q|UXW^QT*bSsNLW|v_Y=+>5Gjmce&-*#nYZ&n8MQ>z6Ud|OXg z$VVgFDG?yO=v8ZpALwV+WR2_ANJClZ);4D45RXE!v9D-%%LxYbORF*_ZSF3s@3w6n z1_zSD)+4~Jn;o6wpvpICat4d!GOlxNYd0HJ1@2;xiWhCe2CI_Mo#^wm*iX|xnLC&9 z?RM4MX1Z(!meBBQ$hB?3HLr7Roap9*f@Sh6ln#AS5FWkXm+zJ_E>^r>e^2wy000dV004pinFA+NLlb?? z@8|qoDOfs~+F06|>N|ZK>D)H7&g|FO5Webu1|5ej+Ucd8b4bn`Vc(Vl2iaP58VS!@ zHi~u$nMx(@lWG3`xY$cfaq$^Vn|H$|BS;Y4+;fM|i&Ke<8@-e7>@Ft0y zC}PaqNM4pqP1zqhK;%(t(bY+M z`b7Z&2h5Zq2WKY93bIpgsYr(DEwzsWqigcw`)f$e#DP&n{&V%@9$<8|UNY-Pm+vib zHh$98d`dS+P*QgZDedO`Gs0kBzU4Gr`q76XDYe#gaSBrYk0hKMZ9SwJZPS}9cr=!% zfh{4|H_kCianXSw{=`7>1=NEb9^bb3{OHEHya_6*`$P_76>N!J6?}l&rwa+mt11T5 z&-)TwZIb91;AmvCSlT5^thIqQQ6)mw@m7wiq96MiOAsY|;_9BR@t~*k*Xvo)yX~{T zb|8@n^N<;Ob~=s@6cKAJM4<_G^g6sy>Bdzvj))yjlj265clqOd<+6VG=t@%I#XG-G z?iKPzd*pck*))RyDvB2nxkp4y5}S2(xOKS)11%%%<$DCqum)bJS_TT)--Br3N+IA@ zs1-0TNHE}5f;e^w8e9f!GARyN4O)-5AwY3ieTBnwX)+iL1&_7f1(Sye$!_!xJE1VI|jCauXL{bE%nE%*x+jX1Kzd2{5> zfOyhE$lQ|6AAF7Klz6Dch27LZ=@m{&M5)f4Nf$NoUXV%uAR&U>7_Vv;-?k$SYl?R+et7L^DmADfO-vgAswOrV4Z1WbD~`&+Ghbf-pzil(gU(N9v+;YGM1F zz=0Dg^Xjcw5gC${VyDIwZY_?yR=>GJz<`q*&F(kP$d&=l;7uk0N1`8dZsL!Uh84&O zz+3dMTas!@|;M53=IdFp&f}=;bg@dos1A0u-{4o)9qCa+!j=>DdRVi5sg~X zbRrF?uE1lMw|kW&JffXe{UzMXb0*F{yLl&R`pr zqe1i)Rr{Az>cE0AVp&;F#k<5Rsf?EpZ^D=kTB%p~vE5~5TqB@Z@1;E5q@#ml5JwM4 zq>}lGw{I4RGk=@*ch`&ckxQH3Ii&{IMNvqY6=#(^Dl^My!q|iU7Nng!SL3K1RqCj6 z+EflD?a@>QLl~qY{uu4oH-UD8P%FCvyJbs(1%!2D5%5|nB~d9vWA=rrYxlG@9&>t{WBH=%fPY?qPClDJ^;!pNi5oI zuIPomk-pE(G}@FjEKTJU7cNMOEFpm=G8E{3mVnBa7fNk)d$H>5@gu9-S#VrAa<;id zyZubGOv41skF7v9h`*Xy=fqJEII>J1d$r7=oeQ;Zkpj^uyV;7lB=iFo6M!B@B#u4I ziol9X|F`DH+z)aIec+c+o~s(Zp5lPXKdlim8x9Y1@ac#p^jM*EB8iWm0;70nnNw;J zcISX>3)aPyvDoNfR^@&Dj@KNQE}hH^@3E`mKUSqdzKFjTKW>C^IW9<77j21Izev&D z&iVSFoS|YA*E8UN^V%6kkYZP{z=3M42grgk?CE!Er*uOLjv2p?QiOfC=85~X0DY1Gk>K?2taDE`Eq7j2fSu0_J1 zxwHX%higwYB*i(;)FiV<+nGub?bAb?;BmQ7gCrCYQ4iV&=$n1B3|;#D5H}xOZ@Q3 zz`}1U{{uiEbk)Cwi|7cUj=AB2g4MGad1A)x-K!?>mYB9Jwf9aEU>)nJ0)Ws`&!-z= z)Z!1T%z~GZ+>O0T{6JEpvm-|%wWSkGV+-9&{`k03eCct^(}!X8N$9y$!Os56%70Sd zaVx6gCh1Dp-lVc0KZ&cyC=sim=H+*}Av32y&B~l}ORGvYqJP6F(>NLE$s>i-&*{dk zhAxquI+&J~?R?M$bGqsA<KwM)g*FSG_$CT=s6f3T zQze23Iw^_ltn;TYPg0VER0-d%oB(39&*f#u-i?If=_Oqj-^uC4WzpRbW9KkoTn|e9 z>;duXak*d6Ca!*g?fvx6&u-tCE5`sjyn%aWIf-S}?q1O*S{CmYB+nhFTv3i3++uHU zi*;_cQ+cuVbU!YD1ANDv=d){8Bi~sTZSi1WT+-$y?l zj_;4(9d16)7kvF+A8lS~hBwEDs;$q#{E|8qvAPb*YG(v@UlXD8+8>wHk;IAkzHE2s zJ~QxT)8XN@Md#P|ng)hkC|bL}K912VP5nH2Gx%t(&U)eNNr{KhvWmv;Qe6#1R$)xD z72$+qCo2$zFESO4r>%{`WHBZQC%ybIHcDZHP7eY-{I6;_Nhnp2N zVwVp3t;h&emdapmPt@dva%^Ee_M2+W2==+EixsPyw7{$iQ76?yh3eYO?u2@38TC>A z7!f?W42M=(x6-R`U_lA3+Kv~pVXD|blc}Ec4GUNN3f1iZg9a-hlCe^bsgFh)u-9_NoJ4e;Q(;AtqHQGGD$8E9Y zB*ky;c+J~bH3!{=9qJM(nhG;^V^l3=l%mSYU&En0Znc6cUdoxjf4?JcMenzF(S}#c z6`Hh?xo4VA?vN&z8`=?M4tSE8J~ypWof~nHi90)~YZLWdVlA@#k}eGuc5(Gm^b%K- zOGxvQ9Jk>n3?b6zEt^yDY@?XVbd3IQ&SJzol%_~1WG@km`V0ZlF4;v{8$+m|)(L~2 z?y=~Y9FHGm0n~58TrZ1qWsV$G=PnlIA61Rc65P3w3zVMxKB9za#9lMf!}`yJsKg=+ zp1zaNrssH#)b5UWTv|86R2WR8n z_H&pw_Xj&~fWaEug^GQ_qIOZ7{!klsQU_&K_*%CHq!fg#0lG*HNI9lX^tGuEjWV?= zS!~hoSTa*E+_11zNl-~`pw-pyRTXR=bZeG0We!EHq~!5>nA&)ddWKsm2q!*O{dJXw zmz|0!V@ACQ0xlip=BkRxWkIV@uDtK z#bhBhQ9x?6O%-*KU8yxAc>oGgnGFFBS(iAeMorg0enD2*8f~nGuB!pGX<`jPu6_VN zd;Ii^0b#Uf?`#v`Bji=}4QtrV6c&t1zddgw9C`S0^ntx0FB9O&Njp2ZbhsLOXT1!INSa~pzgG?9bLDw zU{_piPIcFe_yW`k*_-;-YZd44xtL%KxB)T}$9MoA8Vdov!WP3CGC>`8vk%;&8yK?| zQ-?+RrTrB;-yjPj;N>}lYk>inDS3xL!&`)V2zTd8K$g-RQnU;O+5Q+a^c3W-*v zG&eq`Gesvm+c;4m!7&*Ky{q=1%~}s1J1u|b)+`M13@qX13NOf+CM&ev3?Jx8zeNaA zjC2=ANHNkV2_beNY~Y7*iV)-&={bUsV!TQMviC@M+(=`V9_a5$r0B!o0j@34G#u?YTQ5@KFr?S^hYuH0C_W$M+x{q_;)4qYjL8B+}~HwM4N8u zy`@{P=UNNmBYDGIX)-wKLh3OK-qv7Q#V5^}fx=%ns*zTy1!O}q3WwbIm8=Mj)?QHd z`W#vj$Sp_fVCX47Hf2Izf(>2qF&?vb0|J$EL2=eJzriX)}!kR2)_v{B_w_76amoxn)Bi0!{ zp495(=<{@+l%uVK)yL1viFMHroVQNB`t;TKgEFle_0^$WN5!Axw}@P?a0k!#W3MM? zWrY>YE-vj~NZg}-S~Td@`uZkE)vNBSH%^(d3DqieJt{X);!Sk^u`!);Wa`Pn z`*Pvq<>Sqjv7eT&-!iptEJh#inBO}ycC^c}=iMSJN3SlQaZU5pw2^xM?SqrA(_Oy# zXFIv6y2%AhWzdX~lbi2j z;Q&FfC26j}?iyY0Iak=s(UsS8y#)aNiew+hBsd?kXUAi`d1HhQk7rW~k+bxAsm!Xp zlDt=z_eS-^188i)mJ4g4#MX*jlRU3+oRWhS))W9QTGjb!#mBFzi;e#(e#$cC?#-!F zN9EzZauZ~A3a_kKK^VmJ?>sL!~P&7EG zIy@8|K8g-MMSFmP18CtklF%>K6!2vQJRMGOAI%<|EDC!klbT&p@>2AbkakZ+Es$f6BCUKC~dyfk(bYZd@_L-Wm5(XiHl z<#B?>O#1aw{L!+SlRsZGX$~ix&R)(AEsseZaAuCO8>_O&E4y0!>Nu~R7mk;ITcq?@ z;SG-N$*Iv^st+~xmp}jJ88kMz12QND(D5j8M01_?>a)jR%$H9G^7eKP@LF+qAOH+?jJ~j}ct1Tp_$+C+B zanv%R$w^!P(I#vM-|5d9u#C0sa7)f)YW*}X@302pJ{t5 zoDHkfcE1-uxvRn7?#}ugY;jkt_Gd#M5aiBg|8ZBiv&PlDIGPB3ruZ*+aWKnEiM3)0 z%Jcva_snrN>zhQ+v>%^ipEhv39m@;dp>ikl!-4 zQ=Lf#lC!mIUpic}ay-Q?$omwx{M%N`qGMg!qLt$XQBe-Bq_yZ=8lc?uJ=Xm%9ce+H z-)OEXuXjFd(i6^%8No@ zW#Y1^meoG0Jbk^gI$^js@#yRDXeN+cY&XlC5^=rfx06mN&Og|KOKoD)D7=-Jb*#5l z<>||n)d>SVh$jBd``@2lOb_p*60<5aMhDPlA15d5L^g2)7l+A{u_RPR?*M~?@4><6 z6cSURVCygIN%6OJK7-@>Sr;Fk4?f(^Yku#tl^k?{RX}gdLdS*!(ZI-j=XwkqH+MK8 z2_yKNkm$&}0tPd4vs(uUCH;r>t)Hm7?dUG=_N#BaweUjO6CQqf0?QQUO3w}`I8)EI z0dXY&DEGRs@n}$Y$gIWjHFckmd_T!PY?w@=uWM4zSl#%6u3IBb^i=fu{y@n~n9t}^ zHO!kwqOO0tWpB6M))u|=JFR0>gNI&OUoW-V-D%;oyKoz5e1+eBlfVP={fbtdd8`J8 zNSIUn&1C0Z{Cx7+Sg1rM?st^6#}^}J;|?PD$HfAO~i(G5D|Mn?cSS)*Ij7E_@lLeRFYR z?gWha0sb1|2Qche(10J{h!UEkG;!<)LQFEDw%gxLh#2I^Y+T_W zM<}k81yS(?6o(QB0ij_Ekob|0<8_hT%pi z?c7i}!}n0wxx+&Kdl^Nu!!a}!NBI9MiLSQ)-yH;rb6+e(nA}RQ`CLk7;!+i>V+M?l8HIF|9nmUe(O3B<;iNt5Ps`$90(LQ;E?uoyY1aKGL(cev_ z{c!xcMF@;W>~ewIzbbMuDny179CB~UVsrUKsqe?N+WK;jGWFPc23u5dnc^y#JYI1B|e~Q|v?h5F1i|E)aw2I?0RTuN{>E@9uL3SHIpG7cGyx89NNwVQ!+V){7yuQB*Y;Q$vlUpobRFqA2N5lyxb}x)o%63p0R(8Bxj9eV`bAArp3*xukS>8!$g=oZE}!d4EjOeQaNSY)=7K<^y7% zJTVsmKm92?f;{$FbWu@zD5^j|OZ98?1UhZ9?L1#a=W)v4P>p{b8*Z(*PDb4lu7EVl z=BM2mA$_lSerE+|jDhQy2ceBPpGf{~{&W5JG3&{ozlZ<3B*17KBQE_)&4UnLT15I* z;})Dh@jCnm&*w6}f42qy;i-6u9}X*i6Mu;Ct%4{{BWzluInPO2iV#*zfCES#yI}DK zRhoWOz3SuBMY(Gzy;&pW!rghRCy!=gn*JZtbrqkU#RjWYlFJi!T5RVAJcjd7E{ zJdugT9I-(DR>AlBNgiq}cbUZ{RNG(pnT`4w!}w1p*Ht^bawx<0DbO?C&bUgGgyDm zzMpLyT*qe0`%8r0>h=Qryudg8kIVh)T(Hsxqtswwj8#F|Axa#rk#0Rr*PmrQ&Vlt$ zO94HeJE4Mnk9t=N&90&cmuURS#o8YsM0-+PD*o05dUOkd>6xfQ%u4~jh#Y$U3Zuhk zGyA$fKP5=HT3u%z!mZ``1L1e^+Ukz+uY+3%=|=15?p4`xA)dy!)9?p<@5teq6Fwol z!;6(}f{PLb-1Qkwz*|O5zb?91KMJ-RVA3`dPQXR+n=MWjW%7p-e`s8@%j3(n* zoje_xtMPVxy@e7g&fdMO4zAu6nOt!m06+R1>~!4T{DG5iRmRAzTm#2y5S74Tg(}%3 zZ)y#0mtX5h2HayTy#UGwV`y-MBUN)V+8`5|;25NY2BPd7WX>jUO zDM!Jbzl!iJIR8g*`z@d}`4)IO{w>&X{1*H~8=g+X7yruxI$8L)2j{;8PX7p;z6BlV z-vau71Z>{|%izBR&i@FUzXeSg-va)B1Y+Th(W^U#_dZ=|8n1olLuz!t-V=2@SNL>I z%IR9w$qz@sZ^a+a220)yUPtfuI^BG%Gc;aj?~T3PDeAmO+TtTi;br+-!^zVqK)!`H zgPr032t9qUv;Gl!86}Dl_?zg<*StfN#mn&5b&a$&{WENYJgxGtVK0Mg=?1Uu_d{Hn z41T?|ax}gMuSOF&2A}PE_*-1$X?!dnD|-1FlqjS4t7pg)@j)lV^YLd7H?$r`C&Kga z#}8xHr8%0VwqE@ee~?q!u5b2tqknX_uc+}Es`y#n*!p#MtS##L`CPd1@1*2WN@)Xn zI#f-J=3u7M2J)Qjqnhc3%q%jRptRi#wMYXoGqxG*8UuNDih6;<21Y zv6@qvo)N%vnKEWGXLpAtHC`WPK@^8J}{Vm`!D6sjT9506#x z+?#tbpk8e;>IMb^Ohs*k;gId`_ek?bKM<94w0iY3dnw9-?xd6ORLN(MPLg2U2Mn*} z5?R~rr2!d-_@xqkC&AB-oTtTK{N^-X4d}od*eeX(2V?fxn>nYZiM1~gGY|Os4-7u= zbpvKEbf5dwH7`J~dDs>3wJ-BKKmdNmPB_5(EDS%;wzwHb|CCh#afRjyor*5cY#ju9 z4J14ZO+T%5KQL{y!+h4Yz&z2PRx+O1RtWaG?=HIj+V8H~XotJ+t~;VXz29BEod2)4 z=X$TpPLPiR&x@X*FOb5;{*;?%5Mby}bctRf!Kaa4bq5zjA$0Lx^ik=t^q6jxh$pT9 z!cAxpJzWDKmMv%)eT4$!l_#K)B?K3Td+&E*^ZmV`uML-+or)<| z=WXQ`9QvF=|0zH6-l{2Q*T&*Vz!u%aX&eRQJn_LULK^o?WC(fPd&X{Na%!lo<`a^0 zc6*KdgbSOMoNa5=(Vvd>wJ+}Kn6v=07+iNLPbL+C3+WCH;YXUr$uXJtXPb$@+3FtL zW0;$$NLC;?dMeln@7-B_29uwbbf_Ki7Bc`AM~1vgX&eHDFBOy_J+)zjdj3 z$lIDVC8KwJ`5eoaDl~ujDKcu%9rnpn1~a~ucbGyi(Z)k1yPfy!rf8>RxVJ3hlv~IV zsOch~kRcXEcl&K=V;^Cc5K6{oZ1BUcAlKy7?);{rF$^aD%6ZscTrhw#HvJJUD2^^b z%Hp3haBndDiIuUAYrns~ei#$|Rmx)CM4^kWgxUCOot0!9%%1H}Htb%biSm$%GN{Rb zu=ntn1{M*zpR6e4sH16eFxSD?`%g8D_w))hY{le*8nN27a`*-mLLKg4W}Lk61T)<4 z^H{eAQFWLA-)t)(e*WSKlYH}^^J2`aJQJTK1kSFNWcQ}-RAUuwg)G8sQ(9i|zcUh> zte6|_i9@Yw+Xkz0o6odgO_X17O_O8ZO{CRrle&I|oYk_^0^lD2QN_j1lPkr28OS;9 zJllXoJ0Sh+vimbC-&%r7?gwf?v15Zu4!&KiBQVrZi5Qu(_tQ8$Lrn@0Xp9#QdvCYB|q_i-jRgsyR3T@lJrKBW7!V zA+p$fBYFY-C*qaczatL8{)M=bt;5k9GVmXW`Gk1?j>s$djR;RkjviN^^`D5#h2j5( zsNJ9Zjrg|ojR>7e^B;)6FaI4;O_uZ<@!aDZagE_W5v6_q4e{m!5=nAoqcmOae8Awh zTwI?nx8Xsh?p!DGXPEMgnx_|XI6=P{K~NZhQoJAx2gD8+6e0%< zA`9Fv_d^NNEdydiBXFc_FF|9({&D55<`(up4k0T7Lv?xz7of2c*S3mEW9%y#AuFFl zWqPv}AwO;x=xi@w*%=7k>Km%jRlEg_k$vQ|RBmC}xB_v)$@d|62B9$v5U@{6knMl0 zIpY*72wf-9mpsnFDLc3WR~&ID5Q=XT>WwOdu1rzndIT@#?OB8(1*Q8CwxqlD1$AKy z@Qx5da{|HN2!YWKswtfeV%I$4jL@babnin~_B0El|JeXI<%H84Mf8Y3XYwI@ypbZ` zG-x^E2r3NOCe@d?D8(Jzz64X4al{ag>l5xy2!v^f)Z)4UtL7bPfFT8;e-W~xzi zv`TM&4EedU(6pHMFJ_(KznL9j|7IR$9o&rlFJ{(%G4Emh%^YX_4|5$M+qBF-%ys{l zdHEk^oqw1eVH>P1|6z87{fqgJmHe7Ns}9SUBvR>qu1VLcg-uVS(AJ z1(D59&N);`#U`Dj+*;YGzcp&tMm?grY`RVzR5OA}tgfe8yQm~+dRCotNUd9g-8_~i z1(RxCKDRb%NYgfJIH!|ZR_3^Q?01MH4=-BxH~yfOZJukFkoueE-#EacuuHlqJjq^J z{Wd&b6c*KHNpu&6PZxPi5*5wy z+y-%kFcDrkmw%Vz0GDTvE`_yTlN_XFXT@8P|j27fubzR&ED zUf<4eB>wE>$h6}D|3Ck%_k5d)ApXvKZ2w>8J!<@u_o$)&?|F|Jf8{-%d?#O^{FV2( z@}2icC+(I~V%Y%uG6(pJjYU_H;Fx8#NVkxwRLUt1bz_TGZb$2&gSKD8)<7BM|UInkhbn* zwunmY*a%5>zYKirl<_<}${>biwwwh5C)Cj6=p@;le_MT9btmJRYqE-& zycU9ui;1P3Tfma{qVirB*|a1^Se1PuEff^ZRK$Fn#*yc_+m@PUab?G^yQN+h%cS^^5}fllL*`%F$A~_ndm4-Nn``;Az-)I_Z|@e@mj1v#TBQ~)T23f+icZ8 zB*->PNs}3)B$*~GQTwFD1X0z9q$J8>dQq?@ zdGYR@&_uMuH@;MvM0yDgpoJS#vCiF0LnqBW6c8}>PGFfP&#-$crsT*>LXw8L4q{qr zg>h*kb^g(b7k2I(yeqN8NJ$W~)NRYe%E1-o6Sq7J-?1PeCIm4}X`vHbzY%#E!idI5 zYcf7W8*p|xC?<%T!T1IFlzkBsV=`w%PXk}@1T#|!KjRH(j^);$$q*C?JfemZ-_8$% z2|E=kDPx8}3%DOsh4mIprX*g0lRv1XhCNoQXd_BX=qc>Sa}ZLVRhQ<#^@!{y(fna) z?A~9Eh!ZX&qFg(MgXGxXl52%Ikpp)J+c+NqlB*~ywv;gg7OioX%zBF6CKgF$yo}fy zwCc1712;3Q3#^P>BmnDO)7U<=C@6@q@07N`st# zf@p?jSGS{QwgDg=oYyDRZKF+RAz6ab>MMP_zTYdxUnHoxz@clD=F9>^lqn$8DnJD1 zk`Awlcv^f-!nBpg7aZ0E$zxu^l8P{G-5uJMYZ4S{zHJUnh5T-ry(1J4kM;enQJJpy z@0_Rr#H;iVjyEe|78&@*gY`k z*|@%+gO5l3C-*V3!OvopkCrLB)}X6F{zqXhb|Z^j4#t`r6b+7e{G435x3H}GBwx@) zkH|g$t$r8(rwX{7x8&nRE9>9Mk2&ATkKPb5h$G+0k9b`fzT`}Jr7q3Nv6oqAjT)CW zorqfYnETuuruFrWkEunc&hYguoFDad){$$g_bfWZ_S!b(wC%5$Yny~CXl}&lCj@6* z+xOWZyWUyF67H}|VUsBiyezd-8>1b@Ud8JB+?uoO`E1(1iJkbE4_beg=c0WlFqYxu z_~OK2xb1Du{jd_oT<0TIwSDBiCKQ$VX?(sXkp4*sw{U5W;r0f1XMI}|+tVh^&cHX= z=H}GtKC=7yR_$Ex_Rv%8k2{?QSN4WJ8M7-8uH?4MX<1B;1|T>JzvxrzoWTL-0U-Xy zJrr${%dSnzm$lIWbd2o)Jz&*-?R)t5UM5eQRKE{X#x#>H_c4rR*#@$2tvBhMmiDpl7+Y` zp7^m786n<2daSjfZE-*C*~hZ(eX9VppsqFkyaSxm%Xe7}zsda-kB^$~iw=MgJHw?L zV$9y4cz|D2uGHf@jtXwj z>G#oBBxdan!R;cR`dL~rPYqWII*y6Y3zIzsXtbJ{Tjg5X8S_eBNms0+lyLcIb+WAa z7&|oaSwr99t9fb~`h|h8)r8X3!?Tv$CpujYkh{5?Zypzi(S~63@g{Q(|DOwRAsHQ6 z@b?X;a3}x(rT^J!`G4IwFtf3D*ZI(LJ|48*rq23-mtTD zdciCpzuH-yt$sUBeY$e#cAtk0liL0WXWwSE0df~TP2jduy-@ZaIrMt+=+bWb>!;ht z5dhK4TR*cLfSz?NP4R{ujBhF5D_FaaVDUDK#oGpq#skY;`7e-nofV#rohuR140tAw z>u-hrtQV1G3u~JAn_$~MY1+v;sF|;=QB|viW{&V%vj|G&QWp1@20SLKrk!;;cDnJw zEb&ROH(zUp2bTT-n+ZOy5eJ&7!SOLOff-*oii3y}%+bCP3>A;!etjlk)PgLOQ4JrK zzE(fU+MW+vJtw!lkuLAIVP^!IwRK)w-`7%Im}qpKM0Wpi*SONE0X2=TE$nwU?%m0dYm{6YZkMv;dNf*kjT>T(dyy=l2uqHVz&{FLH=I)KBwj9?$Uh+}Ao+wP73P2f z#a80_P<}MPS(N<}OO)F=3}ai9HHswZTnlI;;01xUXs>OKXCE>-tKiZ0TuG;*7gRE? zUQ5?V;9qgGPL4MK4S9sXBV{@9Sh2}eseHQK-l5e|TQY7Kg3#WI6%l5x7PZ|@`lVD? z9TuXv9zs!u%qv>wcRXrD-vC#^o7%g>Gm!U1Px(fDKWKBuw_eE-=gaNZ2Hz{OC=^8+ z6eIf}gylxqtK@lsBWr6R&J)?UBEVa#HG#nqXtUsjL)4o|w85zCl@7$!Y5vLp=0{NA zOVFphlQ*K79)Y8>C(u+wV&~^AbFV-ef~HF_mU6!&s!2x>-#-rDG5oymN;t(^RFI|8 zpXHLFtzJSog6I&KOh(@{w>Wbtv2ZiXi2iVAk58B$Mk)oUQ}ipmZ}%$nMMsxxG5@h! zSz&Sx`7T7|$S9^Vso{3ZIalhYqwzJXBo4&id;Db2#pfl-W36HBg^msnln+1l6VQua zMtc(0|EuvK1@F}|;cp!RbD!F`&!}p$h>HDS<_5WhZ3x3aKE${E`HNuyE{`a*a zRl7ZrcoNwxEZuD~YX){koHh$Ylq{p)aSEbnBnLZi>*o0JB_v5jCY;cL3x~XZ?mV}0 z;vL-F7S}(+8k&O1<`K2FG0OeofL(fo^!s@xXGeaMo)*XN?3VHOKXC}9S9ARQg=si7 ze?W_6SGaSwJQ@$|lDO@`A@me?z_AX;^yL1wY`6)0P0umaZ~BhLh?fvHVUmipf|EIr z$It{1|M*4_)*GgX!EaaC2qvvZFJz77EFf9k}B5q6`Fx4CO`D2}m8 zF+B_SBEe*WaY)V5osr|=pOcd>6IX7Iezdvzax%0n8uih~{kSr+B%9)CxEnZ<*Yv<1 ziH?ZvpXW7iznA>${Km1GC^wESt{hmpB*&Ncg+Ot5B>809(d`IFlmTBG%B4bYcQ>0P=eo-L|5hg$yTB<1x?s~FuJrK}n&w8(d30{IL zeHmM#iN|T9-Vy^kKc+PU^WXHubb63|(mkKq#?-M?ro*nh^nz~U(M-neK+BP+_;kbB z;DE~UAOba`LG~1rwIs$ZgGwgBMp4Wo$vTmgkpUy?_4!S$fNO5oZ&(TQ!tY2aag|6o zWMcuzm3fNYO)w(=N-7_rbQlBtnd5bLj^;!>!iGigWNLulBE=~)Zkg_sxj@H=IXtF2 zO(Kzm7wMc;f)q-2k|-#omP8faq%=O?P9`w(R3O^uoFqu65hNh2s^vxK%?IK=zXGxYk2ca1dI?o`z$F0QkaU3nz9E;?kO`PI)Gr1TEeJ>;UJ6>rpQBGU=7>G%PV zPrS2fBh@^b5j_j50*O1a5Hn`#nVL@G`v z!^#$u*9DtatT{+y#b+wfjDB(TuiEa4HrW0wWB}j4Rwb%xbfBqZa*UwpX$aZVnZ<>2 zKaOyS8sc^PV=Ebw`;`C8h~DGWGe~EPF6lO%TqC7c34C3*14&yW;&sbhr?*&JIc;&8 zI4(e^K6VRO{$U!^pP>WsLGgZav`=MzP1!jd&A{f@P_>=f13_rl7%4L2=P6qhy$3Lk zzc@!(FKpTtZL1-1KVX8-yQB%2xWGY>Rw`$ps6WYiT{<5`w2(mOML=F5NP1EP=ClhH zabFdUhf0HD32r*)53QtXv{a;86vgBnmpLbcSQxpn2!vYaQ-&pkZ?+`qW%xO(w$G_r z545%1sj05m7e%y!TA8r?>w0@hl55A#u+H-S_@O@@?_D*_Pu#3=(&0y6GeW}P4kp}E zKW7pXIIP9^S`kc46-qaD#bVe3C;}m8oI}bEYnJHmJ*pZOp7QFmBGvs)aL`j-#lm*( zPSgOy`2}9{3}`^d9d?r-dI1XbNod#laxaKINWEK*0SeyIUe`XL$EuhWX3oKZVO+1Z zxGY&mV?o*)wYuuw@^?fyz77-Sg&v>B4P@9dsr)`#dyF8k^#@<61G+5l0=7+9x$aY| z<=WL+RE%2#eRn-8u3ApDWIAo|y8HKP#BtxJ0|{7G_gYil##mVN?=V!|il9Hwz{G4V z?G&sx)k6b~-cTjrJ)>0U3VYUn+5}d0hGc2{7D5W;)k50pv8BdV13MwsF()^zUWEO! zz8%+^rlo~nNPlr`Oxl?kKZC9OX>hjxgP<#N1om?QI(p^Oje_!aDzB^9S@+k)<>w^1 z#*eGXt2_*tN}z(aC`pWLe9Ec44h+BFFNIoPqxsoG77#*=S^*(okYFNWPr9sIjnC#h z)k7E0H6VG zAuGvwg;T2y!(R(5`jXXxlKd$tpoK|?^emv!o}MiHYf=-cqp6hMNd!P1ZPcTcdOqw$ z61QsGqA7KgXQL!cBWxLnbvxj0&b^Bn-nGb}*Qffgi!*7?6%2h#A4;PsU)wV7)b;;} zJPel(JVw(;LkGBW`Dw;;M|++35U>|`w@LQNIG^VV)6GLX&3b1YkZ>9}A9sO?>Q<$T ze5f1j^)2+EUlh7mY*Vx6=rvKkoPvstf8UJuLTolQd`T0@ouf_b*`=LW@$NKYkOv|F zI9&=nwvFi&02%AO`yy;;8hHHm{NMKKQIBmpE1&=XYB&G@EdR5GTg=AZ(8W#A#N?mG z_w6LjFZ(qPlrLWY&_zl0ymXatgaQjm|3~YQ737!mgu{~ewb4Mzj)p)mvd^7 zWdRn4KRx0Wz$(}a9hy%U2cpOev*z?``GXkxl1Zxyn9I{1=G7cj8H^M#Lw9_%@fM{RrD7mt@-HF-MPad_viVS-;Iu zhsft?#CvGh!?2ItmUghmPG~wY`B4x9Ek@H0oawFF`y@0di2YiC+6~DzwHZyLl0s#e zWf1@;R@R!BR2m+SlK|2Wc_ba3<@OE%yc*=%tl8Go{=i*0+jL5aPF617;4LOqr1(op z6-%6qmTQ-61z072yxw_e+EPep+VVtl;zSkfEg?~Kw2;(vWbUuM)q78UP@(A=Q)qeO zH( zC94Jp&Pg_KQCftI{WLatnBQm)~K`cE6AaVQanz8_WrMq zI-|n@402{HtQ~xso}vilcWrG!|D!b}->jNrkrV`%$nw=6zns6DU$WujX0UrUoTt9D z62y;|43$^}u9nbspOb+OaloRg&0+|-%VT}d39%JP6s_VsX`5ItV93LSu;g1l75~1S zNkrxg8sg}^n<|WKT^ut6>gd2(cQl_j9k{oa3LVT&_z7?O?o@#<$k`nG`dcRBtfH|x zOzpTR*Mvc3kvW(YQMBFEm<{W!;wQXAAh?Vlqd?8P5>Ua&BoP+2U9$9MlA{Q(t)}Wt zTt?7?;d-ID^LC1?;*3v-YmN5=>7=$62yJ}~SBwPzQUPP$I(gA2!9B>MYQtY78vw_3 z38T&bfy8_sh#>4e6z9^cGf;4V|5WL&IA|nyGz@xdZGe0^B2>SvgY`YYv5Ay6pV7!% z_`dk_AQTGaX*l<2!%#L2V1&i-#Na~s%dsluL5hZ|L-BmpVJD zH)Sne(l1&_ggDPBIJ9-gNW|jlAARf`EMV|eatbd`)ydLd7dd()P_W^JoB3Afs{uOs zb{~zeHDr6_-nu*%!#aABJeB$FRzij3`DYA1s=M;}7r2`^9nZ5`%=o!Tn z1-uK$bkYSB{}&&{-*ggV1T^~hz<=>ZsX;)5|Fgdo?oO62ra(T4e{KJFV#VD_U*u0> zMf*=;#c#EisKu~3E1G=Ralfda{rMk439)|&B_vZ0b+lZ7HLYaBSyY;GS}s|EeV8xb zZ*)97BoaP*^Av$=)ZaatJvFrdD)@$^S{Mcs%}d=EL-b)2b}(@w>W9hjQwLG zmXTi%X&4d?sv0dsaO|Vo2Kq1ZK0fGXnCjt^!VJQokoI#Kkuk?ReIMJYXs+6;288V+ z8_=y09g|NHA(0Bb*Om5xSv;j1lP?>3(Ca1pPZ(`vUNARb6-_{QUG=u0Eh(W?r2Cll z%!YiEv{^Z@#o}fPzrYoi!4$L&BLF%#$t1JBqYL^2-U{pBHqI>VvG^e8a%X;QI^Na6 zthNn6?v9P=bR(o5agRA;LAizMx&(GnCWz-bX4-!VBjIwa;ZMq*%dwQp<`J#52r8P> zCZc)3%)|^j1qg6C?@)~sd&}hyGPf~CEug>$#FZATfPt|T)fmr0+iI0a;G30DO=(q( zJzb2iHTBG3cb-X&G_BDoe^ng3vWxMpBp`RydKlXzK2z9D!4vba_(tY})6aNY0d1CB z;`#$!$Zy{z0aaX$jHg#p(#$tF2MHAhZB*AGOM|^LNQK|s?f{H5)u2jp+^!m{bdMKw zLmgcR9h07=w0TGQjTn8dFkvRi<`$_*bxj$4_0p}#o`erxDKI&UD@z}5$OwgDg=;E% z(U`d^kb?lay%x|pwh%!Zu8FhT*_Oz^Zj@xAIb-0HD1`$+8M0J`Prm&^UU~JHP&&I~ zfSQWIHcVNvlz;J6r0)Gw?}qQJvn~@_HkBEdM3Zb0r57P$v;aTSU13SBBMy9cl@{IW zwz8{nR>#jk`Q~Aw`CN?;>nOJSKR5 z-R@FL&?F|Wrx7vSrk~jmlWjP@=OcNK9{6D|s^E?wL=Sn;y4Za(X3`YAEaxzVllK|^ zfy2dRCG_Q(&^x*23;P+E!U3$2{{>JJzC*xmcQFe}wERc-k01MdLAPWjaG5L`PBB}}*;K9hY zg0SCj5^s(2SmzDf2v>=Ojk6?r^sv7UBZP=b>%xOi(Yogw=_eY@OXJuyzxdGv1w70$%Ks{AIBYLhUD#$Ivo_|UMq2DQ6)FFA`OkIY2o+i>&`lKz%l z!g0A!NJ^n^aanc<+HcJ`pKB9MRcKPVshikv{QKuY zC7u``bI;umi`D1MM4sWFG^6qYS3V{%DZxRy#%n0=Izle3P>NeJmuMq?w}Dz4-PY%y zDtc&n#OQwEZ0suZz&yI>1g^?IOlM0!Iydn6Dla^^+4fLe>uY>{v0}qyjzD?he{a+zQMP!3s<>W}~a`0Q3TnG;fYrY4P zHQ^zD8V|fO_`v>Zy z{`4UGOCs0aYHwA^xvpAfv%I?-oQE*!sLT^tgJQR408~-Z1<&cgeBUJ*ZaJTd`+!V7 zs%rTIF5Pa!P8ce|<66mhLH73CQeE4YQu+E-n#P2G-MZ^a#a5=FXfF;Lad=LoMfxb) zFEVo&s5xrKuW24xUyjh)T$3|32CFD`6OJ>`1f^$lBep3j#T2@K+ulzGLHbEIGSg|P z4Z=?fpu(bVd=*T|Q;yi;lrB$Q>aMH4Q=kXL^`1hyA zmdgZDl;v}R@(s7d?=M%_+o|L3Fa#yjQqNWI@3-S5Sl z>T%mQHMIq!`r>iFf1Oyg>xv0%CU1<+7RXy>m;78jZ5q4j*51is`aw9k<>%Y|PJuS7 zF?Vp0rSFb$Y3uU(Eb~H>F&pJgtMw4~Xx9CH=lbB{?J3~Zv@Tk!5#sw$v6e{{|t zZ1_84{p<%1*GulkqiTDvj@<-RWXs#B&|`0wuZxq@Yw77Na%~Rn$J60(l6o9{&c_d< z+lOIyf$ZOVM@hYOey=Ke^qKxX?~`V|8auSu7hm{ANELi*q_JyUFpSK$j`Uqm8&UcC&J18@5HZ*>*M3gkLNXL z9jNr&e39oncV>?5FVD@dKkfWG*Q|)&Hjb{<;5C_Qtopo~=fT~MoE|F?JbV58yEW`- zP9NRsYZrE?14ah#&X1qeQ-W@@g?I?IlaIs^vIRzOJ<G)I<~vrFwfQuWln)`+Q4(ATHkzNt+Y z*i4mlAs`=DuRJ8ip{p(|_Gqe#O$9y<;07SXv0JubcytxSrlDSzxON5QaadoLK=gYS zPJ|ew54lcB3OmREz#o;co!w~)RM~#zzjD;>X~ER)AIy-gb6e$A^CIC|JvwGsTE{mfk2+dQRlkH`6dq?mEmg!B zb}}2bg498hgHIo{if!XqYJ-96*}}>g6jPUFTdMoT^DF))-pv0fe1dqw(g?Z&*G**C z;J~VP7*?k#l1E-23-I)A@9wI(yUTa_DNx6skfR&1Sq*M^UY7H4Ad4CSYjr1JamD&M=*MLm7JEn4=CqKHanO_@6rM^eO|X*A4} z;jEMBQs8vHkSZ!n4%@FWC#t&z>CG)aFOWB^JT%3%YSgCWX0A*YxmpJeb#6H~yCPNZ zySt5!W(ZK+(Co}}6y4B}IKHuL$fd5#7Fm>JXDmrQe}r!#vSd@%vu^Tsc5F~-W;I|g zf@ZZ+FIJfhOmjQ3Cya?jXGe#7+NAnGPK8b3@#U_O@9<)c!)NFO+)T=P zdTMW+Kr%;Gf+Z*g&vUMkDfYENNmaFhW?363u!5E_PI}y`4Jjif$f-^zhw~C&c;kx| z2|LkwxR3aR^_zXhlIGCr)KOlB+h~aCpO!DRO;XhKZ*A}SWwC5z*tJ=MvzW9*U;4@f z{avyU_6G1}?a1ubX04~+=TmvxT0 zgK|L$@(!=Csezc-B$EMq4z#$isR`(l5>e)4!^{g{A|am{@nTJZa-!kq@gFfJ8eg>x zA{fEL2J8RGPPC+4ISF`^67UG9W_=EvsX%!Q0{EH*e*PB-Gzm5-5oli2_g^M~GV?I- z#RB~N-~E_Ouq-@;*-Q~*jjnJUnRU}u?p?mNMCrJSoOKn<&D?UApox6MMh-3I85elL z&0El#JV?SzZw+^-68L_)7hdcxq6txI=w?;8knOcuN~yHp@5hO-;uZyOM!ih?)=_+! zJ|BoQFNmM>F!_})?Cg(*5i6@GxNFrq1MXu$(_c37 zuTT(|B1M2k8>4$7p{H=IU68pxgq9@@~}VtjQh zeZvH6nnolfYG^%$)1!O%G}fXU_6dDdfCf(>xKatoV3{yFL z_%j%#1k(#L6Kp!;@L{i&XdePy3DSi)gj~GQU2ZlCqhZvzzhQL1XDu20)HaxGqTxe< zYI1`C^rYVaTu_##bndDFR8FBNY6;>{>H;E2)+Ububfj)27&2&f3U<+w?;goncUJX! zJ{4n^H3AGzofk(W)D2Y?0P3s>`Wo-LLZNlu+eHfA3loGDx>Jp+1162uJmb0<7AV5> zW+-mVi(P_(z}R8#wr~p|EVpRsfjlobYJ|Tj!a7&40sRvN(FI|}F*E#+K)ce_K_$k?)Nmxpgr-+OPtufydO36wZ#9mfa}O%?stc zs-`)uQbrjP0`@79O_#fd-NpE3mG%!>EA~g4M%1}(6wC}7hmx6Jpqug5c2_{RM8Er$ z6CMKD2W)EHQ<5jAziNJEX30f)3QPoHu>hOZR%|~IELLZD8+wT$rgZjXN0nFlMsQay zK@yE5uf!EK$D4scAUR|uk}WTa=2?R%KM--mJMMCv5rR4?ik5pBEoqlsN)jpmG>pK4 zIjWX4K>23mg%$m&S#mGQm#H_`UH%M|H_5iM49Qo7`Ef-_TM6pP|@x%kX5C&i3t zeJKGKR$&AuMsbeEq0Yme;}Fv)E*t3Qr3D~nwQlE+0hE3{d=ZGAZ5V0gMv&~tSBmgw5@Y2Ngsk}uR` zmY)`P%_NJSnUO2{&cSwhbbLTflR7<0p_@|HWomeJMK+yuTzy^s=*DJOpp$yOcwT$l zFR=W>zombALlc)dA^va3{Hovl#h^H>Hj%||YZ0|sPPm-TU7*kF-WD-$|MDDE)VVzl zRPDRHLV)WD53=CVx?WJBb#B;#o*hb1^9hf?;MKYUAJ%G?-IhT2O_J*BNX`b>b{Jf>@1tpJ!DgsXe{g$`E6*ZBfIuSdWW(0p7!@h&u%TAJVL_WT)%I#gOWsb!|duWED3Fl3H>)5BR zF>BK_ry6E+?Y)d?0t+ySUPhg+XEJZ|gCNPoL-6-5^Nao*1k5QTUe{!>tEdL^SdWCaV8&MFj}HRv@HUhXFzB*uQOlSvK%qPsG8c)`rI; zCH21V=R6?UkQ-G*Mc5Uf2wHTkzF7!273-ef&JAb2wf&mk|}Hyjs&>J(Ei7}1G3yYA8r z-i9w5*b+<|o$`lZtDxElEaw>ASUy|Sy1RjFK#<)YTNQ=++g~PAfBj|B)&DP(x4C~z zW{Vc2`HWKppY+(C))rUgefnCh;o&s{o+byl|S}A zKvY#4ylchzDhZQ#D7a*IKLGZp{p+&b>FZGZh;Is+RjX%QFozxt`MXssCQEiA1=)m9 zciwz{k!N=($F>4F8?Aq(VR8tOB$DVArs82W;h&x!Dz~(z9HcVi$)F3|qN(nf(f_eZ zXU0h`E0G-R)m|bZc^`{y-<2e@w041cKwWYs2|iUfMM7rO!N=#i?pqb3{KYD=HJz`Sf62*ztG29t&``rMxa% zsCg9OBJ5q)^{%5iEV_U&J=f12lU#Y0@`$$`HrsEf(U^iFwH;Mr2qpQE5ljY-Opxo& zp2#JH3xbd6MDpH3$&I%T7amv3H{g#VI8|Bd-OcI+!5NPWh_&^v-DQ3f!LIiel}{bc zjE&#yUdLl9J7rTmddKdr{1of1$t~@dJYTOYlbcqLx;*ZEZeRE3cXG17-XVQo_QGZO z_;}cezL77KftLdqcz#CqM%{tH`sB8QWZ-vOLglsDHJF}FuU`4Og6`&(pWbRZ3FAn< z!?C)=E>AzXcv$IvmFx2}0Eg-QH<5<(tek!Sxk!;C6#Pid^&?u0?k)|4wjDo%|Cab~ zjPKhzHt@ z59}IBa7b6>{iciV=qc~Ca{N|s+&R3m5q053)0)4We855g4I0VhpW%9owd3RNf{SIN zf8)59!79R;KqK!UG92qCrS6<2#kO33SLw4H>aJPfPd^l3#{C_q2S~%V$26I zs{*k;&-dW>WU^eQ*30!(FS812dxnw7X^j}|W0tI%8V04?SS4@O?d9H!#SXD;b=z?F zke~L7Jj;utwD84lhii&ZAw$r2j-24OR5WX}2l|F(Ec5kbcrur%39<}1dc1qIaQy|a zMq;Yydy++%u+{^`tXf9elI$3SkBrJqEJ$pS`be|K8L2`3X@zdF>E663@3yIa%@c{a zk0wFrt58J6rDrutWp4fX>dQdft zDoyGvz*VMpuwn~Vr(V`CF=NRMRut0SHnL+OuE>=7h^~)Rr8I-K zchbe!h}UFg52i0SvJ==DuF}Fi0I9nX}^2~Nb`#KAp zy#q^jGf1{pf2jG(vE?L1>_#^@pY|)x2s5C=bH|tQnHd{f(AFiW{5fXEE3)_LVkpzG zIvk%vnJ!BD(nh_5EZhz|VDW?C$}>ExZ0gMZHn_za$MVOZ>mP%5a6X=9P>lhBh~t+=AY=A|f(DUTf7r;F+|5HsLnJl&B_Ts;_ARIxME?5>`H| z*)nkI_xMDud$GP2kE;t`>WJJAk6XKYCNw&=NlLIM6B5|1w`CueeL&h8HI3v>6%}l! zNvPGqZnv8X{i|7lK0yR6ipgS*Ns0^R`n%t|p*6)=6GW^;JE~=qjl7qcw&Y3L)qsGw zN~+h*18GzG(~_{Hxn-bf5*`Z*x57)t<5XPY%mlJV%RQ25G@hp*M?aW20pRX&B0t8; z6z}*i;l;x#S&_#Pq0+LOcqh6JtrgxFI(KOMXreOUPHbq5%@U+jmxV18 zpT()oX1%)3m936NzprgfO2&MWahXZKCPvm%`O<^4pP=Ly@fH|&qIx4m&h{;KRkqDf z0S$zPz-ld~m9ETw*G}n58&XTxF%gTdad9@od&m+=e~6auPT?OLR`wjeFwB*!+hY!V zL>+EJ&rNJ{9k~5=KV))$2x#)$hOK5)Nf*1#LEz9l_Piha{i46ZNZuYJoEW>tAQGh{ ztuqfmQJBt$NExr)_T@@Gj${e<%go{rWioO#10h}&Z~U&)WrHt#F}ZLh5i+H^fCTqR z@7paAKEO=)Gq=Qsqh<$R*wV@ab`11&H#TDH0RVvt9(vy8Xa=76Y+?#|1WX;Bcn@=_ zL4KF8;K~21PH_Bv;}Ib?vW|RAn6^R|sOcUE!I$3dqbbxcRWdt5x=pr^2BNHWa&meU zqd$#b0vXMb-dQ=`VU0sPo1lr)w0YV+*11DgG~{K+Y<@0MA#YYP5fq7R$WVzuTk_P^ zWd7g2pr2L2N>&r#8VAxu#XG=TtyBI$R(z|k$&6pTu4N)<%K^Hb#|}O*0LrW4H?*8V zs-lt66Wn33ao!(cVemb>OD6Va^iH~Q2Jh9ue>9)ZYrn){SGk*QL zRFR-f-I!M*yd^^+3~9m5K$oq&`iu!1dDEK-$8NOwvjQek0ri6Br$jA2_J5Cwu`U~N z>6X4RuLB=YRmc`9ITYN(Lhk2mSsk-4wCjA!axm(AA2*k02HsAbwzD0>-Qwm0Wen=^ zJVA(#-PPf~=>>|GF&`Uofyti^D@xCm#X3>Gtk1dFRDk#;@t(-Y8D(%}LQ|)gl((9+yI<+yuVe^>yPM z2yr(}hcLUuw}4+%NZQKA^?U4YN6$O()Jz97IH1TT%w)zdo!2vAwiUp@w&tb!g8fEm zCcLPC<+}R7IS9OnoCjX2KMwbaz<2n64NW=YDT{8YCWwiES{WaoJbd=s%yjln$UQC* zFpOc0dm=h?vZlmh&<>x&xhRLtxbnj}3iM_h33jo_f;BxQvV~qzO#);R1mE^`V-@bX z>HPWT5oMBmXCp3OHa4bp5JN??6QX;A_#n0tSW*4t1bAl~0bl)82>kAv32Jf%gv*_M ze8vDS)sROIXz^ks!O@_kWJo%AbF`kh5(AEyj}WE-UO;gCWcA+z#=5GM!ldQRG8y`M z85?;a-{HI<_*oNbus~v0+<+2h|q!#zBz7Io8q7Ab7^3!v8 z**j2m%<|{zzYi6urZB%~N`+g$4( z9GrQEGxlZvQnN)^h{uRL!U?Q$Z0!4nm*?8oVI-`$D8h)8UTTD{BWI;OI**)3wg6cu ztkump0onMZy%$D$TvpYZHuZ9g*K|Ymi%?yFEC>9m5J1G)j zvvWPtC7M9om@GmPk$tC0kt0}Jr`IFP>oFyBqK$PQ9}}ck7$b`EaQ4gaT?!@`S^#sK z8yIQdQQb`#hX5H*ixuCIx~rjp{5!C~^JES-JJe0FV&|D&V+Ur*NTFQy#m}>~9r96e zZ^IM*jSXb^_xf%Jf$z-=WYKK9hO*m%tI5`CYsH~Y7WvMQz~q~2wS3_lxi&x_u@)_- z;`le-?QFzs0}D^aU7!=ECV#VXIpLjI`3k%vxH~tU#+Pk3ODt$>0%ABxh+E`r>vblY zObqYXp_ckj5ZR6#MxCVQYKKesT&*PL*JGb(oUUVaG!iJU$CPQD_F{P(N#wT@PSg%R z$05w}R;J%ncwUH~f#@An6tl(oM94X~vd{{Ea-YdjV5O+6c2>A++Od;l9c=8VO17%* z%cpevbNF+Vi|(b2tbQh`O$`-CZJn-JxvZE&;tR=H=|flV{*#q^HE>R~>wUvT^)_d8FNE%}*-&`IT;wU(fTy1M|h=A$mjYUb{^K3KcjDv~3~CnbZ5O7LE4SxcrHK>K)2apV zNu_Lx{JOYw1@9>#yCRHLszwya&-%ez(ICl`fa=xf^f~_Vc^pfAichn&JhFc0Aurk1 zdbrjC9sA59%49hu&j&H38RSx_f;3%sOW&+g#yWNS_shqMJ=svAuDPN_nm0)t(yX9- zs^A(PR>BqXXe<@&Ys@_+_KLe&w?UcVF6R;v)jsFJy_cXi)&hLf{Fc6R+ z7~pDj|5+OT|Cj@=Z)Rv>qR+x?=lrh^eGYvyR~s9B6K4l~CVIDGV8P}hBg)6Mz9Sl; zM02w)H>*K$&^&0RiXdPlnw9uq#Lhf{JK@UZqIZzZ97FG$_C-RO<$PS>BhzG_CIcf)a(;7V4tkzD>+yMusjZpi_pR$Nt}WET+apZ6zksjARhek3o`Ta= zE|5E1(m4!;YCA{_h37~t^6$FUOJyZrj@u=#lI>V0oBJjo=hq(6vN)0aMN1PSDfK9& z>C1Sc*-RM=YxnhayrmfcI*I{8GAkXmi4Vi*3(ICOQ~jr5FEJ%K>0ifd!!IDEqDi{P zjsEGgPg#@x>5~TZ>tHP$(6dpVI;2eiCCVl;LyfS>RyO$iiAQ#oYwIIXD%p@@(X5~O zu$gN7w&YB+xotxuU|74W73QUR8N8x)oOuV7tB&bw6HMoQO6i-<_te_z^#kqGjdYtH zG_#0W*hPYsGq&5{?t6F^(()|!f(hrlq!m!MShH^~yf=2gQ+sAlJIX6zNha*-YHLyw zd^^Hin=9|jvU~H8g)%9hUTAABe0>UEhtdpG%fb{@sm#$^@*v(VI$M98{Hts!p; zc$H)5)4#QYv$X6E2n0AspsB5Dl#>K;@OK&F-~CKgxFn{aYVcnUt-JWDjc=V*w?|6n z6Qj{m;IeVPPu2QrNS4)*EbDpUS!y_qIQ=`Zp!eTL0wi9?x6i<82wou9H_LxE5{zsN zjji=9>}^bewaLKJMW@10zulqCB2y9U_;)};lpWSzPBfPk;n1rz2!gsZSO z8f4L~U4E|Hk9M}WzvuNoETw$uXk_X2oJ9fH7U8=Vx#7y5kT#7VJ$*yTvZxpNsb&Fr z>c%P}>tbC^m__<4#+G%1YmXFZY;nS!qijd;-TfwhFWutOuv9>JR!Uq^3$8-fB@3RW z3jCSx34GGE2E`X#Y3I?6KM+x|TK~lE?rk!fqAs5y)t0Lkk<}%Y&c$}a0uBK*b06ew zcFhJ9;n!q`b6-M{fQWT)aIv8=87ZZp?cE-vM52{>nLrNG!w$52@Y$meXU}4|JBRU= zi6QPJ<@WMxjxb4d;KthtE@b*#X;z#mc zTEBQ8b9>HA^XidW`z5P-|9zp;i=O3|LW*OL*FwkN$g;NOR^fQpdtQLvWt~I@frzrk zTK5=DJL)^npV`ddo}#pt6XUM@8P>5E3Uq?ctj|N2K^vp%A)Q;B7Fg7CC+#b$g%|Gz z+@y|+7K|TULgucLfVSgQ2yF!13dsok!Ns&E<>1~op)wvYau`GbbSet$$xpP4n6Uip zQ@T=`nlx!;E8rv@M|Dcv+a7zd>e>9DYB|@2zf^)S`BK2X)&@{7dnX=#?y2u5ehLi5 z=FhsQGyvxh*Z7K~Brn_EnkJpEGvP;{;^Z1BHF?`Yd_>fLbNiF(8H^mxPoBh&f-Is( zBJf9aGSvs{TyTYsYmaF|e8sqF;2_$fLRdN(De?qmAqdAf6l_e~YPtWVu&y!IF~(+t zn5eSd;YEw3w@l{;N7|Q z)m8V##M3%O>du4J(uuzoCvnG5Q3~@iJ3vVB>$-TMxyeWZI^8B6X|RRd72$;q1^!ek zAlVWnszDho%x@~2cwISsi`>A&Y*H1YLOF`hYyUzLNOi;Aq#;%&!9IdE>L=TEoUvAQ z{ESUL3ujfKK}E7uC}y+9FhVcbo1b|CwWf1W#wWp4*8#n}0tdS+*z-+zd4d-?yGe-O zVx53&3yijC3bh6N7yh^hIwL9oUtnPgZa(^g!)gQBafcZ`IvY&eDi1G4g4g7}BBvQ< zCayjz6i3cT(?pu>xvVUS^TXe)(SW&eQprDcn!Si8$cVztiNcHqwFUHh=MLQjT085_ zR2Na*ikun|Kr*sVkFY`v#cWr*JJ!trvX-kod(|6{dz*Bjp|_ynN%2DLL+Om8J-vb8 zP&JZkX~l;aa}8$W_#1mk74-Tu3(2h6P}b(Y2l8#@W=;&8<0PsW23X>I>Qoi&9aZV| zl^-2q5R|D1e#N~a8U=F41XZZBhuFl+=J05QJN<;M9r^c32dM#+Tt2}~y&&)e>Q{d? z-~4;;rLq^k0Wydh;kDc)q1*KXReleQ#=cN!IZaHNF6I_D4Qz6PcbD7DIF6SPzzn^3 zzF@g&@qwY+Px;8Q#$Pp0<dk)??(J z_uhjytADwXpDC*!8Y4NJqxHrB%zmjQdvhO&t&1mJp@4FAWZk=sVDK>-i%1rBA#IUdr{|YfgPP$``?hxF9yoVxRiL(O?Lg}vmI&GZ#uA~v)0O>iED?EZT}MEc zh=Tvl5;2>1J%6G^O55j=KCgci+SV#2+oG@kJNvzUkaxqPbJoc^sF8bdMNPB#%M|a2 zY9XxDxy)w_ddQ~Sss^2%Z;Q?MhILOu9r?rgv`FC6hKM=P^O|uGIhtJ0Q)Af4<+J#x z=)s(=`@wK==VY2}c;yi|lsdG-zVt*+in1eOdto$YN^J-#7IC&iscd0+R3lVv6Yeiz!0<^XZpp zH(2Y19Cz1x-UTO4U?!iVn%95Gk6`zL{= zEi1kerfcAwCosztGmP>;Y)kFnaQ zN23JYEs`B?`@4SJcOLJX?(xxFKUUA>%dD*F`u6OuXTQ7kr#3#BkLP*HBzFq`&7Rl0 z?{S&-nOlcRH$O)ivP3o>?~czO4+mQ*2|r#}lcqnM?(|ouKL+C{c9Itxd|I=4vu3wF z>-qR8k8{~L!mpM;e2m`8&IT(lZtS&MM#meGa~pf3mYqJ3`YHT(u3O%2wsU@2`rlq3 zwsvkE8iV0c5ORbcA7>rk=^BarPOD(q-&tS(P0(7KH8^axDibyS!RT50o_jHPczOA_ zd}O=vyt?z-@cpNKX0+>b+?DI1)JhdYjh_Av0mrCX<9K6Z#1s@P7-^qKd&6h~o@z{s_PBBRPllr~^Z ztu_)A0Sg{2Qd<457M z$NmOR?u4a}L*u96vuFO%co3F83yoid&tCdR<55`pGBkc2J{$0l#!q4Co6z_j`0U+( zG@gZ}??U5`;Ioha(RdY>ehiJjfX}}CN8?Rt@@H}Ujdb?SA0Ro}Bj1c}Cr!AA!LbLq z>xZBQefEv?|4#rKx*c`lo?3^$98;j*56x`$(T9EM8F=CUF#vAZPPLQE=l}ci(#yHg za|2N5K&~Iv6*VTy@A>1k?VeQA}tN zYu)7UC_P`($NH>7%3*pW#+tNHd2V0{p<`y;n-$|HjyrqIfH#JKUvLS8gQLHMi@;(j zl*n_?Yr1t3vMJ0kY6_|hTfy2gx1xqpT4;e_mDx^#1BNLg4|d=3r2$z@)3>vuC=)jC z&!Lr6)@#ckHD>Chj>Xlo4C-W+>pN6BVw!_;&<<=o_>nZW?q2OAn$tPrdtWAS+ynwD z*WV>{Ea8_XF~+T)gy7T_SL#T?bf#k^_N6uo^lBv38ab5Oq8h?<(RQueB+=9XUml&r z8ZzG#2UL^UF0(<@8=Vu|7M{w}XcCt%^U;B>R_Va40ldnGR#jx*K9hRd-l`bWN>?%H zzrGgJ8@$4mFc<=GMx?4D>N}z`q^t#usp>o8Ga4$#G;}9y9#u`M=*+6nXqZyTS5{cm zQpIAHF{V|_-#&{(E{jbkTZxUFH<;11kQmz<8ZT={*3;IvwA3rn8&%cVl@x5uVoO!g zJCtIwvNWDe3ptajcj&}P4P!Hb}eR6-Srz$FmkPDAva8@@7P?Qs2kJJ z{-KegVFdKD+Ox_80ed5}erQc47U+GXEvV)n?`u3;GHIDtR(RDkQ?Vz}tgQ)XSV%|C zGtDce-(&KJfP&O4iLvW+BZfsneamsZRnw40s)qKxh9wS@+A6Pd{KKk%g8#xnQXrlfG%v+YCui2Py&Uh`v?NfFl}%-<^l5Ww>*=X>kRmD@_{et^KQ4^}Ji zj~|@_Wr)v%H^T+&yU4xZQ2^k99@0MtDt(ure(kNU{W)A~qlo(>TwmTJOCPSG1s(d= zp7Y6iqrU9vH{-_MwvNqfeOdnWUq=4T_I^w+%lELTO`gkLkT%Mv;kk2@<3DG6wzgSq zy)BGxXbQK@dOho{0Wq%=L;xM{gCUf+@25uo>x=r253^pc7daoE^1lm8{m0)dWeak~ zEEu$~e8pCH*&$h~S_!_UQa8lMt47h1AJU4cp*6@Qu)uQ3Cp3rX6pgiq=#-4jK(jl= z)z(fod{oG)xnc>FF?b|oww10qRJyc{6=RN}gl}LyZFPRyj_vHWfZo1}Hf{Iw+@M#x zUtv_V(AT+QXnnZPb-mwuT7!iuUB5m*2MlcD{^}cHt!jNUULA82U~to)$GxAb5PF@_ zxQ{BL;K2~XpUzJ%f|M!UqE)NrJyB~JyLcR(-g9%e;b4K<#wo*!zl%n&4d3o164_+c zPimf2m0mc4RUIHnQxHrIPFOZ5QglRVh>gEaf(^TDz&!udv>adGg2TL`CNcuB8q>2~ zjBpq;66%|NJwD%fG)Lk^z76e!ym$yO27e4N22PGQW&ysX9|OX%E5SPv&Q3CY9{^Ro zmK<2Q>&Y!PTPSye2o9IR1tVKQSKfW~S6BCkdy`r0Till<&zm7Lx5sY&LhEZkq1!|J zgzDDJ2xgShA+X2g6`HYXAaMe$^PzUN>Ok8t?LY|V#wB4~9H{fa1nXQFbdV~H*lu9d zluR6B&~;J2#|p;qXEmnwxo_DKL&AMSRb8vxOXW&~L!LFj9S0SE4Kx1k$?5@~c` z)rhB4QYFJ&FiM3$#t@m?P#nx+>Pewuf{?zzdi@;uTl>E?zSsp?4KO&<^RPMd;JG>o z;_to!g&F)g5RS;e*@1<`K8eHY=E4Acb8~f9)0pmiPRV5Sfs(Fq#xnkfVTB)*3P|_` zk^4B%JPx}HID~MpbpmT+=K|Hq$|jhZfJXc4gtGAY>CcNAKtTq6bpJ3Mgpa)rwNCof z_ovD0;X{j=yx02B1>*z+5_bQHW5{QGEl%&X_&*-=U;J;y|FX@~*5m~BkIQ;(>^wf$ zk;uN?4z?9w&k}}B<#4+I704fJac3%zB_^|u%%Y6??Dl-2Pd1p02kmfvks^Q)p8n!u zZV(7quf4%Atbqco8dGqP)dtW2>vfR6W}Dqza&L-Mkf37kJuP++2V1ZX#xLv6#Skb( zSE1HtV140|G(%zxI?`Am1f#(1Ed4gyC8|~!%*xE2pm_cz9+(-gdjGdubSAG>hg)jC zfAs@g?4`yO3)l}luph|2=F5ft;_j~?FsZ;`{MiSxBS`p^A%h43^x9H&L41Ja#5xZH z&6i-iT5g~Ye4QSvbvOYCs8!#OK;`o>5P`j{E`7Vb!1G$ySUR?q>n>>J+VgdQVB9oQ z2?cp@77-|w2|N2Hq>{&= z+idZ5Ha4J#`61eiV!jg^z*S8Y;AeJ*)hv4Bw(czT5wQJgPyAZz@{y%16@8|^rL&># zDK^|A=kUGO-koAfYhv?0&=A`jXhZ>`?K#jTCWa~`aC5E!@(D3 zWd8^(p33ajo9j|DaC=>m&g_AknqIJsgHv0Cw3TN|pU#M0s6hGrNVud*KQOAI z+nLmqi6h^(eSKeW<+tH0awq|)8GKsyYAm#eJM%8_pR**u1nWh}1TX}LpyZK#>am{i z!qQ?eg)44V^H$elkcBN)Pl*Cce5|oL?=IK^nHCSKnivDb3T2bntkKhCN%JyqSL5N8 zuyPT_Mh~X(?331Swnv-6m3v1-ysMHtei;x_3$A)U8PA6ObC zC}KJbzP6FACWBv%u~U~wIbaS!_$jj3OP>>&>fQ0?FTCoP_ z0aZs=Zr_Vc`2J4w+Cx2A#6*)Nr}p3$+*mOkyF?k);V@Bq?1<*fiL-E>qlS*KCoPK{ zad}##|L_K=6yo_Z;%u5H!+CM8n#heG8{(X!Ia1>sAi-&l{Dt@t#$5TNBDT@L(_B8p zTJgvQXJa~FMgf~#Thsh|L#h z)pxqC3_c?NouaqpwD&M~zcX&SHfeSo`M9WhXlU$e+dIViPGOLMBYLRNpQPg}jp+7b3;yx!dsIyZ0Tz2A=iaYzf=^nJ*J=mw;X zE*f0{QvOPy#B-nwPySk9=P_D{*D!_e0cS5Y?Qwfi%?Z9|*zusbV(78+xt*oCZOy&D zjjQfpax3ZTL$K5HMYBnq{@Kbq+Up~or>osdvaF{o#C9*1lur>!%a0C^>t1)Og;dya0rZ7o-rV4I*L1e*NT2 zP+W1T2(Q-SLojOKZZ#n5CKSkot!E*sK;c#r_4` z%<)5(pu+7H6Gux>DV}Sr1sdTH4#!Z$8`oHOH2oo*oIxoh*Vu40k%Z-OV_xyiz_W3E z(vrh@5MGhl)tn)8Y*FiXN^BC7n5vrBjpVDs?$Yy@th6_Ay#uw$}v_pRi%sc7?@PGoEJ^uly%4D@Uhh}qCo!~$R28bxkx z8NcFw*;OLNr0G#gF>GL~crf|7hsfVh{9xY{LUsRhV%+vqeZyG*`4nd;ReA+^g}-}3 z9>8YP#$YmF$0%qUaE{uGI;Mi6V%KID<+&&W+feMj=({=Op>Sodxk^!Cu9HO6>K7D? zD+%0sy4YE@>Kgm~gJyzQq=9Y1){7;PFP7+T^#PVdhJ6>mOHNN4Qn8iPT(pMwiY#sJ zO`uhXU6a$?a2NWAt`BYEcA7XUY&t270*&-J4YB757nt;{3AE-Z4ZaBhNzJ9!qr0H2 zDxCLkA6(s5%MeHB>qj%!7}8|MNxO9q+S$J^n`_F)*KRlDQP$g54iqmwK#NSLIr|kp z>*8KKB`)oGDF|Owv>FI|(eYhV;DR>sP9bpz9Yw_p+(>qq7U7{ng*1W5wztVw!uQ>Cupm!tJ zNcOQ+x#as=gg1m{th>VOhOaU5dsm4!ni>t!=rtqVQ7W*T_%=i%!X z+_MY>j~{8Bds)vyZ;I2NUGWMy^!Y)PYv|E%cEi)r za%Xj&`zUA=rGN9%IMPX^8BGLUaG1jx&PyA*@6Px207 zSgwEkb{U&>);vLerTMrdf+$6)nTIw_QuNe3HM-4+c^gON{#*H`A;oH6gRzo*cV*qz zpLqR)491kh&KKWm3^Wul~Y1%;M&30MQcqz$OS+*$!0n_Cv}C`0Z)XOFo=%UT`H)?Fr zAMiD(32Xcq^(~dxU*YNAOusX{bPTZE73K;!CBun!U6hU#;)*yebrsYaGj;44L}-r| znwgC+5J^8d`N%5Tnth8z#{FOiDK}1;ieEGP0R~rYetPfLf<$$69Er_pbu0$|9QUhA zH;asQ6ZJmJOhE|BAU*%3yA$y=w4^lNl_-Np$JT{j;U7}sH#z@@l>S8)kTqlaD7Zls zN?pqZbMyl2yd=M7J1YHVxBf$_{wA~jkQ#r@PI;M~o3PFdu@A=>yw-p<-ERP4Wn&Wm z8bU8xVu7$&6AaD{#*HLF!W)uC_df0%1iype&>sZ>6oSoPDyECT8ziWTSDp>x&9^sS z#bJX$HgUQtU}6H-_zYgZs=$TAxMt*NxCFa+6Lc%OK3U)nhHwtEOrIgsp~s_VP;d^z zHUjOA33&^FvxCg?kt55y+r1+RFV5AU)=mrJVW_TSC$>k1(bR?Omr58^HPjsOS_6 zU^8cg+WSwWvCX1Vf4WMb=yvSE7C#MU+z<(o081Rb8BbgcLGEBOQ{mu1^sJ#|>b#-h zfCU5Tpk+2jRe%a#LLCb9%MpSnP9#QXDk{MNC5Xo5;_>}OF; zpJU2bfb=&+KJVyuh(K>7u`b-KMp@U4BcEKV<;A)`Cl;bsbQ9`t3scKTohA0s?MTz) z+-*RgQexU$zrJ@F_eh%@W1S4Iy!~mJC+-wk)_f2FnmfFte+Z_#`h9N2QwlFK^DC=6 z(h*s$P`y7pW{n7sN%UTt8cmY`jq;Q>hZC@-tx8Pn5oOE0ocxkpmZVq~h02b|$?3-Ob$(u5Iaf-o6>eIkzD!doGBPEF>llkVS- z8v_aFgl~I@ImYc+h2fuk3MB0)u~l>6&FTfC6jE@q@f?jSv+ZRD;d!)-$kEyHy%&Ws zgj~zbU$d`qh`M+&Z17QIt~`IrMfu>ZOucwzXHububHq}((}}mZLtf1r^2qlI%pu;y z27`vPcuV%OSqz>L&$}2}*BG4c2n8MWdqGJkeZ@hiv)8b8EkFH&Jt)tRn?D{~B?>i^ zAhrDT*!TuAO=pz6!}qrW4sdcZO|5Cli_E)m4_riQB7(RTdQNrV7e75W*IU|nJloeq zI6j8SRw~t)5LOWiw@Bl0X4o;EM1KQ?$juR0WTPMW z17r-I%k=Q_s#WW;3b*l_l!MW_ao-KHubuU*)GSJ$MJ$EwDGS$KR0gSb(fxo&=tYUb zHE#$wF~3u6qymvF*E{Bsi0t2k5t9n(axVuglV1+- z`e0!DNa73(ij^ z;nNF6++AQ(rk6>ecxSMs8 z)8Ps$X{2PfOFu&TfMGxuwwCaBlQE@V}3d{C!OP?_&_(QKF>dYsPG!L@K&H*%3fr~?`?{+I@E@^1;l0^FS2NULQoQOIP zgAVY}xj}*Ws6cauF*2Di986CzKR`7dDTVqQFF?6C@L5VH0kdBCx8F*i7BOLJJ#74? zcxjB{ZPyQmE`@T!a2i4`LHG@n(8vmUF2Rru#n8yJ9|DT_(w~3)fbA7PA(zhoK_0~; z__+DPV$CJ!^8F7B?+eTRfB=ffAC{k6FD&I;f@a%)ShQbQhDHQXjDNGtHjRpU@km)m zUTmw%Xj`Z&6Stx6x%5|A-fc|_4h_06lz>0=PDqEFW5y)-J;mTWwbQ00r7f>kCw_rIrS?b}$7Quor^A;;gYjs~1#e zXW&q&BRbz@8|$4sv<;%-;A4vpIL{$raC7|@YBdaRxB+1tGLo6lRI*n!68S#e?0w84 zqk_t(-oY-4&bKM_!R#DsZv*_Mz#-GnlQcNIccD+B#-8s_e~P(_wruD~hq0WM;(6s+ zx#zY1R5)s4lA<4yGhzMQNAAVS?+R@der6I-P>jw1l=LNN-Y3bWMMsc5O47?QiSc`g zJckK(vY$Cb;pPzhc_Aqewt0I(;ok8G+dFw$?qRvG5+cn-57?KiN%1p?dvYJg$=XwH zo*ac#RgCWW&hbdU*K4@fMh6f)ZA__aO;XJCU{|Lg)-kqS8y z157OOChvmyn#2kfeC&J`3W_<#)I7CuQ~9}lOsOGt?p!goQWGYMkC)-3M%2y6TJdZI z5H*HO*d$?KBFYp-<(ZRtWwVT_@n2kp<7$-u>v?}M(Isbo$y+ow^)FKrQBV6L@Fa%N?^KNudvyS}1H zveuevuI)~09#9(=LR!YhTGacYq|CrjFUykZVkT5M+f$OylpVq8hHJo;T^XG>AAyLI zj!vK7iEF&kG6n^mw3kdN%+i23)ntRFK57R0Wm9%#@pY84qIWq7f#zcTkZZ`BZv|=E z1ZATt#wvUMHjIX1lf*E31<6#JeIL9(nz{ziwG@mX2PB#cm%Yclgq_-W7VQg1pz`ohVns~DnlV(aE zyP(*p&A`nLs%iJ^Ogp3FiU=Q-w#_)~I#;klpW_5734f`n$Id#X)yVi@%5)P1@~ zey5@Q@Y}<~#qmZJrq+iJ%O16D4ZuYkZYvX1i?z?t|9Yi;MiTrqI&iku0RbO-Ff<>jn!M?HT^LC&kFiWsQUwfd3mQaN1pe#Y{Wt_ zIXGgwByZT#lT3_@Fzv|izj=qN!ykY1UXdg-IqyU;MX=Nb|E=_3!j2F)P+tGuni0w$N7S`Tj@ zUdD8+?(?S%Aw;HD#H4sQ(ezmGt7_?x-A`-Lr?aCjC*$YC=V`Tjy|YF(wznJR7yHOk zXiP9|5NBDf*27G}bD+++H*Q`v%mz90?b3dGNeAbXkLTyw(sy)?9BGkv9NU}q=Q^hbI0#ay z!~FdNYo(-9M9!7o^zvsF^O&o$XYiB(&wyYv0Zo*`W6OrJD)Ipza^kzSB3}n(cHo0w zl@)-V`3$~40srZTx9b7$69{~B*zw^uevZVE?MEmwV4bN3H<#LTGO>dxKvq1Viq>i* zO`aX7DEls{vJYd-TtfxJKAjNas}^xMBsS(iQlP6$)GQy*sO3WW!WOw7!sY|8 z^#W{~spD`o$wCFNvb#~k`2mpOcw+H#m2Uek2XruarozbIY9nqOu|}q$7rGfa@QE1Q zxv|rg#c#>CRV3i$_M=n6H!lqW-yYJj&+b0ZQOMrt+3nL8qQXeW5kf`+pG31<@3wci zZO6|QiEm%?vc^sK?tfHeN5t0(Ry|?KDY<+rSZ0q-h}INQWZnXSbg&!{3~5DFvP8q* z)8t5?ueTgrQXuiBIul@@0NA$yb_0OD24HUh*yjOu3xJ&(VE;sLHswf?uiI1|(4h=o zfrC0i4OLQ`5Y`~COjnOlB&|)eIi%aUqMyx?)EG?l8PYz?XMbjgu;Kyjg^@8MtYJ#) z7o$7C=m{|L&G~G3dT^d3grH^`K(WZ4;xO|2bR#l277#nc;KA$r7WyW8ufmVziPRW7 zq)OUnkTNP14jN9Go!uTV-3~aUY8qvbq6<%6e0wD;=E=tpP^i#w*0m@8{T@~03nZtG zPN&D43Y!lbR5}_3%xwXFH#7H0B#IyeV(I7XCNX8RQtSsH{sZ&VP$Xb7_bjIQS9qesCI~~eR4<~IZ@PLf65x3 z)(OOH&mjn*nF0r>FXc-d+2~$u3}~Y{{6UpEg)u+GR=D;Af>H zK(#^`tx>^Ir+7@^3U7@vUy8@HSFZoIR}L*;_(v37m~u5)!B!+q&ceM0FCyRSM~v#* zRQmYNgXX7Vk?$$H6yZO0FD*8g>pfn%-nRPTX|+s)#$>$WQ-t>G+st${$5a3{r>hd0 z7XhV)hhW*i!_Us|hh6^Ufl@)Lck#1{G`_;TQ!i?YekT!Q{af17_7J3K+p>U2VBqWw z+S`m2QZn+dDxld?=xr&T8bzdbpc^T79Td5WmEc!sSTTo$iJGtMwe?GUN;FG#@iqzdB)GU zq|C2{++GFaq!+>lQO;$jz)3Oekva3B0Vg^}_k5Q^4fF9GpFi%SKaE0@kb^%Z+?;d2Nfkb$4mH?3xb1Gg560+vH+ z^)LNvEBYV$+-puu+2cc5MBW(ZsggU;BH z0N=^*^7Cfqrur7Dst(y5dUo8SMAB`gR#fzu^TTdZ9h7~AU+3oq)hUwe3Hn`f*xcDE zt+qooUJE&))K_UyD=#?Yvsc}1DVQboXhN4my6+{L5n%2Q`v?Z-Wx6^`qT}n4vk~7W%Cf1V#@5swM4x0%0Q8Xj z-?a85KtCz|O~0E0Xa<$v^mMfHS%N}sbo|{_w1WgK;vSEo=|qq2d#wP>)OG_GYm5N7 zc3!N7pZ++XTfQS56#Outvtvu-kA%hlDGULwTyW?$?QV90Y8=>@0=u9`aj3ICJ}8G2 z-D(Ao=lzv|P7_gAcz5GF1Ck`;8)0Y!<*~R*rO)J;gh2YLl{5hfF0}jAq;5e z;&5BS#32k3$>Q*86Ldq}=QJUDvzGC*<4h7m?r>R4J9t#^2hvDxhtuv;KX91M$N%FF zlamRTH@To7AWpztCj9^N3(a31F0Etv$pW~M6}Xv|3Am$`g;|H;*FCKAS|69`P(0=< z*%1BMOL6%ePWe(*I%LY~w9xe4`nMBV85DX}c1+ zaoN-xbvCt` z6cz7IelTz|;D1=QGcY#0Qg>G-ttcN$5O7KX6`VRySc!Lgaklkfk!9m@GkbGkx0QVK z4)tfz4U7?$RdK_-$%i?6@Q-%Qd86h=&b5<-N%0#6ax7JqHsNDY2?-HnFf6@kU%A@?g=x z>1nBtxYwg*<_4s)g2{-zG00p`xG@@zrH8sDJ~jBY3G6YnOaz;+Vc)y{yLr9;qXJG{ zEt3_hK|sD$K!d#hpH+Z@k)4f^l|7B)OsnOzX1^`T4Q{*d#w}f4_f_`23%KJ4Jp9-i zR8k5Wv54S|1!puu0%QV=9`ESB$dJYLHW}sBqc$a%v#nwcc*|iV20Vw%5!XSE6tz#K z*3Z1hI*-f4S?yk@ciSS(QELwmlU^=2-97Weo?ya z>Gu5dyprd>_xkzi*vsqghf3D-&SHJLbIa4#{JO`L+4-Q#c-zwz`t#Fc)|Je==WaaD zr}LyMf|k2|+X zubr=>ptL%!PIvn=7uwq%_m_2AZug`tdw6a(YiX4?W!i7eFDrE(_tEbke?A%R*RMZq z-koYaerxx*x@1K>zYOCbc)qvhxod9sxcD*I{&>-y_0HHOrA`Eo_wGk-*0IjRed+zN zm+Se{s!Zi^*5gq-_x;0s))V&|AV{?`Swx++GQ5vVUhgnN48}{t}Au8@!OtHpH9t_eQuK4AMetvLmuKxvL4P&1hqww zU-3R4N|1W!f*^TaURta6KaH=u3*`0R!fmZT+&$~(ax}pVM}6daLl$?}Y$)#~vRn{% z$H`ON{vFtG6qA)e+3^$?z5>~9H)L2liy=`RTIPO>A(67PJ06@AN8$|kMs?`k9WGK; z{64|?6hpT<{_UM8VY81g20ft zUn&Okrc4d&mRK@gw2zP_2x7;P#tr2}gxu!!O&X8qN+AV}te%_J7ET(={Y=IX!b0xu@y8&I4AGNk$tNWP zRR8h=a1+Z?QW}WpZzZv&22+OeYIXGVSu<=)nlIiE*jGB&HRb>!1=FaoEGwMrDDY@w2y!pE_IC?Ku&;wn)J}ITXK>L$Mp5k(F2h*&`*w+DjtNPe@R~$3#l||f-rX6 z^w+(-8dC#(o?_yqWTs!)9U)_mWMTcCMC^B#R;G201d}^~!f5~zntZ{o=KX$YWx~|H zJ9iX5;)QYL3=kj;7xxm_ueiv$qJXO8H{Ct-^pZmbGh0A>0bN4a$YgQixe$a+);(MmYGwg=kfpW zQpT*#We6AmG@qH)*1A>uV+xHG$$^ApLv}1jEz0%MbBCs%L=lwtIN?J~w=j!U&F!!T^x|pKfHo+iBiw93T6LAWl4J}qOeUuhnj8tYP$v^Lq(9RB-y*V^}MW`StCT@9P z@zd58kDVg{dt*$xrr6jKFw$v)(Ydft@%exa<&ycfAa`LJy$GB%YrAb9l(! zA(l6wdGTQ?+7R&0MU(-=I&1uojsRlh--g89k`PcdmTPX)SI6BCaeC@4_9!M*^EB3K zZkO#YmgEtHtZT5?PO)Rf#+D9qHV6KD^iBQJCo#(DS^7uc!r%IItp4b`ALVQ={rBj* z{-rN%oYV92kG{vh^{spV(I+v%**x*@(TAh;63>H4PEX#Y-|-~W`YWC~aewrsO>s6~ z{(JQC|I)`f!|56FN1w>w`quOR=sTFqCF^g)MS68~%IrRsGUOwan>h@<-p-zxC;?{?WI* z?AGilNv^OJ&H&j#t^m^Vn9QJrqfjsaV-(6&Ac<7FNDcBKg>ZZ)DIo9VJ1`II+t2e` zBZA_Am#!-guKlwgArK1_H>W1bU^~U~T8y-y$^Vj6+I8$hY)D*YZM32OTH{FZd*YO2 z$FT}LMgULb`#|CupuYV?9zvo296pF?Bq>d9pwH0^r5jK0!tx7I(sbU%!gVa~{sNmg zK+j;$Zy+%A6cZJlL3yfAGmy_G!xydua`=9hz!gFhS&ao ztdH2s?S7oLz5RI%GN-!`mm2}kDUZ!P{E!8L&2!=XeRttceO~va_ov-Kt2j73R!Qd@ z3S65sOgKEfL`U5n8wQ5x5e-Cl8wzZji8Dcnr@@?Hcsv0_Rs&7$5ao_Nnmqn2oNsCH zz%-i+k`VO{a2pd}zGD&*Om$@go!+E>K zPB>sM6TKUZKTg0uRM__EP=N0bl}Y5w<$CNppbmB} zgW8FsC?v;;k4_C19aRFcokt1kQVgqWQ%)G4RYIJJo19WgoSDIcUj{Hu9(Gu0k!&1h zmuW$s9(EkQ?0di0=0VW#S!{XL#iFZB>kASkZ-wOF>Z{iFs!O}mLI*bRG2ao&JdYkk0=DK#9*X>cR%u#!z*VSs}G4JhY(z@qk+W2uf)ivV5{<7E84|F`O zpU+f~%XU1zS^9_3om2Oyce&4JlgMRA1iVkpQEg8*=e51W^zc!xoA zI;}4Eh1ZYcQS+GM5iM@Fn?cWXM2NMaWhnD`%AU@rPrb!t&#hU((<4vaN6*d=Ud_Ui zW6Pq#rEo0Rr3^C;d4-og!sdZ#mmbR^ zcoy7MEK&2Q-G4^@;w9F&iPXM?cp za)C?nzU&HzJ$uM-m?s=4H;?EbeyTM8YG4K82ZvBqQD^~Gwxs;?%7?O}(>tKL5Tfh^ zEs+Lv29vamzk0neVYB8E~S|sV0N&QST)teoDFyjZZKWooXd;L zL(MRNC};2bHM))RuW8=OFxI`R5DeHI4r?4?7PBS5aMG>BPI>G{c$N;0bp;l14(oh} zk8BzB6|zxDC12C%;y&2A+{j0nRv#GRfX=M?V~&OmcRK|U`&B?hejMKB6j>hWdnfWVR$F4u>cD_734~P-!y^V+or({;o?ZV-!H>qURbun<81^cQhi@XjUGPj+CJQ zo_`fVRa{UI2vdS#!f{#aFjoSDuSF<*p&;LaTW5VMqNJ}!zOK+bwr+^ z+$e8I<1+?N9@8+1DOdl*3JOGUutmwPyc5d#z-`EwZ?`<&3cm1s4t4)j9++V)Pfmll z-j7P{m=R9o-IPX`>jH#gsnT#Fp~Kd)(Ot_qZE-=s9DX9L2ftdK**>-#nn7osf79j@ ztDZ1w5aJe>jQx%+pyyCO{t%D43m$@Po? z0v}NRF98to>FHP|V=EDdD^nsFumC|WeQQWRG6;nR)CG{OQt{Bm^jatdvDYs~mx+gJ z`Fst;{`Qm4pT2HP!#epyc}?m?6nM*JAdK~wRfsxqXR0I8=)a0yc~y!JXdwpc1kI0C zplf%THJB4FRQVd+do7;=Tw4^s00yFj4tJL_35LBCd^V6PQ*F(6YYPOJ4kR|38Z_2- z3&t#0(dytAr1YX?%A@I9Cq5(dPSI?dt5V5wy&K@{6-;~Dct7MmNKsj^1(Ss{Le@S$L6EYy`1msr*Sh9ka zzg-J$hB0LE27E(XEKvf6Y0i^IG)U&LEWGR60OW936W^P&;jq^F{Ek-1l2wm1VDsz* zyDz7=BF+{<)(P2|iIxVDH{tys*Lka3MlB8rzCitu(vMaxPh}t608gnr#FH2c@*RPqtES{f>rS`Ot)}#GOlhwx$x9w(|45fmR|Oc|Q)vp^jTKaiX&4}O8d{#Jer zbWKLRd=qo}n1)JGzl74VRI=FThL%YuB=A z|BLw!aS)(Z|9u|KF z5{VVbWv%;#(g(oh*%t~d#HU`yMlk_HwNxA^Qc`7-0sZ7S`1e3ifLtjjpwzOPz!$`# zUB!=jt0tf{gIU6}b}ak6GBC~f1#2y7-hV^9IRI!0C(0{QFNm>QUOS*%-jwDI#LsYz zvT;rqXbEm3#_V%t@%q4Nmjl>K=VD+6BLzxQ{hbw<14AUpi#I#H+vRO(4VN#q{(_*o z|EpT({Lij+>2)b@={_VrpmQf%8d|2Eke%9Ikew62&;J#&UqL9z>iy?dx_izsDc?WP zjRz=v8Fv_*`9ztmRR}t4H_>uX*EkGf6xGzEUD% zw5DGeIt$DSXO|$-A~(hOWh5OGGg0c4v-rA^q|0QpN9p*{>r``fhiB~76XfA{iD}pp z`WosT-t~y*tD`k&dJ|c^d&LFG(_w6#TCKKbqB~tTO=NLZfSLBC73%Bo!uunZ?2T8f z9mXbc75bn0eW(@2_bim7OxY>xM^`EgY4&)tZ*paxqZN<+|Y|%MQpx z;P#(#lSdEa{NN>vOVhsl0;{l4C>*lRAhUoq6JN+DEBYdKFJh6a48t*%Yr@{Lt%sPy zAA2&bl}94c+aLvQ;^AII8{?m1=b-j0@-XInv)r>FJq-)v;Y|RR{ z#i3FW1j0X)k#Yc!Orch07_jkIpu#j{9QziiOoeHh;woKc7^>$p7#LR!=O(esUv3y` z6fgpXqjxTPNPh#8)@s&g?4biDH7y-gwU}mXfp!gmqCssFEq@@<3P@UpR8#1-2TYwL zcVVsC&~PBOUhOe;Mi3~=$Ku5o&$oHhnl{@6ACZn?bT*)HNn-fdl7e}AxX&b3zFp^v z8F8FwtaQ+wCTKEV2!qF~|19Ah;64jmX^R`VJ!=zukOQV|3%5&4wbC9-c>k;8!1$xf zk+E2M{)a$u#<|N=!L8ToNcEEO8dN=`&3HWEL0FZRmK@9aW!|07yg@FIY>7DT9 z$_x_>m+7j5DBWOj@MH>@SBYbO>Vqi5uqp6tT{|%g1}C5_ZqwnTcWn@<1sU)3YFS5t zY)fQo^%;NC@r4s<0A=A!b3h%wfBO}1t>xwn{G9wAq8Yf#w9@+yLHLyFHz)`rP9;uV;#xuD|Zj=fn|EGypU_tFfz zfY_hAt?(@0+-1D>JzR9a-b2%^D(F98!+2H1)v-ihlWZb-U`t=kqL#F5u3>4G8)om> zpkk<37-pL-nY|>w`;EbmkPrkaOo6ZjI0l@J8F8q^aK?tuv*J+d1)0cHDf+6qH5-PM z-D^`WvH+zKFDb476L?9r6eqO` z!-NBdJ{&jwq#lWZX>}}6q3P;__-VFKtaa*xd_b4$lPJKwmSjnnG+F>sWlo~-p30Er z+p9DY{iseLWm1eR2S7$s9bNrL*O&}y8)$tTG1F!}V1NihEgV`*DZM|I$Tr$%&lr{0 zW?6Za=3%|Z1y`jeF$#sFTT694IE4zNMkXBFN>^V?M9dIK)Y5o3wuP>^7LpXD!edfj zjNT?yqw$XjDDp2$s9sh;gvO3J2h#yp>#}fI7rf88AB(SneyYOhaF7W(wI+UOl%87R zd+8Y-E4D=y*8kuhf2g+m3*3O#yzjJo!8WQKF{6@aV|E5fcanLy)=7|j<>pPqBy6jW zTMx37^KGCdzHdVT*Jc;;UbeN+f+m6|A5qXhMfmg1i>YG|+`m0F8G$Fe-$zr@wzY<@ z0Q%OU0T%8h)l5I@Gza;n^@8aydIWAa z8-@fuAXP;PlGSC=i!ZPq!VQI|`_k2AKt|1$_K<$H`(_((l5e4WO#+}Kwr*{$m`ZgE ztxsa{t^9J=Az+K-9t0aqtIp;mRl$F465*OIPDI_yBExk>uk zV@`HC#6E(%=ny{PH*FZ|tbQJ%Ix6o3`Zg6o#pm-2oEKyy0>I4yM<1A({G%$CzD{)z zA6U=I4Wmcd{IJylFaRpFI+h|3k`!CIfZ>oj1NuuWMItH#wvGQNQFZ?}@Lx;Vr3Vbq zG~8Xk*0z--zUJ`J{Wb_7f&gl>>`^8HI1fPNm@x${ww3>A8?Y)uEtKUOgCkTeCfpnD zg#xL8o`GkjtFFi;W&jfPQ)C97g)YA$m^7jIiF1G8pFlm7x4^0aboUxq%m7!H5KFKv zI&L$cX7110AXE`_n+khwSl>Qrl9^fJA4~LPDYK>@mXiG^S2~5`KUX@t<3B2$kn>+E zeZ1zMD}DO#zpZqUrI$*l_)o_4nbm*B^aY@R|HAa2|BC70$N!A!1I_;}rZ+lu7q>0( z0-(OI42DjHX~Cfm2??yx3qX&n59&_K1yca4StMnO?;ItjDO*=a0$d%Y@rf@QzzQtC zrG_ON>4T7k@|eI$m!ImO;xJgsYoOM_s|!1RqdKslTKtXbUuio5R0kF{roT`fSlX(7 zp}M#>O#>3kJ+LTZ=+?%kzW%Gpmy=L(KbV>S)#a;6D77wT=D*t9K{EyTvzg>SfW3N& z8j5*0YHQ%-9A>{QFF7HdHx~B=*MWtk=3j9g5Y(-HGHtMq@E;6s?brVdZvgc-ysf+a zE4;Nj{WH8B|M&2=)(pVgfApD~8&JdlICFD5{>PbHtJA-nxvjgg{?nP;_1b@X=62lr zAAja{{4ZVplE=Tg{Q6(J{3SyFICES3@4FnR4kVq&+wJS?_0O&!SNp-qE7U(QQt{%^ z<$Zt|^&X2hCuXXJMSvbT=_%Wf04FVDASB9gRh1LGJ9u#E=$RETg&Z+grND{c^Tf&X zN7JM2P~C+6W(rCB=*OmWnw|hH+qBt=*}kbJ^)3}OV^F1q^}C9@>c=3KhtQ~l{Q=R! z%yQ>KL}i%bBmpX2N;QNEA-=@rf@@0;?G=4zn98-msH_5>Rc z*b1VtE_K1s$inC{z*HERKMnYXlty&~r}YyTUO-`~X%^$ery!r*EVCYE@R|4e!EE|- zow;&=&_-j?RZYFBRm)2sqxgvh-RL)C3r!S0fti(+E4g&t#mD8x&zQjq7iUOk3gtjL zs5>DkLfZ`|Bbn3*C%}loFjYJa7kF`BWQ~#8nT<+U%H)Siv|-L_RcAKkwF&n;p(`7U;++lw))agz)ftVS)4$PQY3T5zK(W8$%^j~Dm0m6ZY@3^PZoi-;>BRVMmt7q=SQlt2d8UY%EC}mhj=&g#x-+9W z!5$&DhGQ(R8myp^EM^Nj7VhHTLu^8(YLxe_V9s|@B^f2Ji1~v-?6DG^aEO?ky1D={ zX`?zSO?g$cHg*@}94vuU{J|STLW=bH0$u(uV4@0J;@mb6>Nd7WLgAgaXm|ql{$O%RA~vYpzc{rP6`Q9iUBQs)9Mp77&ir^>bTUhhFYZ(GB&!t?2|PMb9^b-`q{LfD;HWyV(4Ft?Mk)Rxj z5Js>Jz?%o59di*5S+Ez%>8dn-%eUmI()gt7wAgXv@3R^LUfZ|OadhUhS`6+M3x60w zS4FnjQAW>FMRwbfSp@Eu3V&EkS5^4?SRrt%1bn!U1Wp1+iJ{0{ax?l$jo!%HLN-uN zSP6@$o56*F#?KUdINiwGK{uya9I&df8!iX_Jyii*G=k*&f|nyM^e;ZY%yZDyr&j{Z z91f#+nH5R_o(GN`Ry>7)t*R}FDTuAgLZhd;Srp5^ZSXcIzMNkVCX|X!&HMIFAxY=! zoqsP`MXTZ7HkFK)vlz5$rUxF-u39|Za(Jw*$zXXlG z2yzdfdb5pG0It|ahB%JftuM;c@q-+V==M#g?R!ARNJcP%5xqE$;l79sQy8G;+!q0N zLO-5upe`G{zYdVeK>K4tk6JjyPx3W~jo~jAdU1hxk!0Xb_AIWJm4H}iBj|!Bg_S}# z+RDCsea#BsnGKr7J(nN2D!cO;G%LEM2{ns5FW+)icI1O;RO!%Q$**ppcaveTUf0m*)SFke+ z*$O*CsTls-8W{XK{!3=$XcIrX%eQ8sa6{-4FD6ySdjlqw#)`g}BnSqWG?;uw5JI#G zF5XXs(4WBt=E8vQwIiAu8UzuE4GLJZN$fE43V$lQA*TDEK*vXl;7D)gtO(@zHF(Ki7p;kv%(pnBepJzJ zDo7|*Zy^2jQTuDC5*4lbbgB}yT3jeIt!l4pLQ<*OmlCv6vGUZU68-$4*RyrfO2adG z;-g`T)xz5(=IWnIAkF2ocD9REGtM@d%B5V)?p7a{lSIhNc3dHF6cI!FXNguPTtTq3 zqU4~15if9v@d$b6>}7cde%OrrZ0U8u&hh)}O>xZe$LT@MmVpm;`{&2{z3R>*iSr}v zh7%`)jtzp5AcsZ@6qBHUmI}m-S41F2L{3yjAcTucR7FUIVxhJ-$nFm7x6_z2rJY`w7Ej{=pr-GdjJ!9sDjj zGnn1%K{`MAu@{44$6gGY8hbH_Boi=bM1%tV|Do=!quT7&?a=@QifeI~V#T3Q+={yw zinc{cixmwL9E!WNxVscBTC7NMFYZQVRju4cKq+xXO`x zYNOD+Jj1+m_&aF*|N*OJ4o5LLd-u*$q0BpaFxtE*9!Y&RBYeJZNcootJRMe7K> zWF}2JmX?rpF{81DM89P!jZjMumXXPl(+N%5!uCP%OW&tG$i!q;{E-5(b&?LSChG{< z&#S)ZPd{R2V;(Y7uEz0nv$#f1(7~Q@b+dRx+U9LiwNcF(M%@m4M?en4nq?IT;*hO1 z%2qlQMv63qqRLCWO3`WCCs zyya5K*c|X@iq4$+Fze*3WlxFbEU-0Yaz_0ttImvNMakH-YXNlmRFrJk?%8z4vWb(J z$XN4x{#i_X%&+Yj=z?sjg0W9`suXu;lmq*N$1(XhcIrm9RHw^FgY#?z$)6Uv3(S5i zUqQ{6v}{*q$!Oknm@1~(wnby9sgy6c1uIPyxCOJ{z6E2>zXOZj zz5^?~11r71C_H1Cj#R zO6yP&6_zH-2VE!e{0JlwhCgQXC@+6}K=h`(ltS*45)vssEkzC%fi?|A7W#x1wOnP7 zu`g~%7NoW9qWx8DYyC8>kyI(BsZk9{$EF(O8g(X22c)R2B{ zhi3nLT`nHAq;_F!;=jb%Yi!^c#q$~cDI=?pJmr&O79nZk;v%MKvzS&SM1PqrU;hpM z+k7c&cTkuPx4neMZ&`s~Gu$S$ZCrt2`B%J^Bqy>IQMF7)fXzhfZYHIl?q;HQI};y` z_O2p|$5>BKtsp_;FxII4re}%c?W?Wp{-%)pKP`2CTDtFAUX2F`aE!R8kMJW0Fx6=u zZF)(50Lg>N4sunGt)AbA^`|9VsdtL1@1q?zYlE>gFI_9x$1iAenpL-~{IA7Q(h|C|Lh^kMaIW}oeU}+w^smCN~ z>2>f)vwRk;edv;TwW(#m%_g$$bh7GHi{!Xj-gjPydJn2}H@GFEsca-4)(&Y#b=|W$ znkS_LLs@q{;-q2i>8D!VZlHwIc`CcTf5_aHd)fkoj)t6qJWtxOjzw^H-$0OG8auU@`u~&#CO=L$=JT}W%GyUVwR|{ z&fL9X{i*xi-471uTH+A{W)H{BZyb!?Vv0{WmEt{Z+J3F%9L~kVlEPtu(5S(jRlUoR z!qtyUMr5mGeYIaa`O?*utwj<>U^&DbB6C8PP$f@0LW80AhO>tvKU&*TQ!iV*=n31; z7^M;BFvSoai@46mZYKn_^{~N&OxBJ#NF^gvRkB&yFW%|-i5KxaWgW@aBKS;TGQ=FF z6vFd1t~2-frXH)P1<6-OddT}yztWyK^je~?4)o}H=w$WLO9Zser7$79xplZ^O;>y4 zI4n4ASLFlrL)H7_iK>X`5^uZbB;2;kvat|bbIP-_z;uYz)rR$t)z)rH@1!ayeqGne zm{SbH5tn!YQ%+6b1x$b6*I!`x?E=oM7}KHKv(+3HamW-Dt`?gn6%556CU1#)W(w4z zS^`ji%~sz|ExmleKmj%vqTuaW=4@}q+g>pBLfT*$VR~!^ZOm4A6YFE#LhC&;1Sl?hgESFD>lPo;Merr=Z50gS<)h zy&Gehc9>}w3GEM1&$cl{z8GOPl~|n)_AcGPE>T=wDjO8_4P0SK78Ge|+Q$BKAtUta z`udV`7Xb^5{rt2OOSI97vZN~?d;mn>p{Q8c>9xSV4kX+&a;QZy)dgiyNl&NsY${M5 zEtQ$LUs+}Iz-gHzc^4x;%7vuUG*Ha?@3y#|AL)a=dD-k*Nv6*htCYzZNYoUjrN=mG zqIewM7gXXgnei)gO7djQQQHQpGESr?`jV!Xw-LBYS0G74XQ(uScX@)VIYh3-gURu6 zVb5}qX*x0YLrq!P?8K!xHIaB|WI0sDy9NP;>N$T&))QbHN4zSdB(j!%i{h5TZnVh`L@vZDWqHzW9z6#dD$<}>D9jt|t zF%|b0*duu7hyJD*!O!a8P+8u!!nzxewP0}NOvOo85Pa_vm96lVkfJs1Ge1ET33g`)!yDB-5c*31aSL3gAslfX0v8ZPsu_{X9z&`QxsA=I{4>=mvn-IX z!#dWgkK4FS$hRtMp4J5`Dv@E~p=DHWG~S+H6+d{lLZ4djKuRzql5)nC{zYef-s zH3>Vtc+D_Ruw~oxB$P{~kz)ilwfsJfy-)|(%$Sb4tD~L=BoP{sy@1VYdprtWF>!+} zVv2!cUXpIT=Tt^7`^#zvDIIILo7)a%k8-2b$WrtRqBp575!vl>DXK|%hV)xrN$l$D zQ8RQQ=-lkhDqn(#j>bso5feEE=a?!~gc<{7`(n!Cs$}2vd?ZxRBRf5r8jntKsm*Su zujJ?zIsnQA#t39^sWh34z;PR8_tC=sGe~S^=-&SthjYDvPzja8B(>qK>22k1MS6NK z(&syoNErkVdgXqLR1))Bq=S2rWWcFUU?QEJ^w5~XCY**3Q`;G#Q{-Tuf`(J2*>8j< zj-J6#($a2r<`tou(=zPd6@P`*fiK2a%0NKa$Ri~IB%x|jhUP+$zN^#qqC+!@)$~- z>o#v3X5u-`8;Y+5U%EMtmK&Huf;d&0O4Pkjj%Ga`U3Rp)1$79W_sWN8#wWX2=5*TG zL>TD*{CKJ@@RAEHs}HZN)PcVMkNIe9hJ~Et=y|V@z4x0all4v=T>>1F)FwM=Q$slW z^+&SYZ||_$8VSD7&e8bOJF9jlPA=!y>Ra?SHn{}m+)Ccvm?hoTcq`TGd7L!PGMJ&d z6U~3{n9kGq_UXS4a=qi$e#ecR;14%Ug*$G6ciiSoeug;f{^qt<{+pZNli%C|@3=X` zxV@S;e3J@?w@#c*eoWDNH_3k=s8QI&FwSIMi}?wwG6=LEqg zZU>kOznwrH|JwO4Y3l-eHiB-{i>z55tIwIr*&KTi(Zowr9=oJc|1{c`DGj#^_W4Tm!`%u_M4<`! zQX|miPcJ0eNSWF+KoddvGP3d&Ib+`id8xjDqZa^!pD^cZNjzDHuVl&@zxpfR3JY~Oz zj<;{zY^?;|oDR#}ob^EYU_T9Zc?`Y1@59BlbIUaZc74;?{xAdVJ{dD*prdnnNG)iA z+2dko#@u^E4pNIHaMF^CeA?o1_Ij(WasgUvo_2FF8d0g~(Ip$luu2M7INF9&XD(Z4vGIV+X^z4|_Il4i6B} znnBR6Q96&4e)EOtKpBye;nOsa^8>Kxji>Wjv78nq-_2p<9;gx2*fu3fZ87O1_R2|U z#ODOtVce&bYO@~EKypY4t=>C*hQI+$+?jO~(ZJkSxuDQxgY|{8%e8X~g3}a2!vLb-j<3OnANfgJ^HCdx zo5_N!Nkmim9--)6!}TWOkA($~m)AEJSsQCvudevb&MzvUj@Ya--y#xjN=4a_51*@E z3j{TvorScg!RFUOcI}=oFY0-=umt-#;2BWk)#<(+H0m_s7btuxr?6aC>zeG2;!m!nhLd4MfZCr@0))$}nHf-vUbYu#_*P~ZAX?)Hb4jam+ zdE(ClNgNtv6w>e$NK_#O;_TA}f>w1B8!7dpcYmMl3yIgY zZ@~mZPeEXG|U^F^kBmMA69rk}?6k@#)< z{!uIR*&y<+{-Z*T<0EljWqvJTN}lxXF*H%i*|Z~f+p;t)5>3bLv2)|Cm{m=v`%pUJ zuBKHj&4x!|gXZaGtfUrb8{GKLCY5_QJ;5W zJL9B{cJ~=&$L633q>DpC#bhjy~oKuOi{@7=Hne0CO$090Djb09KtS!5F(+qAXDJI&@r9N?5F23dEvpO8#yq9F; z0;c)kWi&zH1L5Rn9#ZSlFUiuxO>ddS$fA!MxSMQ5r3Z4$M0d{yg{=6>p{Ls0IS75s zs1IS^iNuB2t|#Lrk=oh0>wRq1U<)63!l~(e(3$o!^?dbJM=R}hibENA4rjx#-X@PN z^iGh3?{|W9+T96~&?SyF_`}HFo6OgdP(_`;Q9AqLeMfKydvzYXx?6qius|?V1@~_VAa`qCM2}Hh;yS{uX73x`oKO{yYXi4 zp{q=tpqxRj1}jqBy9R z<1lh*IgK;<6sNr#FCYpTJ!X&)(uGE=LdbT#)aIJT8Y-km&%>d zn$gzH?H?tB8l!>_K}Mw=#ACa*gLQr!Dx^r{8qaagC=QC|IHX!?7nP}d))Z}ETl(`W z$Z2Q3PyB-ovqKRwlE|^xT!tYbaI_s>2e?RoX}4WkS(yWjp0!8n?r%ol<3mVZ?{E3m zzy8d5K#1J7=C$+pK}3LkgJ2c|Jba zKJwr;LVO>&LAYfwa1FR)aQYb*sYts+JG_g8U*1QyZzFQ|k+r*s^4V>~KMkC6gfH%t zyYqusCpa~h-1Vntay{10yMk0YK5sbtO7?caZ-6}4BX-+M=YbUSRr;@IXpxzM=J~|) zr-=N+DG37u+^OIwg=PR#{fBi2_Qn}B+e|_BD+ilxcuEK6oWW2=K0f-{av_66t}RJ<;Yj4UybHAI!qbGa4-988&4~Y^QZ;_hd4B zf&JKsE$yh{U@bDyU7Hci}pn)tgkE?c*0Zm^H~WT4u*>aJ z1VQ3;+2%J=Zb|$#KsoPz4B~CUVb26UmilJNQ3nJG%Jurfc7<3Ct zntOcL8kl&cS8<#1O0w_#vhy}y1evLIoy87B>-L%9de}-$$cAvoEbIk|?&-lQwb@qE z=1P>LB7#wUM9EgLaA1hc?Y1O$vkfLc0Cx(WHgW>#q#~p?djKU}8&Ui2=fmfXt*&%W zBmCBTx{Hz5qw3txP0kx5;-yocgbC?>axcvm)h2N*bU4R~8@N=oT#Xv(#>?qJmcKa4 zj_Q(2xZ&Aq#EOwlr4JL5|KuK>Ehm)yKms|7iqYKBv}ck3QnyA&h031n7i>ff9*2LTrp~Tmi9xXhReJxYPR2M zwcPhJCeCE3-E4u?s(<|v>_%-Z{6#90NQhlE`(q8P?ja!!*LI?{i(@}ouW*I07sHQS z-QGMoazI!!v`%lQu)dUPoB@0_C*4Fo+1~B1)6h9yfOLjU=&er>{D4lI29nP>hPc!` zx1X$;`f;**rGq92J8=7(^)|n8U#}UlI;j3^2YHtf4Ai?^s4K&K*V&UphMa28*%Z5y zULPWQm6QB}P(^fe_xAjB9sBi7gDn@!jU0A<1%hS;e=ToyHNomlXcSg=_I9Lmf_u1A zhnB6m-UT)Waz6%kv%1?cp7&!Qw_{{lZpScSfyiMeIOL$rcbn~cAIrFBHQJGdu*c*a&QS?;D14#Sg0PNh2 z>1u^}-1I_hO5BkUbSBeQ$(HI#H+y^V9;!}x=e<;4^Ln}6m))yLauqTZ?t&nSIH*A4yr7}6DS8S%b^~@ zp1^>9m>;;RuvOaJwf4j)T)&q;#=d!8qFU*CPsIqI@OGEZc0KVk3mC|R7302x}EEaiOm zqGe-am>k%>N9e}f1YUI=s3HmR_0$=t5x6Q|IN~nF6ka_I5&os;d?>VG5Y{Q)!m?pV z?m4k{ey$Tpad_F8>RTe{np#=@eK~z0j=KU=^w;UtyJAVKbExTH_e6@&;IkL6?1uJw zU0(#I9lLp2Ph(mr@0EUNKqNYb-qsfGRwstYT3OtKC*nFllI!Y8l zZhIUk`Z3A*7$UA{W79p}LmetJ`1KRTHo`N*P}(MJ)fA9#gd z98AIKfX+1HTy<0^3n3=~FH^|!T_DLtTPDF>m~|KJl-Yd^zzedRTE5loRrJoRjh9M; zDnd@*#zBbY3`Yz8;9J^X>sN2{OeWk0D6dgRVdQK$k8jatUmxDiXh!j#LYC$H_=FQ; zTIZ-_IK|;n@n_^lq1DwNrw3Qg*=}yMh6By?yTclu>kBa_x^tr-ZyWi+hKoM;f#xT> z!w99RIXpMbRkys#yvNN&aQd5h?wW;h))qdWz-DsuC^={V9r14 zO3*c8v$*iyTdM}2!R0M#8LV^HiGBn_3j4#g%d@_B6f{TJ3FZYt-&Uz&&yL!;)>(k&qe z+c1yWv(2T2`|pT$vFM+k2CC@fQ+fiAM!a|0AFYpLl?i_rdFi~;N_w*-wl<2e9ir`i z(+P#%xVU3`I^Mit@H~5s!T8~3yWe-S>a5q}!k3{Q?*!p`_eTPVOdB{`I%AllUt^%5 zuSr=(;92&?@YF!#c|pQ%W~&qOXjq9_4mokI=m_}JbY^{sS-v3d-X|aKstBZ+6ev%P zbll17#OtYitG6NBBA+tAumh=gaH!o_*<{SaJjX-VK~uL&BYQMpENhy%oTh|CpR&JW zXnZAQi>O}1)B^E; z4eooNR;N697$16qhfr_L$uWX)jsPbHJp&EffHvEyl%88Qx>S&^XSY*nCz?({c2qhi zUgoUwKy}kh=NuCb6E3WP6^8lJ;&DJJMTKJ5P!p~sOHkKPupEqwKc~astNf2LuPmGm z$BSd{(x~bDPGkPYK*JN7V1b8TBe-k%E{wTCY!fTEKDQ=6fU`=_avLTIen308IJ<)P zj=b5{Z}Q2xFhQ^*GImFYvf#rqz!jTnVVy%ON5eAQoDRniKL`XEGI3VBmPL}eY{TTVbLaCT@nIrVssLmpye1SUD6Gd9V*Ieh=>oo+}4xw~Dh z)w>vLBIb*-Yp1YQOVk)EXXc+%BwD7H&=k2EMxlw^*x_p=gJ7TZ- zvylQx43`tx$RFLq z?pnx5zP<7P@qMbC04-$k$0vhVpB>sGr$KX-R(&dXSOxJ`GLqZ7xsgD(_{jQtR{?VM zz1T>YwAnCe)ma$P3!H_rKe_N^pBO!Ve_LJ{h*j|)5S$vTzL@j}sTSW_<&d!oqHd!s z>3^ahtE|wKHOR<(W5VgOk@R?;d^aa^l?`)TiR>Ma`7T*FzLrIOY^@>NM2cSUkKg2o zKz2FpA+}By2(gPafHpiBbEKtral&+UzxhzvXV~a@xe{_|zCgZ#P*T-39!3iB1Scd- zwzIsqw68oF?3XwO8kevsUF2MB_m_UI4)lj!ChQpvweDSITfVg(NG73xj4W!eIekwi zNi5G17d0WT-A&7*&a1LsM9m`g$9R3ctWvfBIvo9+wje4Hd4AUOv%B#NQ4F!9+MHih zIk0VrM$ouLjLJxkT2)6yD-(($K}gKpqUS`f)_KINVH?^@`*1Znec}t_M}8WRJET`` z)e--(YYF$L<@Mu=%KXs+iAMrj*;09^N}E+0o3E*&l#y7MUKo$IBgc}3D<%278r7pt zM>LH|U$-A2o`Mt(zI&FG9Nb2q$0L=)ZrFS|`DVrQ>c=RcLex{)Lp zDk2@a*r^EWxc@o%qC$!)^b{WzqHMue7|+2T?e}$W;(nRnM_IjEmH9G2lKP(C;Ve^s=9?9?&|K&xjiskv$j zH|jjr;_9-lwuy&JF7k40Nk-k&?JO2pj}5?dRt0_*B^FM?9ntR`f@o66j_vQmOg$f{2Ep-4r~uZDOwk52+ttP;S2^1xSx zCP2xUD&8izYx*sW(TF_0Zjn#(fQ>JZfTZ~BTG|$h_bN6=Wi9;wonT*yU4l6IKXe*f+QRSyKT%bl9CvFnwOxDpZDQp-U=&#O-X5F0)ljwkjnX(pdEoA1iSdOX>D zk~207g4EpZ-hsS@0rEf3_aB`(Anj8P%;Up`Pc}=Ox8XlG(yQ3Sex?crG>nNG{<{eY!;0jS=M%M)=i7dD7Og+s zM%uzyP&DM-`00qg#@OV2`h@HNws6W`@ZXxy{RjMi)`SDw|J{Tj+U!3yzM|;UjhJzHG0U=O3gA8gL7kF-9JI{MCrEQB_{9niSp?-6SEW?bZHM-N2s z8I9l~3&l_ikSwJk#%ym#C#>@~uTw=a=U%_sLpY;eoHbX4w!i874ag>Yb$Z=VPqK3DK(~954*8pG*sE$jVJ1Q z;M_hYCHk5SZ zi!8_@=e-ih!q4>rt=i%O?K@MBXfA1b>U+(-9Kbf(_I}8=<`VeyqkM2clx;ALoZI0hZAHwy?ejb3ilJIz}kJcWtrj z3dq4o`9K1-rzaqR(usL3sv)^8#>wgzuj=hCB)O}fLE%Kqwy;Jy|>c*>_mC7*NN82*F%c$l|isFU$i?Yj!?d)RRMYVT3)~|gBe+fvWa*+vOsKXPz9yIxnbr#vWuXE0Qo!|YZ>s<6V zb)GZ+!UJ0{;Ufze>3XB-<};kV?GWT<8=z*;2<3I#mKv)pXrFXWCWj8{oxiBL0trO$ zQ0iIgk5ZDDq+Uy~e!BLtli!Ni`o4wLKei4* zK1<9IRqUdJia$MsAoC~YiuN@=fs&t}SkORI4%S$n>bqVPQNe2cSPt}vC-wT>F2v6= zy1kA>4pf`?M9Eh_E(_v}_K#M~y0>EFZ!4bur>z+BH&!J7W5v1uV#UIHD;D2d5y$gC zY{mJ%vEu22KU+>J;2&1Y=i)nxWnbEMg3r>H4ID;Z%NHkL z8&8kPOI8?xfbP3REepzB|3^Q5x%cCbdq0BD)IR2k;y+4$n|SR5+Zv^|u)2a7p{;9D zBSv0WqefK@E*BxywimuE?_XW`(khM`!44QB*Z~7oo8y4CCQT<_11KvYfm?~$qTSM; zuCb9TA%q<4av+A^TjQ_4^W#51U)X-#?K=&{cl*v>_S- z)8)`fA<9C&z#wL&n9tROrQ*Ue)wyzmH5;rmsbwz!;YTd)O_^>O<*7v@Z-q|>+;rVxspFk`E;~a*t*>#GlTHWmBLd~LjsUbL;_&;L-q>( zi47QfQGg3bq(B3-$`ud+aCbQX=`j-@0RT*%7=TvQX3P%7Ou04YxhJ%Wjr~#Vj7=TA@2x6V@9s)M2WKjT$5r|%k#j@ytk4{9e9HUYI zfQ*0~;2W}l5P&S=!V9HAZfCpK?c`84K~0IH0%;Q^zs;HaipL*S@}F%baM?^PZE$_td>0rMk=0NdH2zoTe)rKf}fL$Uzm zV^aW_%_ITkm09yg@&IGt6Tr(?W%rohcy)R3-~eQG^l*T*+5>=C_{=iE>x$-qmu?u6 z*EdQ%KzgqoK&)BF9Kb(V#Qr~Kt>k(S_+YOG4?!%G90>qPZGs7DXrAx@aK$A^0SGVq za-<-P3Fu~*00fO&03KdtAOZ@>VAB5hfaG=5cvbcZ7hbG$2%t(W1kmgY0C>$m%6$OH z?SdEE&*k6*&`p~F#B4}DKLjlL8^W|KJ6eWYJmX?-8C&_6M1Kty{`c~{m-|Ch9``rV z(wtkOma#CR612BOxex!2D4_6v5GBm|O|*vS57Ey_FrqnZw?rM5U_>Pd|Bfh&?f)Pe zM*N595A5GWo5OC2T1CN#s-xW!t=j+BMCXXh;KAF7!W8fX*kN#J0m$BnRn(}7xkoLy zNcl7&2)RLx>_|R}!l4gxH{%DT7#Z<62+$PY@DnADxbS#^aoXU9vks{2LkO_zoXBv} zRR&3L2V9?(8~#*~kU%_$ROOVD%}-~ghBLs3k$~68rlzhV$_?<762?T?H2bM2TaH46 zj?%zNZBolbM|H|bO+B$fO>G-Ogq!~q1*JRB90SF?kfwi2f4D661G~37$_fsWVk~Hl}VAtcpOByC;Ad?o*J@ZU^NMe;x0*vMFLJb)%Uo# zk$2o&yoWq{1h7yZbx2Bd(otvl)c8Gc@K8iWQH%=kTRco8!Noo1r%RtP=caCbY|KIT z@;wTQ&SwdD`v_cIQ(+2R_}U<9@3%3LUhcq&NZao${tdukc9j1Lm+=QqAn7;UrNtjO z8x)kue+{P)a1xT|Dw|J5fy?|DhFV2Wm(F6QE^8djL-&BNZ!9u0zl$1fPW3Yi%2POB z>LoJ;*}9+jxRGwLk=VZuBC+e9qoZhk_It28S{dNSZ75h}M$_< zyAHK5qSnZUVgpblUW7)bHTwL%|{|BoS^mH9SA-V_FIFj(=kE!9# zA;r{7p*ncGlWm8vathIDD&pcYTPVni5sqd@e#5tveOQ`PKuxU{AqihU`4kWL9Xyg` zTMR4pQqR98_azhRqyFE>75*XjocA|5zPaDzTr+@oNk_GbPPi46ru5#e$jbI^S=QvUQ1Ws@*CIuiRz3er9U$uf$7OK1evS&VJU&4j!HeCY8sU7dEx3yz6*TuYf}?IEY^m}obk z-Rq-0${VOmx0v^%u^VY5Wz8w;6{&FDuln1iXc`0rZ5{O|4C)ZXp-O?tB`#gL8OL(m zMgQ`N9i29Lq=YuTT75JvO=&zQ=YzC8Yn*bhwi4_*9oo5)`tpW7!|SW~vbjg4MlLLB zH9%gLr3-_ihP6rOS0hMWE}VkQpk>Xwz-8cBUpBO?u%oZL+LDG|yEGQ+=GQn1Z)nQy24I#+666=9EwD zPDnh88}^$sxY}sYe^A_@h38z`E$dvwwqqUdgZcQ&YE+3~zkHqNnCl}0Em#4k~;=B!yY)rgg*<~l*m4bQ*T>+{+axMYK8!d#%k-A`%RnI)1P ziLVLw1W`-sd~-EQ3$-5iUf*$f{%9YPrqmt=94go^%pBCo#xIiM+Hyu_V=0^VON%W@ z|Ewtc)fS5=wIDrtEft*FD1>NGlEauA^Y2;Y1*$+|ceKpEGzY)3_~J8Qtk3?@5fvhN z+Go+}c%OBnmmmI#B^+3@soF!c(|^U;(joE!g=17`#8#y%SL~vmwDQp{no`M8CU<-a z^J)wG^2%t^p9w9fIjj`=5ntHV6}8?_K~0eX&7|aKnO___n}4-+EkR*^=;IymvgpDb zjqzN`r@Dsc()Id|CeD@k4jfVR5$}%QYPTIXXgmKX+xwo4(HJl}y-NfBY@=+sL`(%$p^{J-J*;{Ph&Z~6n7_ojH0Oz9k2rL)*WFhIeHFLK8-ADAt2s|In&+Yu$vii z4uz?kgO+LYf3sD9C)Dvrdn9zNPFPIneHBbfW=i~-nX^zD8qNltYai-57d-}BM@50P z4W{OvAd)M-?xEFh`V?miEghdb{MEo|iBPsw?bHx-x&B#;ERSlRpo+3k5)Q9(+d;S+X3;*BthGZ7Z8w4b`-jJZY z^G3bUKk){T`QFcYEK9PeZy~_PX;NO@VP;(`G%tK?WWRNaMT_u%Rpwcu)V)!|Rn&*|l7a(yaq2)S{04)JoVeY*@MAl|Yb z_n+%mA8M6~7y2?@^a5paPj8O3rI|G5={|{}Rc%O}P4kORJ5+d^f-rS#Pr>(*KH)Yw z9#yP}DND{v5%D8*RbsLPde~1eSR)UA_OSli%M&5MRf7wAor&xp<3RVQI#@VIh34C) zcJ(WVs3#`;*~_gG(Q^E0&uQUO^xw;Lmg0SQjGd(a<`T~m$aWN3HFI6#r(A7>!$NF` zYqe&r1lyEVXIDDIn!BEhxxLh~iwFrlu48VeFn8UupjBYnl9=f0P;f2TBQRZvdO_Q2 zZ&+0O>+7CaW%|l0#8_iMIbeJ=CZni}@_nDmhMTj`{-NL1E=t=kypdA|S$0(-Pv5q6 z9Y)1QNt0`O)M-*|TsL&CYk%1bxfRV2w8ScTs;f1 z=%Aq`pKHh=a z%4|8Oal#p`Vz0Y6%J^B?_{{OFbNY)RI?-L^!_j6V0FUUd`O)al`TFu7Mh)d+x}Lp8 zjpbs!<_v?yM=^)n{_rHdDmpA%s-AE0-K^83f~LdXcJ0u-$h7b4?)-}=-*kAm0mHhY zm;_(%3Bw4)LHTg>B!R=B5E`u8vmdR?;%t=}-0QVW!EOx^W`mzzDGYXd`MS7Ei}-}U zUu9bX|8Ird7eQ*rT+RE*$F(zXA|GIItsH>ZcBpZ!9e}7VBIs(Ck`{Z)g+HX~IelRk zpk1+XBIlPc47CpM^{1<*tC|Rv%GNe26=N*<|m&fTu?Vf!&H@N6hn+he12|-JaFd8v8q4swbjrWw3{} z${6#Bb2(Q_NjQwPyppo_7LV=)9A&rW*OgUQkg)2Pm3n*JkLEX0h$6d*b$AjmcQVQM z?~3+|@b5)?jC?1W^Rw6mZb22#-i7tM>Mm^jpXy2n-d0zCVQYx_WLD%Oc6HvuwrzQ2 zcD&!jr>LN@Z7br3Ia+v;LzJuIm<_voPMeySk1C><=qt3r6H<@j;5vm3XE)tmKB(%_ zdURUXts7CqwPW`wZOoZF8|?)*9{XB#vwo0=j9J)&AFd_yr5nu%{XUP+Ef;yQ0?4~n zD%pWkDZ5Ho4Od!NXnt#XS8uS;vfZ5y`vgRp%G?;!Gp?$R{jo|+2X|v0s<~anVIiZ* zy_K^lA^s>^(p>4Ss>ch50u`UXET6ev4*Ylai@b9=4?D^FNM7y(b;Dl`{!`AcCuGZ$ zC%1QjV8Nj$7SU-)^Kd3p-d8-A1VM8@4G}7SEFe_eE{TN)6@M)WwxD~_kcR&f4cYD= zL_;J0BU%o2!>*10zbjg;z~768h;t`eSrAM#a-4=MdYn7acyay`jXn5YG%cLJM0|BGl8_o7_~L4VFuR)CV%^AIHtM}3UXExlt0l~Z4=F(720 z7kEh@j{3IA2}Gyqb*9cR;G{bhO>;KL#^;l99U4>1u_jMsMtO~u)MUMy{P+wnXsF~1 z^dpaOimT_e4G1Ll?=0BLD~GDT-SzA|f#pma4DH+JJ+Lq3Mm$~5t85ZAO=}S~^)A1P zy?wajyTPyq#X;nWO{-}Z&D7fY>VZrBR;5LB`IaS02`?>9!FYlwwtUfJstnQYOWKo} z1CmwL<`tGWeLBSJvQvM z@~FkW4DTaBi9gb7G8ptg{)DJ>IQs397F{qh&1`|PLUaa(d?_TV_3($vBk>~*|9fhA zP0?xS|28#>;?fSr=}N>3?OmM?`GABDy|4OsTAE1sr!IC`dv-WO6gpb7D>Sc!OMA<^ zEIkFLx^Wf$Zh@R2oLeri13smlRGx3W+l!dm*o(N^@opdf?06ul+a0ec&Vf;sH(0n< zg+^*uy84w<)DyL5W~-)uX-N8Brt9|Tr^+C`JNg9}&Mhx5X$8hTpBKM&kt>dC;8lD6 zM$9gPkne(m5N_8_t5cYbYhtAk-Rl5&H3JI3&ov#>r@q6HaI7Iq2=x^+O9%sO9KhgiH13%h94hhKq}> z0}1o`(agwxOPtO5D#q_aH0OOC6e3x37Qy~zJOqd1Th>j$#;mS4P>p7zvRP>GTl+4< zpMnI(U?wQEzc#`rYWv^~QP(>W&Zi6nfs*Q+LT?CV-k2R-E{I%mZd0BSDV2pY=I`d| zNQZXF2z{R`qCpx=+R%|AqX229UcF7kADy9{HRVp+t3av${7z|y?Q>mI|AaL72%kbD z=)9jVXoJs(uB9jYi1Z+N;dRV;lwo{Zajc?l?D7R#hiR3vp6Wq+?TmrA-mB8?vkVP6 zFiF_5Cm&z%W!_u-Q*+YJ%*ZfPoK5M9yP36hP&B89nFd!#+ks$VESm*#qqPF1*@mY} z)!A~hgU2dkV7NNU4+ndgf@VkME9(Ug_G!TwDXB8%#y|VmyU(b8=7YlD`HA@cD!$(O zkh%}a#+o(dQAw^`j8IH7x;ZikuN_3cxHN|cBk4&t`aU+Z$*A^o;E6t-U6(uX8rp|Q4pm>q*EG^ z?v(Cs5w>)9w}gb0bc1xW1*BWLn=RcEn+|Ds*9On?JLmVF>s;^uJpb!jE@$pN^IbFd z-1C`RK-R$4)BYrnPaSBXh<5l+vOm-xJ8U%gI@%Ij`jUEy`D~@ue6@5lc5FsICJAZl9m}hC7QbJqR^k%A z=5SBUoTr>hs7o4pk8|P?ke@K*5P5Wj%gvX*$!xqX%v~L$N?~naOq6l+ctY3!tb*kw zv%5(zPE77jdQIMuohxoy9ga%L;x(Ood;EyNrXkAeM&}22lln0G9)-Teh=;DvmVRQXqR10zK$IGc# z8VBNQ$}buDSh63w z@wI9C!PD%q92>`Uj*mXyzTCo5YZ%{NDL)o21YXBX?@ zYu?FP3tbV_(B$fc#@m~=qHEprZ!3%9w;s2@AVc04U4ankjShVpxeI8Y;dU~_dcphp zcNfRl*#Rx6;pUX$aH)g&Y{WXE@%V^ik8&qQ`_GI8dfLZW$D1^_k;{XW_`1$Iyvz2&aId7z88mtrIYiJ+1 zNiE=cXt+T0+0pHV2$vWmH~+OpkH9sjnZWHTgVYs{)K>G&ISY+bCK+l;pbiF&G{DG&4TD{VzYl}mVirnpuI zNu8^M5F8`VFpn+&0C=^NOoeuO3f%46WGrrPK`tvO?oFs)RC}5laNZYYK zh83ZS;Xs|mF!pjl9n^d!(f$1CmR@d?nK+aO!}3d-Zyct4mgzc09WQ0t!xzM6>H6(2 z;?WBAOB0Q}xv#&t;tk?sj$lh{W8xy`cw+sa1imq4n(0I_zzC9p9+{iIa$qVMEBS@V zdGr3QhY~RJ5s9$ZJ@G2bM8N3J6*ZzHwD1{57m zKc%r!gh3e5Q$`7K5Jr93boSOY#??=T+s!#O_?|Qb@UDZQ8GaDqG^pS*+i^A#rVgyg z^7Ocvh+L=b?UtbZQ{-%-M>=~vE{%IjCtt*4#_tMEK9EZUojvz^YZqGqk=1Vt>4y30 zeYb@+s3#iul&@hP++}|9`h{E;a^>fRc$=r_!=ue~OOL+eR*dekcT+yqoB)$^iZbi< zEQm2i#=nzzF);p)F6V^FY$C)o)&CurPTvC4hkzoHOBd}cCm$M;eePRYIK3Cn^V~cx zvNxMIyPAt9OQ!o5=m!_Wtn(Ght8pH8;d7j*4@6i zpzswSeu4nS;n0VCMTo%=#xHKeDG%Wb5Pcwls5-=MfY+Z>u)zwRCW|K-fR*UpYAah9 zn9MhW0Y-b%z<<1dG28|fMgyZk4=%nTfm4foAcO0iP?$fA)bYWoV4%+N#GGArH3w@{ zgryQo+SD`j-HF~istmPoNJvQtWWEbS)nzA@T+s&-0*-*pPqmuw-N(npvgtlv^C+2) zGoKEqzbrqV^D%rIO&G+6F$H4|_3$S%5ELo4Qp+b_U{Qj?*GdD-$T($m4%=-sh80+7 z8!6`xI1j(Fhxe4&S3;fHSC0zV71z#U#bA#wR2P zcnC^pNy;BcPDu7IGW{Ufd_cRPC_FF&;E9nIXb6H12$*$dAVio5lI>PARq^KFBJ&fh zUDL+Wi6|PFVRGf<$~^)DGffQFj7uFJoH}GXiDbfJRJ$-R-eSIPzF2vst?l@(gFS6 zzpw*V(CUZzy4hmo5!WF11Iy0hsfo@zUmT(QNRs`x-Z;^NE?1tGiM-Ttr;=1zJXwaW zR60BDPxEvQEbu*RXmZ1AX!`8pInfF&0sTV}6(e#m(Jke5O)(K$vsp@Gv50KQ?b@O4L^bO$fgLFMR+&fOnYETnbn>`*p1l_Kcy zq^}ge7&hup(za}HY69vDB*jy#|Mo~_sG`?#Cze)Os&tMLd91_G#INISj0kSDpS_x^ zXo1$}wLgeU3NTxdXu0=h3PAX$}f~j1(h07Q2p^j z>@jYnO1lOf3+;yA{Bij|%=gHHpEl@tcsBeVMAdO$uQ{(b2C^FgJ`~Uj_l>20d)r&Q z7_prt5{sOf1Dh`a#k%<6M3!iXuTjEg+I~n0@BbcN=fcbxA>EZsmll3?%J^kep`Y)# zmX);@8U8hje7C52gFVl68S$X8*q6~l zDH-2Awx)y`&fQ15VrkM{ez!PWE;dl>#`ux3r@(n^&UB?{-tEE`=&l9d z-Z(-!73|3p`KF5fv%9`uN2Bfj&+Q~mS^7LAMc`zgy-!PbT+>d_z@%ivYRtDQ)1VjCiwv z;V!Gp0)nkjouuAC{;c?1JDewOlC(fkeI#9%gs|wV9p@9bmwb4rquI}ByOus?vjRQ+ zV#Ng4zI_{2P(k%f6IR4~LrZ+|9xtg^mn4U@fB+~y?rUk05?1CS0Gg-y_{9Wd9?mm; znX@OUM-+6D_q8B=JjMO2+#Sc@l(l=;_RHK6Niw34lf3^n5z-Xji*kGF)lOwn4&rCE z2k*NF5QVMyaqVVCz9bI?T)_tlTk#Rv9UXk}Ui1Jy6S?tu@#?nadF0UV(C+J{;QXsE z`B%f4b_C=S!?3~QxV=ft(RBC!)+Xj@!r@i{>fDAiKthejEi%Kn$EI(Ds&F zO>oTy{g~E`l^|OZTP2+3v7{-c3M%63FyCHX-JFbkf(zcjOxAZQ{ICFsZF?&vti%Nr zpT_z4#0KQraY~qC^1>t1pop%OjFDwfo}1HJrx7FZ^=K=*u0N6l!hj-|edvpST5)LZ z;V+t~;po^Am3baeJ@+eJGpg9o*(zO}wf>T0vwPU`=jBQj%iTs)tTFh~0tA2&~ zGHY!LWr}3=I|XxtY%RKiN{rE$Dotn8D!XBH>XK{oQg*5;O*kA1wbfPmvs&UWx6=?~ z1xBW#YUEsaD&^v5SFQwobsopIwZhz@f#X(S^u%+UGO0IXa3iO{V}r%bls3@kYkamH zP<(lfi!fRSTj;OqBUwu%vUOkW2t*~MvH*u_z})ieH89Wn-H~~iF_e>0K!Bix7u5?C z6~7@P7sEUxD3!H{3%G@v)|!wT3D_ITu17y5HzaqHdU+7#g;GlCm?~Y5$&U>TSz|fS z((gSpe-Qm;eKRh$|EVU>{E^g#y7GAy3w2|O@Y;-A#(N7-+66b%91c{XWbGGuJ!`B> zGIbNa@5spJ^dw7Szm$GGED2OZAnQ|AI-gvjj_5>DX}W&f`+-pPn>&%pjfl9?GWXKX zICqR)g#I%mSY#jygJJ8tk&{GvT$XG?8^{gp0boXePY4ivbzn2vP(3!rk?5k$CqVVp z5se7&W8L)awe=;X0U~4RLyn>X7hN$cW~^}fx&n~5e+9?hhXrp1hFdvvQm=cS znowGvmKyVG1E9Iz>kN?W+Dv%qaTRK;HBW`7K)+YPz*!@2@oeHoD$LW`2_0}QKQsA zxTxU)`wciq6uFLFQAJI^=X-3}n*uTB6B7VzGka4^I(Xn5kzE5$5Na0$R3*I6y;@ZI zLb8Vtm3dzL7r+^kdpNk6fS&hSTE;Rh0*Ox(7YKtF%o$X#vkDrV#VA)@>kKI>geHOJ zlrJtO05^PL3^g39lwhr;>&A)9dsOF@;+VJYZ+2GVzzg09`Ap#88ERK?3AbqBUvl+LpwwhIaf z0DNR03a?wp!&1;(p%kXdyA-s*_dill;HcYE;5s%h08&tDSGHJpEx+Ez z5ydGaUzQjk1&sw#(B6MeK}YXW&`nqh>hHi63#6d5uoN`&E(N6pQcx8j1*QEf1$C&R zy2EP)9~$T3-@~go|9_8HWA{IJo%w^;skA?M-T8yp3cf#ht)luTyw2R?)k6LbuN8cE zcum{+k9eI*`-4}Dp?kc}`~$DVX+gbc!M$j2XuDwX0!y?qfCJ|nz@x z5ozV~VdLXb6;yaZ2FW#`NPEG8oUIQ_S_HwF;%$OS4uWfdFJpjQ+~ynXz`;@jPLPZt zdupjH(KTTpV3fI#vsuZ3)I>V#11^pR?CkN25o=`u;zdDao_pqnSyVHSjZUQvN6)gw zIs?JLsjaDJc4TqCZ>-b)IHj?Ik9274&FjRM<@e3Oxrdg5oK*qQ{kDVs#x+?_QH?3$BHLW!L6mXU%R2xw`0D2yoiCn}_r^{*{XC z+!MuO2tM57?-3<3;=d=#RN6gJhJODcO4T2t0AX{Viv01+9dcIqeYwv z`C>a>Q1PblCpw)5LsGvCR$fG*j1*QTHtrIc-(U!>a-?}`Na%O;z@CtB^e^VIA>j@Z zf$bH$bWa$#ohk@!=!Kjr?W{J9QXkA_(Js)1REC7k(!p1R0A^1ZGrxUNu;b{&Z7*ILEZjR^YG zn?*Yq&P%*~@C}ZuVDQ5VU2jixk}ie*b6d642W^_Fi;LNe3TlEMFd!T8tEEfnXJ*I1 z@22x}mDFj|j*2kiH_xLaj%!CY;_MC4TSE>WE!Tj5kU{oc^W>>YpIuzogYOn3Qz_s2 zd(~St*i!_*S>T+Soq}*1cGDj=>_#j)HUodHXHbVU5^zuUy>JoicB}Pn7JdoJe%|o4 zr;*neqOhhz)cTBhv=81zFxK7GjP^?;w*5nf4G9MMu*ck^niwu~L&Az;R+HTOzF+3( z&~y~mW=99!JTa9`>)dO&dFYpU}GwsClK=s(*!*#mnEla_Qbb>bupD7F4K0}7FhwEvjf={C0bDW@E3?-Xe$V` z+_#oN$#n#d%b?d~kr-3mJS`SZIxlgFo652vWi41S!yICA4?TzUD5U$0kqk!DnZ?G^ z-oA3pA9`!9fW5yJi@^FiC^i?*C}&`4G?=liI#7HJuO_w%&o0LjZhSkjMT#y1$*6xk z#KaPrV~zP8S?eI#BNoV0oJsb$93MSPa?P~Ggef(_a`rSILra2Fk5lsDtJ@u`wUx{p z!4GL_{Z^Xc=5hWWqp5lNMTQC@RSZ;2@R>Er%ryFl-7^W%^nMESy(zJ{zK2e~$SL4r zs#vKE1BlBFStKPnNVSrq9~Fh4TqQsSR1A2`qssA&nEAU3WzK8V zuDu!0;1$jm(;VKAtc(&V$jDVNvz5Vk!iqCFOjS9)D*5KIW7;w07tL^nxJt(GtUg0o ztH#`xNY*U<$A)&#`ufo+IU@U)C!sy%pXq8hkyY)K1F3^;ZvX7t(fayvy>IrC<@`dv@l z$#}D%b8Aa`O91I2j%x`4-Tda90TCgf5($Kc)Al*&au?E(*|X;(>&sa%;{SFaGE&i8 z=Izff_jgS}h$Zb`VNF0m{+M z#`+%lb|o-fr}_4}!+Am0+eSM($n_Gt`Fj6mNTAVu+kHw-ztZzv!Yj3zu2-81mPF5T zg?lZM)t(pac+6*q*&?MnTbaHWTu+^u!M64~@5(24&zf4)J3EZNJ>P$7VT59#fRoFn z>-U3E%_kJ;Jb?pO+Ri<2>MNuFRnGu2Q@VGPC+X_Z5XUx7Ip+_APo%5z8szOBH;E!b z-RtRGt2pI2_g0)c>sy%hdQQaCfr#$VOCebT61sJxU;g} z=>pb-dn?YJmGMq@8K=(hJXuip3GB9ip5Ey{yY7uAeaI8njEfoY1-K!k-V1GvYZerK9dGz>nA`6dew@uzo2XAMjbOI>ExSP=_C}jrX$^ zf7cJ*&t6_%uV;ZlCj=6zVhNzJekvf+-vy-6~l>HyyM{Ity!!&U(&T=|K?p_WC9ErGTrM#>3+{YM+g$Y*24usrXMiCy*NC_J|VVcM|~>X4f<9b ze165%lk{aM-G2LtXlR(<5A;K9WOF@!Z@F)jt4Hfs+(OSmE3g23T%VLMlpbA#1aznl zS7@K)q(&z7ZY`$#b+q1YCdBVOSVV?t%XTkY2$LUd?5DTNpJphpN>qj?L?R<5B-Jhw6)azVyxCIU?KuA z$lB<;?+$n@dBsbaKqUZJHG#bAT-N(|2)~rIRlo%nhd=dq^61^NH*)WCbO;(g0RqSI zFTw4<1ZVydtp7{U`!7MXh`$8W{u1QKf{OxM8fxl7_qzfT(@neL8TQ2B7A7fOBwGj4AZ-=b2;;ob%|=zZ+8MA z3pWdad)^mI18oZjAbGy4n=`wrh+eJ-wZk*cHv-vX86BaL0u45~ydoWAuYQrz67|K4 zee_&CM1NWD(G&ga75l|)))WfTgXoj7WjIg@z@^0w~ge${GV&m zK@dPW(NP;{OXG~H(LNxovVBNl00o5mztev>8eru?r0cyK1%|I9plhU#{q5YyEEOJ0 z^9VKwq=LGj0S=bJXMlL>;DeCdyD|7nXt)1L)*OEfhzqTMoKb$I|9)4=s9uuaAexd# zl3#C(vR*>kpRF!)tV~V)n0s{Fp_*(*?l(`hu}Ejl?0SiN+T812;rH8zah^jv&m)=W zPhFw&#-{;?=-BlQhPU?aLI$CIp7V8x(~Vzw+dJs3rx53e&~aDn(yMnrIqgxQ*_QQb z{T8lX7rvLvoP+k<%Z=#Jj>ZP!~<)jwCv}j-idp!@;s)Rdz^igo3=qK z5g%{)v}v4i`Q4whPyzSIvG=OS+Z1x+`9;vIW~`~} zcg&yGuLu3j$|*#2zjeb9%RS7^yd@`zx_TO)X$d_i-=MmmvNt z!%5zo;KJX=VEB%6D8Zl(;^!ksEvGvn^&n{daNF@Kr*~>m1;l6h%CU6l{zER{!*R!D z0b(`Pc865+rkkbpJ&?c^J9NGIC6VeUnQC@4liT0Fu4%$H89JGC==6^+ml%MTn69Mr z-x|~&AMCv^wPTDLdj_4^V`3clV#JTMCyO=X3T^k?O3Nu965}lmQz^`wk(kXR(x45r zXn(OFk>e(a6MQ-TEUs6SeK}_YsCU8Y(s8|p?8}W~KwTCWsK1WuRb^kEm;mZyu)29% zuOs{N4g{!c;sJI1xL#TI`QJ)DS2DC;YUCRY3ucX0v>9G@4`n|DKIVz*)n?a2tBUR$ zPM0(?nMKqm&#N#7&+hU#4@h$~JD!`zH#nCWPxl&kBs-g2QH?q8r8RhzVZ#j2I|KH9 zT7%E&fcpM$dLLDzKa1cp~ukL>t8ms@=uzAg!8gV^EcM}@eCyz#DA@I2~JxgZqV}i}OVDuyG zW)5NpV#7S7A$)l^Cr#R;KBd`m`R1GU*_N*6)aqE}ememS>&=yfTK}oz0V*@5+ zq{9|&&EoLAZ{z272kQ5{t~Tozyj&_~t_2jN;U8hb!NEO&V=9MgoU(B$2f)L@eSQiD zrwUk2Z9sO0Hr5O#y4D7|AQw9a3y`v*osFTDJ%|a!$Y5`$&md^0XX;>R2hs!?Sy(%R z^sTKN?5r(77S`4_ARAK~Ly*0pt)ropgQ>0s$kfWzf!?V^b;gQ}1KAUzj!ylhQ+q*? z&IyXJ!T#pkgNK+u@u%|&c!k~lsYg{te;()wG-dzN3rlsv&p!GfoGo!cK%`iK`<@T_ zq5{`LNzm2B{gQ}sU(K?w=gqD{+oc~8g`1saN@F0D>3y@ygHgmY{}*Kl$czy|w25qGeC&^$}wL zezg2j*yMgVhl@)f(Hv?B4Px5l^>_Io0lzx&bm_2fa4WiE-m%!r^H^+C^PCSq(qEFz znA8v1nfq37k4>s+=Fs-@-l%3FNo~pCzNCNrJ-xX6{X*DS<&o~U--2}+9T{|}@Y1>{ zX^1155s%U|xz75#abgOF2%ls6aaJ$;J&nM0K0c7t`;H-$Scn=HzX%>>Yt2Kcm>Qb? z<@_}(PAV#lVU6&I&L<2D!UkG&PFp-YLGYv6tO9u6Z#GDvz9Cm#%Mf9_pDf(PRr(Ge zc5nz&Qkd~x*N|ce77_X~e~XsusT5lXMDErJZnWe4@STZg7L`u+_vG|PSu9QZqw?0< z*KCg(rtu1r@!dpHNw_wlaBJVdOf)J^5mrL+@#dtpMMKQP+E_anlQpVh9xMVyxTPNs zcHGL$JiGMpyF4g{F@+?CD9|nh@$1%T=e``y8OvWiS9swO5cM_t@k7}%LLZtB`h>$8 zeqpate+-~leot=4kaVbgU@hqO1Z&tv%aqvqbI+urYt`X522~y3>`t{xhB6ZGZ#$Ee z#H~-C>^$d{GWkiWAfBjFaC*47L{(E<+@%-tys8O5IKW6PWV(gIFXz2F3Q|@T67c_? z-9Ep+{u$Y!qerOVPV3p`8o+l8Qu?jF5j^$Fvr5^N;L>T^ir6Ev@Drx=Bi!VzPpsQQ z9{GpUTuIZza;_LYWj=22D&v@J9!}+-aEf@ah}P-n9^tYB@XK|@GX&=m7NzbjFDot{jcgEqJ#G8mF}r`t zpe4VVk&a;6tbK*@uN$8sqNgJE0UVqYu=xf5zixa>M+*=$mpzDu8TJRn3}T{p%2Cp` z9%IDxJOy*2@n+MR;<2b&$iK8L2P zKv&GWm^yD?z6w83Fx~izVb?Ur3p3{F2nCD#+EO1l>`&7$+HrU6%4XYO;tn)|lOs)Kl6p>5=OR zpNJeOGLIeU(;UPZ{-q|(+IflZi9Ke^$O)hiq1hn~mo|y?U@Gecf*1Vq7p7jed`JD8 z&tnOw&;6HQ5YuoGAmz-&!Y6yAjCxhEHGni!&1h}LxY(CzQ}p*8&DS{U8Usti!7Zp7 zE@QTK=#1C+WoDB6r|5E@EZ((X>2%HnT1|SW3r#Wp)>lLx6n_ZCLHX*%JR8PKS zqZ@OL7BW^nqQM?k&%EA8lHne#u90v$nke2hN&4GsjXBII0|8YBriR!E1mCi{dYv>Q zY$#F@U6TiHxg@+u_&CqHDMUxa``z62*>du+ za9w!Q<#(=|1fuc+=gS?><6nIn1K1#ukOAh4A?-TXBiUn8qV@xITL&(prW#E`u*CVo z=(TR;+=k(u+)A|nQzj`kXjK&V0y~AqME>Ta80Eyi;)n3zHT)Po^NEn*7N7h7RZt0wkW=<{{u7@t$$_~$M-ftI?_3coWAQ#6$x8SDE zRl#BYE zgMhG@A(ZI5>)zb1Yk98`(6bI)2GN5}yKB)yXSxOT1Az=b6~2i^FKoR3YsheIO5DcfT+#iu z^zlku(LISG;YT$wor!dVbw=fE(Z#l1Wt2L(G^KiE#EdYQqaz;Q)>?#K8{3sF3d9GO z-EyKG%?mGNtan?_n{Tij|2#e2w^8&>oiBSNpqmTfb4F19+Dp57_sdYPXu*Zp1D&w=Jk=+)d(+7?UKxCof+ zXlm4;Pc3<_ZKR||yV-lqd!9HvcBtz6(bg*#Wn@LmJZ_a*RPgL%!fw+8FL&Zs>X!Ovv zQWqf+NxC>T%_z<6sZmW{(oAx_84C>GGGuJ|AnIUfIi+-O2&>j;2<$oDch5mwfjviW z(m*ma(nvb&z&|KT!mdK{NoTnstowX_65S@ts09*h8oDAztQ9*_tA<<{(7nA>Gn%4D zEa}Za=ZjZTuVx1*NpbobVBI-6&C9cwB`PRZV59loFh%}I|C|ffUD;Un^K944_I>{# zrDc8{S7dV|h2Gh&$sUd9SEsgX%)kR9#VW#AAsR@oZj#l}MzBc4v{gwlc!RZHf2d+1vzUk-_2Z z_997bWdw<<5(MJeoCIx=Na5|)B5rME_=&R;vtrro1Qn6NVeRH3@7l`n62~P{#Ijil zvLcbf+KolH+sbeg`z79sWit~*M+S$s>x?G9Uc6Quch;km;Cos5KF?QQqd+8KlEE^ z8`2r4RhB7$`?ZUO9ftt%2Q(a3MG3ZLaUrG$uR)Xd<_FZIYUQqmMy3@j2t<8$_P`RGz^P z^g|5%t6va3&@bTPtw#z`z+>j^>y#M!faVSYQ})1L->^w-DuK*oDmg z;Zac1$>_iiJ6VkL2z0|ad57{^`}kZ{lC5*6I0~M>YO1*m?6q8txq0)0eed19naG3ARy+5IPg_taJL`j&oKVeG|5obN#@( z(z7OvCRVv$qn1?9q-w=+z{ivqdCZo^6E7ll*kl_@|F(p^NMH7)qZIHqq!2dko0-eGtG%PT zg)WO@#)Vn*GtZ0YO2$59a>t`h?#6WQZq$+V^2LvQ?ju!Ot+* z>@5t%AE|lERAIz=9vqIpggl3kD8|{jBpD^fOP0rM>aS0bW}wmWV&--!2VSPakKEo; zV{m$`F;jSNjyph-f(~jvYlXZ~JgM$;hMK~^OUz!qR)*iAFMh*K5zuhJOTT`kFD?z5Mj5jL{fOoH z5GQdMd?L=Er1Mp|gYU1S*NI)Zk&`i`1nTi&GKQ(Rb$w~$yH;bpnabfks7cM;{NK2* zY6jzK&U?PvMN}QlH0J3hSiWVGRSNWoTitzH!0Sw;o*X#7);O(aT`X~U8%cF;XPT2L zAicf!8o{E-i=yaVMJ?5Fs#5)qew}yOoJdToTFA-P`eTZtkSl$M==l|0jqbCClM zc&q(K{iq8D=lpYY4D_EFBHgOz`QN2n?o8+O&Y8szqHW5fZ3fW&9LMFeoVseBbyn~c zC7Ik~m=jRnWgs!J@#Y-;@H>LTgu^FbhvCL-nZSwfdRZ2o5--mi`q_lznc;D(mV&~A zcM2Z)TD+#z{Nrpf$UU!Okgza+KNzPwGp1Jud6ZhVno4GL+z9sQUDupB1l_!;o3%vS zJfyD_r>#dm*Ca(La#r*r%!K@YkK-NZh1Fquap7na4w^EY66}@eCAIv*+aW@~JP0zD z!|J+(j-3zgkU%8#J>{RxIj$YI;eAd25u~ccWuMb_tH(4RE^CYvP?>t14=^mj?Z0F0VuA#kn8zG$^<0Y4!4hIRoF_k^hOR1Wjug`wAT_m?W zl#jY>y2^fZ^x?MUH_Ai5XJ1ffEo+%FacU21IO>Buc(s?;J~qCpV_Ec-t|R7uz90SF z0lvB7jJG3~ZJ#`5{&0*c`P{z1DIdYDx*+C6B)%_aZo8>>=oJO<6XnxxC0$E=B0IMG zL8OJVCN7Z359h~Z@t%0dRx93pVM$mY?JWAj3I%N3d)GRcr=_pF8#oLl&#QN24u%!W zSlALvoqiRhVGkKuK3}HsA`7l?lV!>~;*Q_wg)X=~)mrjW0hI_X-*Q>)oY0fk{V4f8 zttO+QDqG;apBG*n)zq_R~5JG$>kI;@@G z4ko6~@lGd)-IJr|vH4+Ok=G3pEc^6!dR%STUF!5)|fepRp^2^0K(BIS1z~os{ zm@d1X-HqpR9mi~z5M*5m`OTpDe+@{0S!sD!*kVc`S?SM+ylrz2r=vNGAa#wu$?Fa; zkd6Cqn7-Z(>Bcn+&$$btwNuIcJx$P{0KN#@HV3sxMX zZ*N!R6D|v%Q0x+k#9eMZW7`b}S5KQe{y3z#^P78Q#Vn+b8s^t=)4uqPr?3yf(F}Kv zp9|5UI(;c~Hv^b)_)j==x9vMCAt>OnE86v3_Q^&*L3G4M+Udl zS#^BcJ7vHqqFythQ{GV;d6fvOg!3yp% zD1U|_P4M(n-FYTn9!K0aVt_*A#EjO(DCpG@yIVxM7EyCK^3scvZ*_gE`` z=1rPl^{2WipbOTP8qnokK0aVd|5P^sbkWRDrgIz7&#)@n5DolP*9vq|&!2gnCg}XB zt`_L>a%=Llj)Pi0K41cUV$K{Sk_Y~EBS=R>R)A=m9s0@=d5)f0)&FO$y(;zl@%d34 zZ3x}3kl9NGvS$Ua7PrUHrUb5=WES2KO?HV{rq6jGzcjdwYUcXdrt4Vkqm|kN`T_AV zj{oTTxW;qBLN&|T(Nx|~{cAABB%<5Nv2Igs#%b-&So-$11@8hyBJtbKGr4ippqURG z$BmvV^Jua0D{Ay+Rfm*3=zI2>mvudUo+H`rQ1WvG)bmAJ?^L@@;eAR;JPVgZLnL4C z9M9Y*4K?_E=X)hXYlVA9oq9L*o07;)zwkrq$X4bB_kt0uZ#ze=dfM%)FHoJSV_&DG zH8g^orwFBLDFSqMy`l=6_F(0*4Cm-|rHSemVVdf7+hy&ht@@>m7@m2i4vjMW364(T zvf1>qYQoCXZsD>5Eg>znAk_tWv<`xB|6y!BD|7k1lt4Y;n~C#YtHPLlX)<+kd+WsI z^+&MWW642iyMD=DvRXF4N+~K^JI22&suOWCTIpv!=#6@^#Wh2-!KUdxG=7BPjP0cP z=G{{k=N_59wKajU&km-0Bq!BwI-(%)yz{m;*|>?DiC?ALUg--TK0eM{m{0e-{?6b; zo1uNc)+HHd{CIAnnl@T#)%^IAr(=OPgwJqfJBU7R>dmFiSNFA{P4T*Ahk`jHU;F%3i**pzz)evJv<5FM?J<5G$=o==82Oq zn;{mUkG;hsmEh-TWqv>|;0zyWd)IRm=k1~7LoCu~LhO%(qMZ_+GNI%mwXCw>&^=^Y zbLLC_;`8%6VWE(WpV?Cdw$&UOPIs&!e=gSwCl{b)8g9$jmv|#Md9P134dbW^_`Gm( zZ5if{zm}ce=VK~=`1~B(tou9pi}&PQW1TytN;J7X{-w&oxfHPds}&*(0L=^8>(+78wP zbkZnmH}Z!}Y_liRwwX#Yeot**0j(r#e$%BP*&j~Bdio*W^_2KX)hr|fsM*47Pi!-C z8~nQ!gmuis1ErWy$VCE^4l$O6QCtfMGuc1Fr3H{YG|9%1nq~r8`%wDGNDP*dzkrLf zw-^max*H!-57*uJ!Y#Y-roSMx-FozR2hY&#|8zkDqj)PRkJkx0GWfI_8xw*f> zjX&gxr_gxo{fZ?&F6jrGO2%tidn$<)Tca;#PE}6psvEvig|R~+UPS{}j36uG@P)3i z9!FlhTl66A>(ZppqAytL!}G=z#=-f_nPm2GRr*VLTodNi4Xuu}PFh(SPU+Hjshs=>y}$m3}-;^^d= z9kRo>zc!X>v=^d6*|ot~&L$0?I;|HnIa4#nC?vbYHy)fa&bQ`|omPXR9I?9vB30w) zMxBGIeM}lO_)DmF@Ekj}*9Hg!t}Q=i2t>O^@mpoIIn??6UblBZ{fL|z9a>D(ZGmXA z2;xe?ideZaPMwXkz#BrcQ%uUxzF1%u4j*&%>&#n693e)eLR`O$ZX1i<*k5hi+?cre z93ZMTvMzB`>BuvbX@Kjq@O=J4utKcWI6m6s@O=9NtEa~-tq5_r+$mL78ZFn=(PASd z*Ni}VC{f-i=e8xt7_FLBU5#X`w)$A)+2QMfgQPot*Z zV;4*Cy3>*yk4PTay}xozeb10d9_AKvs8goc-7{x*oz1Pn>Vu-Z`!4@IPpo;y4=h@X zydPMF6r>Bqil4<^7np!`s~*3>gC<%oRfuV!isV zK{j`}2AOp_oc&StP4ZT@^)R%Jof$j zh1PB=pD;xlWXcj99NL=LUIp`(IHX4YpUC6uA~Y|s;2ozFw?sw?-)ZdIDP|(jFkl2R?n0?8H?=7kFxO)W9E#KkdumfDGK%J)VM_644}~E+xYqJiSy(* z!*_mm#n+M%%+ie|WS^Z)@L&_vTPa!eZ}%74N~)uH*~@zMm2}`h{e_B?w3LjA^#9@Q zEyL>Q(sn`I-Q696I~xxW+%3U_OMu|+9^4^#ut4zO?h@P~xLa_SOu^gvy8E4;YtCGK z=J126y&k>qCADhrs#zfZ zTJmt2_j+SU>^x2~LNTgX9r_E}elvIFwI8qNiYW6SpCWU#h1bvD8`%LBSQFq&5l>z> z-e;8oAo)X?O8w9dbn;)YMT<@hKctd#Dr_|hu?OBb*+WS2_kv4YhU62U4b5COo5=9j z)DCLStT3QyQX`>q{Nj3IyzT7T_oO$c)+gJ(o%kk|+_h6s;tW@r@aK0OIBlutRzL&ND3qo0suC$b*&?WQSs=M0u<#z&3;AMF^J`k}iQ zM>#bC*FnZulJ~OtL-p2(<0Kuq^^}@!%qBrT1mX>;Fhdl+9oT8x(}T7-11=2?qdw@t zeY-(Fi|?(Cp@-yLuL%P0mub-@8#k}cuIU&%l`}E?y$ClO6vy{I1+Ez@Ld`{pqWOrD z$k05cJg*u|i);NAm?3KFA>5U(y}BOvOBhdjydh2P_afIMgiCJe0w)Szfs^*HzLs$-MKhhsB^JjO=O-NQ zQsW%%g}pwDcqmP~$3;$#HDj8Aec+K44B0H`fkXbGk+;fglth+dm z{H~{OtxU}J=UdjK!xl>KI*dfL9kJH72A zm=|7Fw(U%dTa;BM4;WZTAOzT}|Ft>f zpGPK`osV?y;}?5lpS*q}X#Co5mU$opi<6ZsY*eL}Sr32JM8#*8%-HkpNQGUtNymNQ zd+AMF+aoI^M2gfkkD^hcTJ4|-ddl9@-9ayiKxCtOR5Cj5NkQn|`r=^=H;<=ec>l_? zt&yn3UHI82-QoHkFmY~|r(0JkJdLo*NenCG5Uqv>wyU@`q*JU&`V(fd4o z{C4}}#kBKxx3iwz!jC#hSxI@5^PBOS2ak~C52GcEOLwN{i^>iPMD8D}y?ow9EJZ71 zft0+lBW@2d$E`1p?krnwZ#Tww(jye5qRY!9MeR45Bxf8AL{WM*@wKMAddpb|w z>+u40$kykrF4Llq=R?=@hlXWl=zWvhQx+~Wr^)g*w+7GKrCCK%-G_(szQ>#upVR4$ z3-!nY z;jQkC9mS`c-GZy}BLxz#)1~UN)0(e1A-(G-xLk471Err`r1ZQW&&Ib+C+RR?TRrc# z^5(zX-!=hjGR1`J1Mjuu4H#)$oVB{$n!9tCZTblddp+gS94U7Vu6T3ZT?WL*AEXa8 zrR^m(jPDKXp18E?>glvRYCU>2Ewb<|#4bHOIF}PQU>Qt99t<%)wjb?3oO$_dUfx{} ze{3n1DCZf{UHYwnZvI(E*Y^5Y9j@1nJdLkG_uDeX+8HQ`B^`}{WU`{i@NG7)_~4od z$%x$qufa-H0?Ei21S&0`A5s4k721$!BGD{6@bq4_zRUjQ(sUyAcY*s~&Mle{N7->W z^F*{;T!nOo83m8SX98?L=RSU;`GQb_oqwbgWnLS;%}Za$M;(*_a&`S!CD<{558J*xwwFmLz7a`@#gK+Z7Sm7*zJq+2m z2B{mJ0QQ)4|HatP@qKt9lT1vW? z%3Zfvtd>GnSY~iyuFixY!5P_6Msoe8h?Mx?Nmvle1Cgz@j2oBd`vuP>*ga$AK91F< zc*t>t7}?h*K{xW=^$^E_NRnT-G`cfB^f)rkb6|Uzc4nqlnuW9Z zDUP}LN@ZFVPs`u5#wCF6w}-ZNSh8lo8$PQ|e_TX2_*{<4Y__pH(zUmEq;hy;d_Di; z*K($9W7hX2mjj-3cYROun)@{kxRfZ|7ObC&xJ;H)a^ZzPC!Nu%yL==c(OsG%yuI5OYHM!RJ#zLs{7%cP zaaHNEo`RAic=>)dEn!99qs8-nPQdzw(=X1>EOn8e?sCf>< zqrHo{{veWlx(c(-1&*zw)VM3TSV7g9Ooix3o!y)$2#f!1+zHChWKfV;hN#TrDJ7;ZdL=cg09gr&_Hx;XfMY_ zs4$@0#TExoMuKiL-E~5T87qM)j;M>!=fN^qQyOCofnX*^@ID$lpg_vjL{-7H#clJZ zYlq0q)3ZXuM?&kaJ@(5O6J^44f&AJcn zxnPLl{(8z-cGAixR^fWMhF~pUV;WtXZk!~*ad4nps_0fHa#v?@T9`Y*+?~jsPMuE= zA|RMp5!{26+o>fx%Gum?1HmsC#P`>a)@Sjdwal?DWb%AvBmMQQE*jw=cc+7=dKP=i zd1NY<>Gm!q;b#e{+m?5o=3(CGZW#JT*>aRA~DkY9+iO)zLto;ZlaDC3dw zZW(_jZkF(cxMjKy_q;DaVmh`75AJy{#PPfk*P`ryDJcykU%yOudnx%sob6x4xMT+?P%}pcPR;66&UK5 zi*Eik&anH2-N%b<=S4xb#s~KnUEOay>)ac+CQDbBOI2x8;FE%Em~$l!TO@PE4P2yi zdv=IzT-qwTlhXwaE-FP}d)NJ~ukD~@>eZmAQb_R#Oz9-AsMooa{9S`tmOY)a!`atZ z(M~ zRY@%EdKyY30X~FD)Obbhcod_he4C0wKJ;2BbqOvZX4{MF8@5R&`8D=D&-DG|>*JEt z+BcZ%EsEQR5Y%7X^yOzHQ|?%W05N-rx8Uw&7Vc?|^hHY!u}V5a;Z8U6As$x#?vj@J`ym2K{I1Ymkq zqx?ct);k0M&*PMi{=M3}XRNf_cQt0a&se=bmMNxWZNA7#P5;Pf#VP+LgZlVKwv+L9 znU2>VS>es!Wwmeq$Xrza9uGzBkBq16?=n;UKeB7Mzx!;p{3EM-|92UV^Bpx}d zk5g*;Vg)RG!5Q&@UpFf4q2$ti8J@+;KF$8qs4VGT`FQ@Uc?%zXCADRr{)i`2$P zaq-S!d`(jcx?;V|e1^#><+Ad#z#DsU@lM4JjjziKjrUbrGSdoWFWhC4n5PfI_!>F0 zq&z_5E7Hpf=T0?+n2)8d^CeljByH1PH)^83F=e6NP+<85LchH19a>rzvyNwZ2Y;O$ELj&i?we=l}8v_T`Y}?fd*G3;C}@=!;4g z?q7$v;1?PB%fZJ124SE*>~{+W9Tg<)QyqOy4ASSD6|NWGK3ya)!bgW^A$W9!0X@DJ zylW_CTXW{-8|v~}i|b<(AE`$m+O42oVAlSL#f+WSgl?I{992-^43>(oPy+^gfR zOw_O}+DWy&UHg?m=hUsZQfeya-PSu#@5fl9^<6HhK!Qn6z;kdI^IEwBlR` zsz#7qfdwCdNJ;r+rx?~uNlX#C8#WilOw!H9+Q%>nX6-8MCm2eM;4eCtWy%dy__7!* z+A~ey`JNRCM9*3TJx)eII>!X+Wq(C%Aym3T{$mjO3P&~xFhpnjV@NGl`42-0foB}Y z1k(=jFR22C3Iu-)SNZ-jv=IDbm__oE%?UBs3)Y#YUQNE|h`C>#pn zPE&Rcm}N!Q@*Hc_W&O04JQ#Lw6KZ?=TOEa*HY6)gvxMhhc%Us(qRn&;Pmln6OKRP4 z`i@Qz=M*w)_hGz*ZTA4Lj~~2bcxymwg}SE$n!Ekwm0FD3 zW$lr=i}q1Z<>DR064PvY)&j?ooW}x!1!@iQzI2U%=IL>f;!$Hbx0wt$Q<(dZ%n`C zlnRyK%&Z?Ce$nVk8h+AvgTZ!iDHJW^rn@agUp|DJLeav!tV_|%EM(;AqgQ_B+M)=p zs+UZ!H+XOc-T$UM!i5yRJmQ$MTJN~JJ7L!3D*3F@Q=4t#U|mq6^I#ow6bK~^totAK zVeo+6Pu@+p^^j=K=`@pL&FK`|YUaQT~EIe?&13=kA<9giNIgY=GVS(WvYd7=P~bz>kyrvbR~ z(b(C055DDgdHyw^+HKW}iAD$}N1$lXG78q8(9dW`Q*NN@CLzOIZV=}N{bT!5 zYY#AW!?1D$W5pNryA*;XQ&muO!;M4&<1U%?bfx14OKH{v$MhI%vNQ&(C~nzi6s-hr zr@DrkxkvJq+Y{W%7hngQgVH}=s+OdYcv<*aPIb^N&3566z2K zzziI`hRt9BNCQ{ctV@N>UT=UrPpn$e@qj!B|B>f~s$L!yfc~CKpEwd3jOJ9c{YTbW z8Z|zc^{?{V*XGt>tn1K?MO`qur%8!DHz{}pSE187PT=qAHZ z8bIBI4?t-Ebu*>#Qt}6o1_u~#svJ0&{8~qPBrS3Xci9&~_aeMi6V*knJtiThtwqfm z^~P`(*;{998+EJw^JB03!Co6P0X%>4Q6yKvIq`h@*${7=Km-+L+9Q7W#7TYa+To5I zTRpqG9vlYw2BAwU4z-w%d{(m-MW3Grf1zA)7^Sd!(5Ndw_a$Lgw|U+W9ImW*2f7%DDl14x%9YUHN0BZ=fft_eEU^|j{rEBit-T< zXj;Z~)bho+3S4L7lQ2bwGo}{6VZZK4e4`yWNWT765hWPDIzD``c(s1wW6a<W4^H8ZCg3cBW_ZU_)=31LgkPRD|WCn2xHK7R>O zIV!j}(fwWbbG-WxVgG;^nW!YHrW2OVl=CsPe&5y%2xuF?Q0TuQ(`5CP2sw)Jh^FKt zCuiBz{kNBhb%tDB0r|@I)W>td2)XMrKUrD|6McEx}MQ7kV>IeGgm>wgt&*Ut;H+(^vg;s5Y zLbdE|C&vNOBEZ%>!>@kHc4t^@3(bC7cpjhThc|`VGp!4dUtajhe+11$zPv(1Fo|P0nSQRJ)5rF%b$^Xwzjx!@TdW#tlc_4W*AMM z82}AUVtX-c_BK(q!yY(G=lLxTt!$6|*>-jxW{w*cV{~URT?HZspaWsF?w|))`0fv` z{XjZ^{_r1lJk%0m|FA)b`(r~u{l`XK>7O|5(-V2ZB(`X&f7KS*` z;;=JqXA#*Mq{KJE2kRK~am9lwU&nvS*uEvp+T@j(=>pEdJOS@c*$1{QggyOV>X( zW1fF(Qr-X9Gzk5%;coq_HBd|*dDaSo<`uRVx>S#h3j}$`6}ILnCl5W71VIA|+jCv2 zhsMEzyd4T#vy_tup3Z`x28HdJF4Y5LQ$gNJg{^7I$$d`^K~S;6_EeYZzOkerZ;ry& zB<19uC$}IdRbhLgOLfnfMvymFVQZXna@P|_5EQ1cJ=UeVYYZdE>!+|aN;$dXc?ANw zDQu5)sqPqWgLv%~wuUJuw>@V-APa@LyS`bKEVSBJkb<4N_ z#H*~ZH9$GJ>6ruqNh@skcd2d~2ZMM;6}I{)CpSEuK_EVb?cOfc4P#RfFPp+v59Q># zrv?c4{(rl>OLg5?62wccu+>F5x#r0Y0^uuccXp|+8PkAx(G|8jC?{7vaX=t=h3)n( z)m38{5HGmGRvYEyiszL8=vIEawM%uycw2z?RDP?4a&p;oMgX)YzunxWx@_Dlz`G{D z-L$a|XWSI95jx@o+lQX9hZ0H2K1z%$MK(lCB;^<-z#FxTwe0x+xw{Aqo=^uIn zA4x*t3_;l!m0nb|W<#MG?Tvd z!OhK~PM8Z-3HjwlY)jJ0gIAIZcdS_{Jp;**D{X7b9g|{zEC}u5?$`cTo*ZE@PA`|H z<$LT0b^*SjFS%&Y?k|UfixUfKV&39xY+%V%UqWff=Rw~jE9Bk7PATR=_miZl zj+*cY#lZ2o3yY-@$nT@)(udQOHo_NQx#MJNYiw2VAN{5;|Mm54O{7Np(A|y2dE53x zmKs4p--6T1Q&pO|X7k5(OSm$pk^0(qj6;00UDz;f*>^m+_FOsQ4&hm-b#Wl=ERpSqd3ig%kCG0 zUvK?4YOFV|qMlU+9HNijkHT4;!FGT~ATpgCHKhVJ=?ZYSlGyj_pa{94}C;l8k zkX#@2MBIp83O|3c^q+1|J%uLNm}pfZTZ2A5O&Wo^lx4>G1UIo>1#EK(6v^XGLzVcQ zKOv9dxnRN~P&JdaW>2JMdn@$#ql>=%DTwppsv`W^l^YL^`KKmoL}&~>v@EtgIi)rW zqmEFrSHGg@U-DXd{hXI)Erj_ek9LR`U)0aOw7Oq>ouj@)3`2j3C{3Tu_RF6B#eKGv zng5*=DnNvVy&{LGUm$L`i;x;-Da^DZ)Ds$nn0AphC`0Lt%j26`vy3PAnKER5gpw8oO zYfZ0TN<3cqXv?c`&sDO}7{w+?)yUUANN`G@z_pDA+akY|e5-vh;gX)WX3T(ZuqPqE zUJR;TOKJh#R!T!pcsyqW`QrBcPoOqKYOog#=;UXO^pm+N ziWdz^=6|HpV>pcZqCxzkL3lO?A@-u7`bT5P(24X#gX=FJ=W{BCFB$=VG{y~ySza{c z|MGD;m+SkYQT<0_*04wDMZ+Yy?FY@T!7LFg>sv*pxRW=d~Q_)BF`i}4_~ zUr^wkj3T_|3-k(qYAtyHPS!bU$A!*&JE?t29rrvw=uiX?5FQ2kok$F0UuIgX%8}P+px* z>^zy?X0*>XKe+g^db8fO#g3zKE3FhBrI87kqHug&&l?hwflMWxcr*Sbl8j{taq)~_ zVgHTR59==MQTwxzFIAU4m(FhA>47Pc<=c?UTI*GvsLIZ}m5^(uA@fdHM5p@}Wy4Mx z5A6gB+x}1yZgfM%^eJNO<Vk@k`+QTujErA#ksX^Va;dGcYOQRdOx>s7%UbSN`e zsIwS2|9Pf1NE%?zaMU{ByKTvw8+trE7K{Xkg^Vs*Ha$iOdaBmD!d)i~3e?AiV9uX0 z#&7LD9IEvWX=>U^4W}T@250ASc^o<)@DP?rN( zLS%o6F54F}5To7Dq@j9l`2Yn!DVssrstNoQg!9vx0_GHA+k4P>y8Topv_XT_>+ydVn zvQj0cgwML?c!vGh;wHs$1`sPIxS`k}wGQo&iO*zghY+X3cNu-PAS{S;@C(90wM^!! z2@~d}z~d&?&JK&Y2fS5$MuAD{-#UNnHQuJ=?f1V&!L^V{WS${mo=a%`kmo4jCuy%S zyt&!``EzzWHotamyaWejbz!l+iZ!|P-93FvrcQU@2NIzl7azQBq{VFE`ZU6sjEEuF z^^KDCWh-ik?6s-V@G{%+BowR-KEaI~cKK7rNsyuuvE_P+*u7?$bc(&^z|u3XSbE|z z|B6!6_hb26=EGMb&bs>B$7~2x0@ntd?V|&e)7NsVledlyk5Wyto!V2IR*be0XAl`T z;7iPm;129rH=WJ2>x}vyo3FwK=5HYDLh1wFEK(ky$Q4whwv&u^;~`YWb|WJ!^k;BZ z@mEJWUO(+lkAlCagvA~aBwe_exJ$`2y?}#Toy20SfKn1Lrt2(nP!M=k;nTX;SIgu` z&`3MR%+iUga+_5+21isr5*ra?ZYmH{i zAJO5GG~cy}KcNM5^@K;G;bxcyl3}6nyP^3isJ4lFlkn$|9~-T&XZYxFp24zFby6Nb z2u}2mzK26Nd6LkcA;Q}7x(4O^0uM1vmRQf*+wJ=Jn}EeC8F$$9fea+Xd2Xk}nf}I; z6Ip~K&6Tz5>M%e_V!rn%}krlI>Q@$PPlg7M2gqTIUe1_rG#n0pflcTfT`A?*QeIceK zQ4yw?VbKNP=8~AGrgNEIXb5kZAv(@14_x|5jqF4)qazeJ#Ly66GeB@6g~co6!l)Tz zF`@H{&SzZ4+4G8Y;U}TjhqHq(gtm%sTcL!XwR&VKUHf)b3{jkpJ6;$zu&fL(Y)Mq( z3&TaD4ugnrhiNcKp+(Y$a+d=`R7G}gV5JNXGMuv3&46=KX{-=%+4oR*Wy z=qf(L6B*z93NxGnv@Ur6{p=jiAENp93F3c(_?rp&e_xvsQx24BHfz)HCJ|Tiy(XPE z8WvSvb{WOoC$YnG)}|6lixOhG&H{V?|5GhK1q7G!(GA}JauZvEMCoFV0NUet$kvlX zM5(SGXZmTt$<5f0F8gt7pn5sMhRxSIkQS>^#lQz7$h7oqfF2-@gkrvKKW-rjC$^Ry z4-3A_3AEmw983ZXw)+8v)?g&gdw2A{KIgfbVQD4WMCNu-XRYl zM=@~T&I`IA$};3!6#00B4{IpWOaVufU+c`| zeKUjqHH*K!^l5$2#9z7sa^3Yg9a(Vh=Wi6jCtybZGMHV_k!}Ci9oGB8vZ2%s|^Y~?3;cl8Q1t zf{*55b9^@`(3r|=f%Z)f1Iu|@zspGpm18$H5CGL&&$nb21vVO;G$hey#uB>7zGhRbLh-ULdikCTBy88O-#V0MT#^DDE_an zsXO|krSZa{I~JO_@`whyxGPxYzYN75SZL?}?d5c|EmQlS{Yzu?$HpT+ z*5=Po0b^iqmkjVM`G`o|ql74$XbDJzhucNXL3rC8ym;L9uDg6fUFNlZn+qH$oxZLT zXuL8uM_PAadEja0L~?1deyj#GZg8OZ0%s;c)cF4J(6AAoOhU`Fh}5kI+J>C%`az(< zhuY+OB*9(#i8~BY0$1!q!}{6YzE41Vzxn$N$O@PNefs+h$nHPQfC3dgv#z*#9Re31$M(=u6r$K=LRVc9wyFelpPLo9b0sj?)&%mdyt=C%>C_IEhJ$&eN#8d zPvp`TDlb5C6pWoayuT4%iDR3G6_2j#XPQ*(Gm%UyiI`VoE29x)s-m)TRx$w>u09e! zL4=$eR_k75v5gK^)ZUJYurBe@Q+!EGB&yj=6Ev7^M*ntYORK&KSUlu0s11XOPe_5_ z90TI3shmK3x0Kf!fur_MPFleXT^OoCJ#BD923%So%S_)f(}PShPEa9^)J#-9Dl0)Yd~e4We0(@a z)3}g!4hze^iF4MlQn;**hmvnd>ekc+GvPkPi5(2zT-CV2bA~l|M9p0l1lz~DtDY~s z9#B_wmg`*=_&jitz@`Xzuw69IV9oI4Sz~lOl0@;)%HbfSioX%dk{WP|V15da=3qyI z`9X#1XErevmA_+%p^YxocRQcAV$9w6U&ZvQB_fRMxB>`W>;HFNNJ>hGEs#oNn2OWhYI9=R}7W2#&-!Ojybe` zGUjlIK9?sF2Fx;k{(Y9w0n9SAVg5GD09I7|zt1vmh<5ZzO^VLw*rt^qBJz+l2z&U7 zecMg9u>%8lCgB4M5;|6=><{f{`4a2hxG15??au}w{hHJ8KJ!NnGp5Oak0N{72`{fbdg32dv2d))CH%0@7!Tp!Dn=AZR9PN z$Z&2ab%Zz&2cAKy1l@hhQGSp<`0ed}=l*zS+OT|hHI&};_|d2OK_TV&n{vwr^lms1 zs^o7Tc7jfrgW->LFE40B(r{G~OdPce+!$PtQjWm(Kn}ql=`Wq7TJy!Vs96mKH(y1s zH9tc7qbOMY4x}yeN#7SnszNU}!75LbkfJKD4e)gRCgiDCLZ?TILmb<@fO59xgwbxL z*GQx6DF2F)a<9tmI>%~ovS*$zk*buXtPXfai!C)`&+u&&@MwO{9kgEQAv;Pvb9DC7?aY&t6Xyyl#;e9mQ0r*w9}md54LUmJEgKi3g+Ah>-RKk zR4gC%@_ALhlqSU(R2&+2rp8_n4m2xFpT>W}R@x%+OQ>K@-qI)Fmtahq9A@T4X zV*hu9;EW+=?c%o;Ye^prWBKjNi&xxMl1Tb9IZs~d56%zCA-W-EE1nGx4_m79-@Z0C zW$5b-GDpZnZRDw{pV~^Q-;SHGd1cq|JWMLh5Z&q3%mk(<$4|S1zg?_Cq|(XeNyGJY z$mLq8uOdkH+z6YlUnf-j){EJC`oj{mMVO@>Y38}nFn#mMwz+~})Z{(ChfwQagny>}w(@1-%MVI&S-6&!V|*YD*)5DjEBuG=}5EsKv&Ef?p4+ z$cM*A$F-UcOFUu`(&Pn!dxxyJ-wqP@(@oSz+E`?57>b)_LQEFj)&#)^XrhxBr}w|< zKtvNDeu7y+03YG@FBx(g_SaliJ2r+BNEVD`H8RY*=A^3SJkfAH*bAvS5$g0{PMpzz zvdT+82%j0E2``B6;?F~*tQ;)ji4Lmj&yL5tygWZ%zt}&!C@;ynmI*M@2w4mm_la6K z=lbz@_m<3~`g7#yKJ}&#d|6MGmL5qhgO`A8ktLxVviebDi8A$v9lNh($7N}V#RVdt zqS_wBbPRm%T`z`m^&}pTY`ywyx|WRjtpvh{Yt0+lS{8MtcDE-BMCqx_1-CAF`3Tbm z-vxKir)Dc2YYbqXqgX7;YZLDi??ad3748Qa4`<`)``k*rdmBFFeTLgIs*qVWB1b)= zqH*NxQDN~`0k!OF^i&%z2Sp4Mqmm#%6*71AFto z{-U4u^CHRCw(o&O@5S{s^i@RV_1Ts5)t`@SDr}n1>ti3=F0i6K{%TvFQXInwtw#9H z`h}ePTYQQ}{@W(_oF6@!6_%elxmlm?m#Bl-r!3M;>4kqSpEsQgxbU;ylvDE)*K>8a z))TCVKxvw`hW6G=BJ#Y$#o2{-r#q+q^p=%h0CJ1dlYT6+w?bi^%7S)mH&g1GhLiCX zQ_FxZs^uruyym$iDnb!GJx5BI)%42VN9zt+9;>dgw{KEc$t9w<2%OS+NUrZ}Wgp;7 z!@LWa{GoPo#IrghOv*G98lO(s?pu4cO&xNL^A5RXL$azj`R@nyQwIgi;a1gK5@)F0 zN$U)P?Mr0T%V`IvYF1q1+^V)M5V*0X0wLuojL34mtgnLT)QXevDgv(=iUjhyAYjG> zk4ee8-g?0f@|61)e{`Ta5!0jb0`IIh!lnrkpq!5=yvMw>g2{?#?AP=Qz}SiRBINo_ z|Ep_dYct~KuWPM0$9$Uz7U4TZRqxxDgj9GURkJ5egsfkY?im|;)mG)G(TcRvr}7)mpauQUpFD8(zp%l=pZ7-fO`q3U=U@l+Uiim9eNKHFLsxxc2RmRl z1`E5tEpw7VJHo{Y?Bh^q3I^u>zdh8Sg~0#cl45p!Z*ipa&LNK%$2&_u_UwFf`^Vwc zCUStaYNX#5g^(=lV1tTmPOq22tvlcvi$jP!~NGe3Xh?Y$x{ zZh-4kxW>rplhMhxd)aSiE>w-{y{>!V_4bf5QrakCsp~pTo`5WAY@RQu_8G@FZ8sf@ zKZ9DU#lBz@%dKv}46l9sezm$Z7JW{7f?NM_d6fcX?UkeW0!|r7Dzk5KZGle2C*rp_$OyOX|85Tv*8pT;mG;7Y!Jk>_dF zcL(1-Y-?w=d)$0F27dis?2T;|0{Po| zc%-~l)Q2;K*Ip-M!qgi!Ie8i5aAa(MPDIg?9?o-NRQh6{_!fa?&`f>De1$Fa*T5@DS(q5P9w|3be0{nd@gbQXt2dUTFtewS^&#H` z1tz@m`YQJ~Qlkr{G3c%q>MHowv&FyqCKbGmkUKih&W`!`Lpp4n7bwP=EC~nr+4GS{ z*g2J4ETS3iEs@R8=?_FC|8+{_bfNKBq$G52q1-x zr+&n3pT=Tog7`PC4v6RN(yJBy^;re;eZ^?1w81c}Ha-4H;81&Eep>u`p3OPS#Fu>S z1On|40)b5wkE7Cd2vQhjzxYBEcWb0FLv_m23Gh<=@(l|mw2a(E)r24u{Sgu^%-@s$MYH_IZN?-^^0G_39&qZN#Ci_D$JMP^6Q?o-~uOLQZA!mTkG|euD;Adl#%qx|bIGtWdHuQ{tAO@lQ@r%%^kZ8#rzWyoVg^VNCm4)QX#7 ze5-IRAMjxI7xJozB>eq;p!sZ$1*lhu=v}H%dnU98F!@)q#$!7NSK8-60lR$L5-Un^ zki_F|#zWUTMh%Y5?}0TMRFvIt>!S)U=`e2$ADm3ub`9lx95`~4T9t#wM2PDaSt7E& z=1nhnQy^G{Bx+1;1^Xd*>CFsZ!Fq5EYFB$sJi#Ug@90M@ig}9(qPh;eYFrHP2Ps&YleC1r^+32*fj(fxGQj(xbCaF`bJ<@g%CL)uBlwd@{h*4oYb^&cv1@9o z8U`UL{mB(f5JQuO=RqtPIP_s$7;+$%DJb#vEGWal$=uw6ufAosl~%vD z2=N40yarXzU_0+6V^Z1YUsv5>Wi0?-Otj~IxYQkRhyz}{eruYR7WCt{GZKy=YX-(SF0s8V9K_QO9qn45`-1{+kj16Hl2 z5+CP&_3fj{IQ!vX8fLb}R=5OLuT9?fta?VZz1pfM8$&;-nFC|uI7BKF?kYWt`bGVr zAT$5);T~t@%#<{ny;|yl(yR2gzPGi4N_L767*{o^G~hFdsR*i|>*RW!^3*DQJE_%u zD_0I8J+`F*PnB=Ks&7{LwC)i@mVduu-VPQ`Nci#VM~m=z z?W920ypz!^?V25W10hxi#N~Em7{(W9HJyN>>0X` znEO3-o1RVJD}*FRus67hdwKm{Zuz6TV4Y+dtAaezPYsM`C0Hyn<#NAb$+T#H!f2z* z$ZHJ7e!oE%{W!{!`}ts_zt*uoql%b^C+CDN-BI@8k>0!Y)brzrF;w6+~(Kn60QZu6U_?W&Fn6W!JRA2SZeqWsK`*G z<@{M~dAff;P=`~ze(?KQETiAO$%wVh>PnM?+m-{H;37yyiTLB|lA`4}aqhXVw&@IaYxs>e!KDIY@VV@W`RkCRV&kQ=CE9`H%zvX>V8|4<@*C2 zc~%0#RTtjJ!IOrTfv1aZ*}kt3NF{{qps8)~Hq-)ovD`C!nFYC+`Og<*`7|fkYw&oR z31k&e?DcF+b|?`^8A`G0M4GQ|l&&W zepMsKrSg2lX>!Jb?XO|+xS;8zIZx5#VWRlji^QzM^*H=O@iMp|wipg2uv#%*D zo`uHXybzLp&Us4`leL4BOBv?`3O&kNm1O6R9z-q65pmgeuYE_ROVKo{7jYY+{3J>? zqKrS8%2ga!S!+HXX&#&ukbz6>xG)9<=VK+94(koIq4ZOzlJu8&H7E3<3^q7wGNKlG z^618EXaHN?XT@1p#5~=Yn-v1`3TX$nloJKqph0BZEEgkp0_`ZIgBlFN#DgHGw+-VJ zWmX6cKf4t4`lT0O!3NG2M@iwVe31Lr7L#EvDTifY^)};e6W`mYjrPBjceLCu2Bngi z9oS&c{PG~{+X0@^3{QHuO+Y(JVX3v4ux$lx4uan{o+E z`MGg^ppV|vS5e0Zv!j~gnOu!lhrw~l7Kv|0q;+!DH_aIVM@%OPbl0ClzkTK<-~KuN zix2Z4;E)gV9#+cYzIxe3OGvQ-Ki(D}b4L4m98)TG zKC#Qm+(BCqny{sMjQsj%G_iM355=Wu5~?8$|(iG_kTCcpDP8PCa_ zWszW<8O*61k*ha0rHW?`nJkfnGH~0AeukKIKtkt^jZh@re6YNDT4Gx}>t~rfFA00^ zE~Vz0olA?Q`BPQdhb*BiiED1tTe@kw_vFKS^#b}Hr@Ye9QM=$@*O7@CBk;~W=@3^V z`P%kN6?VWbMQFiQ;u*qUe?9L~w4WQ7xVB7Hic{&dK-16TQ!BXgab(f8a^*Kd77Iz! zd3$8od6TQnDbBaAH3_DhBwr(;O=J-5iU?~kEGd{j(>LP_ajnBm6uS~F`ba&%{JC-Z zYiGJw!jf+0z@m*roM2!Q|6g0cKih)RpY4hajog@>r{4i z`D)pvKN*>>HfJdqS)y(O^Uz;r)+}+*XCAdqFpdq-sJHdlH!QEYgyK8WFC%C(7 zfZLG#*33I|XRUX>-0zR1nyOvH!>C*v3*F8TXN}k=WhGCBTO=T@ncn7-g8n z4sRm!vx+yH41B)bkizg9O#`Ve)J=VrUscO?#!xY>f5glFWhL(sSePmNd7O@#QAF`7 zAAV|>|59jm;y~6YAw~izZX&%(M3?~PrI_G{Wi3MJ58tEXLa}s|7r`TzNm3g4+DyIR z_U=>K^F?miU)z2znaPBgt}wY;*6WSRK3Zc>1uH4&Ky=54+rX}jh-%m1h>_rUP^I{! zfJbp61J89NKYQ&(Q|jn`{9Iupj@kftJq~!i2Y7vELI%D|h~x`;U0TD}?;+u2Il0#J zE#FM|yu&g~tf92hl=-XpJ4e=~E!re*@TM_l@WiqHE-WB$qZkNsCYUlUARz{dISGm2 zjxZCU%o$fx^iqXE)?*H^Z)WL?In}FuPixFqCPH(jZ7vXtW(OoaVGituI-efkB}G2r z&1PGWMg<90Enx7_!GNDLo{e=8cidQA&>B^%ru$!!e^<}YsFb*DK{TkkQDbWHCi{L; zKXJ<|+bB=g{B5M5%1-^4UrM2m5A4&Wp$hB7aY2AP?JpexR+daOk99a`+LX;b&KJ@&pb&@*RbJ;EvN7V>AwIO++3 z7F{K9?&)hfqpejA5CK-!x`*IgY1C&NaaRu;!#2%cRTeE;Y35omdWbH)aOzbj{tL%f z@gKKG%SMOy447nxCGVOxbn4#IyWDOJXCXC-Qfb_^s6UW1kM$KQ1Bx;cJD~ju&iTuZ2T5JyA#_o_ofuM4+EW*#W00Sfk@E%! zkj|vGXjG>(qow(7y=0}1&5)?EHCfmwRNdetP~c~zs-2ll`OWG~Jw^b}Cw!;8_W8Qw zhxYU&z*6Cpz=tJ<{!Gain(mde-~9b9DOi-9wd$IQwTfW6p9FH`7lITV3qwI5zZ?Vy z*zuV;w9jWs-7_D^X*qDvgP!SmaXE&3KgYBV-Xm=zj-*PE0B~4EDy>!=A`|gg)Mql3 zytxTW(P!CwQLPDQG0r0uY|?ZAp(-+Fgd-Mguk}qWXJW8MNW_(tEa=TK?8uM2^iu-aSjuEesPM7{z|OJA^h%vYqT=Q^2?o$DsEo zd+rj(bo<66VOQ@-Ub6bRAu=aa1+3uFqQ2v#%Rj6$MPEf2WesJEr%**2It@v+WBgLz zg6Ctc%?jvU`5|D=b7q6j6U6O%BK1B6rw`JR7BebZmfgcH%dNdqSSSpQ1^Icu7xrt< zvh^}-XSghJ?p8Z$`zV8}P1nhC-4aMV=+`d6&3eF6kPE}N_D(dMZ+W=65}&?*(- zMne-0PaFvXgW^tVlln0;zEa!azWKJLOLproCWq=5`aFBz<=qH(a6M%-m+U)G-XUBz zB>Y%s;E_M=CAloNCn=B0% z$LiR6+QSChpvsJkfSnyx?f6(hux&*DjF;GzEw*YBk2PCohtoSTjxFL;pk*0&Z_?@; zc`{vmoTu&@k+AQFUa-~g1LvG;NE-4Io?nTH&t56kIyHc2ELpq#-tGs}UPO}ZgCJ?i zX}Qs%fZAni{cNC;+_By=-j0z``^UuVu0SSlN84rPLL7u%f3>t}Pqi%cU7`OyrdTc-1q9^rdd@zcqU&+3>`Az!lS%b zM5M5tsc18(lA<=py?EZEeiX9hBh3F4I*?wl9=y-Sm3y7p4RMI0{_YX1IZq#LIm$-I zZ#y?k%09FxCDqUmBHOy>G0%5ww}9P|j6o*0?}AAKpmIiH=@W`NM5N`ajX0}cY_BXI7%^|Hk**#u7K znwtT!T`ULRcnLl>V9Qofi@NJV87LN!Rq z@9xDr9}zJCv8mVB7eN={`0ZV#ML6csc=P#K_6wN9RD*6>lyR=} zVDOxveLtdzCqm)bt_}p^9hCy}(1PpJbUtr%cvDqf{3z5I-ZAwJMPqTa3c8-t+f~x? zgu_l@X$j|Ru#y$j9dYsR)b`B_4IQ0FtaJ#Hh46?ND$TQZX0FXV#{US@q_8tP$r+NQ zhO1upL=wkDXgjraw7wGP{W0=#Ei8ZjKFdEM;ht9^MG&C^oVdZ7p1zB7L9Uw>5w3!& z-$ZaCalT35c{O%wD(fYU`5xvUDfi#kz(4UVQVXUhyU$TcowqJ z2s>aYd>XJ69`yf{#s95~zZb?$V^TPa|6N!avRq@!G_G{Xn%CX73aWBxbLzeT&|`0d_FZZL#WoWXl~Bfgl&O0cV0IK zz)*sjoy|B z=*}4~+x6WnjBWlk1{+Jub!O-_JO|)OQZs$sW-CLIdUgigcSEv@6ctE@IP~Z?aUH7x z?17!b%_(*$fi#4IF)_uc!1sq8w-yWmS*=yVINvLB4Jj~7Z8pPifk9T!HzxSYPA?81 zxog;Ew(juD9B<8^H+pW?CZUc+j{;ZEiw_TRuGqC8#@j0NQWImK1!nV9aR*Bv>o58!spiw6faqc_duZRcC3aC8(8WAwDqc z9P-^riMXkaz^3d&zG{DE?+6W{;S1h*YVSnF0|qvH3&)k_hs~AwYYb1W*TwOmB`$xL zwdr~jgK60*jV+C!Bs4*|y?g@!VUW}_5y28#cCMdtr{NDrBw={E-nc(hH=m7rD6_iu zm2YwHBpoJ6#ze~Iq~H5Vbw*cA5!15q_I=d$mJ;mKovdqu;=16`8TbBOQl+sei6V87%q(KJJ}**jBGNPOG~6SF(z#3)rl?h_*z~ccMDO|TH!P8 zu#ZEQM45ltJ({9fY6WV0;CNt5W+b+rfTm&<2+JT+7B1x+ryEV7O0f3@^q$uk9CwUF z;RI86eI7=<&~0G7%;{K+l72~BCp;E7AH;3cSN4(a7Biu=A^t+P0@{ZSw&@5vpX7(V zCh96VO{|o#G7$Dflo@UuDK%G$Q<~N2GW@I~r>I|mO+@AZ(w2FbOL&r7hu9)mS0Jq6jA68mVdA40;x@P!ZbR9!|9WjC8>#aD~eL+n(@5uPu|hbbp= zeo2nNFL@0WT{e0?aoPiAL zrCinaDkXUco50RKmDZ)1;%5;58f%NrR z|IBEclE99@1>tAeS=2mH3ta0WPq9IQNQg8Y`^A>pH{Q{adAuI?Yvj+oVjjjHroW_E z-&rSq8@Ze`jfz&$ml3-Z@}B~|kw7fsp&F#Ag6&TxXx-5&i^4a|3ds|b8uV8Te;HK6 z8I;YI+kVfO1a%camV6%^%}j?eCn_Pb9QCps%4I&BO|!KGi%cOajb6*?2vd{}?Zr65 z(MuI3D;!L1nOQa@tmvXc3bXwKJTay%+yZU^GE)QW3rZmr@s{*YIcjBexRH_)PB1&g zGL_Fc%WP6D^Qud6Ry0NZ=-|$|tumj_>6Y3DEktT3ZJgTUVa7PIl0r|iX_?TbNLf)A~SJfm`=1>Mo6*;${*T5hj;>K0&H6{q9Mtr}#`=L3 z0mwYuFMt}T4gw4-nB{Gwy*Wq}bXCz{=3DVVxUAq-rUMJi+RsoIPq_Mw9ZjNdey zpxn<;l|wbm^-tT2f+n{#lUD|IaKkfT1tRXRT9s&mzy3Pw)_^>B1il(mU(hwt_v}zE zp2U#1=otlm7~=rWVc$x9S6Jh>f_YW!m!_g@;mCA{O7|$wz}mR(41g!kHBhc)Qsk(BU#y& z&$-kBl}$Ze!j^nnAN7)nyFY4YWe#&jjY>p(G6UA$NcRdrfC2XH^2O-^-mbVQLZQz7 zwowFhdYGPCW;;h_H-6>o9^Cm}5@eLTsjFJt0n#vaGzak1aUAuQ4`}%+iLq|0XU-=o zVIz|+LiNq}*z=Kom9J~O!iiF-k$dMwA_;MRqNAb4jX7Y?9>83lT+u$qN>;2un+}@m zqVUp)>+{n+5@i`b6slOORlsparXcnu7bx9Eb_sg#A>g^i45bR<^Cf#1vqW!lsMOHy zw7AKq0>}mCxsMij&PXu(Hg1xh&JdHc#QT+)5mXwaIzk%Uu_&l1-+Q-jx)=RWBRKZy zewl^zmP!s4^mnSF{A|^5*Mc!M)o-V#LJ_xDsKHPYGZ+@|MKS6OkHGc92Vr^zBq(9k z<5@uE(TxLssg1NS!$gbuY!Uz2j&t$D^|zKOk%Ij6;Hd@Ex)nv;<2DF8ccVGs9Fs=F zeA^4!>;OahP_^AJk)LGSXw7OxuB!^KnbH$POW6vw&}+@knxvE@?*M-S-lsXw%A}al znQe0yz*wc&(?BF5S5aI->)3HLL*rTX`?PPMoL&giJ&Ak zK87NrlAmudH@oRxPR4O1^@#`XRkZuK*$Z;pbyb0I)a7P;pvJHOx=mY=v0X}%kkyJ8 z)%`@n>M+x56*y!%txHx3op&HBr+QyRKuw4HiFtg-CpxS_NKx|&>*{e0m)Ei4dBtlB z`bwvGp`P{lx;E}Mbv@dsv3kA2gHUC9M&H{0;v1jbo!k3(p+VV5@5 zv!K2&di^C3I)fl(RwZUI^bcpU5xd>rMRPyPBrS$&6!khsO}fty1gdU;gtFw*%9cn) z`;Q`U#8#megp)Ndh8WQ1e`4XECY@pZ>f()nP4qELGq}yY);#t*QkNYpjeZIN^OvX+ zA+q8RQoE%z*WpT^N-x4#ryM>R2r1z?o6<`-iZbkH);`<1&m4>cFpiQQ^! zlvBjnjVg=7po=9GbY3n8vL-n*N$=a;3#3mhep8-Eaa!;6Bd~6X5}ZKvSgG z^Iv=JE@l}x1kiIafS%L(_uf$28R{Bn8yXlJYFn5B-oe^9*l8PCSUYL!TU$BUSz7=; zENE?`Z3DPHp>1zy`^C`8!4&Y>K~pPJ2YSa+MN4ZOcGzdYPfqCwpqG2}$(39KTMU7- z3U~ooDjzK=w&i>kLft3dKWf;EAo%W9IXb!szVNkz=u_?;kGsf-k^o!2Oh`I^$t;xp{{%bwzWy@3;Rbv#@=B%Skvf&>(qcb+t*!(EtGQhff}wE^`l zon7izdyXnnoM$yB1z&~SVGr=X(!c)!{4EgcNl`1vO?}$Ho-!0Rl+H-)K2ovM5XbUX z)k@k%$#`**y7;qyQlF<8tDr<0RnCt*ubUXf_`_z~CPzNlSw3<0nzP10@4O1|G2gus zG2pQhTz4Y_*um-DaL5qBRP}Q~f3XnmhdWXxHK;5p#lYT=XUhA@Yf}LWN9>lD+~e|} z$@cpaF5q>`g`n!-wa_3_IpD%Fm3@{crh)KP8vM$)cUvmzdWhhTu<(?Yn7Aq&zroAM zV1=PABL-*Azzbr{OB8IW<(vwG8Ih}NOij|3k}(6TTyf{os#4pg zUm2#~hHL^&l)D=Z@stVo(=N_R{Qjhx;u*3KiceTVZW7qLcOkq3wW1Qbq|}POiYYw3*j`FRR+JzL^7JCAoe(97xd4J;i(>x z%>vaHOtPmM&tJZf8G8DsCt9u;bI0{oTKApYbYgs06R#ABto*Je-bLSyK~tWV^BwNE zfdcTgdxZsx=2##Ukzr~P!rkl&x!gvQ)}IB$Zlwr%I}ku?5I~)&moGUEk)wRga82Ul zx<{-dg7J&|#2n*!P(Q~=s>HzCABM1Qa{$xZOl}z} zH9aig1#{tZ?PPnr9P(~WR)|n}ePq2uRQc7)m{B~G`!JR61RbL4s+S&lpz)1Kky)vY zckVlC22F9f#DVx3LP08@OyBNUZ~nwhK0$!L@^W@|)Ai&;@O-hbo5AaPbrJYzz546Eo$lrOxvTH7 z{?OC&?(X8LZ|E{Gq5Qe&`L@`}nqc&y;ic#4D>o|K9EV8* zXwNQBS6YfLQxFz9$XEr>E*5?>7P@buF4Gz8kbU}k@P9s(-t?ajCH>2xe>uzlKMu7I zpDnSUYI*$HKU6M{f9cSyYH6x;0L*(^_DB1qV53z;U-UuRc_~&%o*SS6U>mQ2#e5#48l<4GM&>aK#{fwaqD} zovv`T%_RCVD54F3Z*z)j0}gT5t15%^X~VI0KBO8~;LM(=)EkbZx7w#Tz7N70uG7r8 z1pEec890;gLersrdZ*>e451O@lGE2wmIk;M>~2^inDQ|f@cLk7-^5Of&1=rFHMR>g zM3%(T7QS7qWg{&(J@D$Zxm_OLrSW3HVV%0Ghg2iyqnj(UH7q5Nk&0JP`WvX=4K(!% zx&eTUZQNX6JxJHesAu`Lf2BbyeAyDZ%46Nd9zoTl;lP4+#}GafmlL*%179_eF`b*&?Q2lVacVX)HcF%Y5HB^88`n?wrzyeW%8XhM%wQIprZ{xk&D|TxwkH_7| z7uVaJ_2=d(2+3RiuhhmW(Y?FZ>JN8Etk+L-=lf`yw^zWWZqA*xe13U{>3Y*16HS4L zXz|5vA@Yy@2lzstRkBa0J{)5dxIxMbnl%?-)?zH25Q%`f90R~wD$M{eX)OTk#&iq- zM^3zg!D?Q?TyNl!S8(IeE10r5umR?3=SNwA=QkX|Q-<%)O@r0QYvCGhnMo9|<%%9sXoaZ6 z*(cC9sDyZ-d<+_z;yc+k#kjes2$d|*`8mZ$ogV3g&|HX6-saihdHDbsT?qKv5?ClB zJlM7;MoMt$DLp)19yUQJ=J?x20so{X`FTa3kCb077AU%QU+(s9JsVy|+Mf<{Jb%p` z*7N_mvu$lWV^Cf?eK{kD@OaugZF@X9RZF;x3mDly^lX0_@%;6?DieMv9rWVSxd_M2 zj|IoQYlnSv(g(OBCKFL-+x}$9vXyMYzjZ|##t}6h!ND6fUk9?!&{Q*<73QLzEtzSa z4a1KqMjj@U(ESBc6!<|SXdDSTciHe0_RnI_s$5o~eT7AXslfhR3*k{Y~0NQsam+%_f8GgYGT zrlpd0I#gJ6)qFkex`$85JJvWUHh-+_^{lW)SyS_=uYi+gCm$ifKBXIfN>=uhB>X6O zDYLGyxWf3x$F}imD@ww2#flohH*y#$YwE^%LBve86dD^b9#bU(>9mQh=954Q!H_X< z6PS7f3br!PS6#08`2LKq*5t|6Ipb4Xl_qh41hV3x2;UcEMV#%gW)sZ8MU`sV-?_u# z><4M7xWBS_w2=@NJ6Fs20}T>|Y+<{*M*G_`wiPI1+M`!tvzy1kDtaQ4#bi;-U_xxd zVHGueMz1nmEm36tJOnS#j8&wI(c9@P+?%Q1{xD$lwOVOFu9Qn;z@YGh<{RFZ{^@`s zx0c_J{afZd{EB{QgaI92-*)YKDN+i?XV7W&X)tiBjZw83| z7{GZo;QnTSwUWs#?CW|D?o6IYd36B-ZXnNrIRFrn0X{EUIi2cS@zo>D0 z2FPoru4Rd@hTYJj*8A7$`rI_TlOKW*B@rBEu8+4Btv+`XFZIUM%9daOs1ZpE9h^hL zgykP~81Ann5=URxNU$Yr@JWwkNd=;DOR26k~lH|1p8Y-As8QvpC#qNM704|%%spdGW;axCd%?_aNQ;_V7^EE%d5fmJ_I z<5}8ci~`!EJG`zE-fjTT(hZ>;&?cYuO;XI=`9#Rc9Baa6cI=+<4MPC(l?2DQLt7F{J4=lvBc4o|1WQ4p^I8t5tXoIMWCoQ=12({ufb4SIzuVMl zAs~i7t84@2Wf;b{-Tw8f)fr#!H38MR zTx^X(7PGG94tSE>x}UP;I{oSB+oC0a z(9~Tmqdeq3eS{K;>J#f;4 z{>}G1;M))NMPR8~<$3A&>AnMbe!Z9bD+H0z79b~57YDUpb#&=d8R7|o~|9Y3TxDik#YGS*r zr7#=Uag5C;Zn_n&%RwI)!SuC{JG5Bx653fh#xgge(e!4^D)zLu8=kH?~XOk zsYdS;B!cmd_fqq}*yW;fslECM=$st7v?O&b3 zt2;~_JhV*oHA=*-_Tgo2s3kFIi5i9=z3T2nIY!dPyhmPtY~;t_=6SOL8rws_XGG#k zqNu{-1`wt#uA@IWR?b8#6VHl@5768bE8x<^5ERZHkdYng6_b^B7llSfD>IAcb10FQ zPX|X0B^-yA#<#eRoB&v6VAzs2RFZzJwYpwMGt6M9)45!8{RHq7W0*4cR5IUpK3*P> zX{R&Psa+h@Hoh`33>$>#8(#R{Zq0mbBh|L3-I_VH#ULUp*ZMYq+BdibaoSa!;EvS> z@U(btjb2DntMy&Xo2x5s$_)3DZm+(UH*5OEwzy7^y*b;mTBh~TvSU_~$1rC0fEoPG zMW(BcN6n6rE32`gN2z@AFwdxb{5a3idigXjpnUdx|1z<-Qe4R7VNycsG+P4m=IaG) zfF+Wr+0#i#YX*u(Bs_vg^9FKDaiCLoigD29LGWPW8zmtV;GM>wy|KAh@YpS z;boPZ2m}0V*(t{q=i|l9koh?M`zYe_;YVE%e{D$DR1|#>k?u0xpgmIE z_C&IuT3_Lqa9J-l)CFyBM3i{sE}_Lx4jEJqN@S?|0cKzUfhMBxj|TnNU3|d)_fWOr z@)=GVfN%2?>PwX2a>bDTQK27ejB62kr_jg2^K;J!6S)^Jhi6Vl9lunf(BYdW>@Mif zTO|ZxO7N!BhIp!)RVPdErK_d#9yWdZiyfSBhC0cMhvu+mNIsXR(q2FgMK8J-SoqvJ z6KvFprxU&)h$Cg82~t;4d~|`?NLA;|C!B7S058+#E5k%vwc>*ZUJfo7>f5?ApZIAb z3g`K?3Fj-(`tIB*K{CUMMOE|5^GLI`R$F8HOS`s7-yFdxW=j{e9cJOSf?Bzh#GyZ= zY0K9A^ZKLM%kD`=``y^e=2Q#8%vydz|JmsW9t*loM!7Yh2V~RtJXf0j8|$N&<25K) z&zndH>dK6;sLo!qB5H65U-h$`osV2hxI$oG27&@hnJ~ejc?6t@O9KMi>g9NN&Ush~ zgbnXx#ds_-$l*Z1@YhJ_UKt6*sqoWX@snkujAV2NpH5JJJrEi-yBEUw96N8b$Z1>&?GS`FCGph}~gs70d^4gd4q2W4Y-L zfl3YgZh_|tUmhQ2bKkq=RrIG zUA_F!^UJ=tB;Wo+O#5C;C;CMJ{XGCa@CNVy4S&Xbg@*&+_HS_WKk(33c-b8Q-tz|U z{=@zT4*+AS>%{blwIZe|_blVw<~o<5Bf1 ze&c!4bIW7sBKY!cWTXXZzhub%)MS+eKK%sW%$9*`2jy! z-L*>~9ioMrvNRc@VUNO@!-WIC=xJ+!=~C{9;#?-H25=qxP)<*%2yGb_4EKh2IUZGw z#q5CA2znx2hKTL$_C2Loa`V7?F3hkfJA5sEJ$@)<;5?>t!pDJ23_{ec^^IK>lMPa2 z8!lr5XdPhVDNqeusb?_NhP$3$ec4`9oH+xlltTJ2_aAvV)S>Nc&O`4bdfpYh){eYS zFZx9SmrWh2!P*AKB|+#rncZ*Xo;mNr=(bL8J=ecnyzXt6+He>(xnQ@B2JB{7B^itV zVZPPFu*2^W+`XSVv1PqNh@;-G-Nv6z=RemMsy*!a>mumQYzrq_U1YnvHIF)Uc^F1} z;>%qg(wkuyeG5Q!-nTi|p=x0;0BZkyi1^L)W&ZrU(DMcFxdl}Vxz;be=gkC>)KM(y z=N-7pO8;NmkLwGcIISDFK7d2-!m;MmVk0lR2%E#Q?p+4-e6|7&Ow*}F8*bIH0@r8f zu!8u?uks28)C^q~ueC{Oc;GZz?`1%7;AYk$X8vUW+hk(kJkH`Jcxu;MDV3zMYv8dU z^q^0qv;QuoO_#2ju5&p{)F~HX9MfUpBeY`|kWt;&vS3ge#VHF<3e+1i8N*R4-X!`G zcHXjnuH4nnVJcT{z{}D)q0~g)5yok8J99Ua`5h;rWa+ z;IK0O0s9isO~P%(%Uhwrm@%bcKGsHt4PgwFa!RG>gDP7 zm`rD1!<~Jrw{3voL>J1Nn46ZY*Vf?28pA2W4-YisPa4Hp6xRn7jp-PU4ZOJ&j~qYe zLx4g57OFj~NKXKRbS*q7joK;K z_W~7c<&oC$)al|W25mxFT%jWgHKt$r5c5Z9wo=G~DJIF2%H^_0^)AWa)G`o2O)jDD zjrP}rYb17PPz$Q(-6hOtcYQJDUeVgBF2t76_aW>v0C=9$^!5E3*cSkPM_J*GeIu*} zaKgT(!&g3Mq@OK9ZTD!gZ~V@eN3?9(uDco;2wEKM0CzlQw%#nPFmeO@S)rQ)m>7C9 zLG{PPz?+HwR}*$`CdB@jsC+YF`<0K&#bjBi*H;08DWP&8cg987y2|uYwW~+Yq6R!o zsdPrNRmrSQsQ$fKy+-?cE>)A|Pb+!xAJeI>*wX4xn~qF{^yggWuo;}f$HlO=@mv{P zd^#q=26m4h$|nW{H{&npYjrM$Gwb(TzG4{3!eBR#HqQn%+WYVgQl5^74xj*s18zWA z&qajEfMeIkI(;XLF$Qjx-aT$+cEcW@|FTlsJDdh`CI7)Ca78NposEP3g-i3Z#npi4 z8@0&=%gajs<&9?YQ%!s2VT*ZK@?&ay1oI&GmDvS~$8YZPFun!rWuX;c+3OySUh+$& zjNM!E6n4*ePp0XI_qUuL1ctFrdvjY9cep z^%2*pTKf)P!D-I73wXdGzw{iOm@)NR^Plz4YTd>RDPJCES~>kjliJu5rBj(ab{Rfd`Oj5uA1=J7$(t*AyJrlt%)^4mBr#* z=C{BGZY^F?wT&nnE;dl@+`+g&2nLZ{hIRayt;}j4a>~i9)V^FPA<%w4Lr(X!b$vc= zCRp`wzdqTmpK~c&uDRFvq?ytB>umk{);gseVmg)Y;k~E=2~IM9*j-C?8WI1)bvXg= zbD;G}+g%(?=f}$7R&PEy_sh$nb`R$(e*TyBpMeUcskm)lFL$+hA9mIs=dAfTd0ej^ zn#W#NP38G!#+PpHb3B^BW?ndQ9yU_va>NjPhG+YPn@Y}Y*|HPB=UrE>y<==NvgLH)5J5^Fkc#*J6c)5p^e%^(Im~SYq z$g)Re;_Si;DnuPmxdjb}T%%X~`j7!!KkoAIGIkWsGiS9tkr5(wV)C;|c`NsH=W&1m z?@~arDdOpl>%h4RBaS<_ba@z{~G;K+*2r z#uABge?NV^wH0EfBtw|yooXU!D-O&?K@mi6ow>VTt)aoL;7WD2UF_pCz$EhX;YY8iUyV!7ZO1 z|A)La1_XLcDp=Qgc?72F_>tK8{*w_cRodqXIIlc^srbDKRJ_3G8zA&1g@#1uJGiPwLE#|w;wGn%KJLZ)IW%xl@U*2JlNf=XGITlFFD~-!o{0!Uo)Mm=kNdA9|k@Yd+DH zg^~wA2%_tQ9&^~h))J4heTXz++Ud?iGdnKNvq)4_tr4@`$y@pW3rycTzwBQ=kUN9 z?f!}HxwA6yTNA(YlSwyC6waG&A+5_@-peSusMp2WXR-5soteIuRo~+b0^&pjZFw)K zoAgdY($jpvNa}s*j;&xWguzCTR}t|L562#pz@-pvy#Eu=Mb*{fyUXOEET8%Ki_M_a zpFFtK@8FEJdtf7}$P~AeZ>-DHlo@`8pvG>F(m=e#7yvUGvn#+~S|^m8I~tyA6RIiN zpuh5(Npd2pEi=N@_}Ezt{qVrQZ?V(y0vYtaRw5MI?L*>hcH#K^4tumM1dA|qa3a=x zvHb(*Rob?X9nZ~R=dG6XyPYGWL0$TxL2PSf^z!z}BA;qP6fw}x3WMI`8v&}BXtDb0 z=r@=ByKx{OxN`6%^}tA6{NeozBVAd*<2E;n!|zl-hv#cdJ-;8!DyP7R-3(TSZ`&~Y z?XEq8(yViHmGe}b5?U%)5(jZ+@+WvdboOE3(oEc?s)`ITzH(g5H7`4zRS5*Ol-So$Ds!+>0lmRwk`*~f#4}2X4SnR(+I@2j&|1NfJ`_Zsg1m7sl^n^Okc3K z#}mR~2G56SAhb2!10`0cPz5#~Q=7MFsPY=5 z#W~!gq`G-LxS^={S1D86@Ud$-8|<8u|C6$lino+m=lxa6+CMjC;y%quIk9NB4RF!~ z{vtj|q3T1M%C!@qSLI~=kCaJW=Kb8u$GslC__s=-J-!vdi&6W^3&RWGrM~^2cx!L} zeO}#XWJN))wFreT_S!G+KBFT%L6lhKl)1A@gXx_9DI+sn%Ak2`St+NBwmUtSBgUiqcE&tb)&< z@#q*_VgA$12Bs-0Q#YgA_iv8q<I;hb9_ojGL`U1dGr`-i>Ka_^0y;nDRIA(_a#QOaTy613U(H_~S9} zZ(?NezwkILm1kC&1IEq{dw*-ofTn+d>z;v(0?>Axoeov0zuS(C!jIl66HQZ4Ci$(1 zwPYxN0C5VkRi$?SSJ@|QH#z%T_Mwf2q%MPTu7`TjgDN<2b28mR81^`Q{H6?S>N24& z7b1*Y!O1D;-~vLoM{QSC3eOGxZ^}OZYGR5A-_$cv0Suq-&1tELkG@qK&1Aha-Zd?I zzs2`&p^EN+#<`#rhzIh3XXk?y-VYV84NO|CFsI7fu0~I}OJ` zbw;i7ad+V4U-iS?sMudj$zqpF9yQ)Mc0AXE=dpz>ZkeqivY02xcru9u8TU z9}AMz16M6TLkak;kE7kFF&YSPj!aw?YcOI558SBglt5vy%=M$G;t|m|;#1;@u z3Sl^nhLmLzjl52t{N==`>t5doaa6_h!imX^8$giafL$-sJCJ~uiI_~y*-uO;C?1#% zL}gBVQqQ)z{){{7E^p&bvEyHkJ4AqSrw=gh^!}qy6nWpqou|LlC)z21NjU~EDZ~9U zDL?<#C!hXqQl8Y10o()K-ZG6uX;|FZGD!M`@q4A9GsX2UL!ko*g)tx$KhpmU!P5M1 zp}77_eX`mF2*o8J6rulw;^DVGks_U;_{<0*FEP{)kJr-^65*e<3b$IGH?!@(3vkqGV*wtW_{MCp^73 zjqEm_JpxPa9D|wCXek0-HI?)LR8}aCiKud9jM3|oOhy6fUQR}u69`T{o7}9P3!$los0O2sd6OSShJI3XRLt>%;fB@xiU2QDC{t`0@JZcUu6m{c@h=ufq`7@M|m_i|@r69vu2*4fW!ON$LzOqM8MmfvhDg zBi&Y*W9@3nQ#)O8#B;xKA%v3*!W{_+XQFCT6n^3urU9PyVNeFvIJRS%kHA&EGx^m! zL4UYPFRmxVYaMmS8@nLm>vw^tvmhlUx({3o-+EO?fU|m(1a78#-zkjy=2Jec#JXnk zS7RM?>K8!#8fAcB`N%#Aa!KS}vT2ETo|iFOVUGry-QL5J1p!HI5d=29A6N*nBvg?g z%u@`(;a-ogV+c1j=c3CxYK9I;R|i~Gzy_Y^gU>3uf15uI@{~0shmg*}yO!Yi$K`r= z)xIUJ4R!8P-Cb%(5zkO#Aq2$F^N28oQwZ`1b*}+&Rzk43v*PU-#Lh3j{MT@R@tTB8 zo=Sg*kTv8)xL*4{x1o;aW3jpD6xA$I1(3}2Ji4lijw-v|vnvAU5o4g!kC z)(w1cB|PnGNi;u1ls*H3+oq0CQ5CR%*uscy{2s;+T^(pa0S81%5Ft7H%1zkgOf9YP`&3%8Q0p`7DeJ-^J@n{=y>;MRU zwG=`{wd?AO7G_v=GMG?ksn^l>FrfTQ2x<9;R;p`(7rtXTgf<5Nb;Li^FsX0U+Wmh^ zEp!B+wgXVh{X>nD_}lBkzoYK>m6ec1nA&S9+R?DWo`VoV0#DBhHG(CjS7?a7@`ySHsDu#7 z(m&v5k*JV%6HaJ%8X8pFbY38fYCSTPJ&u&pm+DOCfl&17TQt^RV0iDFdlHc(`T31M$HVRF+JB!NGRG!g-}&4a62<9dn})l)}stS&4N1@1e= zfTFEpg5Y8g=}VH<&oWF)x!2nUFMP7P~G95C9 zN4vOAR2b)Yqdd>31vU&_b9Ys-6nI6nI4c^qV=+3^*C=aR zs-hIIo>2Xo#MbgmBnW457Gm#)NpMx0G><{z%2J4C)#)i>@6Fp#Q1pdFkTjg0&EfpY z@v4us&4UK-Xo5u)vUKasqQ>hVdx_7NLqJ#Yr@E3#)PwyR9m$KEROMQv|JLPgfXfU3 zm*bfKxZG^=<}!`ZU%Gtzu8;UU50F3O{68fpDE(G)r+=Bh2fH;D(zYt%&V;cm8}dUX zVqL4!fg&q(REC@hy_+_l54dYYBSD}Wk~jvPUmmDJyX)|ejO1lQLBm%WkW~!y;T`@< zmyjY$1Gp;Z;tgY}3+i~nvwB4j@ri^$go zq(uJRfHcT}1{4Q0AnAW=K;(ZK5DoWt1A6@v4eQ_0zzX}jYJMmJMB}vqVNCus;O*>N z113!TZ39Aw|8Btlw=NSQd$M{O=w>4A>Pixi26zi;?EE4F&F*B$LWuQGfDn7t8iuwy za*o;>0%;zQljHQDZk*lrKRUXc4uJDc4T*OBCpd~#32Ww|`_mUOb*e(f(ehSPgb1cywhvK|H|t6hgGKe=y~K& zws}7=;#Arcp~hQ?GL5jn+bEL1+7;y~(`DwNpV#I)5Q=Ut4XYF_XgHlN{b3js%OpNF z+bq$0k<*`&0rn5E!pGCpC=R*mtiuk^*WFaac%XE zg(8SThbRn$ZP*%3shBK~#cLWed*$T{e>RyfHICwd0vYbk*MpKmqb z*Fo~S%Njold&Z7sZSa7?yNXHr>1#u$n^+c)r{@$|_f~C4bAP~dRnHSf%`kO+oj0WO z>EKJ%I&SzD4E;AtQyIfg`%e6A_jf5y*8Hh2JVzbA_PkG;8~o|d^h^kC$v-H`_ssM> z%EL;IQii>wU0?eV1r+$mQUL#y*Q`HTr#KGhQC9SgY_YZjBgGNhBAt0k)2 zb5r*q-4ly6EWD8v;zH?c^or~%!IY#F>FYW|zYq4HJ2NRZ&L<|=H+wvjG%t3rl!B-K zAIjb_ytZcB8jWq+T(NE2=8SEuXvMajtk|}ltk|}*VjDN_+4np5?DKp-_Wd_Tud3eW zm{0Yp8damWX2!O{mG->YTUi59?9IlwUEx2f4?l5FE|l9oskg8-WYmD^>Rz|4#D(PQR)>W!MVLSncxpNY;Ta89QtWO+TO=N3fUQgFMyV|Tv&=r2 z%RT!22Yo!BZcf`PEOq$)Ty!7TbJ#qz1^(3qMs>Il7{_;c+k;@hvMP{$q`fu8@D-Sv z_s}Eov0SFZ|5fPuq2P0KreRMY|KSsO`}(@p8Ct_Y{5-t5rciXfeBfZ)m#F~zGh)#n zI9mYg`CJ9W*W>AQgaa|x=kb3t(#po|`H+JH0o`H(0df6jxqn7B0Ap(d3ws;We=>go zE(UH)?DTF!nzr_9l1Seiq;+Fbn35h1a`~(ab7D!lGqZkv;#K)p(>uYMOwFdaD3>lD z7n?WL7Z12{ekvLfS=re>Zb#{Yzb+<+9KX$pP3XV-(43KwcJpU{zgIBYiC8pJl?P$pmF+P6DbGdzp zp&5r42G}TMKx%#(CAgzUEF&T8Ceghl7KOCZEgzC zho#gXU$}b*dK!%?`*cRKyq>Rt)JZZY*&D)CZE!xu*v!c-Wb3Uvctu zjs!df4S>k_#aQZDZU45Y?+I=Um0nZbD+#{1ES*XYvXhk|RV!+G4sV&&WmW>CX(^yT zme!{r3a>#3V!49?s9lQduiBXKK}gW{h5Uesc7&t|f*^rNuocrFfkU8>jb7=?3QIi5 zx4yvn=tnF1ncmjZhs#1zJMH++bO=BEe^l?I8cX%(=a=U_h>v)8o_a5PncQG1hC6t>RF zwK@#(=Goc(*xH-P}Ze4h-SCy*fa}&afDqdHt-p-0i4kIDSKDi8;iiJKI*$ax7aUsad_$ z;L0fN9&JH!POEw;q^(7^E74d>`?d@lj0jxe*Eq?~_(ZxNKAOZxZin9g?y?;1j(66H zd>_Mq^}IUb77Ii(vQrbQR>p_cGero#c|1?LLyig|*qo(upQn-P2~iRjVRZw7cE^M> zEI#=!XSc7Q%R4gMn#7nN=`n@L2kb z%FOHKT0EDeH7tr)?qt>2-G{DS3TKczH|EsF>>VUcLzCy^NPb$TA$!l4akuUB9=2hg z)w)I+Ey5hCak`834$0b-<%@009(i3z`0shwl3aPIir>r&`7A&{%>UWg>tt#J@Gx+8 z0k~M&+tIsS=y=(0u%mn#tX=%%> zJ;NE?uG*VD7nk~w(aiu+?1Z40hp-G_-*PNGJ|PoQHdGQEbXH%LWF3l46S*yB9n4i+E|FSQ&^UDXh{FxExCi3O zJmgY%a4&O>{JX)9?`~JWy~2YEST%4`d9ms87<8hdAPXo!&px{Xfv5R*jM%ahQ?$J-`^N%C_3tpDKJd? z?-Zm)l@CJs8BoUpTqcZ?eFW<5LiPOJZ=v)eM1)nW{lu}f@JkqVp5ltmgKMEWe4f`$ z_@t%~h`P(QnW5t|vTUun<$C|PBe|e9@svGIRC?RA<3|<`n0aW=+ZnF0tiT&RpM}v$ z^c2$(7k{}?P0I#0Ep^BVz3LWbcFCk}AL!72k(2o1BwE+~ZAKE}zyMySfN_Q^V?05h z6kcorEw9jBxC=H@S;w)eezi53;rImw9e5G-s{ABlzDp%276=-3Q@I!28pg3AF;#+O zXzj|iZ*5aRY9vNRkltuA@pCQx9$Csb$46S4lBc25k;mNlZI?+Fv;0#psO(fYX^j8T zWVs(>C81oJvP}r3l|zPSCyB(#vAF$SnvZk+6^F6bH5A?B?}nR}l=+S^XEGy1IGs~L z*&rH53p6^hAhod9172{EQGl#$RR7S#O8-~}XWtU$*jXD`W>ySVQ^9T*C;zL%YZ$R_ z4^-P$>7r4neb4QOF2V@d^dUxM7^Wo%+$4A-e4y}=3$7L0B$QI0%5b7W))DzdiI`U4 z)14GVFvy`Xvup!e(yop6RH=7dmR!dWT29xRb~Fpg&p7h1D1KNIK=vIxo$^q0B%XFf zMh!g{2&H17Bh%Enjpu08JI0@id|N5iPk7V8<@B3l49rMZm^Jm21k%yVgtv%~!97bQ zM<`xhRm_QqG@rbA)h_i_5^>S73Z`^>qp;>!$>KVM6Z^fyd}K zbmX1WCyR^*xe`uVI)Qr(sZ5b*pU%z$-~GO345X&KA%90gbJC}|n;sL3;Hmvj!Hx~Pm}O*@!9p1&>=fPs-C;H zqv(9)OtO9gZkit!8pRJX&yFufWPc_>xN!;5PPb(Af!MyEnn>`lMt~PdLmu4n3n(wb z0;9uHMJB~$>}X}EUJ)5E-s)TT=CLrnfInG^e_EeKkfPz$0_u$Yf_+MfKq{-}9pQi5 z!_&d!XCU#`O=Dnf-KA9pf{S~-U0#zmTcUno_Oa8Y9_(#n+QfDR^?=@ZpQ!M}wRrG# zuLeRZ2E*ohX2z4C#hH6EONtjH;KOLs;Q26jj;%1qwge2ggR;r72IYeqZD{}>ZgplZ zUY()1eBJJBE80DBBX*T&Y)3GdK_5?h zYfjzghE{V@MLHjq{e(tZ#Y=c?@=ac_X?5pUR~{YA)oAZ+4ky@#wd-Lm<{f_VpN|tk z{z7O)NlNH|93sV*;^;T-Jlo0`=4LxvO8hxOgO|kpHw4-ajDYB%FqZVf6PCjx)FKBVEeXbpp%hPp|BV#zV-xUp&G&`3IO;g=2voB7 zbzt=))gW=WGG1cYSTQosR3Y`VqnlsUiNyM-(cjKkZovlwU&7zOYc0zL2(^EINa@#! zp(-5uCM*Px=CT_MMoR2_GhG$xO*`m+{q*#A5I1)q!Tdo@V1K@#4OUkcUcmrkAY+RtKINI!=qZ@F8%IqLD8tQQFIr?}uw$~wK zn6S3^ubfs|*C1r9YiElaPTO58)0!<=0`C)zql*#tuS@BR*6>ufOSN#T+UYMLM%hLf z6aa3zg5yKc;`_M?wBXRlHdIpLQll|1jorW2jqAhgR$$4|cNOja+UeYV&ylMAr;=bEHtFpISmLdw$0A7%t9 z9pboo2Mwa=p;ix@a#DnlYfO0S7UC|7{!ly}3LWrAV!%oR)iA?w_kPUym7EJkY$VkY zvE|*PBq*X9XWB4`owhURup%ePSdc&^Qy}9P6=sVQ>`H4c_kr+11psBmt(m1t$w+KWlYkhBQa6`hpa!Er*Y;Z+rFRTrRLZ0c2 zHFtw-2s`HT3}bQTr80t*pgHe`%lj)ZYW>D0jh4R!zYT*(S3(=QDWU_CZwCkAokoET zuIGAM6JFiFUgVJYYxM)GyX{QIdfwguS94~X4#X8ID70f3!WE~=%zsaNIQGZ64MD-I z%-=0g@H4!jlap7N#ld(?m+FETx#Qw!=eY7jmWk5NG8*oW&2Rb(s@KggUq_^6(Xao- z$fs=AtVsH;7Yc;(O?dsEtxru%T}+K#42)czoc|&G($ulW3R(d9@%5~Fy%Vwro?%dsh84hTx z?^?nVDjitIk3*g;fo#1q-7)5-nZP)IP_?yME(P5X8)y-KQUBPg&=&lCm@%<^y%yXl zNALGeeLAV$Uv0rfJMJqr#U)gywMXc4cdl3DJ7u3|B+!6QV2&~kioVUe&!-l((YIRU5+ z!!-#SHC;#-{!4f_WFT$TL?<&{R~FFG9QPiSyT*fiVZ*;DrD4(@TD@@9n)>PfG`H=< zuy{$1d4;0p*R129!!Dy<4*Hz=mE==EpHVwid|-)3pZX;28gCu(`2N&N(!vifo8Af+p%ip#r}69BARW+u^{|e_BefaP3?FL zI|P$UKlp}Vrjo;Q_#E6Yu+u&*IZAZdJ~xwmLZ4u-f^_SsF0zAX)W5QqJ?4DG?Z*zA zZPl22{zcvO!udKDT8_Y@K0!KhM6CG5^5bLZFfm)^ddco_KmS*on-9&2;%w>Lg`t zVO?O192bKDz!EIQg$jcUfWIB$IqQ)S7%|o*b}0=k6+tO%P*)$6u2@k_=DR4mW0aB- zAh>81fjD$p+7cjzR;6~otsIi5B__YXvbd{tL=neKvl1!_2qwyx7JhG?OUew6+#XFMs6rOuHhWkSh^b%MEfI@cq0An@&Ppwu!r(^ z1xPW^f_Waimky_cTSg|_t6-X9cJHwb7MOA%431L#N@Fm+pWN_eN+fgN<>0%Ikp2by z?{CCF+j52A-+YAG-*3eh|JjK1f7^{T_`e$eTQf;rN>xh5KvqFP(SV7K#ej+4tw|m5 z4}IvzrGcZ-oQ2;U1zh7SvF#~lT)97$a3a#!#t{y!GG)Z3@XG@ahb1bdC3S{bnY2&0 z*VEI9qeLWiIa4f>ZX68vy(AhV zdvqW+wgfVvz?*_&&?i|$+vD+N`nE+UGBk?u{Z-9nb;#$=>+7()f`T`uHr#C=sxKZN zVe)a=+>)+k&RPmliUqbP(rO5rM=cdCDpR-*v5#0@1ByCe#4;bV+eVvNbK);k%5{>0 zlCjki_2~6fZfV(W$!sv}^&@CY%i{QWCoc#pbNb(jK(LeKV=_NB1DF}(L2p}Tm=z3C ze_Ji9S_n^0*RH!uW3dPl1-S^6v?}m;1twa}gTyGm^o0!_NJBC~t{6~a5fp%e@(BSR zry)pKwskAAw6Dd&X&q*~5xt?=nCVvQo@twmVvkelgzhFx>eP8du$ir@t!tF3oaB(A zFZm5@@r7nUoD1c(WT&It=EN;^6eC)K&nX7patWwuFIKGnvv41x1^IW%(%?H9r$?a_ zHO0)>6i5?G>lCdP~|WLwz@H_V)ecimTAVP#ykf`54l{pJvMtUbgtN|UgO8CHNIbtSwp#=eRw9* zs4OC-%e)(*+!F_PrhDzh`P$U@lbK_v;@10k$-L$Jge9xp`y;^je}y7>Fzx#*2oO-v zcPQ%q{|-eE;-ghyv6ny%M0yP1c(r6c}US;{&G>>lRZ<82`M7$Z_8jdb;maro=?=Nb#(T4Yd|pKu@;PJYK4Z=eZU(IFb9 zK>|(zF6w1*-DAk`JQc%P6*w08JN{npCD9q#75c%sN|+D{-rvZ?4J0p?CurhH>O{XD z_l}JAVi_1}yq^M(J7!E3;c{Mu-W_zCSc>R$EOS-0JhQNIytB4DAm~%Ngz^-0@{W-*63+)u zkxKdj7Ab&fy~umxknf_$sSLfMz?#jA`XEk@d9G|6G*t3w=N0nNSfZp+g5#Gt z#7R57pu~Zbgiv6x;~^julo5AkfD;7|bO)jp#ZgI@;`qYhU_YER@@|)~8EW+WU-bnK zFJGlw8?^{&S*^2i8i18Kkl92ee#qr8o{^&j6~So+_-O(9(MX9`GlfPS8@Loh zqHdnU8PL7`?J}s~NNL&qRZKDxj373>X=b1yT3B2w8d89+Upl99f21RoLtxQ(6FXO_ z#w$~LXdat}RXv&r+3qwtSck!T;4(0+CvcR`t4NF1=hSMq$n{SVWXSdEoZy5E*Tt6- z?KL)8JbvZqCFezpe=@(&hIB_5?;lZdoV(TQCsz8{o)5Iq87rIuQ?ioU%a4_v z8XBCLH|3i((oaqO(!nt2dwvBH-pBItU^%N33wc-pRy}DY5KnLZdbq8cyrNRs)d_}o z9LB8sgx9{L%)PramG!w~cn8xQsK@j3VU6|*sa(hV{Qk}N zrETC7=-;Qme%@ZhtZ#Wp@9!y4;y;VI|1H<@e?%ggIscJY|34a$diL{-Xg*IhoQS-I zw3aw5YU|SE#c&oy2!*cRlBh6RPN`a)@+Lg^A5SY6?Plmi#MK8i&M`HyHTWZGpBlBC z!{&hCKASqxp!Cwq0`MwHqc-)&oT!3J7ZpMs*I;<68In(TmgiM0VSxI<3vob94@D0VcbNpDAF$@5uSTk=9=7 ziKX+zGx;5T=2!cIn%btU>kFBBdeNi^U#|Z$>*(k9_b8Iom+b0;TNy%e4xN z#}3FS_sI|_CkQJ378}?!t8%+i8Dd3WaL16iG;Qw;r)~4C!dd9FKVIm<4W^a=m*HZcL2dPTGhwz4q*DN5J~-? zb%1|3(7z7?QUL#qpdmeH8hH37v1V6>C2X|mD;(rT`dD#||WJkcYO|x5@H-F+cUGL9rBPxMHcyN&>6?H8u!zh>Ulkw-;w)=F$AX- zh$pturGSgFRrdkCGRZp9v*`+MVd7=SifLEgy;?YU5rRncMP+k@NXwiV@=yaH!cMTA zJ?;KD#%!>-Wgd&;rjXg6GnRqJZQ^?A06ln{yLSeSt)7#2bTpRq^V_=}d7_*@9;K{H zm^F0RjP9JOjox>-NcomJ3pVxR2vRjNs4^Zq{5-J^Yd5FNod!*fu%eAiSFQ;@@^s1m z%zA%i4>{RLx^UNqk$>Q+9sI*@bj zE8zy}WSVrx9kbwZv)Lx`;8qIuk#QEw^Z6Fa;0Qr6xH&&f-K{WW@b8@`mwYo1W4xRibgPqB^8&Tm z;X)yDCK{cfM>1(TRd}L@B*3W)X>_N zNw0q6vTk@4&YYmsqj$wGt6@V>ddDm(`Mo>PC`3?DrNolWpzA2v)n-7?#}{|=t6^o) z9J6L>YN=uJ+_tNNBW@e)Yx8M7^FoKJMUO6@A^%`iw-ZLHYMDuLYpE_t7AH7z@%0yF z5ss7o>^3~tl0Dh+qSn4*CfNB3wP0*^zus}jZ?boO zS}kI|sNJuMf%#ED03)+L>ia?_?<}sq4Hc_D2vd};kMEKSnp-9M>mBC;SahfE&gs^fQuAjwNgz?Ei(Vdo zy|~}B;rf_I`)m^%6~2#0qtZEwvYFRw%dvHjE;s}$qR6t9foV#1Tq6&yOUge_kWr#P zB&j=KP8#Pf_@hLB6;&YER?iZHa!8TwX!s(xH^uoQ2{qf16&@WdaY_)3nOTa56j^eV z>;g`Vh%#{^W=K^feOzp3kf4CV5_K1ys127@%YG;o4Z6DByQzkl;H%4(Xd= z0E@UJlL2n?yg@^$IEI04{>%iCHLVbtkQZis3H_J^-=;f5t=+SlJ`AA_Me?7tZs@?c zjXGfCR{6E2GxV$)1Ui;BGj`atG$;F@ZYYgB&?#zn7>YZ;0Y6P4d)w93g~rut8-uD- z)c!aD$DRUdE{@Y8XwmN(dO)i&HE=G!_+KS98)N^$WZgbnv%9L9;LuT&I5Q>^xcD>8 zecNF~%Y7@;;)h%Jpm3|Tl!Dp~s7kH+<8Re+fw3Ely&nfi86hjIU_Gdjd zpHZ;YZ;L|uL6)}sQ=O`~hxh>~yK#{x$`T$~)>q`zQs<$9jNse+Vj(XZh-j=W0ye)L z=N&_7Bq;YgZ7YQ0wk?|s^atqBJqKCtjTHNDX2tJj^{eDBeq(}6AMm50G9We2TOm;Y zxX6(j15Wlgdc{qs;!TGugZsyo&7mc4Av4lHjgm`@Bu$CZ_(OK;dU_$h+?+Wwi$_(P zV_E-dFg@;#a3WcQTlT;-U<&m6AF)VM|9Mp_?0RNGK+_hQtqHgoighHKhZ*~YZqM*5 z3e=W7;PV*@lJ*@7a!pz_x;%*eR}iSMMm{Zp8no@V(S>|0K`D7=IMz{6Bi}~wm@ABM z->+J9)epf1NnjXQFT6g7@3iX~8KKd&)ZD;}&^zd*8RFsG|0?i_4bkEQn9QJ1YufIG z;2vwgz9a7Gy!=YYdY`kp)2kz=y4sN5Mdb^07_xlSMUK}dIEap7uRqnfSQi~+D08^Q zu3P|dX1)$>hL@3C5CRt92?|}uCqXf8+|p*CH?Aawb!j-FNlb)SMQ6A$CX1C|gO^X2 zVUNU*J7OC71Kwm@3IWRs&~UgRP6D!e;sG5PYr`JXl%n;AEi3;AU?OEQUYxU4J?PQgv$xhIX)EZ=Gjg5ViH!3qazxRQr# zaX~rRMY>#jmgx#Up*%pYJzUupUHpNEOsy%`Wu8ncB2U~^QaWL;K9h`^5?i^3gIU7O zR(yE$9Wzziv24;hP|7x^SoeoDoq5$^Wm7cpWO#D_ptfq zdG~IIPNyDyZPWI=4994GYVM-8O|Nd=69Y_{de?Y{XiCC@%48`z*ii8^7OGP29LYa8 z2A@Q#MRJWU!8P(=lSHgVay4S1;$=0xBj*vqtZUAsY4Iymq2|zudz+o1=w#U``XaK% z*PS5zM3|n)=jOQQqpXa{;Pd9`SZS4FDsTGDz~Jlht!Ao#HE%RPCPdAT>}AiUhjP9L z`f%*wc9LtM}@UZ^!@sdi^u#EH4D0p?d zPrEl6;*bQ-0DC~}<6Xio=r$oOVQc+f*`w$k;y#sQ zA|5J8vtMqU@Fq#&dB7bKwD7Gf$7S$Z3+emB&*j5n77E#+x3#>D)`a5Mg2jYb1lI+ThrpQke69o(p@(^TILrZ%%!orb zNZxY$dw)u%L|hdKCdSf{dE=m^LLl)p4Ly2;ixsjVkqJ}6+)QU3NKO`5MZjVXYejd; zHz^ec`}nKLkuSz7kVWIfVDOOpIN0d@f8C1WomXh1%vQ_d3V~@=_apg}rqCj{=Dd%h zI<8DxHaOXXA)D-?NQhqRMO)wH@*;%t>;P6aNhg5U7|OTlt1Gt-?djOKsZlB@Iub+n(mPDfo(-T6SOe{H3#R zqlB860ReKoN1?1FX0YQD^1JPt!`eLJb078@AZO7fT<6IadwSS>DR?@{1Rg(60qLBO zo)_L%o0YG`&cz}0#&xpYuZ2C_Z=dh{3`y1)Us}sRuM4?j--B9Sxq}F@{N-~kjPwBu zT&UW*Wkl6fVI{a@kv6T|-D_|*4LZMr7RdbZla(wt0)lnId{ymM$-*H*DE${N&YXf6 zD9%ws!bnLUHH7Kwjl~~+bolR<(uBDXC0I#+M+%6)R9Sxm_-VYnak7jQiwR>x_Ecv5 zLS8E0Z!G^`Cu9F|67kKs2?bg?6I3m@zl+A;qA$#9Y?gpq#tG+IBUJm*Om zL^}cxF&JlhkwAKxO{--B@RLYc1IovUwC+L_PT7Y5HTqNksEYC=pF&&j*-JUjts;Bo zgH(^lfrTWJ(gd2?>RxXWPY%JawbW*(eH9pY*xKiZRbTnBHrS;?9!W29J*tfBwtzuf z^-R3t^kFE-uY-0!ZWvjqcD-6Z&9M+c7(_RM2r*b|nhhbe!K2muCjcUs?k!5H>RD*T z>08GgPG@PCc(5zcG_un3di4jH&S{py|0vU9`L8nC=;o#l&Z9?*_KisG;cK6tck_8-WtbP`IEI$VZi8tqS0%atlupb)O(Ok%A=|`% z*b`_yuI_4Ih&UYn>@)N(uT1n0b1oS}TO~PW39g~_`PrfVh9t|S&xn;veFjCnw}H%5 zgp&6@tPH;E=@pO{)v0?H16}oOXafFWNEAVXaSNMQz9~Pg3|_o2M67)gh-B)~Cy15* zr*3YriIn7YKlc~w#^VV{3gy`;-1mc})xR4O!KobJaqO*)GA|NX^)j34>E?g`N|h8s zxFA3T-jjqb4@oiq?e6jU{L>rqZ~bkJLN)v#ykTZiEUy4cInfT4ZBmfMGuXVwa!?e2 zmKm51$seWX!DtoI{LS(!WPfL@*I~MFgBQB92uOEpNc z{`v{1X3@9`v@qNfanTN~ZPNaB7WoQpBIFcP@mlf#T{fW&P9~BGJD*r6yzJT3TT8W2 z(*EWNC@Yc^HN1ZzRed7`GQ2K{{7)q4|3Y#<`$k%pw)!7Py8lAb`3I>*<$oZ#ifnMQ zk*saL5+H-5lAJ~=HC2N$1Jb`AisFx+;5U?U{$}+R3t*GC!WBObdYqMXg;|JRhQuxl z2le8YPcHOAP0izCJHnqJ(+p&rbfOk1WDfc0aJPZ(X|P{R$Q)P$ zDi~`8%Vtx`fTLg(vvLLyxog;*`50=GSL&GYZUkRuHkhv3UMh2zJ3x;ewoa=AI-N18 zvQ1|xp^8(>Ihi(D&3&4?{^&@Pq@pIn)nrnvE`>JBW_R=lrt&zrYhDAL)unN>XxpFr zpyaIRh5XZYGo6KvW?8Yti;3paHr-W}!+vGsbW4DxnmfaKzEvY#GT(%H672X!(s!N7 zvF|!q=@I3TNw!L2enl#qL$95s>yIF`tb~OTME@wh80$q<-YBDCytIFyOXwuH84~ig8Ki0Z+-u5PPHtn9gzn+V6 z*0|Rtdm*-S5O8ND9+5AfPyQAl2iBS9{F6eN7Gr9h| zLd?Q6Nz#iGhF~}qhG;Z>1=@U-%C~g}wf>|t@;&_i`S7Tx>2OMh`zghpdh|kPnhP2 zGh|~*bR%!*&TZBNJ0!0GiZK7Ar*IR^O>(~1GkqmSzXE6whH`8aFkn0dBnR4y-$Zab z76H9p${}DvKoY26`pnE^P#~N+L?P@pAe@S2(HOZcGZI@C$@I@9U@O z9JqqgTjpn`vp*f!7TPg~nm~=c+0(dQ$*{S`*F8Gx7x*4p!}`UZ+Yo#*>$P($wvQ{g z2yEsnVI26AO9{NlPt*2n^1b}g0o21}`Qr95D$`p;YF+AgQb@(7Ve}YVK+7oW?bot8 zex=OP&7=CF>CQZsHeQeqzlDk6(#<3y^Hgidn6-9IJH}7H)Ms5zPlm;|jFG=3mHJE% z8rayUwk4GErefpa)|`sYTsEghc|Yz4&FC@Kek#~p8tukh|&+f%#61;c^HBW^onVpUao$<3dDt&2m4fT331bVeH&kp91#L za95pqfJ`1k5rERWqCf@Bwl{&|R!Nr#MITwSN8hH;W&x-+#jWwKn4{p1t-L*brf3ov z9uWS|@GC$7t~THd^jsmsAO16S6oL!fVfa2WYjsd%)rOQT zTXA@ZP@V&NSk1beU_}#|C~@K!@bebL{6CNIg0`0$%W?>NhQSUYPE`JAyr&h0>w5+}ojrF0f7ktR8AA^;-h4okThY!RtFy2IOK`HcfplTq4Npjpj0f8tdU9xh<}3B z50|lOdf^Yw4*X=3FS@80U8<|aDVf{(9Y_>IpjbXCE-!^8I6xeO$8|{mAKRtT9FQT#18iiNK;qQe5uzaC5o{_r zacwiNA6Tm%HHOyr$`f4B+)Tpw9GrrZVicEzN;G+iUXKL6h_&#& zs`IAGrP*8%6Y?!B&yH9)l`F0)i*j>7x)$PoSmdO9(+UvGDFKNT-GS3Cy}6I%{$!8! z{p5XZ0W6-~e7v)e3ce*&0$miOcS0>rFrss9hCJc+6+q7HIl@N^V?-9ewArwD-mE@D66|C zNkFV6EfSl?=ZTBGa@b_Th)KO7(Z<+g7moDjKZgkMyKAcc){DEOL4;+6oeMs6^j8;Z zucM_`ZIjYS838|KZwLeUxmWuibp4FB04Jiyt*&e*`#7T`edw)joE zx892UeGu+1#Z%^eOr}1k%QAWx_?{p|(alNOaon696N5nOLzLXk&EF|EWA}efim`ql)2=gDbB+xGU~3gjrP`#SSjrfqOY5YUF01} zNk}P!bCzp*=V)99WxfjN;sk#g1 zP{QeyKFUbSfa|SG_=Mw$I^s!F8+|~EluLz9lI)Nz&tL} zn2mOM@|)9l9lKobhEh%=eoECk8W@_lfVb`11t3JF3w16Z<1uu2JX6y|;vt>6mJpFH zJB=BZ?2j7^m)OTVq@iO`_GJU~QC1F2yx*UIu#TY&wNiW>Ku`O^5cLD1V`C}*YC`HR zc95w%gdrF9+>>PIbjpN!Zos;J9ua<*?ciP|XomWl+Q>nkJuUrRon3dKHLP@(sw}vf zJ);v}y{dakY@mZ!wO^SwKmO$>#0(3m>FEtX-2EesNb8RRS9TJo*4C@2Of|9}dGkmV zo0E?0;qi-!OBVcw0oaNAh}ZQaXOdt2K~Cz<8prV~dH2`0Bh)V}mzU&Sr)|+ZY?r%a zCe8+hD6t}sPkt@rJ$Wi8nI^*DCy$3u6zRSW&>0E=^Z>&$)*zVx@UFq$e!P?Et3<_vCs4gGq zFiK7&Tpb3)sj5-E6Rs+|YPCrpmDOrE4Mfjvopn2`$soU`bUWW!%BzB|i37@twNS&U zi-XO&;jNc4FOA}^R>SI8AiuL8I}|p6MJ_Ozt~p~PC{uxe6a5uYP=rn&EuLC&Idu(k z9B>1aq{cVM0PkhkZgw6Mn&?3BC1g!7>@*(K>v> zG}k_kc9x}@Y|e$)5APsI$@6fZotnk1k^mF?oa=2M~r)PmaaP=6q=6*S7uMjPr0q3=4fzn!BJ5#&a4OC@MUg38KmOFIat0j#- z9+vGzU6#WOB-i7n;wH5X?4&}}hFk;$0bkomxf2W&s~Q^Qv`ZtF;(f1y2H-Y%^{R!( z$lACc7YbJwQ+aot*b=;tf2(;F z^v6~doKN%%SU_qvA48UHqDQUSYzM%Cm5Qx$BAmJCd+y7E=oI{1U{c)+OWkK!8ZRZ8 ztP=z$+5;D-SusORRD~)an$^L*TPN&FI4ajIM_%!9N*D-fjs5UY0?!N;qLy?eaL|a7 zlo|~496!WvB5*-$YZH>Uo z^SGQyY%od%IL`c^?Tq(4n+eo-hm$#5%g*E*c{W8**(G0s**Np&fsY3%WLd{uRUW)g_ZX)22}$;35eCyV zmqkr_V&XPKqOTw4yjneI^263k&WiUGi_b<9Mw=}G0d8PJ)Gws(sErwp@Ya(({4M7i zj%(l2o%H*d+920+C#tG#xdqe0Mz3Q5Mz%tPt1F)17*9S@rhP_uBsb?*4%7E1erpaY zwP4N-h7Xx%{I$mo7BA!JU_jW>+@(Ld;TmGVk#O@%v=c3l=GPo$6IqaWN{jkTgyaMXEhgP9n`k%eCL9uh$PY$ z3e4e4IVlPmWKN;s<9|MYMtvHnq-9gPRdKq!Kp9)Ffhk+>#izelYx_rd0$U&gJsYMy zF_y+P3`4+t-FiikrWf-?z$A$YKL$Bk1Oe6C+zSVdWo-BY?d;GORcc9z8?~pf9PVSn z{$`2&2uu}eZ8T^;jH`rtW@uRLxJy)fP)j6lE8agwwLe?;1jt1+5;FECjpb>H8Lmjp z(|P-yQF+_#A)v*G1o@!+-6Jr*4@)1Mzb}T_b`-mr!2SGDU^E%kWM+ zs=mCL{XV@QhYZ>cX8uX}39c#9`|zDRDfg#->ZPyU`k!1GKvUjzOFnJ6jJ+{wFK(!&v89Dhqs_jaC`N_|4|0f7u#?R^$86-8f zgB?WUz!46;J{57e2wt@D3lO1}@Do^)uwT8Sb9ix~7vi!(JY9c)q$Glc8;>mNCl z&bbg(DKbsl8NpL@b~z9$nZ(=74XTUvsV;uQ-Tijiq&i(z3zj*9R8PabuOew00Ae4i z@@ZRp*U+ZbA${Y9WJNt4Y-Y*0Al(=*lCSKzT;t!<3$obg2-xapL0hk$TSC4Bxi;|U z#H3_lIvo?!BVvtmPT#(J5qPGtt@+I4`)o1)K6ARI(5FG;vLO<}v{dNYU+o$9qzeH) z4qtVIYGK^tmBO~K4&N$k^S$m-SVG4fkYBhz!2~k-GD~D!f#Yb<(o8o(inx6s!P_6H zR2q5t<$ek#U=z*V)IvZ7NZ5t$_MON5e`tHhD9PVsTe!Mx+qS!GyQ<5!ZQHiHY^%#= zmu=g&b*txpX6DS?wcb1T-1X*%T)z*IEAvA{M(o(n-j60Vt4jX7sN{0cLPz}?>MHIC zA$w!BtbgM6DjMGR+|_c)J_JOP!UeVo79qu?U&iC~J!BTS?!veA$_9aK zSGfenAQbEU?I9Pk7P@di-OLxY(OH8tJHgUEQtz`eT(1`;*%zsDX2R=Gr_S(5PZ17uNd7 z6{6J)T)JfnJydyy9HLsft?T`*A@jHM8R>R&MBs|&CfsX6wZg)})RB(X!U`rwCU%Ym z_Ab+qT_|n#)FF8c-V2a+$-GcKhN;+o?k^h2J=PB z#l(!Fm|bqUnlPS3B)-$N;SrAvPaGTGv2{3vyeE~PeGK4Ow@_X5K%yEBfDP{Qif)u0 z-Vc+|JIf5>i8{>WGUd*-k! zsYBYfwz1i>grW4vCe8O7T*`L&F)7wBQbEqE^L5L_XlrJOOTk#X^-v>xm;dkViB6h` zN3-PDUqZt-_~RrJ;C|tOEW$Aq(Pv*M<2ct@q+i{0a~m^1$I(g(}n}-KR~yNuBd; zj@;R!H9-WHYV7xbBt;DJA8r)3Cl~i6Wdzw0Dw5@*fYEZDSp87pLrHQ}MOeT=BS-wL zm|Fr*)SN&+U|4ObJ6^EV*g9XUfpV&E01zBhsce})(l}x`s!3lBIRzpQrM*63u5|L| zPUwVTm8r-e-BV9E4x27PE*N)G1uD$^gAx_Ox?s&vYUUMzet4@Gu&^vpa6Zge%AJ>y z5knJVYHn|IiAJd?NHkYRIlQ`@X3}QK`jFK#zb~^E&d<<1b_6M+?52QH6?~}#kcv0_ zvPlmZq@eHGQAXWEy5<4}+Js)(E(od>K6K#;n$K?4Jyd=Sh5>PKExr$dQrZ*Ub2#rR zbGs(u!YALpTCGlF58AnPC01GIMe6S%M~Si+pxi21IZYQgEH# z>Mr6QSaQ1gW1X^+hZsfL2FVANQxI&dx$2NCDYT6G45mzqkWiwpv!)obb#x3y*r9fC zoM6=+eN5%lDb;6Ac;vz@^e@p=mcS zaSq?zsai1Qc^P-y@rmB{?EQ$Vs7 zg<$^rhyYfV$fbt4Kd;r~@bC4JoJ zsDeb1rv$;=;~Xcx)5--EXv0!C%cyRskgMq6XRVm8lZ^oRURI~h#ooG1T_1_cd<@~3 zzw&*i{LcLj9D5AczZm*G`phtE`wCN`nRu$#4jx-nMXVQT7SM@IsKdGuq>8^at=YzwF^k}t*ax2ugU5H_b)YQg0O8?LqU2z^6v+e zb=p5*5ULIXhpAvxFeqWFq8P%a_di^(kVsHXlZl&_7kNmOY>cqI9MK1cr0NP>l>+!e07`^WXCC~OrX9d%&v>izQRirr)8y;u)sBF-Vx~^C% z{kH$eQD^xD8u6$9X+twd|L2&%6?;juI%=QUW)=8L?sBB4!Cne8Pxdpin)` z&RWIAP3rAmS8+DDlT_7FeljUZN;*{GGd>Wg3uH;c%ADRw3$h=HJq@735^4E5ewNFj zSB&&VtD$>4rUYqGR)k#fxtsZZ&|W;ZX-a?pYCK+ahHT{eS7*R^7^~dmqGcqC?vS_xyBO*{ zM~Vl`kc@hll7GA6)-d?ZP2sC6n*x?+qJ{~GK%BY%dDhT4fTj2TZ#zq#2T}QuFU3LF zm(oY^Kbs$9g++B#osA6s7=XFx7}!`l+S^#_SlZaw>e!mu8tFI~**O_mJDTZP>X=!Z z{ZRrdS=nH*LVqnb`E~hFtGx$hD{cWTN5h%he6dE_Sy|4H&W_-mDvcElk&Y9Yc)j&hm)GP>d2}_!IG~8hKfLk?a z`@RDrrqFGJl6I=GL~}U0?+B4X*OghJgl<>$xM2R|J3(c!rMzB##Z7$}p)%VazrNVW z!Nx(@y)*AZN0tG=Ls>c2hyHc*UQl*@a8r9vpT^yhv#J#PRsBV=m%tmw9QTW+c_0Wn z-1nFAcKFA}lHrHfQ=PgP&at|v##iblQnvE%R#r($WxZp&I?QP~1rv#KU;5wIVan0_ zbv7+dJWva~0xWgxksbOP(Q6~PO*)4EN;txVCV90w;}@_6jT_@-@r zPXs2Rfj1332bcPWb?RG$X^DJ{Y;A3tzfPPimRAnr3N<5G;~Tsx@#?A|)fhcemlWbv zdV@&J+*sxn2J#$W)x`1)uFPi|vn3}`2kXZ%QXtWh0tUz1Yh=WYsu5Xpzb?kaRHr@% zN{d0g-)b&~-XI;S&oQmAcM=j!{eXDtyP|N6HSzuI`7^$@OW?;C%Vk}r#O_j)fy?Vw zgd$CWD&f$QB3*$V+74&Z;>7e^u=7v?cqGi+Y*|C3AJULWijm_res4oP3WW zID;)Pz!fk+E|d$m45zRmer8yvQHh;{ra>V%B>~fEka#KaYOTb5z#H<4w^)nF7;Utf zH6q9|agqx0kQOK5G<)oCXl!OTj8t0hXVF49a5xTfU2oU8_GYSi$lWBEp5W9U+NqQC zM)L1wlbj&^)Z7d|#GGgcQYkU0KDif5k+Z4F>BLXOu2_pRcw`0-C&P+y$}=x_cI38h zr;qS*9{cM1*RCGvG=3cCW`mk_X}$d$a1f#2q7V8i{Lrt$SNP8g|G$94|E%sY|5o?+ zfR3Y}OnkoItW+$st8Q@4k@Cb?#Z3kUecr^@Bb=NYX@@QXVB!e-54VZTSpv#Uy!2TD zeo&IbU0U;Y18~Upb?~ZJ?jv*5Rs(7}(GFs*$)MBzfhOs!vwE_16bcZrxY?Cv3;3jEW`sLnYj8vH zR>ItV2!p$kFWS_nKjK&H#Cwjk;~@KZ?NYRDC0`wwgz}x>4%8jJGVZ>Xod4 zlrjIav2lb_N$=o#5>r}M-ejc2mLlifFlqnAI-@ERE}#K!28IUK$PQf<(&CCMbi$qZ zYHXy(L}VaG%IhLD2mN;o3Z9~CL34i055)W=_z^`X({^B=q$&s=tJHDt8I~>}oFv6~ zQ%{P^P!kl18mFr=zOCP8robJDd(lO(SKYlNo;19NK@BvpX1bF{H7n86ehmhWw)P{Y z6L|I~QE7_8c~vXdLFbL zW4`mZ|65O^M!F|36@Ix2S0!xK_0j!T7>prMn~hd@y*ZY4AX*1@am3! z#0oP8Xhto*T#!_}dzicFi$P3}q5kIb5Ee6f)>?5z*rMGaGHLB&5-PlHL~?_IgPL=b zU0#8jn91ZIwqc-nfDv722M$g@6@6B2W%wB+e~cl?XGSm-NeqnmOgd5aAC8<@#B(6N zol_LY%wF$H?wAdlAGS5SB0qUDy?`CP(_1mHzP*nwD7YUL^RL*T`TSeE@9hJrOaBt~ z`hWuf$p2?m|CcOC+R4&U(8k)qQOEc%m7(^zSQ){ z-d}pd8QkP>Z83h+{BjoMM!8Z;#F~ge(n;wxeHuH$Rf@aK$rLsiaSc9Bd7@{}O?Dm? z7kb}o9|%n7EieVC-u^R8ciWz1mktcAY2d0w&2_ob+@K-(R7X8~TY$j9E1F_Y#(?=N zTedSe0yg%G@t-HEI*MY+*9x|&a?-V)H1!%F+pDZ(Ultv7$@CvnK@>4Bw#me{M&O85 zB?bDzyPXV{122sHM=|;oNeJTPfts+rnuLkQcDa+;36Ul9MsX$L1BJa2^4tkD# z5*Uq1YPseTa}X72*X^K#hcQB-M5doZPKTl)qlzh zQ$yVK|Aj&UfH2jygW_)sm2jBhC6Z77I8UiFnYDxa6r;iuLXwc5&C* z@$?$x4bk2{BOTnnAM8LlY>$Iz^*$VIx%~pS2vpWM2}~A3hVprCG}cpY*$58zs?0cH zCemccyStqNcB0a$k4xRB)6lc>g|d~LXZ=1Ug#*ZmIc4Wy!JcTdZ`xoYE`^)=kr-93 z`muKK6V$pr=@4{0CazfNkmWLt)90anZu$-?Ct}YFcs})fhdn#_aP53^I!3MC`o!En zlXeJNc=FUM_QlVO8}8H{ZL^u@l0+4yOivMI1oIh(oS$`x#oxRK zUi@NMy*C7Zk~k`5?)RD>yB6a`Ru>2`LZwBdB0>)*+C~X%i-#n+Bm6!CW7mnml2d+Z z^slI+qo1g>BGl?~D_RY9iJb3j@zQD|MeQ!_3SE0?2OlESy#Km6BVbbVPW~zd^RH5n z{Lf0^pOf$ZsRq96aK9w&Uyc$pJk%v1nCeOz7%Lp=m11YYR!vG}q?5$K>XI2l&Zf_g zx02X1z~r+sgz?!P7oOEcn<3La5GRk@e`;X<4z$&_9~Ew$LTd)tT3M4@wp7U>u8^K5 z@Ve(4JZ|4&#?3WyazK7h4y*6hT>+;-nSqxaf!e@i_c1in#7)waHAs-Jsv7d!ttgSQ&iX`S^q~7-hAEZEUs$_YLxIlp+Bi=C*0W(yzm$&m9q)v?) z@X1-io5nb9i=^&~^_S(7=86I_?3A*NX?pkdSuV(CoOdUljNs_$#L`JUyd zu~ROi8Utua$(x&smb?KbrxXM7U?~jcehT^n9b!6-RSDiA4Ld zNEqDoUlbb4^q(ElP1GA7l(Vpyc-gX)GgsS9F5Z@B3CRs)Bw9Zjqi0)5b)ulvk>zMsyCDhmlc^wz_j=>4@P5~fS2-m zyU6$w^M&xj?|QtgIoJ$K2L2jKf@0=ql18YXMhA9rftO5gxfoai*Uwd4tgIYXu`rd+ zF1}@vGMT-siL-{0V4E8~uK^Pfh1WY-=<|+EC07xn{spls4ScEojgPWIY$`V>WLWTt z>GRnNkUsGA6c(T*k;;l%gn7%A2`^}}?)r`D8?X1#Tx9>9Se0*CP@)O)S4q|w?Jin?y8LSTeQ}As>oj2GwUH}L@=PbE=BQiuDC%w2 ze(CAvDbLt=;NdL$JTk8c|6=6joO~)pc)WXp*!p46ZGnDX6K5)mE#2u zqkWU{icj=90jyf1$Y7Nr6o49TXFZVwRqC1Me z>`b~;Obj&(@_j_W4wrSNa$yxiiph$yZ|29XT0OkLdL(ZJdmOOe{%r`E znC~A9|AHQ|U(iG2KTEy;Z3y`vuO8~}0WEJ?nD~MLzg7?FWSi4G1mTVej?S8QgE4a* zswO5@0cSi*@D%c%xIB5JNX_muWTZ$>IsP|SF9$f0TMa9y`B-bY!7gA(kav44Y#v~v z1k~BwKxX!?3VCW9-PSyrlYxoQ|3Vrs3cC?9uGo6*2 zt)r0d@+jJ*=wF+Mclau4mSCNKZXQx&{%jrwzcvpzb2u+j=7AXKa7Zsy9q=wJ)k6;< zjf`g>6^^RvyM5;Q=iW(bUpR!y%BqD@DU2%SQ_<8v-n}pqG6gX0M{>E;ChTm(ZEn*8 ze`{xd?id`mq%}+y*t8lPaF!bT)7TJtV(A190&)Ob(@qB@9J0&ZwYYu_yui;|$cB_H zx*6u4Vwi;C>J{UrocugU#2C6gnqKW7KueVN5d=0nOiX?{;FkPSkhMBn2%XVMH$AIc zLChtFmFh;LdJ`**^UMrJOsZy5ME-Idf5w^wnc)VJ&7iv>?a&VUC4+hv&b0?>r-uRc z0BO{6DP!TNPZx7=*9K z$R}%e~{Im1D*S&|p`0W9^S!mR}RZKGLFL^&K!&?NlgP{3(M zoPY^^0~|Tqpjg5jL8lfgrmSHk@kf+E8~%6j)H&OYGdvr}36=RbmdAQJB^3bTQ8ZLK zx-uWS>6K1A{wVNiM6QWbLxMTcjHU9I`#pV=wrc7z&wqdjCp_~%frvRGsPx}~NGZub zfymw8fJoI8QJr+#-+>72zX1_VqohATT(9q}Q(00iK00ge6LDWklk%E?uS?fV~t6NbM5jzo*EUW6Rn^{Rqxro*?7xVi=@pdd`er*EO8s#2O( z8|gYHzmvmO^RPKdmP;U>P%``WEimh`oriVyy!WmP_SkuwUqrr7zaf}~dhep815tFl z=S4|)QUL3Y6WTMiLD$*tTeSVQGu@meh^R5cg5DJR-Ab3?oKUqiyz3Rd01Xfb)$yn) z^jKaB&ItUZ|GR~0Rj99aG^iDmujsM({fvL%iu2aU?G`Qw=0yz6#~&M`!y6wS2EyxGA&#e5gvkHuH%}K0h<2a=skwzOHR3 z^7to6cXKlk?sYAGH=6VL8E+b#xf#8zT4a47B;&Lo zdZe&-3mI_QPJ$JobP~mAF!hVE6jC2U@>=7ZAXfesG+r%rcw>j&fOHuv3;75$ZsYq@ zlNmicv5@)VKKjhLSfB3Ld;&Wr%3s{Z?=}14Du)7LQ(;0YbaYF@=jktVxJc9Vem@3W z&9mHZ9olmbNHzP#wWTEc+3?po{8N*{J;IuG;BV!x@e$x8NA)g8^$zV#Pi~bDpSZ3y z#ncrUfKMd`HRAz%vH`x1hTB`Gs_mdoqOZ%q5gz*e=ta*Uqe@JF^Go=*yfa80U2yzr zJr7^UbZP&yy!+eKqi?TgMeCfY^7pxZ+etp%Q8-BYRUm|eI9$EdR3So98bt!g4&Pj? z_P1Iv`s?}aGYBUH1-*}H*kxAR;Ny;@HrGy@n^IK+cs;42|v@|EPYnTPRIwit^z9&ZZwgn$7kpvF=46X@&NS% zxcY!LE~4>rOs3fh?X?G#UPkj7SuSyZetO(3+lQS`fE`?RGkeqzS_#O2kLF9Rb(n!B zsqNXp+8SQ;FR6AmRd@QOWjY-IAy&X4zJz^v1U`u?YA0atlDN3Y5r}^JnW8YJY_InK z`#R;E@)oBzZm>)N4YP%P#6%=^g@%&nLXW9a>p29uJAVOs@$Y+Be5qszEt~;#YFsgN zMgGaV&ICFIz6TV61$N_7d&XA%`|0nH+iM~eKX*CY#giw`X(uhpzqgoAy&Ow9=s-C6 zf$MF%Yp)PX1$Y6-oEb!7nJsn?#7HWib63R#OmHvkFVIh#vuF1q-E3T3i`H zwcBonN**I+Bc1}cv$A`pV}(uy`CSFUy2l*`Mw}ZV7gCsJQscaVdXeFV6Kq#UohsVe zkmED&*C2%(KP(lZ4%@~jI>N3;5fms^JHp7rj5X&vlfx!Qc2)`w#l1{?*7H){vc)T5 zY-4qWDbKQj!L-+kdat%|mUmO9nml!Ouc&DitbLkV#c4A8U>wjkvj>KuH5`amQ3EV> zxBL}5F1ul=OUMMLONfkul!~2!W#8AUW%N{@^t(WUsmh z+;QzgCji#U>i4R}WViQa#uhYPYlG9inlP7c{_esn5Ttmt58$=1CLpV*9|PPE&9J^b z$kn@HX1>zV+@O?k`|#Q$?$Jz1_8@YF)uOX@$V?aGZ#QdqX%2met!DJiG=A$ljXVKq z!h@N7xv*jRl$=QU7+RxO&hr-XVd!|8pZwC$?U_9^(+u|`RtlK;=GGUWWu~>fH@kov zUQKxD;2nxxHe2&h|4vs0clkjCeAREr*XZ~k?yu~P^bB=W|6i8Y4nY4{TK{*l%JrXQ z)$#vMR*8R+RqN+qsok9aMONYc3t4qT@&haKao`jvZ%|4migyAqm>X7CsG<3MoDG#w@)fjq~xXF zjTD=ar@U)N?7diJ7AHb_R=|#fQF%`PXGB%rAEFAflz9CAi>PY&eIQ7p+Uf?O!gmU{CqIxB z2QHl^f%0A(m#aN!bi|#y5nb=JEzZ=`xS<3_lTmfVX+D41QLl~}rzMTVo%YuC5nrIc;%fSRoGa|9OT{XxHp(Ln30u(PQ zXrdjl|K^6Q>^;OhKvoT9c7XsgUx2t!(6`n~D9s-23zfm-_A{x<+gUU(IwZQKMCbDf zyoHHc4sr_-h6fnchi>ffgt7Fa{xH*DKRGLvtbhZ}Kq@IR=`;IOF?=#Q!$=-}>n_rn2~M>PJBRChf;RyePknr)y7Dzq<54 zUP@n2X0|%^Mz%I|rg}DpdOEK5j+QzKM)tNwU%O}q9eO$kdjq<^(BeOxt&H^y4gbEa z{%d8;s$=YAY5CXATF1vO=AFn@c+NQ^8flr(z+U$oolK&tg<0~ znQCv(+&;;(q*rW^BgU(4Gjn+wT0jX)CXQo-8^$FLEGK@x0&eMr0gy->{HiNg)Tbi$ zy|i%5pXLL4c^>WW$It3wqw=6{MQ?A-I_=UP511$SVte6+^*nm9(|>g^arAKd{)D1p zCwK!t{~Y!af!jWzb+k$a*2H)X$hmAAA^h@<_Pig^8}r5P1IXKNwBfKv7`s>FD7Zj+ zZfK1ku3WvP#XDL+)w`@EH-L@PmPgd8m(Hh)$JcmWJ7twk7HGJYr&ESNp#~CY^BM`A zU6RaRmNnUZ1x8eIt>l!qkKXp(@NWNvr8>Hs$YgiGdTZCbDf<>}G8zuedT%TN|HV&7 zOG_)iYnU={qE}iM9i%HiMWtlT3A-Y{1*vbs^M~I&@)EjN*IDf z>719&TN|3CvB~(P1vEQ?fA6xlRDU0(PKIoiZ-V%f!SzARzQ0St!=MO)6#xa9kFc3jj$uZ&Vd{*Otpxh{=XdtuV zs+1oR4w)b)_+iwDe_3G8ell6&it2A^dbe8Pirw`& z&G@OBr#4ePZdz^{1xD8mMX*V~%3xr{CZSM_E4ac+=rBjHFR-@&DnM)?{4m3oF7?TK z?*5V2ZNPL9)1mtjl73Ra5Z0{HGzFId$`Ta`YK|F~0m)EjPy*B!FJ*e-i-b!NT6o?+ zNOiIr6Y=)WVX1Izeq$IjD@Jr=Zfk%}dGt)yQ01-Cu3a`CZs0vGy<#}W zbWGx%y!XjE0gvZAxHx{7#Te`4;f7XhdR2ru%AhD4$+hN^i*f>{yi%_Gn~P3vdhEmm0m&%nIhqSruDk6zznXl-58y%wN18z`aR+IzD-w3w z3ftktg*8e|IvE|~vNa=2DQsc_V45M5zH{oy{pRk_63I%}SN(~u4O=LAP{IjlGJp|_ z1PmF@KIFW@EmKSpuNNhqxob9Tt?ri)hY^M;sC3?47^fquJ75D1WCj+lVq_St1;K)V zms8psHkagzbY`I#xyqnxf_UPKc1$7{p{k`$#>%2N%*Zcl8_%)tIGr(!v+V~at>mj8 zo-v28BXqza$jBj3n+O4E8mKR#JK=`IpD$iRXIjhEL_DGBw3HP87=I-3=>@*gl#xa| zl1H)Or%miFdMV%xyAk2fo*%p9Rsts=Z3`ZOCT=;#l)XfL&)0K$T5*T%uEx|@-M90|*gJB7sD*aZ11S}01%Yj5ULeLC zcwXjcvAuFJ874ZN-~p-O`T&vFX=lp(GiV_n#g^+pV$tPU8K%0Wst-6xYcsn=YCCqb|ieQ+SdtYD9*iY>+< zmiehpZO+I7Rh9+nOFz#(KoK>XE0n}CJ++@(wDH|P$X*X=$gqM)OOOSST!p_6_{1OF zZIpg~BvV+SiPA#GPacH|b)LK~YQcM_Dnp_Ug}DF1eKJllvRPr0;tb#lL# zu^8WJS}>8M$oyxT5hUUI>-oAB%_>0bR45=|Et?t&fYpp*5JoYO-|%x9rAG`XaNTAw zYu`2sb48?Rf5taKrqoq31#z6OV-<%SWL@9K;j;W2x@v~kw{~i+(S^jt-yhaqiEKDK zeq?AdJA0j>qQ$k@5vt~Fw99V*Hf2lKa@v!cLOKcqlq$$Ah_FD>XAKZ zdnjozbms1{OEMx9q?hc;?eTQQnivx1!c$#kr4fJ5p*$;vqZPW4J&M6s3^$mT@v8^Q zCnVV$(s&ESuH8V{9KHacUxQEE23p^dskmJHq%MVd1xv9`Np#2+#00zMOLkCQZ% z|Bhc7`GZmMF>tjQxKrA;7YmQ{m5_AZhkJ#1+bor%<56<
    ^ygcX1?Ug6V85o`6* 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

    %g`#)=smPoMluHkdU8rZMl{J)MOac{EWfv? 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�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 BIXVCU diff --git a/benchmarks/tapa_flow/serpens/design/config/run_u55c.py/floorplan_config.json b/benchmarks/tapa_flow/serpens/design/config/run_u55c.py/floorplan_config.json new file mode 100644 index 00000000..47c27a2b --- /dev/null +++ b/benchmarks/tapa_flow/serpens/design/config/run_u55c.py/floorplan_config.json @@ -0,0 +1,38 @@ +{ + "dse_range_max": 0.8, + "dse_range_min": 0.7, + "partition_strategy": "flat", + "port_pre_assignments": { + ".*edge_list_ch_0_.*": "HBM[0]", + ".*edge_list_ch_10_.*": "HBM[10]", + ".*edge_list_ch_11_.*": "HBM[11]", + ".*edge_list_ch_12_.*": "HBM[12]", + ".*edge_list_ch_13_.*": "HBM[13]", + ".*edge_list_ch_14_.*": "HBM[14]", + ".*edge_list_ch_15_.*": "HBM[15]", + ".*edge_list_ch_16_.*": "HBM[16]", + ".*edge_list_ch_17_.*": "HBM[17]", + ".*edge_list_ch_18_.*": "HBM[18]", + ".*edge_list_ch_19_.*": "HBM[19]", + ".*edge_list_ch_1_.*": "HBM[1]", + ".*edge_list_ch_20_.*": "HBM[20]", + ".*edge_list_ch_21_.*": "HBM[21]", + ".*edge_list_ch_22_.*": "HBM[22]", + ".*edge_list_ch_23_.*": "HBM[23]", + ".*edge_list_ch_2_.*": "HBM[2]", + ".*edge_list_ch_3_.*": "HBM[3]", + ".*edge_list_ch_4_.*": "HBM[4]", + ".*edge_list_ch_5_.*": "HBM[5]", + ".*edge_list_ch_6_.*": "HBM[6]", + ".*edge_list_ch_7_.*": "HBM[7]", + ".*edge_list_ch_8_.*": "HBM[8]", + ".*edge_list_ch_9_.*": "HBM[9]", + ".*edge_list_ptr_.*": "HBM[24]", + ".*vec_X_.*": "HBM[25]", + ".*vec_Y_.*": "HBM[26]", + "ap_clk": "CLK_RST", + "ap_rst_n": "CLK_RST", + "interrupt": "CLK_RST", + "s_axi_control_.*": "S_AXI_CONTROL" + } +} diff --git a/benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/run.py/impl_config.json b/benchmarks/tapa_flow/serpens/design/config/run_u55c.py/impl_config.json similarity index 100% rename from benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/run.py/impl_config.json rename to benchmarks/tapa_flow/serpens/design/config/run_u55c.py/impl_config.json diff --git a/benchmarks/tapa_flow/serpens/design/config/link_config_a24.ini b/benchmarks/tapa_flow/serpens/design/config/run_u55c.py/link_config.ini similarity index 100% rename from benchmarks/tapa_flow/serpens/design/config/link_config_a24.ini rename to benchmarks/tapa_flow/serpens/design/config/run_u55c.py/link_config.ini diff --git a/benchmarks/tapa_flow/serpens/design/generated/Serpens.xo b/benchmarks/tapa_flow/serpens/design/generated/Serpens.xo new file mode 100644 index 0000000000000000000000000000000000000000..0f0f2b39ac9416127976df97cb1f682dce67e3c7 GIT binary patch literal 301768 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[Uo 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 z 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

    i8hi=M;Ok$k1UJCjcEiczU9=p*m9(Ez` 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

    ~!_LXXPfX;Q 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 SbJ@;HP?1+s*j?5}?Ee5xm*9v1 literal 0 HcmV?d00001 diff --git a/benchmarks/tapa_flow/serpens/run.py b/benchmarks/tapa_flow/serpens/run.py deleted file mode 100644 index ed2229b5..00000000 --- a/benchmarks/tapa_flow/serpens/run.py +++ /dev/null @@ -1,141 +0,0 @@ -__copyright__ = """ -Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. -The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. -""" - -from rapidstream import get_u280_vitis_device_factory, RapidStreamTAPA -import os - -CURR_DIR = os.path.dirname(os.path.abspath(__file__)) -INI_PATH = f"{CURR_DIR}/design/config/link_config_a24.ini" -VITIS_PLATFORM = "xilinx_u280_gen3x16_xdma_1_202211_1" -XO_PATH = f"{CURR_DIR}/design/generated/Serpens.xo" - - -factory = get_u280_vitis_device_factory(VITIS_PLATFORM) - -# Reserve resource for the HBM Memory Sub-System. -# The HMSS is not part of the user kernel so the partition optimization process -# is unaware of its existence. We need to manually reserve resources for it. -# For 512-bit HBM channels, each HBM channel uses approximately the following resources: -# AREA_PER_HBM_CHANNEL = { -# "LUT": 5000, -# "FF": 6500, -# "BRAM": 0, -# "URAM": 0, -# "DSP": 0, -# } -factory.reduce_slot_area(1, 0, lut=5000 * 16, ff=6500 * 16) -factory.reduce_slot_area(0, 0, lut=5000 * 13, ff=6500 * 13) - -# For this U280 platform, the right most DSP column on the boundary between -# dynamic/static region is not usable. So we need to adjust the DSP count -# to reflect the actual available DSPs. -print("Reducing DSP of (1, 1) to make it less congested") -factory.reduce_slot_area(1, 1, dsp=100) - -rs = RapidStreamTAPA(f"{CURR_DIR}/build") - -rs.set_virtual_device(factory.generate_virtual_device()) -rs.add_xo_file(XO_PATH) -rs.set_vitis_platform(VITIS_PLATFORM) -rs.set_vitis_connectivity_config(INI_PATH) - -rs.set_top_module_name("Serpens") -rs.add_clock("ap_clk", 3.33) - -rs.add_flatten_targets(["Serpens"]) - -# Bind ports to HBM 16-31 -right_slot = "SLOT_X1Y0:SLOT_X1Y0" -left_slot = "SLOT_X0Y0:SLOT_X0Y0" - -# The config file binds the following argument to HBM 0 - 15 -# Thus we need to constrain them to the left side of SLR 0 -# sp=Serpens.edge_list_ch_0:HBM[0] -# sp=Serpens.edge_list_ch_1:HBM[1] -# sp=Serpens.edge_list_ch_2:HBM[2] -# sp=Serpens.edge_list_ch_3:HBM[3] -# sp=Serpens.edge_list_ch_4:HBM[4] -# sp=Serpens.edge_list_ch_5:HBM[5] -# sp=Serpens.edge_list_ch_6:HBM[6] -# sp=Serpens.edge_list_ch_7:HBM[7] - -# sp=Serpens.edge_list_ch_8:HBM[8] -# sp=Serpens.edge_list_ch_9:HBM[9] -# sp=Serpens.edge_list_ch_10:HBM[10] -# sp=Serpens.edge_list_ch_11:HBM[11] -# sp=Serpens.edge_list_ch_12:HBM[12] -# sp=Serpens.edge_list_ch_13:HBM[13] -# sp=Serpens.edge_list_ch_14:HBM[14] -# sp=Serpens.edge_list_ch_15:HBM[15] - -left_args = [ - "edge_list_ch_0", - "edge_list_ch_1", - "edge_list_ch_2", - "edge_list_ch_3", - "edge_list_ch_4", - "edge_list_ch_5", - "edge_list_ch_6", - "edge_list_ch_7", - "edge_list_ch_8", - "edge_list_ch_9", - "edge_list_ch_10", - "edge_list_ch_11", - "edge_list_ch_12", - "edge_list_ch_13", - "edge_list_ch_14", - "edge_list_ch_15", -] -for arg in left_args: - rs.assign_port_to_region(f"m_axi_{arg}_.*", left_slot) - -# The config file binds the following argument to HBM 16 - 31 -# Thus we need to constrain them to the right side of SLR 0 -# sp=Serpens.edge_list_ch_16:HBM[16] -# sp=Serpens.edge_list_ch_17:HBM[17] -# sp=Serpens.edge_list_ch_18:HBM[18] -# sp=Serpens.edge_list_ch_19:HBM[19] -# sp=Serpens.edge_list_ch_20:HBM[20] -# sp=Serpens.edge_list_ch_21:HBM[21] -# sp=Serpens.edge_list_ch_22:HBM[22] -# sp=Serpens.edge_list_ch_23:HBM[23] -# sp=Serpens.edge_list_ptr:HBM[24] -# sp=Serpens.vec_X:HBM[25] -# sp=Serpens.vec_Y:HBM[26] -# sp=Serpens.vec_Y_out:HBM[27] - -right_args = [ - "edge_list_ch_16", - "edge_list_ch_17", - "edge_list_ch_18", - "edge_list_ch_19", - "edge_list_ch_20", - "edge_list_ch_21", - "edge_list_ch_22", - "edge_list_ch_23", - "edge_list_ptr", - "vec_X", - "vec_Y", -] -for arg in right_args: - rs.assign_port_to_region(f"m_axi_{arg}_.*", right_slot) - -# Constrain the remaining control ports. -# All ports must be constrained to a specific slot: -rs.assign_port_to_region("s_axi_control_.*", left_slot) -rs.assign_port_to_region("ap_clk", left_slot) -rs.assign_port_to_region("ap_rst_n", left_slot) -rs.assign_port_to_region("interrupt", left_slot) - -# Xustomize the placement strategy: -rs.set_placement_strategy("EarlyBlockPlacement") - -# Allow two parallel Vitis implementation -rs.run_dse( - max_workers=2, - max_dse_limit=0.85, - min_dse_limit=0.75, - partition_strategy="flat", -) diff --git a/benchmarks/tapa_flow/serpens/run_u55c.py b/benchmarks/tapa_flow/serpens/run_u55c.py new file mode 100644 index 00000000..f356c7b6 --- /dev/null +++ b/benchmarks/tapa_flow/serpens/run_u55c.py @@ -0,0 +1,22 @@ +__copyright__ = """ +Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. +The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. +""" + +from pathlib import Path +from rapidstream import get_u55c_vitis_device_factory + +CURR_DIR = Path(__file__).parent +CURR_FILE = Path(__file__).name + +VITIS_PLATFORM = ( + "xilinx_u55c_gen3x16_xdma_3_202210_1" # "xilinx_u280_gen3x16_xdma_1_202211_1" +) + +factory = get_u55c_vitis_device_factory(VITIS_PLATFORM) + +factory.reduce_slot_area(1, 0, lut=50000, ff=60000) +factory.reduce_slot_area(0, 0, lut=50000, ff=60000) +factory.reduce_slot_area(1, 1, dsp=100) + +factory.generate_virtual_device(Path(f"{CURR_DIR}/build/{CURR_FILE}/device.json")) diff --git a/benchmarks/tapa_flow/sextans/Makefile b/benchmarks/tapa_flow/sextans/Makefile index b44aec65..d2b4f612 100644 --- a/benchmarks/tapa_flow/sextans/Makefile +++ b/benchmarks/tapa_flow/sextans/Makefile @@ -1,32 +1,54 @@ # Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. # The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. -ROOT_DIR := $(shell git rev-parse --show-toplevel) -GRP_UTIL := $(ROOT_DIR)/common/util/get_group.py -PLATFORM := xilinx_u280_gen3x16_xdma_1_202211_1 -KRNL_NAME := Sextans -RS_SCRIPT := $(CURDIR)/run.py -TEMP_DIR := $(CURDIR)/build/$(notdir $(RS_SCRIPT)) -RS_TARGET := $(TEMP_DIR)/dse/candidate_0/vitis_run_hw/$(KRNL_NAME)_$(PLATFORM).xclbin -TAPA_XO := $(CURDIR)/design/generated/$(KRNL_NAME).xo -PART := xcu280-fsvh2892-2L-e -RSXX := rapidstream -TIMING_RPT := impl_1_hw_bb_locked_timing_summary_routed.rpt -SUCCESS := "Build Successful" -SLACK_GETTER := $(ROOT_DIR)/common/util/get_slack.py -BUILD_LOG := $(TEMP_DIR)/build.json +ROOT_DIR := $(shell git rev-parse --show-toplevel) +KERNEL_NAME := Sextans +RS_SCRIPT := $(CURDIR)/run_u55c.py +AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/floorplan_config.json +IMPL_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/impl_config.json +LINK_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/link_config.ini +PLATFORM := xilinx_u55c_gen3x16_xdma_3_202210_1 +GRP_UTIL := $(ROOT_DIR)/common/util/get_group.py +TEMP_DIR := $(CURDIR)/build/$(notdir $(RS_SCRIPT)) +RS_TARGET := $(TEMP_DIR)/dse/solution_0/vitis_run_hw/$(KERNEL_NAME)_$(PLATFORM).xclbin +TAPA_XO := $(CURDIR)/design/generated/$(KERNEL_NAME).xo +BUILD_LOG := $(TEMP_DIR)/build.json +SUCCESS := "Build Successful" +TIMING_RPT := impl_1_hw_bb_locked_timing_summary_routed.rpt +SLACK_GETTER := $(ROOT_DIR)/common/util/get_slack.py +RSPATH := $(CURDIR) +RSXX := rapidstream +RSPYTHON := rapidstream +DEVICE_CONFIG := $(TEMP_DIR)/device.json +DEVICE_GEN := $(CURDIR)/gen_device.py all: $(RS_TARGET) - $(RSXX) $(SLACK_GETTER) -d $(TEMP_DIR) -i $(TIMING_RPT) -o $(BUILD_LOG) -c clk_kernel_00_unbuffered_net -p 3.333 - echo $(SUCCESS) + cd $(RSPATH) && $(RSPYTHON) $(SLACK_GETTER) -d $(TEMP_DIR) -i $(TIMING_RPT) -o $(BUILD_LOG) -c clk_kernel_00_unbuffered_net -p 3.333 + @echo $(SUCCESS) -$(RS_TARGET):$(TAPA_XO) - $(RSXX) $(RS_SCRIPT) +$(RS_TARGET):$(TAPA_XO) $(DEVICE_CONFIG) $(RS_SCRIPT) + mkdir -p $(TEMP_DIR) + cd $(RSPATH) && $(RSXX)-tapaopt \ + --work-dir $(TEMP_DIR) \ + --tapa-xo-path $< \ + --device-config $(DEVICE_CONFIG) \ + --floorplan-config $(AB_CONFIG) \ + --run-impl \ + --implementation-config $(IMPL_CONFIG) \ + --connectivity-ini $(LINK_CONFIG) + +device: $(DEVICE_CONFIG) + +$(DEVICE_CONFIG):$(RS_SCRIPT) + mkdir -p $(TEMP_DIR) + cd $(RSPATH) && $(RSPYTHON) $< show_groups: - $(RSXX) $(GRP_UTIL) -i $(TEMP_DIR)/passes/0-imported.json \ + rapidstream $(GRP_UTIL) -i $(TEMP_DIR)/passes/0-imported.json \ -o $(TEMP_DIR)/module_types.csv + + clean: rm -rf $(TEMP_DIR) *.log rm -rf .Xil .run diff --git a/benchmarks/tapa_flow/sextans/README.md b/benchmarks/tapa_flow/sextans/README.md index 8e9119e9..61cb8e0e 100644 --- a/benchmarks/tapa_flow/sextans/README.md +++ b/benchmarks/tapa_flow/sextans/README.md @@ -12,7 +12,7 @@ The contributor(s) of this file has/have agreed to the RapidStream Contributor L In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. [TAPA](https://tapa.readthedocs.io/en/release/overview/overview.html), a dataflow HLS framework, features fast compilation, an expressive programming model, and the ability to generate high-frequency FPGA accelerators. We will guide you through the process using a general-purpose Sparse-Matrix Dense-Matrix Multiplication (SpMM) from [Sextan](https://github.com/linghaosong/Sextans). The basic steps include: -- Compile the HLS C++ code into a Vitis-compatible .xo file using TAPA. +- Compile the TAPA C++ code into a Vitis-compatible .xo file using TAPA. - Optimize the .xo file with RapidStream to obtain an optimized .xo file. - Use Vitis to compile the optimized .xo file into an .xclbin file for FPGA deployment. @@ -24,116 +24,63 @@ In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. We utilize TAPA to generate the `.xo` file. If you have not installed TAPA, we've already compiled the C++ source to `.xo` using TAPA. The original C++ source files are located in [design/src](design/src). The generated `.xo` file can be found at [design/generated/Sextans.xo](design/generated/Sextans.xo). To compile C++ to `.xo` using TAPA, we use the script [design/run_tapa.sh](design/run_tapa.sh), with the detailed commands shown below. For your convenience, we have also backed up all the generated metadata by TAPA in the [design/generated](design/generated/) directory. ```bash -WORK_DIR=generated -tapac \ - --work-dir ${WORK_DIR} \ - --top Sextans \ - --part-num xcu280-fsvh2892-2L-e \ - --clock-period 3.33 \ - -o ${WORK_DIR}/Sextans.xo \ - --connectivity config/link_config.ini \ - src/sextans.cpp \ - 2>&1 | tee ${WORK_DIR}/tapa.log +mkdir -p build/run_u55c.py +cd build/run_u55c.py && tapa compile \ +--top Sextans \ +--part-num xcu55c-fsvh2892-2L-e \ +--clock-period 3.33 \ +-o Sextans.xo \ +-f $< \ +2>&1 | tee tapa.log ``` -### Step 2: Use Rapidstream to Optimize `.xo` Design +### Step 2: Define Virtual Device -The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. -The RapidStream flow for TAPA requires the following key inputs: +In this tutorial, we use the [Alveo U55C](https://www.amd.com/en/products/accelerators/alveo/u55c/a-u55c-p00g-pq-g.html) as an example. The device is organized into six slots, each +containing 16 clock regions of logic. In actual implementations, the available resource of each slot is reduced + based on the platform specifics, as some resources are reserved for shell logic. -- **Platform**: The Vitis platform (e.g., `xilinx_u280_gen3x16_xdma_1_202211_1`). -- **Device**: virtual device define by calling rapidstream APIs based on platform (e.g., `get_u280_vitis_device_factory`). -- **.xo file**: The `.xo` file generated by TAPA -- **Connectivity** (.ini): Include the configuration file for `v++` ([link_config.ini](design/config/link_config.ini)). -- **top_module_name**: Top module name for the kernel. -- **Clock**: All the clock and frequencies. -- **Flatten Module**: Within a design, not all modules need to be optimized. The flatten module name is the target module rapidstream will optimize. - -The Python snippet below shows how we initiate rapidstream instance to set up the rapidstream environment. - -```Python -from rapidstream import get_u280_vitis_device_factory, RapidStreamTAPA -import os - -CURR_DIR = os.path.dirname(os.path.abspath(__file__)) -INI_PATH = f"{CURR_DIR}/design/config/link_config.ini" -VITIS_PLATFORM = "xilinx_u280_gen3x16_xdma_1_202211_1" -XO_PATH = f"{CURR_DIR}/design/generated/Sextans.xo" -factory = get_u280_vitis_device_factory(VITIS_PLATFORM) -rs = RapidStreamTAPA(f"{CURR_DIR}build") -rs.set_virtual_device(factory.generate_virtual_device()) -rs.add_xo_file(XO_PATH) -rs.set_vitis_platform(VITIS_PLATFORM) -rs.set_vitis_connectivity_config(INI_PATH) -rs.set_top_module_name("Sextans") -rs.add_clock("ap_clk", 3.33) -rs.add_flatten_targets(["Sextans"]) -``` +AU55C Device -To leverage the multi-port capabilities of high-bandwidth memory, we utilize nearly 32 AXI ports of HBM, as illustrated below. - -au280_callipepla - - -As a result, it is necessary to assign the kernel ports to the appropriate slots. The Python code below demonstrates this process. For comprehensive linking details, please refer to the [design/config/link_config.ini](design/config/link_config.ini) file. - - ```Python -right_slot = "SLOT_X1Y0:SLOT_X1Y0" -left_slot = "SLOT_X0Y0:SLOT_X0Y0" -left_args = [ - "edge_list_ptr", - "edge_list_ch_0", - "edge_list_ch_1", - "edge_list_ch_2", - "edge_list_ch_3", - "edge_list_ch_4", - "edge_list_ch_5", - "edge_list_ch_6", - "edge_list_ch_7", - "mat_B_ch_0", - "mat_B_ch_1", - "mat_B_ch_2", - "mat_B_ch_3", -] -for arg in left_args: - rs.assign_port_to_region(f"m_axi_{arg}_.*", left_slot) -right_args = [ - "mat_C_ch_0", - "mat_C_ch_1", - "mat_C_ch_2", - "mat_C_ch_3", - "mat_C_ch_4", - "mat_C_ch_5", - "mat_C_ch_6", - "mat_C_ch_7", - "mat_C_ch_in_0", - "mat_C_ch_in_1", - "mat_C_ch_in_2", - "mat_C_ch_in_3", - "mat_C_ch_in_4", - "mat_C_ch_in_5", - "mat_C_ch_in_6", - "mat_C_ch_in_7", -] -for arg in right_args: - rs.assign_port_to_region(f"m_axi_{arg}_.*", right_slot) -rs.assign_port_to_region("s_axi_control_.*", left_slot) -rs.assign_port_to_region("ap_clk", left_slot) -rs.assign_port_to_region("ap_rst_n", left_slot) -rs.assign_port_to_region("interrupt", left_slot) +To generate a `device.json` file that details the device features, such as slot resources and + locations, you can either run the `run_u55c.py` script by invoking RapidStream as shown below or + simply enter `make device` in the terminal. + +```bash +rapidstream run_u55c.py ``` -For the complete detail, please refore to [./run.py](./run.py) file. Call the rapidstream by launching the command below or `make all`. + +### Step 3: Use Rapidstream to Optimize `.xo` Design + +The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. +The RapidStream flow for TAPA requires the following key inputs: + +- **tapa-xo-path**: The path to the tapa-generated `xo` file (Sextans). +- **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. +- **floorplan-config**: The configure file ([floorplan_config.json](design/config/run_u55c.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. +- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). +- **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_u55c.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is +the same for vitis link configure file. + +We encapulate the rapidstream command for TAPA as `rapidstream-tapaopt` for invoking. +You can run the command below or execute `make all` supported by our [Makefile](Makefile). ```bash -rapidstream run.py +rapidstream-tapaopt --work-dir build/run_u55c.py \ + --tapa-xo-path build/run_u55c.py/Sextans \ + --device-config build/run_u55c.py/device.json \ + --floorplan-config design/config/run_u55c.py/floorplan_config.json \ + --implementation-config design/config/run_u55c.py/impl_config.json \ + --connectivity-ini design/config/run_u55c.py/link_config.ini ``` + If everything is successful, you should at least get one optimized `.xclbin` file. -### Step 3: Check the Group Module Report +### Step 4: Check the Group Module Report RapidStream mandates a clear distinction between communication and computation within user designs. diff --git a/benchmarks/tapa_flow/sextans/design/config/run_u55c.py/floorplan_config.json b/benchmarks/tapa_flow/sextans/design/config/run_u55c.py/floorplan_config.json new file mode 100644 index 00000000..9ca3d839 --- /dev/null +++ b/benchmarks/tapa_flow/sextans/design/config/run_u55c.py/floorplan_config.json @@ -0,0 +1,40 @@ +{ + "dse_range_max": 0.8, + "dse_range_min": 0.7, + "partition_strategy": "flat", + "port_pre_assignments": { + ".*edge_list_ch_0_.*": "HBM[1]", + ".*edge_list_ch_1_.*": "HBM[2]", + ".*edge_list_ch_2_.*": "HBM[3]", + ".*edge_list_ch_3_.*": "HBM[4]", + ".*edge_list_ch_4_.*": "HBM[5]", + ".*edge_list_ch_5_.*": "HBM[6]", + ".*edge_list_ch_6_.*": "HBM[7]", + ".*edge_list_ch_7_.*": "HBM[8]", + ".*edge_list_ptr_.*": "HBM[0]", + ".*mat_B_ch_0_.*": "HBM[9]", + ".*mat_B_ch_1_.*": "HBM[10]", + ".*mat_B_ch_2_.*": "HBM[11]", + ".*mat_B_ch_3_.*": "HBM[12]", + ".*mat_C_ch_0_.*": "HBM[16]", + ".*mat_C_ch_1_.*": "HBM[17]", + ".*mat_C_ch_2_.*": "HBM[18]", + ".*mat_C_ch_3_.*": "HBM[19]", + ".*mat_C_ch_4_.*": "HBM[20]", + ".*mat_C_ch_5_.*": "HBM[21]", + ".*mat_C_ch_6_.*": "HBM[22]", + ".*mat_C_ch_7_.*": "HBM[23]", + ".*mat_C_ch_in_0_.*": "HBM[24]", + ".*mat_C_ch_in_1_.*": "HBM[25]", + ".*mat_C_ch_in_2_.*": "HBM[26]", + ".*mat_C_ch_in_3_.*": "HBM[27]", + ".*mat_C_ch_in_4_.*": "HBM[28]", + ".*mat_C_ch_in_5_.*": "HBM[29]", + ".*mat_C_ch_in_6_.*": "HBM[30]", + ".*mat_C_ch_in_7_.*": "HBM[31]", + "ap_clk": "CLK_RST", + "ap_rst_n": "CLK_RST", + "interrupt": "CLK_RST", + "s_axi_control_.*": "S_AXI_CONTROL" + } +} diff --git a/benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/run.py/impl_config.json b/benchmarks/tapa_flow/sextans/design/config/run_u55c.py/impl_config.json similarity index 100% rename from benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/run.py/impl_config.json rename to benchmarks/tapa_flow/sextans/design/config/run_u55c.py/impl_config.json diff --git a/benchmarks/tapa_flow/sextans/design/config/link_config.ini b/benchmarks/tapa_flow/sextans/design/config/run_u55c.py/link_config.ini similarity index 99% rename from benchmarks/tapa_flow/sextans/design/config/link_config.ini rename to benchmarks/tapa_flow/sextans/design/config/run_u55c.py/link_config.ini index bf0d4c69..7489ecdf 100644 --- a/benchmarks/tapa_flow/sextans/design/config/link_config.ini +++ b/benchmarks/tapa_flow/sextans/design/config/run_u55c.py/link_config.ini @@ -1,6 +1,5 @@ [connectivity] sp=Sextans.edge_list_ptr:HBM[0] - sp=Sextans.edge_list_ch_0:HBM[1] sp=Sextans.edge_list_ch_1:HBM[2] sp=Sextans.edge_list_ch_2:HBM[3] @@ -9,12 +8,10 @@ sp=Sextans.edge_list_ch_4:HBM[5] sp=Sextans.edge_list_ch_5:HBM[6] sp=Sextans.edge_list_ch_6:HBM[7] sp=Sextans.edge_list_ch_7:HBM[8] - sp=Sextans.mat_B_ch_0:HBM[9] sp=Sextans.mat_B_ch_1:HBM[10] sp=Sextans.mat_B_ch_2:HBM[11] sp=Sextans.mat_B_ch_3:HBM[12] - sp=Sextans.mat_C_ch_0:HBM[16] sp=Sextans.mat_C_ch_1:HBM[17] sp=Sextans.mat_C_ch_2:HBM[18] @@ -23,7 +20,6 @@ sp=Sextans.mat_C_ch_4:HBM[20] sp=Sextans.mat_C_ch_5:HBM[21] sp=Sextans.mat_C_ch_6:HBM[22] sp=Sextans.mat_C_ch_7:HBM[23] - sp=Sextans.mat_C_ch_in_0:HBM[24] sp=Sextans.mat_C_ch_in_1:HBM[25] sp=Sextans.mat_C_ch_in_2:HBM[26] diff --git a/benchmarks/tapa_flow/sextans/design/generated/Sextans.xo b/benchmarks/tapa_flow/sextans/design/generated/Sextans.xo index f5c6c028d3b4ea0d0cf69cd19f4d7aba7fcfde5e..9bc6c6e2a0de6eebbe02603e7f494499a8fe9a2d 100644 GIT binary patch literal 342232 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≦r)>4Eux zK>pzS5mHw3O{o*wUHA8s(b+-8Bj5|0W&6b7^Mv_~wXEB?kEzaQ*3Rp#gg)`TKE%=& z%8gS<+>jTH9A0GBc0P6f38l!%mF=CTC!OD2$$WaAWS>vGI{rAFH$~}2M0=i(w938W zGpT%=4k?H>PZNz*%}v>y+}c=tI=<$5rF(1YnRo)XKdY>N} z8l3I?nWQQv3hzcUq%w)?O?2&UKK3o$JLn<8{fiH!WUP0auJpNW!uOH*{^UF`?Ms&_(I!<1w$^4URgF zvapc?e_Lx9!JxUQDrFB~pklaG3j3Fw^3cmSw@DW+k_uxijzXesQA!921@8e|Ex3L?dG*;Nu?)X<~$@EzuzTD%T(`RD^rvlKEtK zU5}BOKt{`C5vJwM$@*>445wRNvC5tMh{46-1JOLMV02qrpkkl<~ODLeTaUnxK zj)z9#%$7qK##bClv+{J$zIdcVVCqHcq^?J!!s*I^;eAkz)r+uuyghyJNKF|OUlBxa6AewNf6!~!wwqx3XU)pO@X=GD~G-KJsNH0GJ)HDHuDiNqN`amJ41 zn$_ji;c4f4kXQM7M=K)1^4X2gb>1Z1{F~%_0fL zoqF8lj*!Q2abLOUQ@C`6`#it=G)yr(=l8P3XgQ7nO8;lpJN11NvWR-t0nzQ)|Gvi4YL(feHa%$$owZ~BVl$^ zN;O2*0U!xf$Kj(qPeG+Qgy&Fl-62g9(Bc(Ir8&1tN;w`8Wu-h%*b6@?3Ck68JSLO~ z9+pPKUeii-g*HfkkgEKPAm@34D&X5MUyWmv0G3F;U;0K+%6UhW$+@4i7Re|IC>H;V z7*Wb4I%m%DfU`(MjZ^-n7*XOsF3%-C|1TeFj?da{1L_reqLF`AXP*qMIBQ-T8Jv5mJy=15vGn2qAnWMuVnZ-#)vvb$a==G zdPdj=#;^wH65HG*Vi z3kvL_2JCbPHWH*BsW+8Nh3ii;EgH6sUP_&ON6rt?zcP-VFPy9=RYf8SObUsU=NlB# z@5_#8NgpkwCbmY}IMMyBkNsG?3&{f5Du_N-ZIkl&l3bPaH)}rVuP5O@R!cj+5f29c zB1~7l5rHc51QTKCYb};vk!x%DU#|`%WeCR^q;=M-pBR;y-xL^8zq~2blKrhapL^AF zL;mRLU57g5Z=nRSUah?tx+3kkdZ(f<_&ZQztTY+zM#>nt?LJLAi$hG{xv4M4c+)@M z?|ZL05)&@xOdk^!?^qG0pMiV0%%lq%{G5k@a*Fre|uZ2L#W&%>7# z{?6i_V_aD5cX|YKfZ!6X;Y^Fkfx8wM6~~2GoLB0^JH^!4)8~2xU4VCr3N8O83(fh) zA&3W_ogy%Ov*LSzFU}Lly5t%0jKP*Hy6vs`$G+GxWy$NId_RCW9@^_;2zpOXN0)l) zKt8c@v*WKg6D_U2Z@E3M1j{>ym=e;}*4pslr-VK|se(xV-kFr`D4#7zv^i@$D$;6k zGZqB`gN#+^`T!bCGS2dZh&rhM-4C?mNdSA;c_T#e*-9mPX5#m*B!^ji2-GYtWRS)O zKIZE%O3@7)=j#Jo=!Bbx-p&NOI12Pa55XWw4|750WExF68Mzs_!oOOg){ibAn>WB47o6R`5;Uw^Z4|yv`m`it^7sH4?>88x#y<#Vq8LiyW--t49%37^9ri(*ncu9mBIG^v#{tTb6QAs$cW)yuZaNcmMm!z3p`Cxu?h?_pnR2exunN*A5nmkyhy0cIycKaix zBeGM?eX-1nEx9j=HleMWUOc4bJwYWwQ<;^+R)K2USN=D}hB*T{rGjf2Cg|s@mQF?L zPhM)hj3UvzJ5~NWHj-<@0J@T4k!dvSTCpHCa!9ubx*5W2N&uG_#>1u}M2oJFa%>Cw zfJ2zn3wTke*a7V%`)Y3EcI)bGuc&Q<>&4Z)t=M^u!cFy*)R|U% zuBq^$r>$sSwIjB@5QixUUS7}o!@$ww4i)`$OJ!jpc2k5NJwC4v=`2R=(AOcxonGNC zIz30v*Y<0Sgx=XGK*P)h~K> zf|y|eYd+=b`=9H-l9uU-Dr=N0lZ+hK6;;Mo37?wZcUA8AmCyLk2LROu0mIPJI+I^I zXuc~E{FMjER64`t_t|BxMOIs}Er4d(a_ZFmpq>LfSEG_L$>rOjcSi; zh0{Xp0$@^-lJ-wQ(87TZM%4n~LgE`rN?LGe6sMqV@%^URh+Uwv6{4g?Vfv=Y#;sbQ z`V#zxsFN0$j07oY9SB`39@_|tRqhiMHBHH&iibOe)QeS+|A8LS@`Xj8B-Pk@isIu3NZFBxN~-)O zH#(0}$=v6{CayUFN?JK8M9Ik1sd~xEK&WqmA>iUB9!UWTT6l=9@`ZEmCmigwR`l3*ttr!O+j7SzFy0?HPWs3bdBMjThwLJ?YHMhTd7Q;3w(xh)+XDC-EJA4 z`A;-6*O*}>W63-2UG5QHYy4(@I6}1FEwPMS`~b6eiQ#oTV|%Jx#rK&%arSbVW0*I@ zMm9KDgWg4g#ow$6jIGI0H(vBuf11*lKK-J;1y$VjnF*JsEsql-TbhM=?zYpgQ>_y7>5vql@mE1Ik& zywy$3s?i#X)Yg^BS;{h)XtbOD>k6u!OPZCU@+*>Bmdj!Lnig8s#$)UTOPV!!Y2DyU zbj>Rj^~Ov8{HSgKD7J1+fKfydy<*w$U*|@>Qnakb#=-tq>_@EXhAMTt4wJzWU)wjU z@5;Zd+yBa4%eMT7HPanb)WlrVU_Bhqxwu+BnkA0Pidu=pq6k_mf>cQwJZu7^C7@w3 z>ReJQ8e2j_WlgnE6j}+bWl8)e4;*50x6Ka|^6us27Hn30TVd za}7yqiZ`UFjs?}i5m20eSVs==RMr$pUKqxJptMsSD({~o9UNqKd?aLR#>bEJGjh_kc;NBlZSN;)yH^;y zM;o0V3z^#Pt-5ZB7uO8YeHER}qK_H>Tp~KFMVCCd#ffBdTh0+Tnp8sOii@f6%X>yN zG=Cn7Ww+w}yc5#^q<C?Q4^aY)&AoSU zV?8_x6|>A=`3F@wxuG(1aP`ot6IpGz*&++k=;~H70B%05@7Nnz$it&Zr}${V#G`Jx zg3*7{td4;+emr8{2qH?9wAt|X5jb$2lmCx)BqFGpCaeT!z$nj!S4Kc}LyRAOg}(R% z(p)22lqe^N+fYD1q?la|A)?{lE3lAa%wD~R9Us$xs)m?=Tnq#0G2|&QvS=YLFpt=P zeh>-A>M$guok|oDrP!@H3U_X#L1h(5-l!2~f&b0mA@NRwr)|X4~pu zToQ@f z6~B3^VEz#)d-<=(dYykocEWs%yh$KDdIP5Fr#yVyO4vG?JtjoYaD{lH@ zFd;x$woXbiZWa>!C)l`G-h;77sxe_M46O8zg!H~XVZw9>SSe6NjXpXF0X_)KG!Rl| zznR8gIt#vD&-4s0Vke&z4Y`s5u{(i zNI%E7_tYs9q@P_dJQB`gusu4Z$PsujjjkG;{tBVDIz4;WU7K56@6O9Fb@1E=orUw9 z%R>>WfotR4+7FzDbDk4G8N_878$t|)t;60KQNveVB|sRScj*qQqMC(QhS-l5Z1CsE z*^^rWNa~NE?-m4AN#0h&jDz=kMV5e>8s5=Lj#Yr|cEnjBPPLj#>X-ZpYCm6LSrDVYVK3&xOu!LWBMw(yyAq)z7o6=VUNZcuY@s)dY$~f0amC=o%<>FJgE9fA>#so_kbX=>wl!u`thW~@len}IOXKmGXbb|KjykNuK2mUx|M-lrQg4@f3eReHNL9dzy}igcK5bmKmrrtHN-Nuc09;mpFECE@V)$G+Z8!`4ww z*B0Xq@S^B|nJxSkkp{2Mo<73siY?%CPMQln3Ikhm$*TY(xrI_MW1;3-{yX-m)I(A* zBOr^>4HSIK5svM6t;8@huD0srP`~^%|7x2(5=V+ZmbN3FRn|c1{ImB?t^?G$9JlX4 z%ff_Q6CP}kv_6c7HpGkSW3QZn2Y>pF-D)~`-Z;q5!1jS}>;>CcZEpVU(tbX=d8 zV$y2g3puYJ3?DD6dT1{?j+x||sv-p{8FV%aIcKr7uPc@y*m!fjL==2596z~lt1i6? zVK%^(n;CYyHk75_O7a=ls-uxUzPgu9YG%u`F4H2zyT){APcBT_2g=FqHyv|xEgi2i zry&>@*?3S|#He{K4yc0nS@Wv#%{x(z=%3dOD0ToMEE#+ej8PGDo6-~vP zcMlmW&RA^W3S64xJx;kM+1y!wN&T?_Uod{G19YLA+s&m8evx9zfFbx=2FSF z+@Pi1TVfY@AWg5>iE3p1ShCfGHO!aE4_?mL=;8D+qv&g6@k7$RUPg6Q$YuA6XtOHX zmC?J&Hsc&D`jv$L?#V;bM2#-6{6Th2tn;BO5PxT2^V zrM+n2YMCMi)%CfdNs!kPkzi6$HhFMOZ462T{MU*r&d9^S9@T{doK?U7-xvB4SUzT? z#jueuFaV08PEm7(@%8o(7xa+2I5##4vb=q<@6arr&xVSZzjeVjax!Ce`&X9mt zhyuTNRE0h5rIwiaPz>ZCt+GNiM$?KMKn>6?%}2C{0VN_*Q#G~*6axLFTK z8;|(HA%Aobn3_Nvd3Y{i=@=rK<+ZpMh@t0vksv}ZHfZYN_e;T1t?&XeKK&^O`9)AU zFq*549`}R6_R-JHhqZ-)#vvi?s5D!Mp7+?0824VVc=K# zgFQQ)%pYt_?@N9G)k5-%{D?n}O2a^Y7yJ{~t~kOiLA>g;NJv5~U|?C1Nwy*U_Y={6 zbbz^-wlHvb7=<0x#&><1>)~(|Q_m{_Yzr#>NBp%m54=bIpCo|XHWGSSxn^q|>VE`a zrNu4x?*B;y+W&u!z-d&ifYi?xVq*OoCnor6 z-3F$*DyoWqfs3%niGMBe+nkIw_*mZ@J3n-Zyyzl9ocj)Wy!!^8^(3Ub`HKMJk8=%s zRIJ~_pd%JnG@U@Mdz%z*}lcM^}C;@Y^$->*tY`IT2`tSfT64w%D{$3?lqi%ylE2E`RVfbtY4&&42x zKQ>u*bpwkQ1a!T8a$>JP)qw!dE>cIFp9k$^D838yJT(aMT}T zXQX8^L5$e~LSp-MC=v0n$xww4AUT8t8$DPSE2rAus`VCYTFHUMKfQf5i<#U2=IX37 zOr4w-r&X~VC=c8Qzo?s5Bkwtb;$T$i&234O%z=4Dkh~rO7Euz0<$zq9;-G~zS<}Qe zm4F>WkpQnpcP%m(n((VvJuHQK`Q!Vb6^9qiFk0;8ib}O98f}mY7}E+WY9tsYdm-?lvk;?jMqbl>9lGJ0MWWC zn%`%x2@!H+&u+xz<)?ph*HZ&&QWIC*aA7jPu!b8wE7!xfJ?Jc_7aE=xw^llbjkzW= zi^jW`S(-OV>#ZC;CYr*@T`~bz3iVTX{9nAX!kI_PQX-?M z^($j-5YVkO5xOv{9X+Nd@vY`7ISZoY~2gHUa#|3OcC~NS}cT}w!0;r z=#VtiwT}dKZtnNmwyYv#;cb0Wjcgqs<=VS_)q2&cBl0J|vTL2mUfZ%xV0D*-$t%a^ zn$@cvC!|LLVC|<{z)$YwavLTM*>L9{@-<|p(D9d%djXVXCpncCXs5^WXFXS&Ve9iI z3mc>QmQKzDLPwC?SN*CojmvoQ;CIHVA>l?ORlkK8lX14c5@1Tbnu%o9daOl^7;k?p3lWiv2ID= z>!bm(&{MF@UC>N#6o5%HWKg=O#0ETkZuUQ|xta;ZDYV?ODG&5foxRteO9`5>ZY{0j zx3;|5SJwBO(gQ4GgOu&=WWA#9N%8dLYDeSsxUQ4HL*{J0GKHOQS!Uvgt-V(1V?Mt_@q-mRBD?02%jmVA!= z_GP;{oQgf+W9f5c>z#j>UmISn=l?uBFz0Z0Uso=WBmWI?m>*0w+Dm{3NQexayt_4N zxa}Gb-Ml>8S>G-^<9tCRo;p49dYqiwcF>9B6SueHd}Ycy{$r5Ac(zPnhP>sP%?k{E z2W4{L*M1?f{@0L4+7t@mN5EpC(l7WO_*%NT%~Cm`)*C8cy-}gr!yX^rj;?|i?E4}w zU$LD(T-l@RPQMbT7DYSoh;#I>USTT z@Iw3>QPchTj=Pd4BSqeTsN# z_6VxUDmZ_s2{5e%MaE>n{zS<@G8GPVSt^?*=EAM)wC&wMX^R_DBlb=d3NmGrJBUNK zyRxA%+!!=Hh++XW>N4NeAUN8DR+_Zw(qjyIn`@nW;C2c_+qDo7fVCq)vTfHrWd|}sRWE{<|@9hBORkBDi z0#Obpa_7!Mbw=iuQIap>jL^p>A)`T@zYRQk)!5YPx4&8gfC9 zS1>&RLyeTvqt(_#rP{w>y9O|C5SLj9`e#>BH=DS$K z4VNo`9Qb0adKos-+;m#t(b&$Lj#`PbGK`?}SvrcqO;}V(4S7r)sT^hC8t%D{Y780N9gVja zhn4h)&D3v@Ht%$m%>`B+b7HtgOXC?jOcNr-Lv1dBao69uxfMA`Wv2xRv&~MPchjko zm|6YOR?3ZtHM6fbb)hOFDXToWqMF{sz=cfF3ONIAgKSIR$YFF=(ub#TynMp*@>w9r zU3;i!TaKwC#JK0;Z;Wjs!O$ZQ-z9P;D)3BC&Vr!J?Ms;yE@cr^-TQ6~!l)iaQ|zz{ zk&8=mnu|A)OL?O1DB{i+7vf!Ivwx1GprZv4F^zXalp)>r{Y~fYp?jwsNMyVs{~zO&jv&Am-sq@CI1^lSdOabi`HytRcZ~`ee zorJb}SiBoWJCjA#*l+|SsC^>5D+um^HNt>suYUj_du=D@EA3dSyn+&~GW5YKM;eU# zCbR1pJm1*zy(Qj$T8ujWs?Hbjha*)Pm`|ZIV|A&lqtRiA7_g!>8i)6= ztP^%YOTp6aOom%aSHNEKTboDn$KL3)$^(0+S!6@F)b0?)kJBMTfV;df9bZrxtf;|m zD6Sr(KGnKCmI4r>J0x3yig6IP9F^tS_S;WqMSRFm4?uQ8A7T$ID~8Ku&_)#bJW!sd zm8HJdi1)_yZjyYJSBpEKm^L_hEZ5AzQ&_(a>ffSQJGfN>nnuEbw7MJ|A9vX(x+my` z0?NxR(2QuYXg69+bC>4xLZu`NuK85w0QDNW_GY>S1O<`YMzkJ@FcAAl+HT>Q?EqfOfNzn^7G|`CVI&Gvb#g5V)oyeo?v* z`Kl?wQsvUYz z0(gScbSQ#Wb-296Z$GTB6*cMK`A>+fA_`bam3yf5x$t80F)#JY@?!c#eh0+{PVf@B4(r~zd_CAGlnuXoin#_m8c7%%B)7Mg$6SKw@#j$=ArAj$^I zGt^Hb1MpwOp}p<%DX%#^pYowe3t`l9X=2Lp-aR4O4`0$*L3j#Uh(<@+`ImY(%JdZ+ zAv;r!6FVZ7W+{V`$w(qZ0vExCvlPMb@(;cctZW}Xuig>@Cb6zOdR28ps;RfhG{ zf)+2+OJIzV!v+YD%*l^uC8-A5^@Mj24PPh{-t7-3sq+*Q6Hgo&y~oFv)_F1hdlc6z z&(l||5A3QyRBx^x;nhWlsV|kIrL=jK>?H2WNVvFdR1*r3Va!_B>#EfwlHKK-+vKj+Zn%b3eYi$8KW z+-dUaW_c}Zw-&Sef_t*}_j2!HX``Wv$fqslBQj8Kart#cPI1BGWz+&5U*jamKmP@j zxn6p52Iu7WgGE!s_iPMDdNzaU?ZxeV*4xwm;8I!?w29uyV!e#-7guN7(66k8FfZT0 z9e9uKx8y&5Bzn;V=YJ4Ax7IX*Tr=NqzygW$$#go$HO=q*n0FD~^4EY=b0bqu_jjOH zaF2@qK5TK)`gqZOCP{;?J|L4jclnW&h0qcV#JP$@zh^)mDfcZqq`zvDl5))IboSXj z%|ZU&9liLC9RmyPyLxE2+iPi_Er5eUXpRSgJP1xgy7wqVD$r~+MD!FW>_1ef83VQ) zLb47iZiIWszFYDsyS`{ zxqCF2pd1D@q70_72LWCvJ~)=W_)`Cjew2hx(?>Av>078Z@WavlM&K#V$%E12H_Z|4 zr?P#mq}YI~nh6dyp~vT8Y(*h|YGN7ArI|dYmLDkVxCMtqln?{r;;+<3g#C4=sZsXH z#dUKi1d9T+>|ZwOPM zyUH)?lXwfeeoqiKC9L_cD)89ESjc6q8ImsS{T#R%CPTe;sJdey@i2+IL@H?wM-i=Z z)lNf{%ti@CCAkth2wd-$y4lxAi{fe+m{p>>g1gU#64>5z1OBt@0o+Zl%cAuFW~ zjx{7Wil~=I z0^&JDtz(c@Zq6OA2Hn-Y28H}Y?{g8`cvN_WWmL9mFpkGila(SdPn3i=LNiMpB;tfO z!E9Yn z$TX(m7o!VQiE_HEh6&Y(q}y(wV9_~?b9PFNqcC^71bNrgnXvV*ri9lAeN<*t78-Hj z!DKH_oZ-q^pL-j$d_w3Ie;jb%_6vQqr!_gJt6eaKn^J>%^!rrZtu^mpL)wv%r#SQR zRU{i0S9YGQb1{6Yc&ZFC88V|Qj`_wJT1ZK^)zUB6Q+FVigAX{ClTF;3NVf%B6B-1d zQgDEgCoSPHr9bq#E|mCPkKy|7XU#D664AA;$6~E?SgP`XwxXscdbI+^U#-X9Cb6PP zOC_lfBmgGngz@QYpvR}}C&@MLWKjg6rOJR_Ev{O%5=M`6zO`6)U)T{kg<6*PgX0K8hQ&;ArCn`y7cr!JSbw z-kqeP-6DUx!P;xbh|lQPJE~y6IOy<7AZqVCVs+wt*gVQ|UGP}{(z5uQ(qqMFn4bc6 z20}h*udE5{qCw$v9)B~GH)Uq3?0%j46VYx*Wla&}&EEtX5XO0qwy=Oc$}Oc@cT;N3 zV!}>%?YlFYv4P(nbwMqzWB|WsjXsCQnE;y_cTR&HBVrmu_Ca49?MhV4%iZH`ym>{A zK-w!PV_h)q1c;oyp*HR^5kg0(1`C`qK$v^I{d7n3Per|$z1fYNrz)n5o5~P~$foP2 z`cMe&ak}}ToKz}r^7=B4bmM2YS7f(u9o(G3_DY`~+#oBpYLOtTLZ7|8o zOycuKk-Ni$V1iXcqgj-i8WKb&y+C=d@Gwe-s3hM#$*c&cTJglSB4e1H&Cb$l(-Y&o zFJ09BltQUsfgjaqgwx+9>vi~AKE0*To|nthfmTT1mR;mC=ak?KtR|9m89GTVi(w?2 zSElu3aAF=gC26WXPN{(60ccO5k$9(yU&SUVRlyT?aNy4&G z4mO6?%box^B4ogr^H}h>f%+}6$8}ocn3l!qVwaX!$x(GDlFSQWPaXt-kMmj!_xSaI z>z(BY&mh5{U^~#{)%MpLNv}`JlMLXtz#088=oA!le(sM^s5^FvEELUM*~VV)WryCH z-?Rk#^><(l*BlcxemoZ1|NOMM`GHDAvsFc~8dtYXoxTY6{ETo_ccKdXwb&RR|4OoU z(^KNH|In0NDGU;d8}wZ1nc^UU7h7bD2#yDlaDCV0;mRm)x7`I2*t2pr=bET&q(K6* z>X~TH_KiD8U)f-X5o}qV4XVG)8}ji+8c&d+hT#S?06>!&q`$=nrZeI5Z2ngb!(mil z4NXJ_#Gn-+NCsrShNo@dx?StqtC@0AX11b%(c`lj~x`!0Xj1m0n`IO{liyR z6^+?$8EEY>Q7dv=xveO7HM}`Zfh4cHP7BA(AuX0Csk5T zH7%-2ug3(ycS{UMO`o%5+re1-?G#q^-rxO5P4tZ)2uNhrP(m|$zv42i zOp3bWSd$+}_CVDO62Q0^2v00xmo0n!1-TGdl$;6Npi86N&ZaYh@@KCS%UAlDzj! zogd^&gXL~gC=L{F{5_kS%kJB6{Qubs893_8Cgv*D3$;Pca0F;Wq10pbeD68FVLOlQFp!E zo0<_LZ9yjK?rH93Y2#oe`OqYKWu(85{^qAHkR_z2c1ViW5QHeixzjOXN~ryXc1I4< zB@7}kZnR)Ax?DdZJ6A@B#HE5m@nFed^lMPX)A;|`d(WsSwykRzkSG}>Cq*(SNX|JU zpeO>8ktj&cp#edHBmog52N6*+2uKzLBsNISIp-XjhOfF6k8-`^o@d!-Btm7=Rib3U2`^_;(rd`fri&MpJG+mbKf!kcT zud|BB7@1io`A{nXc4+~>-}OnUwhpM1r-zHZn+lH0Vu9UsVB^qO4D`#{+_ZM=;Z%BP zwbJc{&^h%Uva7*69r%1%F_YA8l*Xf3yp%qW617`_h=mHmbo}@)UBawTtniEO#+Oye zbR88*?(vzmGFU%c_IPa9KfSFlyj0Zw(V+HC=?Mpplc5>aBV#2ygM9C^$;y_4lw-$Z zjw09S4f1d~<=neBx}7@>F>dZW4?wyKHh7tSNjpTBmD$#Hw-VWu5d(p>aaE+t9Fx{g z?D17&5vNtm-?JRCkM?;U6#)Sg_-3%y-^w!l>HBZ@K)@RwfCuuw58bh_HL^1!@3KVxr^95gw`SiN#gxC;x)WTdYPyL^B1T4 z_VUkT<+aA?P|``XXDKJJ#Bgvu1Z7l37lYs4+ZAD!57UlHo5Mc#D=m=_JK06j?VKJu zaYZEnw=TbZn=o)gu~UTvSF;%ls^IWYXF^Vl_`{=JZg95)o_UwUw-?7z#?7U)i$2qo zA{{sF3XR4=Z$DH>PedwJ&~{Ku-CS=-W;(9S)c%%Zt8(Y*b5!LaxxQ4U;a5Z9JpIUK z%q_fh9Tq)r)wQ#d-|Ab)X!g?Oa=FUM;YZ=-eN#W3uQ}4=%iS9XeUrmjTx|2Q6t6~UxJlRsRsu>a^rqS36Xotcv#g@Oku4D%HWD)N z&8b-V151G6#0ydpiIyZb!}OAO&bcp)LIwCH$R6dmbjIxjWoqysnyeB}hK|)MWMEY% zGDgg3@H&;8v>jo&i!^}MK74jPmQle5Q=xMwjw=6qSk=@S4+xMrc{>*uZz3&68L1Z;Tant; zGLbITh`TVNvlWmUq5C3w>?3J{sCB#J<)=d!{0<+mGjDR5^+j8iBRgm|BWVr z?0Q6|J3qG^Hg)TXv(hc)H!tdxG)7oDLg+wWWZ9MHLrUUbmui?q7JkfUQ?pmrUYj71 z(|Z+z7ww>&Fon&0W7sfMfuNa%TR?{So;8cOOHtQkZVlOP=XBhovib&@rgRV2dOsoM z+lbHNh#g5^p>=6r$$0Ghs1KA>qp8p;2ZPehoCq7?Z4PBv51VO-#z{8x<=^ zVrSh&AZ_SL1UJt+b<(+>wY1xIcPW2%X0h+*osIA4Fe;sV8ZyW^OY=-`de~hfC$8P1 z-K3MiT6za94wJA>kz~eHDTE5Y%HBVWmxs%H34B|iY;>q$fOH@)8M9?b;oVGc0Mp$D z(_EH(d1xvd9$xr#;;EkmV^qGm0&huBO{j$G6|9fK&t>(gCTZK^LgKideFU4iaE@Ig zv;0UAtnMryDG}Vb&R~-it06q&^g6`tUf~n{;TL5>Y6u|Fh%WxZU6(>R;eac1HsN2I zrB^vpBXf_szKVv*iZXSz*T#LjqgyWQc}wuBpn0I`0A6SwCn|e@&wI?Psd_pQNho{M z54%3TkmJ`;tZp?$2uF*CeyehKQR@n3V)b+h*kSeTNww*|tIo?Ym{?#%N=Nt^N%y({ z&T0-KmO{IpYXR*_Bcbck+E(W$rVJulH>rJd7q0v7(Ro4Ksn1tQs75krXt)a&=hcUt z!x{)35hCpCJ6IlC1eg!%XI$@khPtXnI4d~bLa&xr))*Ix{95y>*xmW+Ov_y+Qp5EG z={y@(*`vT_vNx)Nm#;|=KJ>&gE~9uo#dHW-A-?74AQjW}IoR-~7|CPklKa{lkHGjF zWsk5tob>~u!9w1Tb!$zKROPhx*Rrtr(yolJnRU42;YpZoNzmWqR==Msz<>0>v`Sst zD!|wf>&n~02aawOksree&Q^+i_L>ZgCj(p$np{4qS?Z*YW%q?~gz9{gh>^=)!o_Hh zz>*807Sz1de&1GvQ@7o4miAUgx8;@}EoocU6q9UdBKz%+megcf*S!r=Un49~yO~jX z93IP!nrr#u+%JU|-)AR1O$5p7V#22Ys)iG+Jonq>Iq|UZSq+_5yz; z-`IA}Zxm`{)|uH;qNPBgp-5sqO%rsvJBB^V&0@&A--cD7a^6zcSX`@aEfx{BT4BUS}h3H`InlI-E*t zW;c$;1?q4{Jf^!)>k0WYQ0kzHqf-!Kg9FAgjEX=(JFu>p@mq(L*ZK7+XQ0}9D^#Oy z*i&Japz_*gaFwYngt1RWF3C(pQICLQ+i~jkF`;8xeJO~+G^Cr)(?<(G03~Ci?!8Bz z7g^7fc8?-(`-eh1Q0^_Fq?>Q|){_wDp0m_b$#$ExMn4}{9}TG7O>1{!D3HebbZdEk`E+_~*?wn@J;D1Es0uWA z(z8)JelnO`GG_D8p*d?~9rUU8bRE*H>;Ni-?zyIoos8^t?5%-ohdn`%W4?q48*5(u z*A&#e`nn=IV`r{TM-<+vWRFmt6C&8XtIEAZ+#wBnD-f522|cJQ^mzH2A=8(ngN>o$ zGl(m6e|c)Jv7_(p(5R@DDCOD0y5Y|1&`#}y=W%ns=m>PiOy6_A5BL%I%48+D_Hc|w z|Fk1E1v;}HT^1p>F@JX0cff~Rxl);gVKi{M%zj;NCRhJ-sc*fn*86CvZ9weo$CuXaD$SvhFfJRY#22A$N12+=SfL-X?!Jw%~U8ZqcX z?3hi(y79?^&f(z))w89!%I1yyb(+v;%6RQaW~YYU*%&a6PK0#s-XIrss9E zJhxUk(h@1K6$n1vEV8pcTpQ3|Pm9l(fUeICwG0)Ip7eZ(T`+@w64_!;@!H$_I@}ig zs`j*FenVf_V}E~a4idTix}sypECE^@QaQGgKm(eio)8mWx31>GjUYLQ7=Nwg*Dqq{ zOUimmQDt0|D4>Z{^{NZa+ z^=H1*`Qr{DVtd~(f~REmBBKP=vy&#!m}Y5i_k7Cgds{%X)nUV^+Mz0Q8A2O^Z}l{^5Qd+C*I=h7GUTZ>MWeE2uC50lRZ)}cdOZ*necvbDEG-}@YVbz0yh|Y#@6&W{8Xc2?UHW|{jSu6j9ca5Z1aZ!WA%0o`H>x&aXNLP9U_CMyyr{g7k;wWCj#qv z?ye4vH9{LlJ~V&uZ~zakdO{x`%unSmMN{X;ceE+@fNY06k!>sw%03>JT6=3p*sL6s zB~6V4kc|*el#NXc(03)RZ;UWZCUt;Dkn46{$6WI*5Ez;e;Km5;xOR>436iOUe5-;O zl9#iW$HA#x#S^P2G5d%o(W^;?%G+|_Cb60Z<{o;8+3keYltQoV&s}`F5M0JHe3!Nm z#`oIJY_e;d9A4%t@+;PsazgyOE@=^Sccqc>bV5at`RJ(d48IHzS_j=}A`mW**Iugg z>ro60SkQ|vZuZ^RULIsYbUeZ2CoR=&>%~V6IM5(%fPBDcxW_6_ChF+>W-9v&lD`;4%9W*9~T?df?S;@GhrEZhK2o1+|I0 z(YJ%DL%^-4_TRvXDM#*`wiK!f3ZN~#viUF9J9J7MJdFq3vu;3QX-7`yx++v7J~cR- z;B)m54VMq(NR5<=Tz>*yBYWa8ks>itstSDYA_qRa13nl6AFwHa4}~&ASVHziYA3u2 z?}+mo!aWb&7)83vq)!(|B=grSylq!@4}AG*YjKlYu|-Ri)uSdBdrD^%pFg=5GwX6v zvQ{2tG;*K*C|B$Wwe3@U4hBT(1H>tYxR*$GV@9C zj>DLkkk~V5@eY>*@T!uVy1nzWqRS>r0B_ZjCTx4>7p#)^57?m&2sU3f0dyO zJTRMYA~@-@-IAVJYP*&lMZIC>k-&loxR*ZGCGiF4sFZ znuyva;=nkeU9~iu$~|#|O@=9;C&YX-B9Nuy)5kUzf*BNLuCHpLrpSsV_PuwH@+m3qYyEu;la@da8q;hdXCW8 z7!^NuUIe2{heB<^fihRz%7Kf}j#eC%_xSpH1@tg*Wy3oEW<%xv0~K7A_)eV~x5HDA zi$i6tFu%&MgUcaFQ->Sh>iV$Xv(518u%4kNEaS^&j*jluxmYR%y&};`xgm4Cujc0F z&_7ZIQm|$v1=5#4DzbC0@BfVVwjru|tn+`7FHM94;%6QZB^URyW9N$}~Ok z5xd5o?KL(x9*|(0bC6dwm>Yz2Z;CWchoJkcbLOy%-mC$ei)VCqCCOgW4hz`eA=Z~h za4a+Q+Ope%%3>aey;|pcIA~MiSzCDc{8B;9*Pg34XF@_ScPVa+*_0Gam>+>2!EhZ= zz;W4>q)wPGfij*!W!nxY;J7B>xIh^wP+6q|iW{qZ4{IjixS#=WTogAJ`5snGm>br1 zZ$rQ1;)COwFqf$9{sw@6guU9}gX60GBQAhq2sWHzzK2~lC62Y-^`MM7NEn=A8#u+a z-A_RonUFBzeTo|sHgJkT4RDIXi2q$Ej;Rxii=YfYsBAM3Nk zZm298BrN;_F0|vY@O3`HK^sRHU%%iI?6PqLaD4`4%v`|b3(ClVgyHN{P+h=yryj4VhP^*)8j1&XP6DgGP^R_X-lBIuD1 zw5jf2Qh%!p+JpcJ^ZgxH6T)$r?>ZmqpbgfA)T4IUU^&*_sslZm{2kXVAJC&zNEqTi z#ia|l5O*mqjoDxoOpsnk{qMMbN&O=PXcJI_msa^uFHn4Gkq@aNlZw~= zn^1s?(5{#mtOq@U)$s4aF9eDRsNvEJL6)XY41R+)0p+EA!M}Ewjnxw95m3ax6<+*t z7__m&<-jG-i^WA>Z$fuWXCj_vLsuvKpvJ9sBsm<#VUUx-p?7y=rd^`P<|P-}ns=LU zpcV5=tS}3`sF#*?^ST1Bn8I&k#)kVo-Q-fb&L%UbnXbomBThMIcd8PXMI9ZI_1fOb zVt=H5wGymif_}UjtvYoZ(`3jcOCLBX@KB(X8=`EuKNc=d_EZ#NY!hjb#s;yzmwnlA z!i}Z*mFd|V4v2Ni2P}ycucAktC3jwW*<`=LFw|3JZYDPMhJW6BizSidB0 z`W{KG{W0AB``1>*yzYhH=m6=*c^wps!b43VHw9J(W%u)Wzs;f4j)zL-f+5J-ut*yp zreM@EK{6jsoG4?=4SriCdF(ZQ!1)sJsh_j=dNZU*|NUOa#Mxcgl4<=5UL*1s%yNNm zCVw|`S^R0HRJ7rReUGsIL|1ukuzvO6*~65Bjyopk%d0&Tw>kh0plZ1`r>I4+I50no zZa_L)@pgyU`;TuQ$_%mh9nWv{u>#c9-dWkHY0L+xgBs<6{qa@{daqALS(Q!)M~D9 zO_7+?-d{;@X}|M>u{AI(_1{;F^0EmbQAXbp9z#U_vgmRS-@FNTx!)!4^gJ1UMa#jy7tS9xvxOvCr=L0HeDb9T57 zC=FEDZ&uIV3e&>|`TKKc8TT(ZBgs2=wxD~#84mc|8T1WIp1(*1^6ETs&I%eAoHga2 zJA>%|bVdgmU%AeGt$ia7V5}Xa4X|lbawj0QQxs|)3M)~V9Qd+el>|%Bcu)FII^l8v z(Y!cM(3;eR1eNKW%V9kGf*e4=Ya4%vPucE*86UwpVdLKKE_egKJvYluzF=0?{L@VR zf{H+lKc$Y{e!+~->zuK1*1VtIqP#ZxcH{Bp4+dC)4pYnAd;DrMhOA_21^6`ay%O@7 zyN=_Ha`WNmK9aF@9a|j&boCy`s{w=m7oStitU=1m*IZ=nJyJBOL5j)OoMr7jRHUy# zdX}#_$=Z9MI9HA2l&?9;+PklqS&d|puQ|xtyQgSUjijEh*~{9yt4LpsB$Kb%#oD{0 zI9G+lldsv%+PkfoS%pNOulbd=cT3Tv3W+FR^9yV5rXqb65=y>i9c%A~;#?)tUY=$Z zYwx;ZW+l>Go@O~~@0y}XB~o9WW(jNWsv>vN$2`p(*1qM-#d_(z zF{ah`vsl~RgB3O6_awve*cO&UN#-k=Mod0EFstAItGtq#8P}`jh-=*HlIG7P&08hSKlpbMKkIt+tV4ECkACVjZv$#2!FcR`T|@A!syaZHW%JsGb6Vu(#IGdrUGgX@vn!(JZ;%-6TTsZe>wPZ0&ePMwKghJ8BOxduD89bpQeDaQN^eliM)Tg{j7$OSbO z=Akz4QrP`T>C-hb*jzGwgN6qz1yNg1IIS{K*`4Bt1jnqBoJ$qO61GgtU_ zAF`>(4^O%vG-^I~&HgrEdcuLKo&8xUrl0pP`#G^v%slU5hvuzUw0iG%%gDsizdU%n zsg~J@4eEc_sFvA+4bs;M%?yfV@v?5hT`!CwuexvH^h|;73M)jY+$L%&owgNJ#Ls<%|6TRoy=6MrLfA)1QwmZ-Y;iuQv0G51LAws zBL|0iJZ3;4d*c-g)VhG?@pm+pWE9AcSa|@@8>rg*j|=ZFx%gEVhnzdSO$`qN#5Xvu z8v_8P%FZydAzfI2f*b{^Y``A1Dyj2>y{a9r;Sp1WGMhsU9jIiXtsCui-$ zZlzZY$mO$IeMqBPClGd7{r@O*6S19)o`Yby*Hu7t@?o<%^&AIbYua`Eoc!C`4 z${@~^+kQjLOIwdC`6<~wkN4I)8b+2Bdv3m6RWWroqu+T#P%PJL?%=W6Xt2lU8h>EQ z>8F)twi>hJ&-Iivvf0!yM})^PyuW!%dE%y4Qk*Ar-`d4tBzb@S_{goSQi$WqiweA% zl!f(;xE&}`TJeZ2bfFI%aXr9PXE>C!^Vrm7;pCe10r!4hB!;Vo<%XchXBVxAg(o%} zwB5X&6B68>v}-vHDyT|O1&{R!)3%MRQ|Q{tR!wma^ZQrj3vFX0`_uikgIM#^BpuGr z9cLR1`<2#{2a9u+tvNuPYsEuWNqEDCmv_D_*jJdHV3w5)l7dy;!41e~DU9KM-D5Q@ zH2D*H%3Db;m+(&(CwJTRc%7z5ZNTkwz;pbNz~-gn>}GMxl!phM*dxpxHBf=CP@1~e zDR27cx0lz(X4orDFBb{ix-08EUQ;`yFETRbq(f`<3S4H^sXxTmab;m_9TS4K+CMdr zpD4Ce$l^VDvvkoY@aBF`qsZvyvQL2ZRM$P%JuEU&Ig$iI^KxHd9*^{NT8y@?*P?QS z`5lkEJ%>dhn++Xfl_`1a-q3Yt2QLq(tCyVvG-ZG5#LBz;Xnz^_MS_{Phf$Mq#4P+7 zxIyV>O7J(Z8%XVzpV;9(a;S1Uex7dw8%MGgSd=3n5_one>fy{G2(HlgItd(W_IBTE z*4DI&H_>0)FEotaq}qH#c(t=F_co+xoDy+T25T*4Mb^q5oXROr{}P1gMTH&=6$+}|oDnfVoWcx6pl|@$zA}L9 zEpVuLqX{4b8PTpRsK)Qjzfl=Z!ZypUQWa`Z3r-n#&TFso>K2GR-V**=U3~3E%!x&o z77L{3Lrct3nGHSTwoQSk31aWJB?3vR{9Ymjr^E+=jTQb6o7?nkXA z-tcchGLWf!EB(=ubSTfaBB{8MLkl6t-mLIFrcd`eR(}?okK%Gtu?8nF3L1Ec?uwl; z$#bXPVPA~_(}!q_?ST^_2WRr<D^18;|Yx$5a+S^tVn|JVL>Zr z8Oh*^h~FMFW@^;ig;kI;F~Wys9{M7^hDCSmEBlFKg#e07kq~uVgwS#`81nm32Z>K= zfKim1x6)IVq`~>V;|a#{4gG6TS-d-&){PMhhEp2f-$amwa%rX%A+RiYcjD{;qn8ct z(IWDOq7I7VcMW|`W!!eZe!u z)M9lpb%Y-3llzF8Im1XCn%TfV*s{#NokD0|kqlz${+hd^f>eZ{N#A9pPJ)nuOrE2v zg%I;nd|~b~;9k){I~}<+lweSjzRT?h35but9F~#0NZ9a< zVb)ekFY8_bOTI%E+`ztu>7$Nx1D0XM)bA_;);^Lj>r#3}gEnBv`$$P7Z(g9(vG@{y zs6Zg4?=tXeMSAxJS%n`3AL2>f;bnl+$O=r9#aK-Rh{z586OC(E;55cC`BG&dJHu#H zlKB&j`XMmu)xUgiOwj&`MmkxTwKG6tGq5C##<0jg(Rlkh%(@bw@zKjV9DqiOzCY5~ z0Jqi!XuPFpfCkXmXZI%>g*M?d=1F6$lF}FW0Xhm7{+-6}Dm3wit572y*%?rw1i&lV z)jz55fz(C%_Fnu(A5bj%K(Xje$P?A=>dC%GI0iy7ds#;fgt9`FjTARNB2VPg`2Gfh zUknSvPc>#m!D$54n0yz>1E$78xs>uLZRfx-_2Xw1|46OEal;56!|Bkuz=N&z%x z-~1De&IWKA*@0LA6~c;HB15UH?+d z{wN&xf$AgCzK6n5T^P^elO~NpNlI_)1B5bd`5xgd-@|(-28E9?>kKk4*ZnN&P53H- z1oXBBFY6FtYJ~OZf2A=d8kPj9U;=&)#YqH!M)mnW(I_+or|}oxoz8!vac&1@J$WY` z87Gv0UmT!OK;&O(oZL3`r~rDREz?~jG+7MFRDyDY%-^DhU8FF$^O>Z7Lsy5ws{1bu zcG4%N&Q~4juTX&(t^7;3u0v$?z4QSYhhA~Aj>-4ZeI$|`$A9fzmmVOYJ;0y@T7oYC z>>ct=&86QsGeopvW%kw1LAKVSw*~sXH5t7vW(p2>-*TWy1I_#b{syE; zD{Ew&gP}xDGCD^^`lRk34?URP9+{eL&Q*@EE@?XCbL}2)%L@07uE=ufoyiFHj|=05 zhg_@Nt$%tDA~F!ab1-%GWR~3iG_k5ST1Ti&{{f|g^HQL4J{_J?Oep*H=UWQ726DY3s%m$ZaXCoyk&W#%tGM;(TA=K2T0&j*}j;h zT?g#DPA23&IzrOAH*%em3(I9(Zki0l40H>b6|b~vBk-F!thDN4ez|2vK*Nq-Racw~ z%-10N6!5NslQjfxW_c+5Xlr=l(@R~Ay~&~ecNImP zGI`hD=Y<+aS~BLb%2Bp+$_72}%p9%Q=8<2pverF{%5>l@&J*6_3>S!SmF(SxVeIXD z<2_GKyWILX?UQp*#Y0i2uUy3552tim^H?_;u;H<#JcFZzYSO`iJM1A~-?Xy4uRDbM zz#bNzsBz0jsouVAJJaOC!$)@()BrkC;ss&xL0Nrz@nLLjbQe)l-QbxvU2vlyK9Djm__rLRsWt zQMM0A+OOd`ee^_R1#6x(-hg|Z*sabXycLYQ!gD~ zf09ProTwn2U#435e(qt$GK;>=!NHTis3^Vd2vi(VHgKMGo;-b-Mcd|J-!v3ZM)JT& z)*AVFo+uBU=)*bz zOn0oe&gH;9X8ThP<1RBlc+(4u{=v0Jp~{c^R9iBh%Ym2XhaA|yv~tQ;$+yAf;8B(c zlSA#>Hh}~!jd6;~Y2eEXjC!+kD9KO4-hEg~(*G0?R8h2X)(SKNn9j$$7S8?6$DaEm zGC21~#c}TMRN}9|`clpVyODMtm`mt6>6UWmiDKt<`YSNz)pJK;iRX^o?9Ls5`Oh6S z8UN+TWbWKi_58V`vh?%H4f%HNDBtL3<+?QCGZe!FQR!LjMJ`F&n#-zaqi+P)&=Yv~ z1>}%*%|C6lB7JvXCA&;$20a?C2Hl!*QS572bNxh_W$fRR#0zhqfEIf2>hDK#e4^KXH-lbiZBDFJu^_AAf7jl{y$<4gf>U)z9;&<&Z&@|dct?=7!&^4A+X>qfeJ z!~)WnLYMmFB(t=p1eZ=Fw(tnNkwCcpIe>b8IX(__EHg?&PFRgrxBUW@e*X5fTlE+! zkVsgC{*28g#=Vj&oa42&#&?j)fQQ#kCUSVD_nqcKuiu{U@B6+s?6j%w5Pl?C=J+~r z!W33&Wk>EmUDtepSLX=4j{*(xC)Qjwo1e6f{NnoG()!>RTA%zKT0i_kEAQW-Rs9!Q z6MljEZ)s)uh1QP$0j;pUH$MND0w4tNOMvwy*tP-adOsyordT~jCKuNZyJ*<#{G|Y| zV0fP_gI`a9miJRK+W*rugndtg!^&g0u0OyuR-CtrULX2CFA)&sXhl3+j_}httU|P$ z8NblV@QdqztJb@}&>H=BXl43^)|S6R>&x$Ih0{9wH)!SimDXPh>)+B!@e8ede@ERv zXoWY8gukP1*=HA~wU?cFFNfS>MD&dr zdG4$u|=3ReVz8T~Ocg>`v@$-=TLu%c))^Mw^%na4@XNItv*y$00 zNg5TDh4l#-iMFhOw~;i&*z@NHEQCzGAx>t07Om)7il?$PsYsTn@p(taR_zivwoU;> zSQ{a0*Cz9%@6^K2YKsZb-EVE?UO3&{=~S$5{=4Rwv# z7{dv9Z6Vo|Mc5m5YbFpdy4;i{A>A7mU?&vBP0S^la@|JbRt*g?S5H8wD&sqfM@_g3 z??#A1RsDkAX=Beg<5{qodWy=8=NWm5v6;TbBui1b!`Bo_(|Nayl{5tv|E>#p)7sT< zn(c?4;Z?eghoHd_Gj>t;eJe5&GFRyO+8CrcqfFf zC=?v(DO}<0%FWn(HZ&Gqa=NJF?pjsuZ7dlKU7g1df7a$wMoChF$W=$??d2BDH;!fN zM}cuh-{wO#MZZ5CO_Q(Jko~;iN;ut(ikLYd61kX|r+8-)sv2FMK2MsW>pewrLK3gc zD;*cSdu>?pl)7Tj^kg;(+-w-BI(`%-%C@{Eq${DyYsCes>R6a5_}V<;sX)_z5;~&& zG2(LZjmHO`N8qF-^Rf}C3`?`n1&y-U`Q_fVWEbkZ2p8PWH{3KbWv)Gu4zv~cx21Jl zcM66clwXZbz?2IhKFXxzkj+^*_1p%Q*fcUqLlK_KFZH=))Uvl=>Pw}2`!Rc6tcs5> zDn>s=tcwHQMCyWGR)n~pG%7hC+Wgh3YuRs*A_N79$mxo@DzrGzwy=-c7JF69UwoBZ zG5t*G&qpUlf=KN|6AqXV3-V#kU#*cyK^Ze6>AD*Eth3{(0J@Dls1-waS#;SSHJEMJ znz&uU(@zw$LX|d6f)=wn0mT7t{KZKp(&jtJG!nPGv7v3T0nRkVu2z>~y%J{$<@|S0dY+GORn7!S z+~zd;HW@1h>04r>^-{j0;VU2vLsDt{1X8fX&)rv-rb1B^Ank43)+%_HPVLdUCM@~#}JUOElx^KM?Bjj!IRZ3mJ- z!bX04$Ww{(h6{-MOi}2g=>|aFUz7gI!5GrF*T19yhPltgU#Hk*9N^-+dW*Hi1z}d9xpx>%Kv6>1@Vfs1b{A-!bm?7lqb{OSix0AI{+V zk5U>Ef<^Ho5jUb#-OG@^~x&8u^jVA5p=wx%sNbxC6G%drr=<>p22s zg|Pk*$`1g1A9{NR-BLw%6|StGVIBO9u*UyJSRVg5ERVD1#ol!-F)Uci`6&$Czafmz|5+HKzqE{h zr}saT^Q_ED>3fN?T<_tpkB`O&+HE>G2$tg3uiW7U^TuDkH>dNWfb{=oJT>3@I=tQf zyHdCLvv{gI%C_6)=wD7)5sMf4 zPJ|GO@a#i}4@{}vy~nl#4^U4J3+(BSG&S6Nv%}{1o-VXqT6VugAQbCa-QzbAnFSX5 zR;ShtU*uzB-P%S8%t#kMdWl*G68fFGn~i5$=ob&8Xo;o@4rLrWCsKpr#Gl+?K;7b< zDz+3Y*HKiIAVhp8;e$>f%PUtCU&G@w%ti8o0=l{mhtP1 zMg0taHbrs6Qu0X;ttb<6Uz;h5`@s!Uh8L`7VB zj;+mSdfT7LHcetM7Z?f8-}xeJ{y<(sMhqAW3 zUevY;o)`^bC>QD3$dyd3+kre5oyr>$MBOv-UvJ0@R%g3Qe-6bw#&7o4gP!n<@+G8E zcp&X?TX-B;L|IFyIVGWd?sPWGVsyh(^QO_lTMc#L<#o`)i}E%Tz{B#X2}XQ#+jDab zEI{ArAN8JjvqYf}i8Q|T8fpA2b)?M%ALXgY+eK&8KG&w)BT^5~GDt7mqk6d^Pth4W z;`nW*mxU6>T)C)ab0=Ilw>!@G-Kj5nX8fR*d)W$BGw>rsv#d(r2MQ%JzzRC z`k6hszvQ?hLqsfSSvo~#R@k;PMu&ff_NF*8+MXx7oORe0KEuZ4BRo}$KzW(TSnc9X zPTQ}td;VWsz1*%hmXF3iE4-NniTEPzljPxm$K@J-=nMN2eC1ek2$s|t3f@j0A6@`{ z#XG__0jgHUM_eC;K6f8_gQp4{*=izY0v|~`%kcMb81kdhG~+gVK2Ae7BWJ)`n4CGB zii>EvGIhJbe~QwRQh@UMgG9;)z@M%WxI};L2=oB`eK+by8Yb+=Tg8%ha(UlD#VziH zq!2w_E|FM6Q}lay(u?stL7QFlXlvPNJK}kQL3Q_1m!z4c|EuGk`n2G)n(sefY5;z2 z{r)o-?B{+-v)5^bg-KU25)WxZP#&4^Zaf;FESa4#YKroWB8>a2(h_bfV%R6FS9}{( z$@sbT+oMS*458KFdzQdoNHXov`kZy8btsF znyd1I$i{lmWWL!C!#CQs34FJ{T&O<__HR+mtt-pL%1C6Dcp8E6x?~%F(d3 z>UT%{7oTX{TYvI+w;kmCg8M~`so0EsB>vVa-$*_oI?JXB7XdHj{kgVH!OWXJ4Fzqq zk*o`oq%J7|ibNBEmkt302_1AtuS&Im^1q6CYgqtKD~8n}f)8CUbSY{dyx zpLZ5W;yp)B5=Iv{TNE>_#Yy78Yg{!$Q@EsMvCkELg$y4IDuxRBrXuO{f{Yp@)N8Qv z?=2(oV^y*d1ZQQ4y^4L3J@~&A;3LmJ23VT%zZ9UJWPO0&drvaGtX>pbQfDnX0#!M0 zHuijZ!x@5Z%6{DX>uIk8qtgYXX}3y{I?Sg(V>K7!N+Pz%T-DTjbcO-36sGL@5}nSK zgXd2x!HA30MRu$@m@mbMC4CDrB=JrBK|D0{x{U0X;t8wok|7Z-{F7u>-u*8zIydKT z#s97~cFIXn7a`CvR)%)VakqJUds&S4CVqz@^r|pHyc<7ryc7^QYgZ@(b-S%F=Awc=l5YYMUAmm4%rF8!k&Q5jbvNMMz3J^M?vL){9>$PNAa1HqIOZ^Q#$43qv~g zSCF4x_H>J6roef>ZQ`1wMp9=uXaZ=T3R+lIWg7Fpl|u54Kc=w6^nWLXJ;m58_SQ`j z<_NhK99SPIaePxU#3FkL!~CZTZ1Knu8-(MK8?FJPGhCsj6!O->Ggq;KG?0BWxc9?z z^EbK036-C=6ma69w$tJInsM%i=MESW$fU(B&hCsp>`63z6|HJ-*d#F1FeF|{GJJOR3WlH?o=<0&cRh$o(D3RJ;RLrl`B%YvDNb*`203mE4Z>QB?dSKG z)dea`C0!8;f2nj7CD#91B%Wg~1@OihWLCS^4|PUBC%FiuL(PAAG#{vip zA+5g@MD&;L*#^aL|F@l)aRR(*;2k3lZ_FRo%=$0$;z_A@uG0o=A{hPBwJ>?{2>;uj z)pEckG^kIH2X9%AA+JCFzjXaiFQor}rV9h4ANV{m!48jH+>#ti>PDc{lx&6a|*)e) zH2!juT)2!f4nfk>7AW!EI(}r~W|aO&Q6b_5RZYO2YQU906@yX6O!FGL%u^L=n0av`Hs8@N0@rfiLNMduNhc{%Cltf9-p;3Vh>$UI@C- z3kh+7Ug&kP7bgFy7d{_Stw|aBe9Gd>#7UbBeJ}#fAvAyfu2stfe+u!-J%P#~r zF+9{b=FRYbQbcOYBirAi1zyQkj+PEyWsyz7f{Ln zRk{dI>Jf+p_-3wh`}A{@20X+GtOIwad|e8bt+&be}yAB{myO2Z8z&&3l*-m7RFB> z=gai~wZD5}<{EQ3wl3|{9BlsyxmD#lV<`({ZYH(Q5){GP2n9191{wNbjy?CV4|hrbF}*@ za8OPIqoNJwrM|OGTsZYUt}=N1ijOu1k1wlU;_jx4!(zQ;Sa*9H&y_)HW6+(7;qH~^ z!78HQT%HaKQ-LG8vVKZFbY8qmAJ?$*)ussexyyus`?p780VFn_9YN+eZ5OXu1Hd(l z?BX@6{!iDeD6uVNzc;=)Tzgt_&qL)IYyIF)a7g~S%Q3}2csWM>2QSAGn_dLKU1XW! z#hqHL;(vd~YEwn|bDL3ZQw@mYpSrWd{s&v3-#^z1hpzr}7fIfKFkKimCQtu?JG;>b z|F`a*hG3EXLwAu@|KQUghC^(Df8u%MQ~l?D-%P!4gm-NwUasrf)rsJ>=M6EsJZE9gVA6(c9k0`z>NbVK#CGctl5lInd8N% z>njOTynJ*dIg3>)ZT%?=ABH&OXhV~$SaAx}NMPedD((CRy63ds;n8Q~p1COrmY^p$ z&kBzo*Yc>Uu%s5ec0;)~b#xmkjoE~Q&WjTADIrnuTU9{J(-(AZbH3twQdkN!&GSUc z^giEQc_mKWcq2XHzYcO0dG6M_aQlj%)+>si;(J$lgx7X)73lx+swMx6ANyF-+_L4JCTpYbF#?D3+RrwkA%b!tH#WtE?v1m4@ZA~cb_ zw*HXNW#{u82CdN@eEhQ;tigk_0d&$>Q7GFRZHGsU_&59; zZQs+T59>E-8Ouw4AyYuMb*L#vGzBXZ2a;zj3YCp23WnNE0^fxEz|1(Y%rI{{@udB1 zw@S!A&RcRkfe?5%h{j;uGDZG-*LV9Iw4_A%5(gGvBYV)UHU!TH(%C)sUZkaaAV5OI zQaBvlHP?7DLtyK+H$M&SxZVEN<}4o7b0SSlSjXF?^2iL5Xr=1x@;3Tx zyLfDGtzqWy%o+E(&<0KIQoJ|+QA7kznRmBUhfi_O+Ik)h+Q}UI>!7Sqb*hD33$a2S%ZE34~ zX~a(6WB;?s3=YQW<+sD}DqfGe+@}1&NsH?awk}qc5>42_pI;0#Oz!Ozr*3^dysu>AoCmm+p9a$$G3*8-N`=;*LpefbcZ)e zUV_WD|Btx0463W?+6Iv%Xt3ZOJOp=l3lQAh-QArK+}+*X-GaNjyBs7q1egQK{XDtf zdS~jZ`7u+)q1WnlExEdT?>e&g?k->6E&ayMp8jPWvs)4S_2V_8AH4c-)d-30;m;c1 zhw-#AvM3yPsV~~)8<)f1SqQUphjl!yxp9OiJr$9jjxg9WkQ$uOc&5&6$z88lu&209 z)vYcwgss>E>}=V^nIS->Ws_QWbZNdUVsX*FJLV+KYQ~&UFWoPLTh*Vms%mb*T|hHV z+Mt=#%BD98h-f5;&jGQ}# zBL1mP^qlQ^<=j(6M{>w4k-L|JT81iHko8(o>@-N<{L zi*}~b9^mCeid#h;JmwPLrqGNP^JU@N=i;yxZKK=UH;y^Zn5cb8G+Xal!hmAxs4{mhnlZWu0z36Uow6)37SXZdNZ3!xWzM>FZdG^?p zZLluz*Ui0cznVs0vr0)>z+K_Mp%B9qSIe`*pgev2&9RvetzetErkRJk*9Pe-18Q|` z-@{FPxiHwMS#J9KN#f%+^5jV72M8CYRMXZ*;txsnps*}X<7ky zq0+R~x3<@}urt;+(=@g)w)<;GjZ%4YOW;;iPotXF9bOa~fO&~vom4a}b+!ypI@o=z z`>)x#)q;K>8KbJUvba4Qr-MJSn_}vLA@Sezx~93>rATaSehE*I*ocN6>|Q#$q4BOa zQI{yQ_QhO16(^gBHr+XfXFHQUszf^shTFvpW@Hk9b0I0lNu+nVr_Dz&wcDaXC; z^%aPNZ>U_3%oWJ9>()rA_L7^CvC-inA-swA^N75(-*rE)7FtQ#y5gl13Bdq&GCv%5 zf_frwC%r|cNqs6a_W)-juOXtnms!O(lPBw(?JNfKhRH8PyyS~uPh#r;hp9i4axa4s zQ$3#ikv5@SkCP2<+PA;H9WycCi4qB^VvZ2w9cm{^#dy!9&vVUZ7TXP)9lEgLqGeoE zKl{$?XVeZIHP$cBah{Ii+Q_E6lbeDML=d((8Q7zYsQ!Z%6JL#pt*D6{uLR#MB4oMy z6PLvzau0{Oe1l1NZb+e4S!-M9rB#Jw@JE=m9rAUS;<;%O0heieI1Je9LW-&3 z%~)ypNb|O&1Y9MqLMBJHp(%@}S(GADKoRQZ_1HWGFzNx#fzp@8!yhVQWRz{aDytYMno7Gs#T_;B`_#v znv6uyYx%$Hu#L-ZAI^nQTq7NMEy^B!E~8JmdzPts_QO>+pH*a!>GiO9IJh1lEmRSy z6o{xS)DY>W`f)^Eo|;|y9?(RJh>m5HCvS?;Cnm&XvOSx?dtu3*kwOPNYuI4x57`Kn$JH{Plh=g6!v#C3RbXA^o{*T` z_frnEK1oO!fCUo+ApM8x`n)B-z!E3+D$vxYDpw z;WTmX#7G;l%71NZVf+Xz9cH$CoWJJ7s?)1^Y;Js+X#@_VtLtf@Ghl~1aq9QuLLD(%ckKskZq*h_C_@L z5@D+xWpZC8m#0aEAo_dNUfLkY^ik|78c}DL`!=zX>8Y{GzQ8CLDT|N&X2C_GI}UY6 zAJpsw!WHxG{i;e#r&O;?%z)I&RRIr?YDh&W-w2lF z4|@!7#L%JLoT0b$guM8J$lnDL`S@u+*cl&MvTIIy$qnen^7zn`UfF>g*@Wzppz6p~ z@WV}tMk<$}<_1-&5U{|^x_w0&^;L*WhA1Vc3s(6VL*N$8o-CP=e&^SWZg40>pG1ZL zD(^Jxw_yPv1o{RFZkf39@|)kl=l;-$L6+`Z!E|*aycB*8fbornUn9QICd4Pz#%b3M zB!8wD{3=D&QwPAf-nY#8W+)L#IVrtBxwtYP+Iz1rS@P?P9v!^R*a89x6~}$`(sf0S zpD7t8W98Uj>aldd<_lCEjL7aWbSi%a{_^f&KyQx493G4{DRyaG({l}xu#jv*EkR{+ zP8p7{po*ccmcl{ru(X40FFP{?A<1wdRcHgdE-3AshM_h7Rsm?5o(#Fm0*VPJWt0eK4+eK>VJA3P$@munUQ?QeIN5j@TQoN(J1(3uZZD3DXK( zZ5dUs;oUKE`p;mDvNG7neEfh~c1nE>uZfg-rH?zJ`sZK^GSIm>xj#A zKRrmpU|>XYWQ9H6oNpY1d#eyAOAhqnlln%pE)el8sz^7xYon`qp2rBX^zH<}!Ws+O zK#-|S$*{NEP4rMkG1yHA9J*Q20Je%&3@~XAgniSmu$;1fSi0OmwSPJc+#23vgZmL^ zUbxNrX=TnD%bYoJ3Hy1~IbV7(WV z8&v+0%KTSzXkWy5ceCRe!`Xw9Z(4+v*J4em-VzR$iBOveP3R9kBA47gwU*HP=gs{3 zxg~r;M9d6kDhfvBQ7SQEQYXg%3Spj;NqB7FqG7gYpuK1E4a_%(;js(#5*n4v-OC81 zT~iVLEH8upy`cvK+go*sfgW%BdP$Nd=r)dWs|y_`+Dy7}c9C8w&@9Ese4b08pUB@e z#M8hg9s)sBw&v~^-mq;qt>!ys7&>XLe|GX5AxW!;k@4~1m+xG*j0Z$o&n+sznb$-^ z+a{Fu@Js0sE(@A0Ch%h|+!nWtm}-}nLe7)87S;(%e_X>v5YuB!$!MeBjEeVbqt{P-g|*yISKAyyr_b&!Xhg|0J7TA0&f5A{nU>(rU+IycP_-LSL?a zP+-N+HVcX5B80x4Sk*3nm7A=YEo3A&`<*d42r!GZWKLeEC}vh(s8k%MR9rakL0S1I zQ`t_Fou@k@5!87*T!5+umQ7x?cf0rzi|Q(b%zf)Hb6@u-Oe3GkXb$rxB<5Kmr+1iY zz0pwW20FBc`v+vL{m<5!+2oBM5%h|;YnktH4jx0D(=}F6PD+j-R%v;YdVAGQ1Eq)s zX*KC4i8F|c^=L$5J6#yj+ro#mvN2)XqB{+MO5D)81+YmRTGs$JDMMPpK0}`a2wM$! zp7U&<9FmL4R(W~9+}m>q=Jv2W42Dc%l6<^nSDbG7HhHR8Sdug>q0pFQ(}5zc5U&?3C1_ScRoSbN&-F4(=F+WeK zPJF3JG7&2F2L8Jb=zdVo5Lu}>J&lW=|K8Z|Dm#M@lMw{O1_KO4^#AA`iIkwQ=F7%@ zn*SC4*(z7p(%j14PTS7d(&Dc-Dgbx$Xu`h8)tg6@@9Y7MG4=#aMa`fTxh&C0{P~dS zeAY2$!Zdp5?7r&WKXkr|0<^nxKJbpjKE=`@w6``s9$4I5Tjnd* zs?-vgEJlKm30=AB;Po6EptI?=efxB=x z`g-0U-W*Y{rLLB5c^+HTuRzxy6(>8^-{g-NJK83+y3t-dGXc9E9ous}*Ki~U*7~M) zsc;(GSk0onSFX5l8kQ`|Jc9@=9V{(olc_!DHA?r6j#j)Aoo(CK${PppP8~?Q{D$Qz z21E&zp@>k#WWEr^^2k&Z)e6Y$5tXves+8JeFSRvu?i@bpxF5sXOH$0itDb>!)9W6i z2HY^G=9jjsS(cRp32eEs*w()FUGt@t%)%U1Gw)o#(JDdOE~p?viOD5>lgQ&tP8Nwo zB%?&|miQ2gmqZHKPWlL7isfVqaDME6BMNM5@ufqFi~i_x{DGLfS?|QAc>-PdBA{Xl zypd{s1SsPQ{E@Ew@IR1A!w{=LB2iWdz>rBxLehC7QDz8;@n#Xn8A1I{kVPD0L@ZL% zg;bjHJ41~RlDsW%js?=-bSPma0p&1ckiJo-HgNyb%4Dcjoy*-W=CHL`d)_*xNT?7Yoj(>-*{{r4hhDbID%q(5)#J^!-^R_Fd_8CaiInZ;Wy ze^2S3;asCRZ|nSz3$sj%WrEY%`hP0_m&;4#p~$CLB&*E7$-Y!B6m;|c!ztE(D<|xE z_!fBc{=bz+Zn}5>czE}pIa(7rZ`0m%_x(@hmN`!UE~6e;MxxW&=4%;JRQxdSfn@bJ z-Gl$@lIyfaciz_XpUVH`qD1xKRMYMLE*Pyoxp|}+VC-s`$6S9@{@mhW>sH^^nwrej zR=;$2%v^mKeN+U#f@5(i33q7nys~$B+PwAYZs|J3{b_UeX&OEex5MrS185#$9SjYe zdp7D-@tr2bidQ7c{yQS%0Du>P`4TFmaX=l9_|nbWpc->e{2ZKna9Z;9P@f0~ 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

    uVFcp4ZR93O#L)9JdpD4tX}FK+T*Qf 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�w0_x9Y25et=Xg5ymF} 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�RY(xL@Hr&& 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 diff --git a/benchmarks/tapa_flow/sextans/design/generated/cpp/FloatvAddFloatv.cpp b/benchmarks/tapa_flow/sextans/design/generated/cpp/FloatvAddFloatv.cpp deleted file mode 100644 index 5d4de247..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/cpp/FloatvAddFloatv.cpp +++ /dev/null @@ -1,440 +0,0 @@ - - -#include - -#include - -#include - -#include - -#include - -#include - -#include -constexpr int NUM_CH_SPARSE = 8; -constexpr int NUM_CH_B = 4; -constexpr int NUM_CH_C = 8; -const int WINDOW_SIZE = 4096; -const int DEP_DIST_LOAD_STORE = 10; -const int B_PARTITION_FACTOR = 4; -const int URAM_DEPTH = 8192; -using float_v16 = tapa::vec_t; -using float_v8 = tapa::vec_t; -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, int beta_u); -//#include "modules.h" -constexpr int FIFO_DEPTH = 2; -constexpr int PEG_PER_A = 512 / 256; -struct MultBVec { - ap_uint<18> row; - float_v8 abvec; -}; -template -inline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A, - const R A_len, R &i_req, R &i_resp) { -#pragma HLS inline - if ((i_req < A_len) & !A.read_addr.full()) { - A.read_addr.try_write(i_req); - ++i_req; - } - if (!fifo_A.full() & !A.read_data.empty()) { - T tmp; - A.read_data.try_read(tmp); - fifo_A.try_write(tmp); - ++i_resp; - } -} -void read_edge_list_ptr( - const int num_ite, const int M, - const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N - const int K, uint64_t edge_list_ptr, tapa::ostream &fifo_edge_list_ptr, - tapa::ostream &PE_inst); -void read_A(uint64_t A, tapa::ostream> &fifo_A, const int A_len, - const int P_N); -void read_B(uint64_t B, tapa::ostream &fifo_B, const int K, - const int P_N); -void read_C(uint64_t C, tapa::ostream &fifo_C, const int M, - const int P_N, tapa::ostream &wrC_inst); -void write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C, - uint64_t C_out); -void FloatvMultConst(const int alpha_u, const int M, const int P_N, - tapa::istream &fifo_in, - tapa::ostream &fifo_out); -void FloatvAddFloatv(tapa::istream &fifo_in0, - tapa::istream &fifo_in1, - tapa::ostream &fifo_out) { -#pragma HLS disaggregate variable = fifo_in0 -#pragma HLS interface ap_fifo port = fifo_in0._ -#pragma HLS aggregate variable = fifo_in0._ bit -#pragma HLS interface ap_fifo port = fifo_in0._peek -#pragma HLS aggregate variable = fifo_in0._peek bit - void(fifo_in0._.empty()); - void(fifo_in0._peek.empty()); - -#pragma HLS disaggregate variable = fifo_in1 -#pragma HLS interface ap_fifo port = fifo_in1._ -#pragma HLS aggregate variable = fifo_in1._ bit -#pragma HLS interface ap_fifo port = fifo_in1._peek -#pragma HLS aggregate variable = fifo_in1._peek bit - void(fifo_in1._.empty()); - void(fifo_in1._peek.empty()); - -#pragma HLS disaggregate variable = fifo_out -#pragma HLS interface ap_fifo port = fifo_out._ -#pragma HLS aggregate variable = fifo_out._ bit - void(fifo_out._.full()); - -cc: - for (;;) { -#pragma HLS pipeline style = stp II = 1 - bool flag_nop = fifo_in0.empty() | fifo_in1.empty(); - if (!flag_nop) { - float_v16 tmp0; - fifo_in0.try_read(tmp0); - float_v16 tmp1; - fifo_in1.try_read(tmp1); - float_v16 c_out = tmp0 + tmp1; - fifo_out.write(c_out); - } - } -} -/* -void PU2core(ap_uint<18> & addr_c, - float a_val_f, - float b_val_d0_f, - float b_val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH] - ) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - - float c_val_d0_f = tapa::bit_cast(c_val_d0_u); - float c_val_d1_f = tapa::bit_cast(c_val_d1_u); - - c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f; - c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f; - - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} - -void PEcore(ap_uint<14> & addr_b, - ap_uint<18> & addr_c, - ap_uint<32> & a_val_u, - ap_uint<64> local_C[4][URAM_DEPTH], - float local_B[8][WINDOW_SIZE] - ) { -#pragma HLS inline - //if (addr_c != ((ap_uint<18>) 0x3FFFF)) { - if (addr_c[17] == 0) { - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 4; ++i) { - PU2core(addr_c, - a_val_f, - local_B[i*2+0][addr_b], - local_B[i*2+1][addr_b], - local_C[i] - ); - } - } -} -*/ -void PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u, - float local_B[8][WINDOW_SIZE], float_v8 &abv) { -#pragma HLS inline - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 8; ++i) { - abv[i] = a_val_f * local_B[i][addr_b]; - } -} -void PEG_Bmtx( - tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - // tapa::istream> & fifo_A, - tapa::istream> &fifo_A, - tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out, - tapa::ostreams &fifo_B_out, - // to PEG_Cmtx - tapa::ostream &PE_inst_to_Cmtx, - tapa::ostream &fifo_inst_out_to_Cmtx, - tapa::ostreams &fifo_aBvec); -void PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f; - float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f; - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} -void PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec, - ap_uint<64> local_C[4][URAM_DEPTH]) { -#pragma HLS inline - for (int i = 0; i < 4; ++i) { - PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]); - } -} -void PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - tapa::istreams &fifo_aBvec, - tapa::ostream &fifo_C_out); -/* -void PEG(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - tapa::streams fifo_aBvec("fifo_aBvec"); - tapa::stream PE_inst_to_Cmtx("PE_inst_to_Cmtx"); - tapa::stream -fifo_inst_out_to_Cmtx("fifo_inst_out_to_Cmtx"); - - tapa::task() - .invoke(PEG_Bmtx, - PE_inst_in, - fifo_inst_in, - fifo_A, - fifo_B_in, - PE_inst_out, - fifo_inst_out, - fifo_B_out, - // to PEG_Cmtx - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec) - - .invoke(PEG_Cmtx, - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec, - fifo_C_out) - ; -} - -void PEG_c(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0)? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - - const int num_v_init = (M + 63) >> 6; - //const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - - //define local C buffer and pragma to URAM - //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1 -#pragma HLS array_partition complete variable=local_C dim=1 -#pragma HLS array_partition complete variable=local_C dim=2 - -l_rp: - for(int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min=1 max=16 - - //init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min=1 max=800 -#pragma HLS pipeline style=stp II=1 - //for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - //define local B buffer and pragma local B buffer if partition factor > -1 - - //float local_B[8/2][8][WINDOW_SIZE]; - //float local_B[8][WINDOW_SIZE]; - float local_B[4/2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable=local_B latency=2 -#pragma HLS array_partition variable=local_B complete dim=1 -#pragma HLS array_partition variable=local_B complete dim=2 -#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=3 -//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=2 - - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min=1 max=49 - - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i -* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS -pipeline style=stp II = 1 - - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - b_512_x[k] = fifo_B_in[k].read(); - fifo_B_out[k].write(b_512_x[k]); - } - - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m % -2 * 8]; - } - } - } - ++j; - } - } - - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - - computation: - for (int j = start_32; j < end_32; ) { -#pragma HLS loop_tripcount min=1 max=200 -#pragma HLS pipeline style=stp II=1 -#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE - - //ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - - if (a_pes_ready) { - //for (int p = 0; p < 2; ++p) { - for (int p = 0; p < 4; ++p) { - ap_uint<14> a_col; - ap_uint<18> a_row; - ap_uint<32> a_val; - - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - a_col = a(63, 50); - a_row = a(49, 32); - a_val = a(31, 0); - - // PE process - PEcore(a_col, - a_row, - a_val, - local_C[p], - //local_B - local_B[p/2] - ); - } - ++j; - } - } - start_32 = end_32; - } - - //cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min=1 max=1800 -#pragma HLS pipeline style=stp II=1 - ap_uint<32> u_32_d[8]; - - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i>>2]; - u_32_d[2 * d ] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - - switch (c_idx) { //0,2,1,3 - case 0: c_idx = 2; break; - case 1: c_idx = 3; break; - case 2: c_idx = 1; break; - case 3: c_idx = 0; break; - } - - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << -endl; - } - } -} -*/ -void Scatter_1_2(tapa::istream> &fifo_in, - tapa::ostreams, 2> &fifo_out); -void Merger(tapa::istreams &fifo_in, - tapa::ostream &fifo_out); -void black_hole_int(tapa::istream &fifo_in); -void black_hole_float_v16(tapa::istream &fifo_in); -void Sextans(uint64_t edge_list_ptr, uint64_t edge_list_ch_0, - uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, - uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, - uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, - uint64_t edge_list_ch_7, uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, - uint64_t mat_B_ch_2, uint64_t mat_B_ch_3, uint64_t mat_C_ch_in_0, - uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, - uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, - uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, - uint64_t mat_C_ch_in_7, uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, - uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, - uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, - const int NUM_ITE, const int NUM_A_LEN, const int M, const int K, - const int P_N, const int alpha_u, const int beta_u); diff --git a/benchmarks/tapa_flow/sextans/design/generated/cpp/FloatvMultConst.cpp b/benchmarks/tapa_flow/sextans/design/generated/cpp/FloatvMultConst.cpp deleted file mode 100644 index 9681ea62..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/cpp/FloatvMultConst.cpp +++ /dev/null @@ -1,436 +0,0 @@ - - -#include - -#include - -#include - -#include - -#include - -#include - -#include -constexpr int NUM_CH_SPARSE = 8; -constexpr int NUM_CH_B = 4; -constexpr int NUM_CH_C = 8; -const int WINDOW_SIZE = 4096; -const int DEP_DIST_LOAD_STORE = 10; -const int B_PARTITION_FACTOR = 4; -const int URAM_DEPTH = 8192; -using float_v16 = tapa::vec_t; -using float_v8 = tapa::vec_t; -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, int beta_u); -//#include "modules.h" -constexpr int FIFO_DEPTH = 2; -constexpr int PEG_PER_A = 512 / 256; -struct MultBVec { - ap_uint<18> row; - float_v8 abvec; -}; -template -inline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A, - const R A_len, R &i_req, R &i_resp) { -#pragma HLS inline - if ((i_req < A_len) & !A.read_addr.full()) { - A.read_addr.try_write(i_req); - ++i_req; - } - if (!fifo_A.full() & !A.read_data.empty()) { - T tmp; - A.read_data.try_read(tmp); - fifo_A.try_write(tmp); - ++i_resp; - } -} -void read_edge_list_ptr( - const int num_ite, const int M, - const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N - const int K, uint64_t edge_list_ptr, tapa::ostream &fifo_edge_list_ptr, - tapa::ostream &PE_inst); -void read_A(uint64_t A, tapa::ostream> &fifo_A, const int A_len, - const int P_N); -void read_B(uint64_t B, tapa::ostream &fifo_B, const int K, - const int P_N); -void read_C(uint64_t C, tapa::ostream &fifo_C, const int M, - const int P_N, tapa::ostream &wrC_inst); -void write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C, - uint64_t C_out); -void FloatvMultConst(const int alpha_u, const int M, const int P_N, - tapa::istream &fifo_in, - tapa::ostream &fifo_out) { - -#pragma HLS disaggregate variable = fifo_in -#pragma HLS interface ap_fifo port = fifo_in._ -#pragma HLS aggregate variable = fifo_in._ bit -#pragma HLS interface ap_fifo port = fifo_in._peek -#pragma HLS aggregate variable = fifo_in._peek bit - void(fifo_in._.empty()); - void(fifo_in._peek.empty()); - -#pragma HLS disaggregate variable = fifo_out -#pragma HLS interface ap_fifo port = fifo_out._ -#pragma HLS aggregate variable = fifo_out._ bit - void(fifo_out._.full()); - - const float alpha_f = tapa::bit_cast(alpha_u); - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int N = P_N & 0xFFFF; - const int num_ite = ((M + 15) >> 4) * ((N + 7) >> 3) * rp_time; -cc: - for (int i = 0; i < num_ite;) { -#pragma HLS pipeline style = stp II = 1 - float_v16 tmp; - bool read_ready = fifo_in.try_read(tmp); - if (read_ready) { - float_v16 c_out = tmp * alpha_f; - fifo_out.write(c_out); - ++i; - } - } -} -void FloatvAddFloatv(tapa::istream &fifo_in0, - tapa::istream &fifo_in1, - tapa::ostream &fifo_out); -/* -void PU2core(ap_uint<18> & addr_c, - float a_val_f, - float b_val_d0_f, - float b_val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH] - ) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - - float c_val_d0_f = tapa::bit_cast(c_val_d0_u); - float c_val_d1_f = tapa::bit_cast(c_val_d1_u); - - c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f; - c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f; - - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} - -void PEcore(ap_uint<14> & addr_b, - ap_uint<18> & addr_c, - ap_uint<32> & a_val_u, - ap_uint<64> local_C[4][URAM_DEPTH], - float local_B[8][WINDOW_SIZE] - ) { -#pragma HLS inline - //if (addr_c != ((ap_uint<18>) 0x3FFFF)) { - if (addr_c[17] == 0) { - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 4; ++i) { - PU2core(addr_c, - a_val_f, - local_B[i*2+0][addr_b], - local_B[i*2+1][addr_b], - local_C[i] - ); - } - } -} -*/ -void PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u, - float local_B[8][WINDOW_SIZE], float_v8 &abv) { -#pragma HLS inline - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 8; ++i) { - abv[i] = a_val_f * local_B[i][addr_b]; - } -} -void PEG_Bmtx( - tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - // tapa::istream> & fifo_A, - tapa::istream> &fifo_A, - tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out, - tapa::ostreams &fifo_B_out, - // to PEG_Cmtx - tapa::ostream &PE_inst_to_Cmtx, - tapa::ostream &fifo_inst_out_to_Cmtx, - tapa::ostreams &fifo_aBvec); -void PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f; - float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f; - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} -void PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec, - ap_uint<64> local_C[4][URAM_DEPTH]) { -#pragma HLS inline - for (int i = 0; i < 4; ++i) { - PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]); - } -} -void PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - tapa::istreams &fifo_aBvec, - tapa::ostream &fifo_C_out); -/* -void PEG(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - tapa::streams fifo_aBvec("fifo_aBvec"); - tapa::stream PE_inst_to_Cmtx("PE_inst_to_Cmtx"); - tapa::stream -fifo_inst_out_to_Cmtx("fifo_inst_out_to_Cmtx"); - - tapa::task() - .invoke(PEG_Bmtx, - PE_inst_in, - fifo_inst_in, - fifo_A, - fifo_B_in, - PE_inst_out, - fifo_inst_out, - fifo_B_out, - // to PEG_Cmtx - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec) - - .invoke(PEG_Cmtx, - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec, - fifo_C_out) - ; -} - -void PEG_c(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0)? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - - const int num_v_init = (M + 63) >> 6; - //const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - - //define local C buffer and pragma to URAM - //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1 -#pragma HLS array_partition complete variable=local_C dim=1 -#pragma HLS array_partition complete variable=local_C dim=2 - -l_rp: - for(int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min=1 max=16 - - //init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min=1 max=800 -#pragma HLS pipeline style=stp II=1 - //for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - //define local B buffer and pragma local B buffer if partition factor > -1 - - //float local_B[8/2][8][WINDOW_SIZE]; - //float local_B[8][WINDOW_SIZE]; - float local_B[4/2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable=local_B latency=2 -#pragma HLS array_partition variable=local_B complete dim=1 -#pragma HLS array_partition variable=local_B complete dim=2 -#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=3 -//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=2 - - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min=1 max=49 - - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i -* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS -pipeline style=stp II = 1 - - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - b_512_x[k] = fifo_B_in[k].read(); - fifo_B_out[k].write(b_512_x[k]); - } - - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m % -2 * 8]; - } - } - } - ++j; - } - } - - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - - computation: - for (int j = start_32; j < end_32; ) { -#pragma HLS loop_tripcount min=1 max=200 -#pragma HLS pipeline style=stp II=1 -#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE - - //ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - - if (a_pes_ready) { - //for (int p = 0; p < 2; ++p) { - for (int p = 0; p < 4; ++p) { - ap_uint<14> a_col; - ap_uint<18> a_row; - ap_uint<32> a_val; - - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - a_col = a(63, 50); - a_row = a(49, 32); - a_val = a(31, 0); - - // PE process - PEcore(a_col, - a_row, - a_val, - local_C[p], - //local_B - local_B[p/2] - ); - } - ++j; - } - } - start_32 = end_32; - } - - //cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min=1 max=1800 -#pragma HLS pipeline style=stp II=1 - ap_uint<32> u_32_d[8]; - - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i>>2]; - u_32_d[2 * d ] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - - switch (c_idx) { //0,2,1,3 - case 0: c_idx = 2; break; - case 1: c_idx = 3; break; - case 2: c_idx = 1; break; - case 3: c_idx = 0; break; - } - - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << -endl; - } - } -} -*/ -void Scatter_1_2(tapa::istream> &fifo_in, - tapa::ostreams, 2> &fifo_out); -void Merger(tapa::istreams &fifo_in, - tapa::ostream &fifo_out); -void black_hole_int(tapa::istream &fifo_in); -void black_hole_float_v16(tapa::istream &fifo_in); -void Sextans(uint64_t edge_list_ptr, uint64_t edge_list_ch_0, - uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, - uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, - uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, - uint64_t edge_list_ch_7, uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, - uint64_t mat_B_ch_2, uint64_t mat_B_ch_3, uint64_t mat_C_ch_in_0, - uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, - uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, - uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, - uint64_t mat_C_ch_in_7, uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, - uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, - uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, - const int NUM_ITE, const int NUM_A_LEN, const int M, const int K, - const int P_N, const int alpha_u, const int beta_u); diff --git a/benchmarks/tapa_flow/sextans/design/generated/cpp/Merger.cpp b/benchmarks/tapa_flow/sextans/design/generated/cpp/Merger.cpp deleted file mode 100644 index dae86a47..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/cpp/Merger.cpp +++ /dev/null @@ -1,442 +0,0 @@ - - -#include - -#include - -#include - -#include - -#include - -#include - -#include -constexpr int NUM_CH_SPARSE = 8; -constexpr int NUM_CH_B = 4; -constexpr int NUM_CH_C = 8; -const int WINDOW_SIZE = 4096; -const int DEP_DIST_LOAD_STORE = 10; -const int B_PARTITION_FACTOR = 4; -const int URAM_DEPTH = 8192; -using float_v16 = tapa::vec_t; -using float_v8 = tapa::vec_t; -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, int beta_u); -//#include "modules.h" -constexpr int FIFO_DEPTH = 2; -constexpr int PEG_PER_A = 512 / 256; -struct MultBVec { - ap_uint<18> row; - float_v8 abvec; -}; -template -inline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A, - const R A_len, R &i_req, R &i_resp) { -#pragma HLS inline - if ((i_req < A_len) & !A.read_addr.full()) { - A.read_addr.try_write(i_req); - ++i_req; - } - if (!fifo_A.full() & !A.read_data.empty()) { - T tmp; - A.read_data.try_read(tmp); - fifo_A.try_write(tmp); - ++i_resp; - } -} -void read_edge_list_ptr( - const int num_ite, const int M, - const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N - const int K, uint64_t edge_list_ptr, tapa::ostream &fifo_edge_list_ptr, - tapa::ostream &PE_inst); -void read_A(uint64_t A, tapa::ostream> &fifo_A, const int A_len, - const int P_N); -void read_B(uint64_t B, tapa::ostream &fifo_B, const int K, - const int P_N); -void read_C(uint64_t C, tapa::ostream &fifo_C, const int M, - const int P_N, tapa::ostream &wrC_inst); -void write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C, - uint64_t C_out); -void FloatvMultConst(const int alpha_u, const int M, const int P_N, - tapa::istream &fifo_in, - tapa::ostream &fifo_out); -void FloatvAddFloatv(tapa::istream &fifo_in0, - tapa::istream &fifo_in1, - tapa::ostream &fifo_out); -/* -void PU2core(ap_uint<18> & addr_c, - float a_val_f, - float b_val_d0_f, - float b_val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH] - ) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - - float c_val_d0_f = tapa::bit_cast(c_val_d0_u); - float c_val_d1_f = tapa::bit_cast(c_val_d1_u); - - c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f; - c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f; - - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} - -void PEcore(ap_uint<14> & addr_b, - ap_uint<18> & addr_c, - ap_uint<32> & a_val_u, - ap_uint<64> local_C[4][URAM_DEPTH], - float local_B[8][WINDOW_SIZE] - ) { -#pragma HLS inline - //if (addr_c != ((ap_uint<18>) 0x3FFFF)) { - if (addr_c[17] == 0) { - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 4; ++i) { - PU2core(addr_c, - a_val_f, - local_B[i*2+0][addr_b], - local_B[i*2+1][addr_b], - local_C[i] - ); - } - } -} -*/ -void PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u, - float local_B[8][WINDOW_SIZE], float_v8 &abv) { -#pragma HLS inline - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 8; ++i) { - abv[i] = a_val_f * local_B[i][addr_b]; - } -} -void PEG_Bmtx( - tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - // tapa::istream> & fifo_A, - tapa::istream> &fifo_A, - tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out, - tapa::ostreams &fifo_B_out, - // to PEG_Cmtx - tapa::ostream &PE_inst_to_Cmtx, - tapa::ostream &fifo_inst_out_to_Cmtx, - tapa::ostreams &fifo_aBvec); -void PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f; - float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f; - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} -void PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec, - ap_uint<64> local_C[4][URAM_DEPTH]) { -#pragma HLS inline - for (int i = 0; i < 4; ++i) { - PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]); - } -} -void PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - tapa::istreams &fifo_aBvec, - tapa::ostream &fifo_C_out); -/* -void PEG(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - tapa::streams fifo_aBvec("fifo_aBvec"); - tapa::stream PE_inst_to_Cmtx("PE_inst_to_Cmtx"); - tapa::stream -fifo_inst_out_to_Cmtx("fifo_inst_out_to_Cmtx"); - - tapa::task() - .invoke(PEG_Bmtx, - PE_inst_in, - fifo_inst_in, - fifo_A, - fifo_B_in, - PE_inst_out, - fifo_inst_out, - fifo_B_out, - // to PEG_Cmtx - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec) - - .invoke(PEG_Cmtx, - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec, - fifo_C_out) - ; -} - -void PEG_c(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0)? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - - const int num_v_init = (M + 63) >> 6; - //const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - - //define local C buffer and pragma to URAM - //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1 -#pragma HLS array_partition complete variable=local_C dim=1 -#pragma HLS array_partition complete variable=local_C dim=2 - -l_rp: - for(int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min=1 max=16 - - //init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min=1 max=800 -#pragma HLS pipeline style=stp II=1 - //for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - //define local B buffer and pragma local B buffer if partition factor > -1 - - //float local_B[8/2][8][WINDOW_SIZE]; - //float local_B[8][WINDOW_SIZE]; - float local_B[4/2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable=local_B latency=2 -#pragma HLS array_partition variable=local_B complete dim=1 -#pragma HLS array_partition variable=local_B complete dim=2 -#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=3 -//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=2 - - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min=1 max=49 - - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i -* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS -pipeline style=stp II = 1 - - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - b_512_x[k] = fifo_B_in[k].read(); - fifo_B_out[k].write(b_512_x[k]); - } - - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m % -2 * 8]; - } - } - } - ++j; - } - } - - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - - computation: - for (int j = start_32; j < end_32; ) { -#pragma HLS loop_tripcount min=1 max=200 -#pragma HLS pipeline style=stp II=1 -#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE - - //ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - - if (a_pes_ready) { - //for (int p = 0; p < 2; ++p) { - for (int p = 0; p < 4; ++p) { - ap_uint<14> a_col; - ap_uint<18> a_row; - ap_uint<32> a_val; - - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - a_col = a(63, 50); - a_row = a(49, 32); - a_val = a(31, 0); - - // PE process - PEcore(a_col, - a_row, - a_val, - local_C[p], - //local_B - local_B[p/2] - ); - } - ++j; - } - } - start_32 = end_32; - } - - //cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min=1 max=1800 -#pragma HLS pipeline style=stp II=1 - ap_uint<32> u_32_d[8]; - - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i>>2]; - u_32_d[2 * d ] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - - switch (c_idx) { //0,2,1,3 - case 0: c_idx = 2; break; - case 1: c_idx = 3; break; - case 2: c_idx = 1; break; - case 3: c_idx = 0; break; - } - - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << -endl; - } - } -} -*/ -void Scatter_1_2(tapa::istream> &fifo_in, - tapa::ostreams, 2> &fifo_out); -void Merger(tapa::istreams &fifo_in, - tapa::ostream &fifo_out) { -#pragma HLS disaggregate variable = fifo_in -#pragma HLS array_partition variable = fifo_in complete -#pragma HLS interface ap_fifo port = fifo_in[0]._ -#pragma HLS aggregate variable = fifo_in[0]._ bit -#pragma HLS interface ap_fifo port = fifo_in[0]._peek -#pragma HLS aggregate variable = fifo_in[0]._peek bit - void(fifo_in[0]._.empty()); - void(fifo_in[0]._peek.empty()); -#pragma HLS interface ap_fifo port = fifo_in[1]._ -#pragma HLS aggregate variable = fifo_in[1]._ bit -#pragma HLS interface ap_fifo port = fifo_in[1]._peek -#pragma HLS aggregate variable = fifo_in[1]._peek bit - void(fifo_in[1]._.empty()); - void(fifo_in[1]._peek.empty()); - -#pragma HLS disaggregate variable = fifo_out -#pragma HLS interface ap_fifo port = fifo_out._ -#pragma HLS aggregate variable = fifo_out._ bit - void(fifo_out._.full()); - - for (;;) { -#pragma HLS pipeline style = stp II = 1 - bool flag_nop = fifo_out.full() | fifo_in[0].empty() | fifo_in[1].empty(); - if (!flag_nop) { - float_v16 tmpv16; - float_v8 tmpv8[2]; -#pragma HLS aggregate variable = tmpv16 - fifo_in[0].try_read(tmpv8[0]); - fifo_in[1].try_read(tmpv8[1]); - for (int i = 0; i < 8; ++i) { - tmpv16[i] = tmpv8[0][i]; - tmpv16[i + 8] = tmpv8[1][i]; - } - fifo_out.try_write(tmpv16); - } - } -} -void black_hole_int(tapa::istream &fifo_in); -void black_hole_float_v16(tapa::istream &fifo_in); -void Sextans(uint64_t edge_list_ptr, uint64_t edge_list_ch_0, - uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, - uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, - uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, - uint64_t edge_list_ch_7, uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, - uint64_t mat_B_ch_2, uint64_t mat_B_ch_3, uint64_t mat_C_ch_in_0, - uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, - uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, - uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, - uint64_t mat_C_ch_in_7, uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, - uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, - uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, - const int NUM_ITE, const int NUM_A_LEN, const int M, const int K, - const int P_N, const int alpha_u, const int beta_u); diff --git a/benchmarks/tapa_flow/sextans/design/generated/cpp/PEG_Bmtx.cpp b/benchmarks/tapa_flow/sextans/design/generated/cpp/PEG_Bmtx.cpp deleted file mode 100644 index 9c611497..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/cpp/PEG_Bmtx.cpp +++ /dev/null @@ -1,601 +0,0 @@ - - -#include - -#include - -#include - -#include - -#include - -#include - -#include -constexpr int NUM_CH_SPARSE = 8; -constexpr int NUM_CH_B = 4; -constexpr int NUM_CH_C = 8; -const int WINDOW_SIZE = 4096; -const int DEP_DIST_LOAD_STORE = 10; -const int B_PARTITION_FACTOR = 4; -const int URAM_DEPTH = 8192; -using float_v16 = tapa::vec_t; -using float_v8 = tapa::vec_t; -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, int beta_u); -//#include "modules.h" -constexpr int FIFO_DEPTH = 2; -constexpr int PEG_PER_A = 512 / 256; -struct MultBVec { - ap_uint<18> row; - float_v8 abvec; -}; -template -inline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A, - const R A_len, R &i_req, R &i_resp) { -#pragma HLS inline - if ((i_req < A_len) & !A.read_addr.full()) { - A.read_addr.try_write(i_req); - ++i_req; - } - if (!fifo_A.full() & !A.read_data.empty()) { - T tmp; - A.read_data.try_read(tmp); - fifo_A.try_write(tmp); - ++i_resp; - } -} -void read_edge_list_ptr( - const int num_ite, const int M, - const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N - const int K, uint64_t edge_list_ptr, tapa::ostream &fifo_edge_list_ptr, - tapa::ostream &PE_inst); -void read_A(uint64_t A, tapa::ostream> &fifo_A, const int A_len, - const int P_N); -void read_B(uint64_t B, tapa::ostream &fifo_B, const int K, - const int P_N); -void read_C(uint64_t C, tapa::ostream &fifo_C, const int M, - const int P_N, tapa::ostream &wrC_inst); -void write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C, - uint64_t C_out); -void FloatvMultConst(const int alpha_u, const int M, const int P_N, - tapa::istream &fifo_in, - tapa::ostream &fifo_out); -void FloatvAddFloatv(tapa::istream &fifo_in0, - tapa::istream &fifo_in1, - tapa::ostream &fifo_out); -/* -void PU2core(ap_uint<18> & addr_c, - float a_val_f, - float b_val_d0_f, - float b_val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH] - ) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - - float c_val_d0_f = tapa::bit_cast(c_val_d0_u); - float c_val_d1_f = tapa::bit_cast(c_val_d1_u); - - c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f; - c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f; - - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} - -void PEcore(ap_uint<14> & addr_b, - ap_uint<18> & addr_c, - ap_uint<32> & a_val_u, - ap_uint<64> local_C[4][URAM_DEPTH], - float local_B[8][WINDOW_SIZE] - ) { -#pragma HLS inline - //if (addr_c != ((ap_uint<18>) 0x3FFFF)) { - if (addr_c[17] == 0) { - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 4; ++i) { - PU2core(addr_c, - a_val_f, - local_B[i*2+0][addr_b], - local_B[i*2+1][addr_b], - local_C[i] - ); - } - } -} -*/ -void PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u, - float local_B[8][WINDOW_SIZE], float_v8 &abv) { -#pragma HLS inline - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 8; ++i) { - abv[i] = a_val_f * local_B[i][addr_b]; - } -} -void PEG_Bmtx( - tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - // tapa::istream> & fifo_A, - tapa::istream> &fifo_A, - tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out, - tapa::ostreams &fifo_B_out, - // to PEG_Cmtx - tapa::ostream &PE_inst_to_Cmtx, - tapa::ostream &fifo_inst_out_to_Cmtx, - tapa::ostreams &fifo_aBvec) { -#pragma HLS disaggregate variable = PE_inst_in -#pragma HLS interface ap_fifo port = PE_inst_in._ -#pragma HLS aggregate variable = PE_inst_in._ bit -#pragma HLS interface ap_fifo port = PE_inst_in._peek -#pragma HLS aggregate variable = PE_inst_in._peek bit - void(PE_inst_in._.empty()); - void(PE_inst_in._peek.empty()); - -#pragma HLS disaggregate variable = fifo_inst_in -#pragma HLS interface ap_fifo port = fifo_inst_in._ -#pragma HLS aggregate variable = fifo_inst_in._ bit -#pragma HLS interface ap_fifo port = fifo_inst_in._peek -#pragma HLS aggregate variable = fifo_inst_in._peek bit - void(fifo_inst_in._.empty()); - void(fifo_inst_in._peek.empty()); - -#pragma HLS disaggregate variable = fifo_A -#pragma HLS interface ap_fifo port = fifo_A._ -#pragma HLS aggregate variable = fifo_A._ bit -#pragma HLS interface ap_fifo port = fifo_A._peek -#pragma HLS aggregate variable = fifo_A._peek bit - void(fifo_A._.empty()); - void(fifo_A._peek.empty()); - -#pragma HLS disaggregate variable = fifo_B_in -#pragma HLS array_partition variable = fifo_B_in complete -#pragma HLS interface ap_fifo port = fifo_B_in[0]._ -#pragma HLS aggregate variable = fifo_B_in[0]._ bit -#pragma HLS interface ap_fifo port = fifo_B_in[0]._peek -#pragma HLS aggregate variable = fifo_B_in[0]._peek bit - void(fifo_B_in[0]._.empty()); - void(fifo_B_in[0]._peek.empty()); -#pragma HLS interface ap_fifo port = fifo_B_in[1]._ -#pragma HLS aggregate variable = fifo_B_in[1]._ bit -#pragma HLS interface ap_fifo port = fifo_B_in[1]._peek -#pragma HLS aggregate variable = fifo_B_in[1]._peek bit - void(fifo_B_in[1]._.empty()); - void(fifo_B_in[1]._peek.empty()); -#pragma HLS interface ap_fifo port = fifo_B_in[2]._ -#pragma HLS aggregate variable = fifo_B_in[2]._ bit -#pragma HLS interface ap_fifo port = fifo_B_in[2]._peek -#pragma HLS aggregate variable = fifo_B_in[2]._peek bit - void(fifo_B_in[2]._.empty()); - void(fifo_B_in[2]._peek.empty()); -#pragma HLS interface ap_fifo port = fifo_B_in[3]._ -#pragma HLS aggregate variable = fifo_B_in[3]._ bit -#pragma HLS interface ap_fifo port = fifo_B_in[3]._peek -#pragma HLS aggregate variable = fifo_B_in[3]._peek bit - void(fifo_B_in[3]._.empty()); - void(fifo_B_in[3]._peek.empty()); - -#pragma HLS disaggregate variable = PE_inst_out -#pragma HLS interface ap_fifo port = PE_inst_out._ -#pragma HLS aggregate variable = PE_inst_out._ bit - void(PE_inst_out._.full()); - -#pragma HLS disaggregate variable = fifo_inst_out -#pragma HLS interface ap_fifo port = fifo_inst_out._ -#pragma HLS aggregate variable = fifo_inst_out._ bit - void(fifo_inst_out._.full()); - -#pragma HLS disaggregate variable = fifo_B_out -#pragma HLS array_partition variable = fifo_B_out complete -#pragma HLS interface ap_fifo port = fifo_B_out[0]._ -#pragma HLS aggregate variable = fifo_B_out[0]._ bit - void(fifo_B_out[0]._.full()); -#pragma HLS interface ap_fifo port = fifo_B_out[1]._ -#pragma HLS aggregate variable = fifo_B_out[1]._ bit - void(fifo_B_out[1]._.full()); -#pragma HLS interface ap_fifo port = fifo_B_out[2]._ -#pragma HLS aggregate variable = fifo_B_out[2]._ bit - void(fifo_B_out[2]._.full()); -#pragma HLS interface ap_fifo port = fifo_B_out[3]._ -#pragma HLS aggregate variable = fifo_B_out[3]._ bit - void(fifo_B_out[3]._.full()); - -#pragma HLS disaggregate variable = PE_inst_to_Cmtx -#pragma HLS interface ap_fifo port = PE_inst_to_Cmtx._ -#pragma HLS aggregate variable = PE_inst_to_Cmtx._ bit - void(PE_inst_to_Cmtx._.full()); - -#pragma HLS disaggregate variable = fifo_inst_out_to_Cmtx -#pragma HLS interface ap_fifo port = fifo_inst_out_to_Cmtx._ -#pragma HLS aggregate variable = fifo_inst_out_to_Cmtx._ bit - void(fifo_inst_out_to_Cmtx._.full()); - -#pragma HLS disaggregate variable = fifo_aBvec -#pragma HLS array_partition variable = fifo_aBvec complete -#pragma HLS interface ap_fifo port = fifo_aBvec[0]._ -#pragma HLS aggregate variable = fifo_aBvec[0]._ bit - void(fifo_aBvec[0]._.full()); -#pragma HLS interface ap_fifo port = fifo_aBvec[1]._ -#pragma HLS aggregate variable = fifo_aBvec[1]._ bit - void(fifo_aBvec[1]._.full()); -#pragma HLS interface ap_fifo port = fifo_aBvec[2]._ -#pragma HLS aggregate variable = fifo_aBvec[2]._ bit - void(fifo_aBvec[2]._.full()); -#pragma HLS interface ap_fifo port = fifo_aBvec[3]._ -#pragma HLS aggregate variable = fifo_aBvec[3]._ bit - void(fifo_aBvec[3]._.full()); - - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - PE_inst_to_Cmtx.write(NUM_ITE); - PE_inst_to_Cmtx.write(M); - PE_inst_to_Cmtx.write(P_N); - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); -l_rp: - for (int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min = 1 max = 16 - // float local_B[8/2][8][WINDOW_SIZE]; - // float local_B[8][WINDOW_SIZE]; - float local_B[4 / 2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable = local_B latency = 2 -#pragma HLS array_partition variable = local_B complete dim = 1 -#pragma HLS array_partition variable = local_B complete dim = 2 -#pragma HLS array_partition variable = local_B cyclic factor = \ - B_PARTITION_FACTOR dim = 3 - //#pragma HLS array_partition variable=local_B cyclic - // factor=B_PARTITION_FACTOR dim=2 - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - fifo_inst_out_to_Cmtx.write(start_32); - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min = 1 max = 49 - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && - (j < ((K + 7) >> 3) - i * (WINDOW_SIZE >> 3));) { -#pragma HLS loop_tripcount min = 1 max = 512 -#pragma HLS pipeline style = stp II = 1 - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - fifo_B_in[k].try_read(b_512_x[k]); - fifo_B_out[k].try_write(b_512_x[k]); - } - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m / 2][k + m % 2 * 8]; - } - } - } - ++j; - } - } - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - fifo_inst_out_to_Cmtx.write(end_32); - computation: - for (int j = start_32; j < end_32;) { -#pragma HLS loop_tripcount min = 1 max = 200 -#pragma HLS pipeline style = stp II = 1 - // ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - if (a_pes_ready) { - for (int p = 0; p < 4; ++p) { - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - ap_uint<14> a_col = a(63, 50); - ap_uint<18> a_row = a(49, 32); - ap_uint<32> a_val = a(31, 0); - MultBVec rabv; - rabv.row = a_row; - if (a_row[17] == 0) { - // PE process - PEcore_Bmtx(a_col, a_val, local_B[p / 2], rabv.abvec); - } - fifo_aBvec[p].write(rabv); - } - ++j; - } - } - start_32 = end_32; - } - } -} -void PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f; - float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f; - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} -void PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec, - ap_uint<64> local_C[4][URAM_DEPTH]) { -#pragma HLS inline - for (int i = 0; i < 4; ++i) { - PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]); - } -} -void PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - tapa::istreams &fifo_aBvec, - tapa::ostream &fifo_C_out); -/* -void PEG(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - tapa::streams fifo_aBvec("fifo_aBvec"); - tapa::stream PE_inst_to_Cmtx("PE_inst_to_Cmtx"); - tapa::stream -fifo_inst_out_to_Cmtx("fifo_inst_out_to_Cmtx"); - - tapa::task() - .invoke(PEG_Bmtx, - PE_inst_in, - fifo_inst_in, - fifo_A, - fifo_B_in, - PE_inst_out, - fifo_inst_out, - fifo_B_out, - // to PEG_Cmtx - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec) - - .invoke(PEG_Cmtx, - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec, - fifo_C_out) - ; -} - -void PEG_c(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0)? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - - const int num_v_init = (M + 63) >> 6; - //const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - - //define local C buffer and pragma to URAM - //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1 -#pragma HLS array_partition complete variable=local_C dim=1 -#pragma HLS array_partition complete variable=local_C dim=2 - -l_rp: - for(int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min=1 max=16 - - //init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min=1 max=800 -#pragma HLS pipeline style=stp II=1 - //for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - //define local B buffer and pragma local B buffer if partition factor > -1 - - //float local_B[8/2][8][WINDOW_SIZE]; - //float local_B[8][WINDOW_SIZE]; - float local_B[4/2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable=local_B latency=2 -#pragma HLS array_partition variable=local_B complete dim=1 -#pragma HLS array_partition variable=local_B complete dim=2 -#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=3 -//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=2 - - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min=1 max=49 - - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i -* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS -pipeline style=stp II = 1 - - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - b_512_x[k] = fifo_B_in[k].read(); - fifo_B_out[k].write(b_512_x[k]); - } - - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m % -2 * 8]; - } - } - } - ++j; - } - } - - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - - computation: - for (int j = start_32; j < end_32; ) { -#pragma HLS loop_tripcount min=1 max=200 -#pragma HLS pipeline style=stp II=1 -#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE - - //ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - - if (a_pes_ready) { - //for (int p = 0; p < 2; ++p) { - for (int p = 0; p < 4; ++p) { - ap_uint<14> a_col; - ap_uint<18> a_row; - ap_uint<32> a_val; - - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - a_col = a(63, 50); - a_row = a(49, 32); - a_val = a(31, 0); - - // PE process - PEcore(a_col, - a_row, - a_val, - local_C[p], - //local_B - local_B[p/2] - ); - } - ++j; - } - } - start_32 = end_32; - } - - //cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min=1 max=1800 -#pragma HLS pipeline style=stp II=1 - ap_uint<32> u_32_d[8]; - - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i>>2]; - u_32_d[2 * d ] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - - switch (c_idx) { //0,2,1,3 - case 0: c_idx = 2; break; - case 1: c_idx = 3; break; - case 2: c_idx = 1; break; - case 3: c_idx = 0; break; - } - - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << -endl; - } - } -} -*/ -void Scatter_1_2(tapa::istream> &fifo_in, - tapa::ostreams, 2> &fifo_out); -void Merger(tapa::istreams &fifo_in, - tapa::ostream &fifo_out); -void black_hole_int(tapa::istream &fifo_in); -void black_hole_float_v16(tapa::istream &fifo_in); -void Sextans(uint64_t edge_list_ptr, uint64_t edge_list_ch_0, - uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, - uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, - uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, - uint64_t edge_list_ch_7, uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, - uint64_t mat_B_ch_2, uint64_t mat_B_ch_3, uint64_t mat_C_ch_in_0, - uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, - uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, - uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, - uint64_t mat_C_ch_in_7, uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, - uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, - uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, - const int NUM_ITE, const int NUM_A_LEN, const int M, const int K, - const int P_N, const int alpha_u, const int beta_u); diff --git a/benchmarks/tapa_flow/sextans/design/generated/cpp/PEG_Cmtx.cpp b/benchmarks/tapa_flow/sextans/design/generated/cpp/PEG_Cmtx.cpp deleted file mode 100644 index 40cffb8d..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/cpp/PEG_Cmtx.cpp +++ /dev/null @@ -1,550 +0,0 @@ - - -#include - -#include - -#include - -#include - -#include - -#include - -#include -constexpr int NUM_CH_SPARSE = 8; -constexpr int NUM_CH_B = 4; -constexpr int NUM_CH_C = 8; -const int WINDOW_SIZE = 4096; -const int DEP_DIST_LOAD_STORE = 10; -const int B_PARTITION_FACTOR = 4; -const int URAM_DEPTH = 8192; -using float_v16 = tapa::vec_t; -using float_v8 = tapa::vec_t; -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, int beta_u); -//#include "modules.h" -constexpr int FIFO_DEPTH = 2; -constexpr int PEG_PER_A = 512 / 256; -struct MultBVec { - ap_uint<18> row; - float_v8 abvec; -}; -template -inline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A, - const R A_len, R &i_req, R &i_resp) { -#pragma HLS inline - if ((i_req < A_len) & !A.read_addr.full()) { - A.read_addr.try_write(i_req); - ++i_req; - } - if (!fifo_A.full() & !A.read_data.empty()) { - T tmp; - A.read_data.try_read(tmp); - fifo_A.try_write(tmp); - ++i_resp; - } -} -void read_edge_list_ptr( - const int num_ite, const int M, - const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N - const int K, uint64_t edge_list_ptr, tapa::ostream &fifo_edge_list_ptr, - tapa::ostream &PE_inst); -void read_A(uint64_t A, tapa::ostream> &fifo_A, const int A_len, - const int P_N); -void read_B(uint64_t B, tapa::ostream &fifo_B, const int K, - const int P_N); -void read_C(uint64_t C, tapa::ostream &fifo_C, const int M, - const int P_N, tapa::ostream &wrC_inst); -void write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C, - uint64_t C_out); -void FloatvMultConst(const int alpha_u, const int M, const int P_N, - tapa::istream &fifo_in, - tapa::ostream &fifo_out); -void FloatvAddFloatv(tapa::istream &fifo_in0, - tapa::istream &fifo_in1, - tapa::ostream &fifo_out); -/* -void PU2core(ap_uint<18> & addr_c, - float a_val_f, - float b_val_d0_f, - float b_val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH] - ) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - - float c_val_d0_f = tapa::bit_cast(c_val_d0_u); - float c_val_d1_f = tapa::bit_cast(c_val_d1_u); - - c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f; - c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f; - - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} - -void PEcore(ap_uint<14> & addr_b, - ap_uint<18> & addr_c, - ap_uint<32> & a_val_u, - ap_uint<64> local_C[4][URAM_DEPTH], - float local_B[8][WINDOW_SIZE] - ) { -#pragma HLS inline - //if (addr_c != ((ap_uint<18>) 0x3FFFF)) { - if (addr_c[17] == 0) { - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 4; ++i) { - PU2core(addr_c, - a_val_f, - local_B[i*2+0][addr_b], - local_B[i*2+1][addr_b], - local_C[i] - ); - } - } -} -*/ -void PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u, - float local_B[8][WINDOW_SIZE], float_v8 &abv) { -#pragma HLS inline - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 8; ++i) { - abv[i] = a_val_f * local_B[i][addr_b]; - } -} -void PEG_Bmtx( - tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - // tapa::istream> & fifo_A, - tapa::istream> &fifo_A, - tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out, - tapa::ostreams &fifo_B_out, - // to PEG_Cmtx - tapa::ostream &PE_inst_to_Cmtx, - tapa::ostream &fifo_inst_out_to_Cmtx, - tapa::ostreams &fifo_aBvec); -void PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f; - float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f; - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} -void PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec, - ap_uint<64> local_C[4][URAM_DEPTH]) { -#pragma HLS inline - for (int i = 0; i < 4; ++i) { - PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]); - } -} -void PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - tapa::istreams &fifo_aBvec, - tapa::ostream &fifo_C_out) { -#pragma HLS disaggregate variable = PE_inst_in -#pragma HLS interface ap_fifo port = PE_inst_in._ -#pragma HLS aggregate variable = PE_inst_in._ bit -#pragma HLS interface ap_fifo port = PE_inst_in._peek -#pragma HLS aggregate variable = PE_inst_in._peek bit - void(PE_inst_in._.empty()); - void(PE_inst_in._peek.empty()); - -#pragma HLS disaggregate variable = fifo_inst_in -#pragma HLS interface ap_fifo port = fifo_inst_in._ -#pragma HLS aggregate variable = fifo_inst_in._ bit -#pragma HLS interface ap_fifo port = fifo_inst_in._peek -#pragma HLS aggregate variable = fifo_inst_in._peek bit - void(fifo_inst_in._.empty()); - void(fifo_inst_in._peek.empty()); - -#pragma HLS disaggregate variable = fifo_aBvec -#pragma HLS array_partition variable = fifo_aBvec complete -#pragma HLS interface ap_fifo port = fifo_aBvec[0]._ -#pragma HLS aggregate variable = fifo_aBvec[0]._ bit -#pragma HLS interface ap_fifo port = fifo_aBvec[0]._peek -#pragma HLS aggregate variable = fifo_aBvec[0]._peek bit - void(fifo_aBvec[0]._.empty()); - void(fifo_aBvec[0]._peek.empty()); -#pragma HLS interface ap_fifo port = fifo_aBvec[1]._ -#pragma HLS aggregate variable = fifo_aBvec[1]._ bit -#pragma HLS interface ap_fifo port = fifo_aBvec[1]._peek -#pragma HLS aggregate variable = fifo_aBvec[1]._peek bit - void(fifo_aBvec[1]._.empty()); - void(fifo_aBvec[1]._peek.empty()); -#pragma HLS interface ap_fifo port = fifo_aBvec[2]._ -#pragma HLS aggregate variable = fifo_aBvec[2]._ bit -#pragma HLS interface ap_fifo port = fifo_aBvec[2]._peek -#pragma HLS aggregate variable = fifo_aBvec[2]._peek bit - void(fifo_aBvec[2]._.empty()); - void(fifo_aBvec[2]._peek.empty()); -#pragma HLS interface ap_fifo port = fifo_aBvec[3]._ -#pragma HLS aggregate variable = fifo_aBvec[3]._ bit -#pragma HLS interface ap_fifo port = fifo_aBvec[3]._peek -#pragma HLS aggregate variable = fifo_aBvec[3]._peek bit - void(fifo_aBvec[3]._.empty()); - void(fifo_aBvec[3]._peek.empty()); - -#pragma HLS disaggregate variable = fifo_C_out -#pragma HLS interface ap_fifo port = fifo_C_out._ -#pragma HLS aggregate variable = fifo_C_out._ bit - void(fifo_C_out._.full()); - - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - const int num_v_init = (M + 63) >> 6; - // const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - // define local C buffer and pragma to URAM - // ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable = local_C type = RAM_2P impl = \ - URAM latency = 1 -#pragma HLS array_partition complete variable = local_C dim = 1 -#pragma HLS array_partition complete variable = local_C dim = 2 -l_rp: - for (int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min = 1 max = 16 - // init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min = 1 max = 800 -#pragma HLS pipeline style = stp II = 1 - // for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - auto start_32 = fifo_inst_in.read(); - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min = 1 max = 49 - // computation - const auto end_32 = fifo_inst_in.read(); - computation: - for (int j = start_32; j < end_32;) { -#pragma HLS loop_tripcount min = 1 max = 200 -#pragma HLS pipeline style = stp II = 1 -#pragma HLS dependence true variable = local_C distance = DEP_DIST_LOAD_STORE - bool nop_flag = false; - for (int p = 0; p < 4; ++p) { - nop_flag |= fifo_aBvec[p].empty(); - } - if (!nop_flag) { - for (int p = 0; p < 4; ++p) { - MultBVec rabv; - fifo_aBvec[p].try_read(rabv); - ap_uint<18> a_row = rabv.row; - if (a_row[17] == 0) { - PEcore_Cmtx(a_row, rabv.abvec, local_C[p]); - } - } - ++j; - } - } - start_32 = end_32; - } - // cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min = 1 max = 1800 -#pragma HLS pipeline style = stp II = 1 - ap_uint<32> u_32_d[8]; - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i >> 2]; - u_32_d[2 * d] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - switch (c_idx) { // 0,2,1,3 - case 0: - c_idx = 2; - break; - case 1: - c_idx = 3; - break; - case 2: - c_idx = 1; - break; - case 3: - c_idx = 0; - break; - } - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - // for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << - // endl; - } - } -} -/* -void PEG(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - tapa::streams fifo_aBvec("fifo_aBvec"); - tapa::stream PE_inst_to_Cmtx("PE_inst_to_Cmtx"); - tapa::stream -fifo_inst_out_to_Cmtx("fifo_inst_out_to_Cmtx"); - - tapa::task() - .invoke(PEG_Bmtx, - PE_inst_in, - fifo_inst_in, - fifo_A, - fifo_B_in, - PE_inst_out, - fifo_inst_out, - fifo_B_out, - // to PEG_Cmtx - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec) - - .invoke(PEG_Cmtx, - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec, - fifo_C_out) - ; -} - -void PEG_c(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0)? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - - const int num_v_init = (M + 63) >> 6; - //const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - - //define local C buffer and pragma to URAM - //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1 -#pragma HLS array_partition complete variable=local_C dim=1 -#pragma HLS array_partition complete variable=local_C dim=2 - -l_rp: - for(int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min=1 max=16 - - //init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min=1 max=800 -#pragma HLS pipeline style=stp II=1 - //for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - //define local B buffer and pragma local B buffer if partition factor > -1 - - //float local_B[8/2][8][WINDOW_SIZE]; - //float local_B[8][WINDOW_SIZE]; - float local_B[4/2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable=local_B latency=2 -#pragma HLS array_partition variable=local_B complete dim=1 -#pragma HLS array_partition variable=local_B complete dim=2 -#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=3 -//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=2 - - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min=1 max=49 - - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i -* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS -pipeline style=stp II = 1 - - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - b_512_x[k] = fifo_B_in[k].read(); - fifo_B_out[k].write(b_512_x[k]); - } - - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m % -2 * 8]; - } - } - } - ++j; - } - } - - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - - computation: - for (int j = start_32; j < end_32; ) { -#pragma HLS loop_tripcount min=1 max=200 -#pragma HLS pipeline style=stp II=1 -#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE - - //ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - - if (a_pes_ready) { - //for (int p = 0; p < 2; ++p) { - for (int p = 0; p < 4; ++p) { - ap_uint<14> a_col; - ap_uint<18> a_row; - ap_uint<32> a_val; - - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - a_col = a(63, 50); - a_row = a(49, 32); - a_val = a(31, 0); - - // PE process - PEcore(a_col, - a_row, - a_val, - local_C[p], - //local_B - local_B[p/2] - ); - } - ++j; - } - } - start_32 = end_32; - } - - //cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min=1 max=1800 -#pragma HLS pipeline style=stp II=1 - ap_uint<32> u_32_d[8]; - - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i>>2]; - u_32_d[2 * d ] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - - switch (c_idx) { //0,2,1,3 - case 0: c_idx = 2; break; - case 1: c_idx = 3; break; - case 2: c_idx = 1; break; - case 3: c_idx = 0; break; - } - - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << -endl; - } - } -} -*/ -void Scatter_1_2(tapa::istream> &fifo_in, - tapa::ostreams, 2> &fifo_out); -void Merger(tapa::istreams &fifo_in, - tapa::ostream &fifo_out); -void black_hole_int(tapa::istream &fifo_in); -void black_hole_float_v16(tapa::istream &fifo_in); -void Sextans(uint64_t edge_list_ptr, uint64_t edge_list_ch_0, - uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, - uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, - uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, - uint64_t edge_list_ch_7, uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, - uint64_t mat_B_ch_2, uint64_t mat_B_ch_3, uint64_t mat_C_ch_in_0, - uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, - uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, - uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, - uint64_t mat_C_ch_in_7, uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, - uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, - uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, - const int NUM_ITE, const int NUM_A_LEN, const int M, const int K, - const int P_N, const int alpha_u, const int beta_u); diff --git a/benchmarks/tapa_flow/sextans/design/generated/cpp/Scatter_1_2.cpp b/benchmarks/tapa_flow/sextans/design/generated/cpp/Scatter_1_2.cpp deleted file mode 100644 index 0168fb85..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/cpp/Scatter_1_2.cpp +++ /dev/null @@ -1,437 +0,0 @@ - - -#include - -#include - -#include - -#include - -#include - -#include - -#include -constexpr int NUM_CH_SPARSE = 8; -constexpr int NUM_CH_B = 4; -constexpr int NUM_CH_C = 8; -const int WINDOW_SIZE = 4096; -const int DEP_DIST_LOAD_STORE = 10; -const int B_PARTITION_FACTOR = 4; -const int URAM_DEPTH = 8192; -using float_v16 = tapa::vec_t; -using float_v8 = tapa::vec_t; -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, int beta_u); -//#include "modules.h" -constexpr int FIFO_DEPTH = 2; -constexpr int PEG_PER_A = 512 / 256; -struct MultBVec { - ap_uint<18> row; - float_v8 abvec; -}; -template -inline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A, - const R A_len, R &i_req, R &i_resp) { -#pragma HLS inline - if ((i_req < A_len) & !A.read_addr.full()) { - A.read_addr.try_write(i_req); - ++i_req; - } - if (!fifo_A.full() & !A.read_data.empty()) { - T tmp; - A.read_data.try_read(tmp); - fifo_A.try_write(tmp); - ++i_resp; - } -} -void read_edge_list_ptr( - const int num_ite, const int M, - const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N - const int K, uint64_t edge_list_ptr, tapa::ostream &fifo_edge_list_ptr, - tapa::ostream &PE_inst); -void read_A(uint64_t A, tapa::ostream> &fifo_A, const int A_len, - const int P_N); -void read_B(uint64_t B, tapa::ostream &fifo_B, const int K, - const int P_N); -void read_C(uint64_t C, tapa::ostream &fifo_C, const int M, - const int P_N, tapa::ostream &wrC_inst); -void write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C, - uint64_t C_out); -void FloatvMultConst(const int alpha_u, const int M, const int P_N, - tapa::istream &fifo_in, - tapa::ostream &fifo_out); -void FloatvAddFloatv(tapa::istream &fifo_in0, - tapa::istream &fifo_in1, - tapa::ostream &fifo_out); -/* -void PU2core(ap_uint<18> & addr_c, - float a_val_f, - float b_val_d0_f, - float b_val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH] - ) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - - float c_val_d0_f = tapa::bit_cast(c_val_d0_u); - float c_val_d1_f = tapa::bit_cast(c_val_d1_u); - - c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f; - c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f; - - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} - -void PEcore(ap_uint<14> & addr_b, - ap_uint<18> & addr_c, - ap_uint<32> & a_val_u, - ap_uint<64> local_C[4][URAM_DEPTH], - float local_B[8][WINDOW_SIZE] - ) { -#pragma HLS inline - //if (addr_c != ((ap_uint<18>) 0x3FFFF)) { - if (addr_c[17] == 0) { - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 4; ++i) { - PU2core(addr_c, - a_val_f, - local_B[i*2+0][addr_b], - local_B[i*2+1][addr_b], - local_C[i] - ); - } - } -} -*/ -void PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u, - float local_B[8][WINDOW_SIZE], float_v8 &abv) { -#pragma HLS inline - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 8; ++i) { - abv[i] = a_val_f * local_B[i][addr_b]; - } -} -void PEG_Bmtx( - tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - // tapa::istream> & fifo_A, - tapa::istream> &fifo_A, - tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out, - tapa::ostreams &fifo_B_out, - // to PEG_Cmtx - tapa::ostream &PE_inst_to_Cmtx, - tapa::ostream &fifo_inst_out_to_Cmtx, - tapa::ostreams &fifo_aBvec); -void PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f; - float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f; - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} -void PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec, - ap_uint<64> local_C[4][URAM_DEPTH]) { -#pragma HLS inline - for (int i = 0; i < 4; ++i) { - PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]); - } -} -void PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - tapa::istreams &fifo_aBvec, - tapa::ostream &fifo_C_out); -/* -void PEG(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - tapa::streams fifo_aBvec("fifo_aBvec"); - tapa::stream PE_inst_to_Cmtx("PE_inst_to_Cmtx"); - tapa::stream -fifo_inst_out_to_Cmtx("fifo_inst_out_to_Cmtx"); - - tapa::task() - .invoke(PEG_Bmtx, - PE_inst_in, - fifo_inst_in, - fifo_A, - fifo_B_in, - PE_inst_out, - fifo_inst_out, - fifo_B_out, - // to PEG_Cmtx - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec) - - .invoke(PEG_Cmtx, - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec, - fifo_C_out) - ; -} - -void PEG_c(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0)? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - - const int num_v_init = (M + 63) >> 6; - //const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - - //define local C buffer and pragma to URAM - //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1 -#pragma HLS array_partition complete variable=local_C dim=1 -#pragma HLS array_partition complete variable=local_C dim=2 - -l_rp: - for(int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min=1 max=16 - - //init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min=1 max=800 -#pragma HLS pipeline style=stp II=1 - //for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - //define local B buffer and pragma local B buffer if partition factor > -1 - - //float local_B[8/2][8][WINDOW_SIZE]; - //float local_B[8][WINDOW_SIZE]; - float local_B[4/2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable=local_B latency=2 -#pragma HLS array_partition variable=local_B complete dim=1 -#pragma HLS array_partition variable=local_B complete dim=2 -#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=3 -//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=2 - - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min=1 max=49 - - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i -* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS -pipeline style=stp II = 1 - - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - b_512_x[k] = fifo_B_in[k].read(); - fifo_B_out[k].write(b_512_x[k]); - } - - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m % -2 * 8]; - } - } - } - ++j; - } - } - - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - - computation: - for (int j = start_32; j < end_32; ) { -#pragma HLS loop_tripcount min=1 max=200 -#pragma HLS pipeline style=stp II=1 -#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE - - //ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - - if (a_pes_ready) { - //for (int p = 0; p < 2; ++p) { - for (int p = 0; p < 4; ++p) { - ap_uint<14> a_col; - ap_uint<18> a_row; - ap_uint<32> a_val; - - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - a_col = a(63, 50); - a_row = a(49, 32); - a_val = a(31, 0); - - // PE process - PEcore(a_col, - a_row, - a_val, - local_C[p], - //local_B - local_B[p/2] - ); - } - ++j; - } - } - start_32 = end_32; - } - - //cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min=1 max=1800 -#pragma HLS pipeline style=stp II=1 - ap_uint<32> u_32_d[8]; - - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i>>2]; - u_32_d[2 * d ] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - - switch (c_idx) { //0,2,1,3 - case 0: c_idx = 2; break; - case 1: c_idx = 3; break; - case 2: c_idx = 1; break; - case 3: c_idx = 0; break; - } - - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << -endl; - } - } -} -*/ -void Scatter_1_2(tapa::istream> &fifo_in, - tapa::ostreams, 2> &fifo_out) { -#pragma HLS disaggregate variable = fifo_in -#pragma HLS interface ap_fifo port = fifo_in._ -#pragma HLS aggregate variable = fifo_in._ bit -#pragma HLS interface ap_fifo port = fifo_in._peek -#pragma HLS aggregate variable = fifo_in._peek bit - void(fifo_in._.empty()); - void(fifo_in._peek.empty()); - -#pragma HLS disaggregate variable = fifo_out -#pragma HLS array_partition variable = fifo_out complete -#pragma HLS interface ap_fifo port = fifo_out[0]._ -#pragma HLS aggregate variable = fifo_out[0]._ bit - void(fifo_out[0]._.full()); -#pragma HLS interface ap_fifo port = fifo_out[1]._ -#pragma HLS aggregate variable = fifo_out[1]._ bit - void(fifo_out[1]._.full()); - - for (;;) { -#pragma HLS pipeline style = stp II = 1 - bool flag_nop = fifo_in.empty(); - for (int i = 0; i < 2; ++i) { - flag_nop |= fifo_out[i].full(); - } - if (!flag_nop) { - ap_uint<512> tmp; - fifo_in.try_read(tmp); - for (int i = 0; i < 2; ++i) { - fifo_out[i].try_write(tmp(255 + i * 256, i * 256)); - } - } - } -} -void Merger(tapa::istreams &fifo_in, - tapa::ostream &fifo_out); -void black_hole_int(tapa::istream &fifo_in); -void black_hole_float_v16(tapa::istream &fifo_in); -void Sextans(uint64_t edge_list_ptr, uint64_t edge_list_ch_0, - uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, - uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, - uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, - uint64_t edge_list_ch_7, uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, - uint64_t mat_B_ch_2, uint64_t mat_B_ch_3, uint64_t mat_C_ch_in_0, - uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, - uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, - uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, - uint64_t mat_C_ch_in_7, uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, - uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, - uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, - const int NUM_ITE, const int NUM_A_LEN, const int M, const int K, - const int P_N, const int alpha_u, const int beta_u); diff --git a/benchmarks/tapa_flow/sextans/design/generated/cpp/Sextans.cpp b/benchmarks/tapa_flow/sextans/design/generated/cpp/Sextans.cpp deleted file mode 100644 index c965f0ed..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/cpp/Sextans.cpp +++ /dev/null @@ -1,497 +0,0 @@ - - -#include - -#include - -#include - -#include - -#include - -#include - -#include -constexpr int NUM_CH_SPARSE = 8; -constexpr int NUM_CH_B = 4; -constexpr int NUM_CH_C = 8; -const int WINDOW_SIZE = 4096; -const int DEP_DIST_LOAD_STORE = 10; -const int B_PARTITION_FACTOR = 4; -const int URAM_DEPTH = 8192; -using float_v16 = tapa::vec_t; -using float_v8 = tapa::vec_t; -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, int beta_u); -//#include "modules.h" -constexpr int FIFO_DEPTH = 2; -constexpr int PEG_PER_A = 512 / 256; -struct MultBVec { - ap_uint<18> row; - float_v8 abvec; -}; -template -inline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A, - const R A_len, R &i_req, R &i_resp) { -#pragma HLS inline - if ((i_req < A_len) & !A.read_addr.full()) { - A.read_addr.try_write(i_req); - ++i_req; - } - if (!fifo_A.full() & !A.read_data.empty()) { - T tmp; - A.read_data.try_read(tmp); - fifo_A.try_write(tmp); - ++i_resp; - } -} -void read_edge_list_ptr( - const int num_ite, const int M, - const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N - const int K, uint64_t edge_list_ptr, tapa::ostream &fifo_edge_list_ptr, - tapa::ostream &PE_inst); -void read_A(uint64_t A, tapa::ostream> &fifo_A, const int A_len, - const int P_N); -void read_B(uint64_t B, tapa::ostream &fifo_B, const int K, - const int P_N); -void read_C(uint64_t C, tapa::ostream &fifo_C, const int M, - const int P_N, tapa::ostream &wrC_inst); -void write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C, - uint64_t C_out); -void FloatvMultConst(const int alpha_u, const int M, const int P_N, - tapa::istream &fifo_in, - tapa::ostream &fifo_out); -void FloatvAddFloatv(tapa::istream &fifo_in0, - tapa::istream &fifo_in1, - tapa::ostream &fifo_out); -/* -void PU2core(ap_uint<18> & addr_c, - float a_val_f, - float b_val_d0_f, - float b_val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH] - ) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - - float c_val_d0_f = tapa::bit_cast(c_val_d0_u); - float c_val_d1_f = tapa::bit_cast(c_val_d1_u); - - c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f; - c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f; - - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} - -void PEcore(ap_uint<14> & addr_b, - ap_uint<18> & addr_c, - ap_uint<32> & a_val_u, - ap_uint<64> local_C[4][URAM_DEPTH], - float local_B[8][WINDOW_SIZE] - ) { -#pragma HLS inline - //if (addr_c != ((ap_uint<18>) 0x3FFFF)) { - if (addr_c[17] == 0) { - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 4; ++i) { - PU2core(addr_c, - a_val_f, - local_B[i*2+0][addr_b], - local_B[i*2+1][addr_b], - local_C[i] - ); - } - } -} -*/ -void PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u, - float local_B[8][WINDOW_SIZE], float_v8 &abv) { -#pragma HLS inline - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 8; ++i) { - abv[i] = a_val_f * local_B[i][addr_b]; - } -} -void PEG_Bmtx( - tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - // tapa::istream> & fifo_A, - tapa::istream> &fifo_A, - tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out, - tapa::ostreams &fifo_B_out, - // to PEG_Cmtx - tapa::ostream &PE_inst_to_Cmtx, - tapa::ostream &fifo_inst_out_to_Cmtx, - tapa::ostreams &fifo_aBvec); -void PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f; - float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f; - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} -void PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec, - ap_uint<64> local_C[4][URAM_DEPTH]) { -#pragma HLS inline - for (int i = 0; i < 4; ++i) { - PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]); - } -} -void PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - tapa::istreams &fifo_aBvec, - tapa::ostream &fifo_C_out); -/* -void PEG(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - tapa::streams fifo_aBvec("fifo_aBvec"); - tapa::stream PE_inst_to_Cmtx("PE_inst_to_Cmtx"); - tapa::stream -fifo_inst_out_to_Cmtx("fifo_inst_out_to_Cmtx"); - - tapa::task() - .invoke(PEG_Bmtx, - PE_inst_in, - fifo_inst_in, - fifo_A, - fifo_B_in, - PE_inst_out, - fifo_inst_out, - fifo_B_out, - // to PEG_Cmtx - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec) - - .invoke(PEG_Cmtx, - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec, - fifo_C_out) - ; -} - -void PEG_c(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0)? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - - const int num_v_init = (M + 63) >> 6; - //const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - - //define local C buffer and pragma to URAM - //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1 -#pragma HLS array_partition complete variable=local_C dim=1 -#pragma HLS array_partition complete variable=local_C dim=2 - -l_rp: - for(int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min=1 max=16 - - //init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min=1 max=800 -#pragma HLS pipeline style=stp II=1 - //for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - //define local B buffer and pragma local B buffer if partition factor > -1 - - //float local_B[8/2][8][WINDOW_SIZE]; - //float local_B[8][WINDOW_SIZE]; - float local_B[4/2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable=local_B latency=2 -#pragma HLS array_partition variable=local_B complete dim=1 -#pragma HLS array_partition variable=local_B complete dim=2 -#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=3 -//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=2 - - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min=1 max=49 - - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i -* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS -pipeline style=stp II = 1 - - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - b_512_x[k] = fifo_B_in[k].read(); - fifo_B_out[k].write(b_512_x[k]); - } - - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m % -2 * 8]; - } - } - } - ++j; - } - } - - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - - computation: - for (int j = start_32; j < end_32; ) { -#pragma HLS loop_tripcount min=1 max=200 -#pragma HLS pipeline style=stp II=1 -#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE - - //ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - - if (a_pes_ready) { - //for (int p = 0; p < 2; ++p) { - for (int p = 0; p < 4; ++p) { - ap_uint<14> a_col; - ap_uint<18> a_row; - ap_uint<32> a_val; - - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - a_col = a(63, 50); - a_row = a(49, 32); - a_val = a(31, 0); - - // PE process - PEcore(a_col, - a_row, - a_val, - local_C[p], - //local_B - local_B[p/2] - ); - } - ++j; - } - } - start_32 = end_32; - } - - //cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min=1 max=1800 -#pragma HLS pipeline style=stp II=1 - ap_uint<32> u_32_d[8]; - - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i>>2]; - u_32_d[2 * d ] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - - switch (c_idx) { //0,2,1,3 - case 0: c_idx = 2; break; - case 1: c_idx = 3; break; - case 2: c_idx = 1; break; - case 3: c_idx = 0; break; - } - - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << -endl; - } - } -} -*/ -void Scatter_1_2(tapa::istream> &fifo_in, - tapa::ostreams, 2> &fifo_out); -void Merger(tapa::istreams &fifo_in, - tapa::ostream &fifo_out); -void black_hole_int(tapa::istream &fifo_in); -void black_hole_float_v16(tapa::istream &fifo_in); -extern "C" { - -void Sextans(uint64_t edge_list_ptr, uint64_t edge_list_ch_0, - uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, - uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, - uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, - uint64_t edge_list_ch_7, uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, - uint64_t mat_B_ch_2, uint64_t mat_B_ch_3, uint64_t mat_C_ch_in_0, - uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, - uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, - uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, - uint64_t mat_C_ch_in_7, uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, - uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, - uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, - const int NUM_ITE, const int NUM_A_LEN, const int M, const int K, - const int P_N, const int alpha_u, const int beta_u) { - -#pragma HLS interface s_axilite port = edge_list_ptr bundle = control - { auto val = reinterpret_cast(edge_list_ptr); } - { auto val = reinterpret_cast(edge_list_ptr); } - -#pragma HLS interface s_axilite port = edge_list_ch_0 bundle = control -#pragma HLS interface s_axilite port = edge_list_ch_1 bundle = control -#pragma HLS interface s_axilite port = edge_list_ch_2 bundle = control -#pragma HLS interface s_axilite port = edge_list_ch_3 bundle = control -#pragma HLS interface s_axilite port = edge_list_ch_4 bundle = control -#pragma HLS interface s_axilite port = edge_list_ch_5 bundle = control -#pragma HLS interface s_axilite port = edge_list_ch_6 bundle = control -#pragma HLS interface s_axilite port = edge_list_ch_7 bundle = control - { auto val = reinterpret_cast(edge_list_ch_0); } - { auto val = reinterpret_cast(edge_list_ch_1); } - { auto val = reinterpret_cast(edge_list_ch_2); } - { auto val = reinterpret_cast(edge_list_ch_3); } - { auto val = reinterpret_cast(edge_list_ch_4); } - { auto val = reinterpret_cast(edge_list_ch_5); } - { auto val = reinterpret_cast(edge_list_ch_6); } - { auto val = reinterpret_cast(edge_list_ch_7); } - -#pragma HLS interface s_axilite port = mat_B_ch_0 bundle = control -#pragma HLS interface s_axilite port = mat_B_ch_1 bundle = control -#pragma HLS interface s_axilite port = mat_B_ch_2 bundle = control -#pragma HLS interface s_axilite port = mat_B_ch_3 bundle = control - { auto val = reinterpret_cast(mat_B_ch_0); } - { auto val = reinterpret_cast(mat_B_ch_1); } - { auto val = reinterpret_cast(mat_B_ch_2); } - { auto val = reinterpret_cast(mat_B_ch_3); } - -#pragma HLS interface s_axilite port = mat_C_ch_in_0 bundle = control -#pragma HLS interface s_axilite port = mat_C_ch_in_1 bundle = control -#pragma HLS interface s_axilite port = mat_C_ch_in_2 bundle = control -#pragma HLS interface s_axilite port = mat_C_ch_in_3 bundle = control -#pragma HLS interface s_axilite port = mat_C_ch_in_4 bundle = control -#pragma HLS interface s_axilite port = mat_C_ch_in_5 bundle = control -#pragma HLS interface s_axilite port = mat_C_ch_in_6 bundle = control -#pragma HLS interface s_axilite port = mat_C_ch_in_7 bundle = control - { auto val = reinterpret_cast(mat_C_ch_in_0); } - { auto val = reinterpret_cast(mat_C_ch_in_1); } - { auto val = reinterpret_cast(mat_C_ch_in_2); } - { auto val = reinterpret_cast(mat_C_ch_in_3); } - { auto val = reinterpret_cast(mat_C_ch_in_4); } - { auto val = reinterpret_cast(mat_C_ch_in_5); } - { auto val = reinterpret_cast(mat_C_ch_in_6); } - { auto val = reinterpret_cast(mat_C_ch_in_7); } - -#pragma HLS interface s_axilite port = mat_C_ch_0 bundle = control -#pragma HLS interface s_axilite port = mat_C_ch_1 bundle = control -#pragma HLS interface s_axilite port = mat_C_ch_2 bundle = control -#pragma HLS interface s_axilite port = mat_C_ch_3 bundle = control -#pragma HLS interface s_axilite port = mat_C_ch_4 bundle = control -#pragma HLS interface s_axilite port = mat_C_ch_5 bundle = control -#pragma HLS interface s_axilite port = mat_C_ch_6 bundle = control -#pragma HLS interface s_axilite port = mat_C_ch_7 bundle = control - { auto val = reinterpret_cast(mat_C_ch_0); } - { auto val = reinterpret_cast(mat_C_ch_1); } - { auto val = reinterpret_cast(mat_C_ch_2); } - { auto val = reinterpret_cast(mat_C_ch_3); } - { auto val = reinterpret_cast(mat_C_ch_4); } - { auto val = reinterpret_cast(mat_C_ch_5); } - { auto val = reinterpret_cast(mat_C_ch_6); } - { auto val = reinterpret_cast(mat_C_ch_7); } - -#pragma HLS interface s_axilite port = NUM_ITE bundle = control - { auto val = reinterpret_cast(NUM_ITE); } - -#pragma HLS interface s_axilite port = NUM_A_LEN bundle = control - { auto val = reinterpret_cast(NUM_A_LEN); } - -#pragma HLS interface s_axilite port = M bundle = control - { auto val = reinterpret_cast(M); } - -#pragma HLS interface s_axilite port = K bundle = control - { auto val = reinterpret_cast(K); } - -#pragma HLS interface s_axilite port = P_N bundle = control - { auto val = reinterpret_cast(P_N); } - -#pragma HLS interface s_axilite port = alpha_u bundle = control - { auto val = reinterpret_cast(alpha_u); } - -#pragma HLS interface s_axilite port = beta_u bundle = control - { auto val = reinterpret_cast(beta_u); } - -#pragma HLS interface s_axilite port = return bundle = control -} - -} // extern "C" diff --git a/benchmarks/tapa_flow/sextans/design/generated/cpp/black_hole_float_v16.cpp b/benchmarks/tapa_flow/sextans/design/generated/cpp/black_hole_float_v16.cpp deleted file mode 100644 index bf2d8b25..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/cpp/black_hole_float_v16.cpp +++ /dev/null @@ -1,418 +0,0 @@ - - -#include - -#include - -#include - -#include - -#include - -#include - -#include -constexpr int NUM_CH_SPARSE = 8; -constexpr int NUM_CH_B = 4; -constexpr int NUM_CH_C = 8; -const int WINDOW_SIZE = 4096; -const int DEP_DIST_LOAD_STORE = 10; -const int B_PARTITION_FACTOR = 4; -const int URAM_DEPTH = 8192; -using float_v16 = tapa::vec_t; -using float_v8 = tapa::vec_t; -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, int beta_u); -//#include "modules.h" -constexpr int FIFO_DEPTH = 2; -constexpr int PEG_PER_A = 512 / 256; -struct MultBVec { - ap_uint<18> row; - float_v8 abvec; -}; -template -inline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A, - const R A_len, R &i_req, R &i_resp) { -#pragma HLS inline - if ((i_req < A_len) & !A.read_addr.full()) { - A.read_addr.try_write(i_req); - ++i_req; - } - if (!fifo_A.full() & !A.read_data.empty()) { - T tmp; - A.read_data.try_read(tmp); - fifo_A.try_write(tmp); - ++i_resp; - } -} -void read_edge_list_ptr( - const int num_ite, const int M, - const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N - const int K, uint64_t edge_list_ptr, tapa::ostream &fifo_edge_list_ptr, - tapa::ostream &PE_inst); -void read_A(uint64_t A, tapa::ostream> &fifo_A, const int A_len, - const int P_N); -void read_B(uint64_t B, tapa::ostream &fifo_B, const int K, - const int P_N); -void read_C(uint64_t C, tapa::ostream &fifo_C, const int M, - const int P_N, tapa::ostream &wrC_inst); -void write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C, - uint64_t C_out); -void FloatvMultConst(const int alpha_u, const int M, const int P_N, - tapa::istream &fifo_in, - tapa::ostream &fifo_out); -void FloatvAddFloatv(tapa::istream &fifo_in0, - tapa::istream &fifo_in1, - tapa::ostream &fifo_out); -/* -void PU2core(ap_uint<18> & addr_c, - float a_val_f, - float b_val_d0_f, - float b_val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH] - ) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - - float c_val_d0_f = tapa::bit_cast(c_val_d0_u); - float c_val_d1_f = tapa::bit_cast(c_val_d1_u); - - c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f; - c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f; - - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} - -void PEcore(ap_uint<14> & addr_b, - ap_uint<18> & addr_c, - ap_uint<32> & a_val_u, - ap_uint<64> local_C[4][URAM_DEPTH], - float local_B[8][WINDOW_SIZE] - ) { -#pragma HLS inline - //if (addr_c != ((ap_uint<18>) 0x3FFFF)) { - if (addr_c[17] == 0) { - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 4; ++i) { - PU2core(addr_c, - a_val_f, - local_B[i*2+0][addr_b], - local_B[i*2+1][addr_b], - local_C[i] - ); - } - } -} -*/ -void PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u, - float local_B[8][WINDOW_SIZE], float_v8 &abv) { -#pragma HLS inline - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 8; ++i) { - abv[i] = a_val_f * local_B[i][addr_b]; - } -} -void PEG_Bmtx( - tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - // tapa::istream> & fifo_A, - tapa::istream> &fifo_A, - tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out, - tapa::ostreams &fifo_B_out, - // to PEG_Cmtx - tapa::ostream &PE_inst_to_Cmtx, - tapa::ostream &fifo_inst_out_to_Cmtx, - tapa::ostreams &fifo_aBvec); -void PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f; - float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f; - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} -void PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec, - ap_uint<64> local_C[4][URAM_DEPTH]) { -#pragma HLS inline - for (int i = 0; i < 4; ++i) { - PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]); - } -} -void PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - tapa::istreams &fifo_aBvec, - tapa::ostream &fifo_C_out); -/* -void PEG(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - tapa::streams fifo_aBvec("fifo_aBvec"); - tapa::stream PE_inst_to_Cmtx("PE_inst_to_Cmtx"); - tapa::stream -fifo_inst_out_to_Cmtx("fifo_inst_out_to_Cmtx"); - - tapa::task() - .invoke(PEG_Bmtx, - PE_inst_in, - fifo_inst_in, - fifo_A, - fifo_B_in, - PE_inst_out, - fifo_inst_out, - fifo_B_out, - // to PEG_Cmtx - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec) - - .invoke(PEG_Cmtx, - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec, - fifo_C_out) - ; -} - -void PEG_c(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0)? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - - const int num_v_init = (M + 63) >> 6; - //const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - - //define local C buffer and pragma to URAM - //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1 -#pragma HLS array_partition complete variable=local_C dim=1 -#pragma HLS array_partition complete variable=local_C dim=2 - -l_rp: - for(int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min=1 max=16 - - //init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min=1 max=800 -#pragma HLS pipeline style=stp II=1 - //for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - //define local B buffer and pragma local B buffer if partition factor > -1 - - //float local_B[8/2][8][WINDOW_SIZE]; - //float local_B[8][WINDOW_SIZE]; - float local_B[4/2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable=local_B latency=2 -#pragma HLS array_partition variable=local_B complete dim=1 -#pragma HLS array_partition variable=local_B complete dim=2 -#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=3 -//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=2 - - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min=1 max=49 - - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i -* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS -pipeline style=stp II = 1 - - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - b_512_x[k] = fifo_B_in[k].read(); - fifo_B_out[k].write(b_512_x[k]); - } - - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m % -2 * 8]; - } - } - } - ++j; - } - } - - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - - computation: - for (int j = start_32; j < end_32; ) { -#pragma HLS loop_tripcount min=1 max=200 -#pragma HLS pipeline style=stp II=1 -#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE - - //ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - - if (a_pes_ready) { - //for (int p = 0; p < 2; ++p) { - for (int p = 0; p < 4; ++p) { - ap_uint<14> a_col; - ap_uint<18> a_row; - ap_uint<32> a_val; - - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - a_col = a(63, 50); - a_row = a(49, 32); - a_val = a(31, 0); - - // PE process - PEcore(a_col, - a_row, - a_val, - local_C[p], - //local_B - local_B[p/2] - ); - } - ++j; - } - } - start_32 = end_32; - } - - //cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min=1 max=1800 -#pragma HLS pipeline style=stp II=1 - ap_uint<32> u_32_d[8]; - - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i>>2]; - u_32_d[2 * d ] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - - switch (c_idx) { //0,2,1,3 - case 0: c_idx = 2; break; - case 1: c_idx = 3; break; - case 2: c_idx = 1; break; - case 3: c_idx = 0; break; - } - - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << -endl; - } - } -} -*/ -void Scatter_1_2(tapa::istream> &fifo_in, - tapa::ostreams, 2> &fifo_out); -void Merger(tapa::istreams &fifo_in, - tapa::ostream &fifo_out); -void black_hole_int(tapa::istream &fifo_in); -void black_hole_float_v16(tapa::istream &fifo_in) { -#pragma HLS disaggregate variable = fifo_in -#pragma HLS interface ap_fifo port = fifo_in._ -#pragma HLS aggregate variable = fifo_in._ bit -#pragma HLS interface ap_fifo port = fifo_in._peek -#pragma HLS aggregate variable = fifo_in._peek bit - void(fifo_in._.empty()); - void(fifo_in._peek.empty()); - - for (;;) { -#pragma HLS pipeline style = stp II = 1 - fifo_in.read(nullptr); - } -} -void Sextans(uint64_t edge_list_ptr, uint64_t edge_list_ch_0, - uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, - uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, - uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, - uint64_t edge_list_ch_7, uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, - uint64_t mat_B_ch_2, uint64_t mat_B_ch_3, uint64_t mat_C_ch_in_0, - uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, - uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, - uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, - uint64_t mat_C_ch_in_7, uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, - uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, - uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, - const int NUM_ITE, const int NUM_A_LEN, const int M, const int K, - const int P_N, const int alpha_u, const int beta_u); diff --git a/benchmarks/tapa_flow/sextans/design/generated/cpp/black_hole_int.cpp b/benchmarks/tapa_flow/sextans/design/generated/cpp/black_hole_int.cpp deleted file mode 100644 index 2f064cb8..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/cpp/black_hole_int.cpp +++ /dev/null @@ -1,418 +0,0 @@ - - -#include - -#include - -#include - -#include - -#include - -#include - -#include -constexpr int NUM_CH_SPARSE = 8; -constexpr int NUM_CH_B = 4; -constexpr int NUM_CH_C = 8; -const int WINDOW_SIZE = 4096; -const int DEP_DIST_LOAD_STORE = 10; -const int B_PARTITION_FACTOR = 4; -const int URAM_DEPTH = 8192; -using float_v16 = tapa::vec_t; -using float_v8 = tapa::vec_t; -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, int beta_u); -//#include "modules.h" -constexpr int FIFO_DEPTH = 2; -constexpr int PEG_PER_A = 512 / 256; -struct MultBVec { - ap_uint<18> row; - float_v8 abvec; -}; -template -inline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A, - const R A_len, R &i_req, R &i_resp) { -#pragma HLS inline - if ((i_req < A_len) & !A.read_addr.full()) { - A.read_addr.try_write(i_req); - ++i_req; - } - if (!fifo_A.full() & !A.read_data.empty()) { - T tmp; - A.read_data.try_read(tmp); - fifo_A.try_write(tmp); - ++i_resp; - } -} -void read_edge_list_ptr( - const int num_ite, const int M, - const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N - const int K, uint64_t edge_list_ptr, tapa::ostream &fifo_edge_list_ptr, - tapa::ostream &PE_inst); -void read_A(uint64_t A, tapa::ostream> &fifo_A, const int A_len, - const int P_N); -void read_B(uint64_t B, tapa::ostream &fifo_B, const int K, - const int P_N); -void read_C(uint64_t C, tapa::ostream &fifo_C, const int M, - const int P_N, tapa::ostream &wrC_inst); -void write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C, - uint64_t C_out); -void FloatvMultConst(const int alpha_u, const int M, const int P_N, - tapa::istream &fifo_in, - tapa::ostream &fifo_out); -void FloatvAddFloatv(tapa::istream &fifo_in0, - tapa::istream &fifo_in1, - tapa::ostream &fifo_out); -/* -void PU2core(ap_uint<18> & addr_c, - float a_val_f, - float b_val_d0_f, - float b_val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH] - ) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - - float c_val_d0_f = tapa::bit_cast(c_val_d0_u); - float c_val_d1_f = tapa::bit_cast(c_val_d1_u); - - c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f; - c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f; - - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} - -void PEcore(ap_uint<14> & addr_b, - ap_uint<18> & addr_c, - ap_uint<32> & a_val_u, - ap_uint<64> local_C[4][URAM_DEPTH], - float local_B[8][WINDOW_SIZE] - ) { -#pragma HLS inline - //if (addr_c != ((ap_uint<18>) 0x3FFFF)) { - if (addr_c[17] == 0) { - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 4; ++i) { - PU2core(addr_c, - a_val_f, - local_B[i*2+0][addr_b], - local_B[i*2+1][addr_b], - local_C[i] - ); - } - } -} -*/ -void PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u, - float local_B[8][WINDOW_SIZE], float_v8 &abv) { -#pragma HLS inline - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 8; ++i) { - abv[i] = a_val_f * local_B[i][addr_b]; - } -} -void PEG_Bmtx( - tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - // tapa::istream> & fifo_A, - tapa::istream> &fifo_A, - tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out, - tapa::ostreams &fifo_B_out, - // to PEG_Cmtx - tapa::ostream &PE_inst_to_Cmtx, - tapa::ostream &fifo_inst_out_to_Cmtx, - tapa::ostreams &fifo_aBvec); -void PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f; - float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f; - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} -void PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec, - ap_uint<64> local_C[4][URAM_DEPTH]) { -#pragma HLS inline - for (int i = 0; i < 4; ++i) { - PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]); - } -} -void PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - tapa::istreams &fifo_aBvec, - tapa::ostream &fifo_C_out); -/* -void PEG(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - tapa::streams fifo_aBvec("fifo_aBvec"); - tapa::stream PE_inst_to_Cmtx("PE_inst_to_Cmtx"); - tapa::stream -fifo_inst_out_to_Cmtx("fifo_inst_out_to_Cmtx"); - - tapa::task() - .invoke(PEG_Bmtx, - PE_inst_in, - fifo_inst_in, - fifo_A, - fifo_B_in, - PE_inst_out, - fifo_inst_out, - fifo_B_out, - // to PEG_Cmtx - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec) - - .invoke(PEG_Cmtx, - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec, - fifo_C_out) - ; -} - -void PEG_c(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0)? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - - const int num_v_init = (M + 63) >> 6; - //const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - - //define local C buffer and pragma to URAM - //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1 -#pragma HLS array_partition complete variable=local_C dim=1 -#pragma HLS array_partition complete variable=local_C dim=2 - -l_rp: - for(int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min=1 max=16 - - //init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min=1 max=800 -#pragma HLS pipeline style=stp II=1 - //for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - //define local B buffer and pragma local B buffer if partition factor > -1 - - //float local_B[8/2][8][WINDOW_SIZE]; - //float local_B[8][WINDOW_SIZE]; - float local_B[4/2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable=local_B latency=2 -#pragma HLS array_partition variable=local_B complete dim=1 -#pragma HLS array_partition variable=local_B complete dim=2 -#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=3 -//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=2 - - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min=1 max=49 - - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i -* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS -pipeline style=stp II = 1 - - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - b_512_x[k] = fifo_B_in[k].read(); - fifo_B_out[k].write(b_512_x[k]); - } - - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m % -2 * 8]; - } - } - } - ++j; - } - } - - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - - computation: - for (int j = start_32; j < end_32; ) { -#pragma HLS loop_tripcount min=1 max=200 -#pragma HLS pipeline style=stp II=1 -#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE - - //ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - - if (a_pes_ready) { - //for (int p = 0; p < 2; ++p) { - for (int p = 0; p < 4; ++p) { - ap_uint<14> a_col; - ap_uint<18> a_row; - ap_uint<32> a_val; - - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - a_col = a(63, 50); - a_row = a(49, 32); - a_val = a(31, 0); - - // PE process - PEcore(a_col, - a_row, - a_val, - local_C[p], - //local_B - local_B[p/2] - ); - } - ++j; - } - } - start_32 = end_32; - } - - //cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min=1 max=1800 -#pragma HLS pipeline style=stp II=1 - ap_uint<32> u_32_d[8]; - - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i>>2]; - u_32_d[2 * d ] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - - switch (c_idx) { //0,2,1,3 - case 0: c_idx = 2; break; - case 1: c_idx = 3; break; - case 2: c_idx = 1; break; - case 3: c_idx = 0; break; - } - - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << -endl; - } - } -} -*/ -void Scatter_1_2(tapa::istream> &fifo_in, - tapa::ostreams, 2> &fifo_out); -void Merger(tapa::istreams &fifo_in, - tapa::ostream &fifo_out); -void black_hole_int(tapa::istream &fifo_in) { -#pragma HLS disaggregate variable = fifo_in -#pragma HLS interface ap_fifo port = fifo_in._ -#pragma HLS aggregate variable = fifo_in._ bit -#pragma HLS interface ap_fifo port = fifo_in._peek -#pragma HLS aggregate variable = fifo_in._peek bit - void(fifo_in._.empty()); - void(fifo_in._peek.empty()); - - for (;;) { -#pragma HLS pipeline style = stp II = 1 - fifo_in.read(nullptr); - } -} -void black_hole_float_v16(tapa::istream &fifo_in); -void Sextans(uint64_t edge_list_ptr, uint64_t edge_list_ch_0, - uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, - uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, - uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, - uint64_t edge_list_ch_7, uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, - uint64_t mat_B_ch_2, uint64_t mat_B_ch_3, uint64_t mat_C_ch_in_0, - uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, - uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, - uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, - uint64_t mat_C_ch_in_7, uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, - uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, - uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, - const int NUM_ITE, const int NUM_A_LEN, const int M, const int K, - const int P_N, const int alpha_u, const int beta_u); diff --git a/benchmarks/tapa_flow/sextans/design/generated/cpp/read_A.cpp b/benchmarks/tapa_flow/sextans/design/generated/cpp/read_A.cpp deleted file mode 100644 index 0d6d0035..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/cpp/read_A.cpp +++ /dev/null @@ -1,452 +0,0 @@ - - -#include - -#include - -#include - -#include - -#include - -#include - -#include -constexpr int NUM_CH_SPARSE = 8; -constexpr int NUM_CH_B = 4; -constexpr int NUM_CH_C = 8; -const int WINDOW_SIZE = 4096; -const int DEP_DIST_LOAD_STORE = 10; -const int B_PARTITION_FACTOR = 4; -const int URAM_DEPTH = 8192; -using float_v16 = tapa::vec_t; -using float_v8 = tapa::vec_t; -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, int beta_u); -//#include "modules.h" -constexpr int FIFO_DEPTH = 2; -constexpr int PEG_PER_A = 512 / 256; -struct MultBVec { - ap_uint<18> row; - float_v8 abvec; -}; -template -inline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A, - const R A_len, R &i_req, R &i_resp) { -#pragma HLS inline - if ((i_req < A_len) & !A.read_addr.full()) { - A.read_addr.try_write(i_req); - ++i_req; - } - if (!fifo_A.full() & !A.read_data.empty()) { - T tmp; - A.read_data.try_read(tmp); - fifo_A.try_write(tmp); - ++i_resp; - } -} -void read_edge_list_ptr( - const int num_ite, const int M, - const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N - const int K, uint64_t edge_list_ptr, tapa::ostream &fifo_edge_list_ptr, - tapa::ostream &PE_inst); -void read_A(tapa::async_mmap> &A, - tapa::ostream> &fifo_A, const int A_len, - const int P_N) { -#pragma HLS disaggregate variable = A -#pragma HLS interface ap_fifo port = A.read_addr._ -#pragma HLS aggregate variable = A.read_addr._ bit -#pragma HLS interface ap_fifo port = A.read_data._ -#pragma HLS aggregate variable = A.read_data._ bit -#pragma HLS interface ap_fifo port = A.write_addr._ -#pragma HLS aggregate variable = A.write_addr._ bit -#pragma HLS interface ap_fifo port = A.write_data._ -#pragma HLS aggregate variable = A.write_data._ bit -#pragma HLS interface ap_fifo port = A.write_resp._ -#pragma HLS aggregate variable = A.write_resp._ bit -#pragma HLS disaggregate variable = A.read_data -#pragma HLS interface ap_fifo port = A.read_data._peek -#pragma HLS aggregate variable = A.read_data._peek bit -#pragma HLS disaggregate variable = A.write_resp -#pragma HLS interface ap_fifo port = A.write_resp._peek -#pragma HLS aggregate variable = A.write_resp._peek bit - void(A.read_addr._.full()); - void(A.read_data._.empty()); - void(A.read_data._peek.empty()); - void(A.write_addr._.full()); - void(A.write_data._.full()); - void(A.write_resp._.empty()); - void(A.write_resp._peek.empty()); - -#pragma HLS disaggregate variable = fifo_A -#pragma HLS interface ap_fifo port = fifo_A._ -#pragma HLS aggregate variable = fifo_A._ bit - void(fifo_A._.full()); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); -l_rp: - for (int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min = 1 max = 16 - rd_A: - for (int i_req = 0, i_resp = 0; i_resp < A_len;) { -#pragma HLS loop_tripcount min = 1 max = 10000 -#pragma HLS pipeline style = stp II = 1 - async_read(A, fifo_A, A_len, i_req, i_resp); - } - } -} -void read_B(uint64_t B, tapa::ostream &fifo_B, const int K, - const int P_N); -void read_C(uint64_t C, tapa::ostream &fifo_C, const int M, - const int P_N, tapa::ostream &wrC_inst); -void write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C, - uint64_t C_out); -void FloatvMultConst(const int alpha_u, const int M, const int P_N, - tapa::istream &fifo_in, - tapa::ostream &fifo_out); -void FloatvAddFloatv(tapa::istream &fifo_in0, - tapa::istream &fifo_in1, - tapa::ostream &fifo_out); -/* -void PU2core(ap_uint<18> & addr_c, - float a_val_f, - float b_val_d0_f, - float b_val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH] - ) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - - float c_val_d0_f = tapa::bit_cast(c_val_d0_u); - float c_val_d1_f = tapa::bit_cast(c_val_d1_u); - - c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f; - c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f; - - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} - -void PEcore(ap_uint<14> & addr_b, - ap_uint<18> & addr_c, - ap_uint<32> & a_val_u, - ap_uint<64> local_C[4][URAM_DEPTH], - float local_B[8][WINDOW_SIZE] - ) { -#pragma HLS inline - //if (addr_c != ((ap_uint<18>) 0x3FFFF)) { - if (addr_c[17] == 0) { - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 4; ++i) { - PU2core(addr_c, - a_val_f, - local_B[i*2+0][addr_b], - local_B[i*2+1][addr_b], - local_C[i] - ); - } - } -} -*/ -void PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u, - float local_B[8][WINDOW_SIZE], float_v8 &abv) { -#pragma HLS inline - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 8; ++i) { - abv[i] = a_val_f * local_B[i][addr_b]; - } -} -void PEG_Bmtx( - tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - // tapa::istream> & fifo_A, - tapa::istream> &fifo_A, - tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out, - tapa::ostreams &fifo_B_out, - // to PEG_Cmtx - tapa::ostream &PE_inst_to_Cmtx, - tapa::ostream &fifo_inst_out_to_Cmtx, - tapa::ostreams &fifo_aBvec); -void PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f; - float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f; - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} -void PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec, - ap_uint<64> local_C[4][URAM_DEPTH]) { -#pragma HLS inline - for (int i = 0; i < 4; ++i) { - PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]); - } -} -void PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - tapa::istreams &fifo_aBvec, - tapa::ostream &fifo_C_out); -/* -void PEG(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - tapa::streams fifo_aBvec("fifo_aBvec"); - tapa::stream PE_inst_to_Cmtx("PE_inst_to_Cmtx"); - tapa::stream -fifo_inst_out_to_Cmtx("fifo_inst_out_to_Cmtx"); - - tapa::task() - .invoke(PEG_Bmtx, - PE_inst_in, - fifo_inst_in, - fifo_A, - fifo_B_in, - PE_inst_out, - fifo_inst_out, - fifo_B_out, - // to PEG_Cmtx - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec) - - .invoke(PEG_Cmtx, - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec, - fifo_C_out) - ; -} - -void PEG_c(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0)? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - - const int num_v_init = (M + 63) >> 6; - //const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - - //define local C buffer and pragma to URAM - //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1 -#pragma HLS array_partition complete variable=local_C dim=1 -#pragma HLS array_partition complete variable=local_C dim=2 - -l_rp: - for(int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min=1 max=16 - - //init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min=1 max=800 -#pragma HLS pipeline style=stp II=1 - //for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - //define local B buffer and pragma local B buffer if partition factor > -1 - - //float local_B[8/2][8][WINDOW_SIZE]; - //float local_B[8][WINDOW_SIZE]; - float local_B[4/2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable=local_B latency=2 -#pragma HLS array_partition variable=local_B complete dim=1 -#pragma HLS array_partition variable=local_B complete dim=2 -#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=3 -//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=2 - - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min=1 max=49 - - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i -* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS -pipeline style=stp II = 1 - - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - b_512_x[k] = fifo_B_in[k].read(); - fifo_B_out[k].write(b_512_x[k]); - } - - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m % -2 * 8]; - } - } - } - ++j; - } - } - - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - - computation: - for (int j = start_32; j < end_32; ) { -#pragma HLS loop_tripcount min=1 max=200 -#pragma HLS pipeline style=stp II=1 -#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE - - //ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - - if (a_pes_ready) { - //for (int p = 0; p < 2; ++p) { - for (int p = 0; p < 4; ++p) { - ap_uint<14> a_col; - ap_uint<18> a_row; - ap_uint<32> a_val; - - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - a_col = a(63, 50); - a_row = a(49, 32); - a_val = a(31, 0); - - // PE process - PEcore(a_col, - a_row, - a_val, - local_C[p], - //local_B - local_B[p/2] - ); - } - ++j; - } - } - start_32 = end_32; - } - - //cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min=1 max=1800 -#pragma HLS pipeline style=stp II=1 - ap_uint<32> u_32_d[8]; - - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i>>2]; - u_32_d[2 * d ] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - - switch (c_idx) { //0,2,1,3 - case 0: c_idx = 2; break; - case 1: c_idx = 3; break; - case 2: c_idx = 1; break; - case 3: c_idx = 0; break; - } - - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << -endl; - } - } -} -*/ -void Scatter_1_2(tapa::istream> &fifo_in, - tapa::ostreams, 2> &fifo_out); -void Merger(tapa::istreams &fifo_in, - tapa::ostream &fifo_out); -void black_hole_int(tapa::istream &fifo_in); -void black_hole_float_v16(tapa::istream &fifo_in); -void Sextans(uint64_t edge_list_ptr, uint64_t edge_list_ch_0, - uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, - uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, - uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, - uint64_t edge_list_ch_7, uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, - uint64_t mat_B_ch_2, uint64_t mat_B_ch_3, uint64_t mat_C_ch_in_0, - uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, - uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, - uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, - uint64_t mat_C_ch_in_7, uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, - uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, - uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, - const int NUM_ITE, const int NUM_A_LEN, const int M, const int K, - const int P_N, const int alpha_u, const int beta_u); diff --git a/benchmarks/tapa_flow/sextans/design/generated/cpp/read_B.cpp b/benchmarks/tapa_flow/sextans/design/generated/cpp/read_B.cpp deleted file mode 100644 index df81de6b..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/cpp/read_B.cpp +++ /dev/null @@ -1,451 +0,0 @@ - - -#include - -#include - -#include - -#include - -#include - -#include - -#include -constexpr int NUM_CH_SPARSE = 8; -constexpr int NUM_CH_B = 4; -constexpr int NUM_CH_C = 8; -const int WINDOW_SIZE = 4096; -const int DEP_DIST_LOAD_STORE = 10; -const int B_PARTITION_FACTOR = 4; -const int URAM_DEPTH = 8192; -using float_v16 = tapa::vec_t; -using float_v8 = tapa::vec_t; -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, int beta_u); -//#include "modules.h" -constexpr int FIFO_DEPTH = 2; -constexpr int PEG_PER_A = 512 / 256; -struct MultBVec { - ap_uint<18> row; - float_v8 abvec; -}; -template -inline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A, - const R A_len, R &i_req, R &i_resp) { -#pragma HLS inline - if ((i_req < A_len) & !A.read_addr.full()) { - A.read_addr.try_write(i_req); - ++i_req; - } - if (!fifo_A.full() & !A.read_data.empty()) { - T tmp; - A.read_data.try_read(tmp); - fifo_A.try_write(tmp); - ++i_resp; - } -} -void read_edge_list_ptr( - const int num_ite, const int M, - const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N - const int K, uint64_t edge_list_ptr, tapa::ostream &fifo_edge_list_ptr, - tapa::ostream &PE_inst); -void read_A(uint64_t A, tapa::ostream> &fifo_A, const int A_len, - const int P_N); -void read_B(tapa::async_mmap &B, tapa::ostream &fifo_B, - const int K, const int P_N) { -#pragma HLS disaggregate variable = B -#pragma HLS interface ap_fifo port = B.read_addr._ -#pragma HLS aggregate variable = B.read_addr._ bit -#pragma HLS interface ap_fifo port = B.read_data._ -#pragma HLS aggregate variable = B.read_data._ bit -#pragma HLS interface ap_fifo port = B.write_addr._ -#pragma HLS aggregate variable = B.write_addr._ bit -#pragma HLS interface ap_fifo port = B.write_data._ -#pragma HLS aggregate variable = B.write_data._ bit -#pragma HLS interface ap_fifo port = B.write_resp._ -#pragma HLS aggregate variable = B.write_resp._ bit -#pragma HLS disaggregate variable = B.read_data -#pragma HLS interface ap_fifo port = B.read_data._peek -#pragma HLS aggregate variable = B.read_data._peek bit -#pragma HLS disaggregate variable = B.write_resp -#pragma HLS interface ap_fifo port = B.write_resp._peek -#pragma HLS aggregate variable = B.write_resp._peek bit - void(B.read_addr._.full()); - void(B.read_data._.empty()); - void(B.read_data._peek.empty()); - void(B.write_addr._.full()); - void(B.write_data._.full()); - void(B.write_resp._.empty()); - void(B.write_resp._peek.empty()); - -#pragma HLS disaggregate variable = fifo_B -#pragma HLS interface ap_fifo port = fifo_B._ -#pragma HLS aggregate variable = fifo_B._ bit - void(fifo_B._.full()); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int N = P_N & 0xFFFF; - const int num_ite_B = ((K + 7) >> 3) * ((N + 7) >> 3); -l_rp: - for (int rp = 0; rp < rp_time; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min = 1 max = 16 - rd_B: - for (int i_req = 0, i_resp = 0; i_resp < num_ite_B;) { -#pragma HLS loop_tripcount min = 1 max = 500000 -#pragma HLS pipeline style = stp II = 1 - async_read(B, fifo_B, num_ite_B, i_req, i_resp); - } - } -} -void read_C(uint64_t C, tapa::ostream &fifo_C, const int M, - const int P_N, tapa::ostream &wrC_inst); -void write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C, - uint64_t C_out); -void FloatvMultConst(const int alpha_u, const int M, const int P_N, - tapa::istream &fifo_in, - tapa::ostream &fifo_out); -void FloatvAddFloatv(tapa::istream &fifo_in0, - tapa::istream &fifo_in1, - tapa::ostream &fifo_out); -/* -void PU2core(ap_uint<18> & addr_c, - float a_val_f, - float b_val_d0_f, - float b_val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH] - ) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - - float c_val_d0_f = tapa::bit_cast(c_val_d0_u); - float c_val_d1_f = tapa::bit_cast(c_val_d1_u); - - c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f; - c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f; - - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} - -void PEcore(ap_uint<14> & addr_b, - ap_uint<18> & addr_c, - ap_uint<32> & a_val_u, - ap_uint<64> local_C[4][URAM_DEPTH], - float local_B[8][WINDOW_SIZE] - ) { -#pragma HLS inline - //if (addr_c != ((ap_uint<18>) 0x3FFFF)) { - if (addr_c[17] == 0) { - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 4; ++i) { - PU2core(addr_c, - a_val_f, - local_B[i*2+0][addr_b], - local_B[i*2+1][addr_b], - local_C[i] - ); - } - } -} -*/ -void PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u, - float local_B[8][WINDOW_SIZE], float_v8 &abv) { -#pragma HLS inline - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 8; ++i) { - abv[i] = a_val_f * local_B[i][addr_b]; - } -} -void PEG_Bmtx( - tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - // tapa::istream> & fifo_A, - tapa::istream> &fifo_A, - tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out, - tapa::ostreams &fifo_B_out, - // to PEG_Cmtx - tapa::ostream &PE_inst_to_Cmtx, - tapa::ostream &fifo_inst_out_to_Cmtx, - tapa::ostreams &fifo_aBvec); -void PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f; - float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f; - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} -void PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec, - ap_uint<64> local_C[4][URAM_DEPTH]) { -#pragma HLS inline - for (int i = 0; i < 4; ++i) { - PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]); - } -} -void PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - tapa::istreams &fifo_aBvec, - tapa::ostream &fifo_C_out); -/* -void PEG(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - tapa::streams fifo_aBvec("fifo_aBvec"); - tapa::stream PE_inst_to_Cmtx("PE_inst_to_Cmtx"); - tapa::stream -fifo_inst_out_to_Cmtx("fifo_inst_out_to_Cmtx"); - - tapa::task() - .invoke(PEG_Bmtx, - PE_inst_in, - fifo_inst_in, - fifo_A, - fifo_B_in, - PE_inst_out, - fifo_inst_out, - fifo_B_out, - // to PEG_Cmtx - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec) - - .invoke(PEG_Cmtx, - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec, - fifo_C_out) - ; -} - -void PEG_c(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0)? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - - const int num_v_init = (M + 63) >> 6; - //const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - - //define local C buffer and pragma to URAM - //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1 -#pragma HLS array_partition complete variable=local_C dim=1 -#pragma HLS array_partition complete variable=local_C dim=2 - -l_rp: - for(int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min=1 max=16 - - //init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min=1 max=800 -#pragma HLS pipeline style=stp II=1 - //for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - //define local B buffer and pragma local B buffer if partition factor > -1 - - //float local_B[8/2][8][WINDOW_SIZE]; - //float local_B[8][WINDOW_SIZE]; - float local_B[4/2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable=local_B latency=2 -#pragma HLS array_partition variable=local_B complete dim=1 -#pragma HLS array_partition variable=local_B complete dim=2 -#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=3 -//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=2 - - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min=1 max=49 - - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i -* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS -pipeline style=stp II = 1 - - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - b_512_x[k] = fifo_B_in[k].read(); - fifo_B_out[k].write(b_512_x[k]); - } - - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m % -2 * 8]; - } - } - } - ++j; - } - } - - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - - computation: - for (int j = start_32; j < end_32; ) { -#pragma HLS loop_tripcount min=1 max=200 -#pragma HLS pipeline style=stp II=1 -#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE - - //ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - - if (a_pes_ready) { - //for (int p = 0; p < 2; ++p) { - for (int p = 0; p < 4; ++p) { - ap_uint<14> a_col; - ap_uint<18> a_row; - ap_uint<32> a_val; - - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - a_col = a(63, 50); - a_row = a(49, 32); - a_val = a(31, 0); - - // PE process - PEcore(a_col, - a_row, - a_val, - local_C[p], - //local_B - local_B[p/2] - ); - } - ++j; - } - } - start_32 = end_32; - } - - //cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min=1 max=1800 -#pragma HLS pipeline style=stp II=1 - ap_uint<32> u_32_d[8]; - - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i>>2]; - u_32_d[2 * d ] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - - switch (c_idx) { //0,2,1,3 - case 0: c_idx = 2; break; - case 1: c_idx = 3; break; - case 2: c_idx = 1; break; - case 3: c_idx = 0; break; - } - - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << -endl; - } - } -} -*/ -void Scatter_1_2(tapa::istream> &fifo_in, - tapa::ostreams, 2> &fifo_out); -void Merger(tapa::istreams &fifo_in, - tapa::ostream &fifo_out); -void black_hole_int(tapa::istream &fifo_in); -void black_hole_float_v16(tapa::istream &fifo_in); -void Sextans(uint64_t edge_list_ptr, uint64_t edge_list_ch_0, - uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, - uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, - uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, - uint64_t edge_list_ch_7, uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, - uint64_t mat_B_ch_2, uint64_t mat_B_ch_3, uint64_t mat_C_ch_in_0, - uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, - uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, - uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, - uint64_t mat_C_ch_in_7, uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, - uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, - uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, - const int NUM_ITE, const int NUM_A_LEN, const int M, const int K, - const int P_N, const int alpha_u, const int beta_u); diff --git a/benchmarks/tapa_flow/sextans/design/generated/cpp/read_C.cpp b/benchmarks/tapa_flow/sextans/design/generated/cpp/read_C.cpp deleted file mode 100644 index 6d06f775..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/cpp/read_C.cpp +++ /dev/null @@ -1,458 +0,0 @@ - - -#include - -#include - -#include - -#include - -#include - -#include - -#include -constexpr int NUM_CH_SPARSE = 8; -constexpr int NUM_CH_B = 4; -constexpr int NUM_CH_C = 8; -const int WINDOW_SIZE = 4096; -const int DEP_DIST_LOAD_STORE = 10; -const int B_PARTITION_FACTOR = 4; -const int URAM_DEPTH = 8192; -using float_v16 = tapa::vec_t; -using float_v8 = tapa::vec_t; -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, int beta_u); -//#include "modules.h" -constexpr int FIFO_DEPTH = 2; -constexpr int PEG_PER_A = 512 / 256; -struct MultBVec { - ap_uint<18> row; - float_v8 abvec; -}; -template -inline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A, - const R A_len, R &i_req, R &i_resp) { -#pragma HLS inline - if ((i_req < A_len) & !A.read_addr.full()) { - A.read_addr.try_write(i_req); - ++i_req; - } - if (!fifo_A.full() & !A.read_data.empty()) { - T tmp; - A.read_data.try_read(tmp); - fifo_A.try_write(tmp); - ++i_resp; - } -} -void read_edge_list_ptr( - const int num_ite, const int M, - const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N - const int K, uint64_t edge_list_ptr, tapa::ostream &fifo_edge_list_ptr, - tapa::ostream &PE_inst); -void read_A(uint64_t A, tapa::ostream> &fifo_A, const int A_len, - const int P_N); -void read_B(uint64_t B, tapa::ostream &fifo_B, const int K, - const int P_N); -void read_C(tapa::async_mmap &C, tapa::ostream &fifo_C, - const int M, const int P_N, tapa::ostream &wrC_inst) { -#pragma HLS disaggregate variable = C -#pragma HLS interface ap_fifo port = C.read_addr._ -#pragma HLS aggregate variable = C.read_addr._ bit -#pragma HLS interface ap_fifo port = C.read_data._ -#pragma HLS aggregate variable = C.read_data._ bit -#pragma HLS interface ap_fifo port = C.write_addr._ -#pragma HLS aggregate variable = C.write_addr._ bit -#pragma HLS interface ap_fifo port = C.write_data._ -#pragma HLS aggregate variable = C.write_data._ bit -#pragma HLS interface ap_fifo port = C.write_resp._ -#pragma HLS aggregate variable = C.write_resp._ bit -#pragma HLS disaggregate variable = C.read_data -#pragma HLS interface ap_fifo port = C.read_data._peek -#pragma HLS aggregate variable = C.read_data._peek bit -#pragma HLS disaggregate variable = C.write_resp -#pragma HLS interface ap_fifo port = C.write_resp._peek -#pragma HLS aggregate variable = C.write_resp._peek bit - void(C.read_addr._.full()); - void(C.read_data._.empty()); - void(C.read_data._peek.empty()); - void(C.write_addr._.full()); - void(C.write_data._.full()); - void(C.write_resp._.empty()); - void(C.write_resp._peek.empty()); - -#pragma HLS disaggregate variable = fifo_C -#pragma HLS interface ap_fifo port = fifo_C._ -#pragma HLS aggregate variable = fifo_C._ bit - void(fifo_C._.full()); - -#pragma HLS disaggregate variable = wrC_inst -#pragma HLS interface ap_fifo port = wrC_inst._ -#pragma HLS aggregate variable = wrC_inst._ bit - void(wrC_inst._.full()); - - wrC_inst.write(M); - wrC_inst.write(P_N); - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int N = P_N & 0xFFFF; - const int num_ite_C = ((M + 15) >> 4) * ((N + 7) >> 3); -l_rp: - for (int rp = 0; rp < rp_time; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min = 1 max = 16 - rd_C: - for (int i_req = 0, i_resp = 0; i_resp < num_ite_C;) { -#pragma HLS loop_tripcount min = 1 max = 500000 -#pragma HLS pipeline style = stp II = 1 - async_read(C, fifo_C, num_ite_C, i_req, i_resp); - } - } -} -void write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C, - uint64_t C_out); -void FloatvMultConst(const int alpha_u, const int M, const int P_N, - tapa::istream &fifo_in, - tapa::ostream &fifo_out); -void FloatvAddFloatv(tapa::istream &fifo_in0, - tapa::istream &fifo_in1, - tapa::ostream &fifo_out); -/* -void PU2core(ap_uint<18> & addr_c, - float a_val_f, - float b_val_d0_f, - float b_val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH] - ) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - - float c_val_d0_f = tapa::bit_cast(c_val_d0_u); - float c_val_d1_f = tapa::bit_cast(c_val_d1_u); - - c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f; - c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f; - - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} - -void PEcore(ap_uint<14> & addr_b, - ap_uint<18> & addr_c, - ap_uint<32> & a_val_u, - ap_uint<64> local_C[4][URAM_DEPTH], - float local_B[8][WINDOW_SIZE] - ) { -#pragma HLS inline - //if (addr_c != ((ap_uint<18>) 0x3FFFF)) { - if (addr_c[17] == 0) { - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 4; ++i) { - PU2core(addr_c, - a_val_f, - local_B[i*2+0][addr_b], - local_B[i*2+1][addr_b], - local_C[i] - ); - } - } -} -*/ -void PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u, - float local_B[8][WINDOW_SIZE], float_v8 &abv) { -#pragma HLS inline - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 8; ++i) { - abv[i] = a_val_f * local_B[i][addr_b]; - } -} -void PEG_Bmtx( - tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - // tapa::istream> & fifo_A, - tapa::istream> &fifo_A, - tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out, - tapa::ostreams &fifo_B_out, - // to PEG_Cmtx - tapa::ostream &PE_inst_to_Cmtx, - tapa::ostream &fifo_inst_out_to_Cmtx, - tapa::ostreams &fifo_aBvec); -void PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f; - float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f; - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} -void PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec, - ap_uint<64> local_C[4][URAM_DEPTH]) { -#pragma HLS inline - for (int i = 0; i < 4; ++i) { - PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]); - } -} -void PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - tapa::istreams &fifo_aBvec, - tapa::ostream &fifo_C_out); -/* -void PEG(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - tapa::streams fifo_aBvec("fifo_aBvec"); - tapa::stream PE_inst_to_Cmtx("PE_inst_to_Cmtx"); - tapa::stream -fifo_inst_out_to_Cmtx("fifo_inst_out_to_Cmtx"); - - tapa::task() - .invoke(PEG_Bmtx, - PE_inst_in, - fifo_inst_in, - fifo_A, - fifo_B_in, - PE_inst_out, - fifo_inst_out, - fifo_B_out, - // to PEG_Cmtx - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec) - - .invoke(PEG_Cmtx, - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec, - fifo_C_out) - ; -} - -void PEG_c(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0)? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - - const int num_v_init = (M + 63) >> 6; - //const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - - //define local C buffer and pragma to URAM - //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1 -#pragma HLS array_partition complete variable=local_C dim=1 -#pragma HLS array_partition complete variable=local_C dim=2 - -l_rp: - for(int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min=1 max=16 - - //init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min=1 max=800 -#pragma HLS pipeline style=stp II=1 - //for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - //define local B buffer and pragma local B buffer if partition factor > -1 - - //float local_B[8/2][8][WINDOW_SIZE]; - //float local_B[8][WINDOW_SIZE]; - float local_B[4/2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable=local_B latency=2 -#pragma HLS array_partition variable=local_B complete dim=1 -#pragma HLS array_partition variable=local_B complete dim=2 -#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=3 -//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=2 - - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min=1 max=49 - - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i -* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS -pipeline style=stp II = 1 - - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - b_512_x[k] = fifo_B_in[k].read(); - fifo_B_out[k].write(b_512_x[k]); - } - - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m % -2 * 8]; - } - } - } - ++j; - } - } - - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - - computation: - for (int j = start_32; j < end_32; ) { -#pragma HLS loop_tripcount min=1 max=200 -#pragma HLS pipeline style=stp II=1 -#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE - - //ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - - if (a_pes_ready) { - //for (int p = 0; p < 2; ++p) { - for (int p = 0; p < 4; ++p) { - ap_uint<14> a_col; - ap_uint<18> a_row; - ap_uint<32> a_val; - - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - a_col = a(63, 50); - a_row = a(49, 32); - a_val = a(31, 0); - - // PE process - PEcore(a_col, - a_row, - a_val, - local_C[p], - //local_B - local_B[p/2] - ); - } - ++j; - } - } - start_32 = end_32; - } - - //cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min=1 max=1800 -#pragma HLS pipeline style=stp II=1 - ap_uint<32> u_32_d[8]; - - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i>>2]; - u_32_d[2 * d ] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - - switch (c_idx) { //0,2,1,3 - case 0: c_idx = 2; break; - case 1: c_idx = 3; break; - case 2: c_idx = 1; break; - case 3: c_idx = 0; break; - } - - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << -endl; - } - } -} -*/ -void Scatter_1_2(tapa::istream> &fifo_in, - tapa::ostreams, 2> &fifo_out); -void Merger(tapa::istreams &fifo_in, - tapa::ostream &fifo_out); -void black_hole_int(tapa::istream &fifo_in); -void black_hole_float_v16(tapa::istream &fifo_in); -void Sextans(uint64_t edge_list_ptr, uint64_t edge_list_ch_0, - uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, - uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, - uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, - uint64_t edge_list_ch_7, uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, - uint64_t mat_B_ch_2, uint64_t mat_B_ch_3, uint64_t mat_C_ch_in_0, - uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, - uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, - uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, - uint64_t mat_C_ch_in_7, uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, - uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, - uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, - const int NUM_ITE, const int NUM_A_LEN, const int M, const int K, - const int P_N, const int alpha_u, const int beta_u); diff --git a/benchmarks/tapa_flow/sextans/design/generated/cpp/read_edge_list_ptr.cpp b/benchmarks/tapa_flow/sextans/design/generated/cpp/read_edge_list_ptr.cpp deleted file mode 100644 index 84e841a4..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/cpp/read_edge_list_ptr.cpp +++ /dev/null @@ -1,463 +0,0 @@ - - -#include - -#include - -#include - -#include - -#include - -#include - -#include -constexpr int NUM_CH_SPARSE = 8; -constexpr int NUM_CH_B = 4; -constexpr int NUM_CH_C = 8; -const int WINDOW_SIZE = 4096; -const int DEP_DIST_LOAD_STORE = 10; -const int B_PARTITION_FACTOR = 4; -const int URAM_DEPTH = 8192; -using float_v16 = tapa::vec_t; -using float_v8 = tapa::vec_t; -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, int beta_u); -//#include "modules.h" -constexpr int FIFO_DEPTH = 2; -constexpr int PEG_PER_A = 512 / 256; -struct MultBVec { - ap_uint<18> row; - float_v8 abvec; -}; -template -inline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A, - const R A_len, R &i_req, R &i_resp) { -#pragma HLS inline - if ((i_req < A_len) & !A.read_addr.full()) { - A.read_addr.try_write(i_req); - ++i_req; - } - if (!fifo_A.full() & !A.read_data.empty()) { - T tmp; - A.read_data.try_read(tmp); - fifo_A.try_write(tmp); - ++i_resp; - } -} -void read_edge_list_ptr( - const int num_ite, const int M, - const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N - const int K, tapa::async_mmap &edge_list_ptr, - tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) { - -#pragma HLS disaggregate variable = edge_list_ptr -#pragma HLS interface ap_fifo port = edge_list_ptr.read_addr._ -#pragma HLS aggregate variable = edge_list_ptr.read_addr._ bit -#pragma HLS interface ap_fifo port = edge_list_ptr.read_data._ -#pragma HLS aggregate variable = edge_list_ptr.read_data._ bit -#pragma HLS interface ap_fifo port = edge_list_ptr.write_addr._ -#pragma HLS aggregate variable = edge_list_ptr.write_addr._ bit -#pragma HLS interface ap_fifo port = edge_list_ptr.write_data._ -#pragma HLS aggregate variable = edge_list_ptr.write_data._ bit -#pragma HLS interface ap_fifo port = edge_list_ptr.write_resp._ -#pragma HLS aggregate variable = edge_list_ptr.write_resp._ bit -#pragma HLS disaggregate variable = edge_list_ptr.read_data -#pragma HLS interface ap_fifo port = edge_list_ptr.read_data._peek -#pragma HLS aggregate variable = edge_list_ptr.read_data._peek bit -#pragma HLS disaggregate variable = edge_list_ptr.write_resp -#pragma HLS interface ap_fifo port = edge_list_ptr.write_resp._peek -#pragma HLS aggregate variable = edge_list_ptr.write_resp._peek bit - void(edge_list_ptr.read_addr._.full()); - void(edge_list_ptr.read_data._.empty()); - void(edge_list_ptr.read_data._peek.empty()); - void(edge_list_ptr.write_addr._.full()); - void(edge_list_ptr.write_data._.full()); - void(edge_list_ptr.write_resp._.empty()); - void(edge_list_ptr.write_resp._peek.empty()); - -#pragma HLS disaggregate variable = fifo_edge_list_ptr -#pragma HLS interface ap_fifo port = fifo_edge_list_ptr._ -#pragma HLS aggregate variable = fifo_edge_list_ptr._ bit - void(fifo_edge_list_ptr._.full()); - -#pragma HLS disaggregate variable = PE_inst -#pragma HLS interface ap_fifo port = PE_inst._ -#pragma HLS aggregate variable = PE_inst._ bit - void(PE_inst._.full()); - - PE_inst.write(num_ite); - PE_inst.write(M); - PE_inst.write(P_N); - PE_inst.write(K); - const int N = P_N & 0xFFFF; - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int num_ite_plus1 = num_ite + 1; - const int rp_time_N = rp_time * ((N + 7) >> 3); -l_rp: - for (int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min = 1 max = 16 - rd_ptr: - for (int i_req = 0, i_resp = 0; i_resp < num_ite_plus1;) { -#pragma HLS loop_tripcount min = 1 max = 800 -#pragma HLS pipeline style = stp II = 1 - async_read(edge_list_ptr, fifo_edge_list_ptr, num_ite_plus1, i_req, - i_resp); - } - } -} -void read_A(uint64_t A, tapa::ostream> &fifo_A, const int A_len, - const int P_N); -void read_B(uint64_t B, tapa::ostream &fifo_B, const int K, - const int P_N); -void read_C(uint64_t C, tapa::ostream &fifo_C, const int M, - const int P_N, tapa::ostream &wrC_inst); -void write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C, - uint64_t C_out); -void FloatvMultConst(const int alpha_u, const int M, const int P_N, - tapa::istream &fifo_in, - tapa::ostream &fifo_out); -void FloatvAddFloatv(tapa::istream &fifo_in0, - tapa::istream &fifo_in1, - tapa::ostream &fifo_out); -/* -void PU2core(ap_uint<18> & addr_c, - float a_val_f, - float b_val_d0_f, - float b_val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH] - ) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - - float c_val_d0_f = tapa::bit_cast(c_val_d0_u); - float c_val_d1_f = tapa::bit_cast(c_val_d1_u); - - c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f; - c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f; - - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} - -void PEcore(ap_uint<14> & addr_b, - ap_uint<18> & addr_c, - ap_uint<32> & a_val_u, - ap_uint<64> local_C[4][URAM_DEPTH], - float local_B[8][WINDOW_SIZE] - ) { -#pragma HLS inline - //if (addr_c != ((ap_uint<18>) 0x3FFFF)) { - if (addr_c[17] == 0) { - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 4; ++i) { - PU2core(addr_c, - a_val_f, - local_B[i*2+0][addr_b], - local_B[i*2+1][addr_b], - local_C[i] - ); - } - } -} -*/ -void PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u, - float local_B[8][WINDOW_SIZE], float_v8 &abv) { -#pragma HLS inline - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 8; ++i) { - abv[i] = a_val_f * local_B[i][addr_b]; - } -} -void PEG_Bmtx( - tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - // tapa::istream> & fifo_A, - tapa::istream> &fifo_A, - tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out, - tapa::ostreams &fifo_B_out, - // to PEG_Cmtx - tapa::ostream &PE_inst_to_Cmtx, - tapa::ostream &fifo_inst_out_to_Cmtx, - tapa::ostreams &fifo_aBvec); -void PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f; - float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f; - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} -void PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec, - ap_uint<64> local_C[4][URAM_DEPTH]) { -#pragma HLS inline - for (int i = 0; i < 4; ++i) { - PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]); - } -} -void PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - tapa::istreams &fifo_aBvec, - tapa::ostream &fifo_C_out); -/* -void PEG(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - tapa::streams fifo_aBvec("fifo_aBvec"); - tapa::stream PE_inst_to_Cmtx("PE_inst_to_Cmtx"); - tapa::stream -fifo_inst_out_to_Cmtx("fifo_inst_out_to_Cmtx"); - - tapa::task() - .invoke(PEG_Bmtx, - PE_inst_in, - fifo_inst_in, - fifo_A, - fifo_B_in, - PE_inst_out, - fifo_inst_out, - fifo_B_out, - // to PEG_Cmtx - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec) - - .invoke(PEG_Cmtx, - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec, - fifo_C_out) - ; -} - -void PEG_c(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0)? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - - const int num_v_init = (M + 63) >> 6; - //const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - - //define local C buffer and pragma to URAM - //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1 -#pragma HLS array_partition complete variable=local_C dim=1 -#pragma HLS array_partition complete variable=local_C dim=2 - -l_rp: - for(int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min=1 max=16 - - //init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min=1 max=800 -#pragma HLS pipeline style=stp II=1 - //for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - //define local B buffer and pragma local B buffer if partition factor > -1 - - //float local_B[8/2][8][WINDOW_SIZE]; - //float local_B[8][WINDOW_SIZE]; - float local_B[4/2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable=local_B latency=2 -#pragma HLS array_partition variable=local_B complete dim=1 -#pragma HLS array_partition variable=local_B complete dim=2 -#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=3 -//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=2 - - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min=1 max=49 - - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i -* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS -pipeline style=stp II = 1 - - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - b_512_x[k] = fifo_B_in[k].read(); - fifo_B_out[k].write(b_512_x[k]); - } - - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m % -2 * 8]; - } - } - } - ++j; - } - } - - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - - computation: - for (int j = start_32; j < end_32; ) { -#pragma HLS loop_tripcount min=1 max=200 -#pragma HLS pipeline style=stp II=1 -#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE - - //ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - - if (a_pes_ready) { - //for (int p = 0; p < 2; ++p) { - for (int p = 0; p < 4; ++p) { - ap_uint<14> a_col; - ap_uint<18> a_row; - ap_uint<32> a_val; - - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - a_col = a(63, 50); - a_row = a(49, 32); - a_val = a(31, 0); - - // PE process - PEcore(a_col, - a_row, - a_val, - local_C[p], - //local_B - local_B[p/2] - ); - } - ++j; - } - } - start_32 = end_32; - } - - //cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min=1 max=1800 -#pragma HLS pipeline style=stp II=1 - ap_uint<32> u_32_d[8]; - - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i>>2]; - u_32_d[2 * d ] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - - switch (c_idx) { //0,2,1,3 - case 0: c_idx = 2; break; - case 1: c_idx = 3; break; - case 2: c_idx = 1; break; - case 3: c_idx = 0; break; - } - - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << -endl; - } - } -} -*/ -void Scatter_1_2(tapa::istream> &fifo_in, - tapa::ostreams, 2> &fifo_out); -void Merger(tapa::istreams &fifo_in, - tapa::ostream &fifo_out); -void black_hole_int(tapa::istream &fifo_in); -void black_hole_float_v16(tapa::istream &fifo_in); -void Sextans(uint64_t edge_list_ptr, uint64_t edge_list_ch_0, - uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, - uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, - uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, - uint64_t edge_list_ch_7, uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, - uint64_t mat_B_ch_2, uint64_t mat_B_ch_3, uint64_t mat_C_ch_in_0, - uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, - uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, - uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, - uint64_t mat_C_ch_in_7, uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, - uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, - uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, - const int NUM_ITE, const int NUM_A_LEN, const int M, const int K, - const int P_N, const int alpha_u, const int beta_u); diff --git a/benchmarks/tapa_flow/sextans/design/generated/cpp/write_C.cpp b/benchmarks/tapa_flow/sextans/design/generated/cpp/write_C.cpp deleted file mode 100644 index 16e9e312..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/cpp/write_C.cpp +++ /dev/null @@ -1,475 +0,0 @@ - - -#include - -#include - -#include - -#include - -#include - -#include - -#include -constexpr int NUM_CH_SPARSE = 8; -constexpr int NUM_CH_B = 4; -constexpr int NUM_CH_C = 8; -const int WINDOW_SIZE = 4096; -const int DEP_DIST_LOAD_STORE = 10; -const int B_PARTITION_FACTOR = 4; -const int URAM_DEPTH = 8192; -using float_v16 = tapa::vec_t; -using float_v8 = tapa::vec_t; -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, int beta_u); -//#include "modules.h" -constexpr int FIFO_DEPTH = 2; -constexpr int PEG_PER_A = 512 / 256; -struct MultBVec { - ap_uint<18> row; - float_v8 abvec; -}; -template -inline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A, - const R A_len, R &i_req, R &i_resp) { -#pragma HLS inline - if ((i_req < A_len) & !A.read_addr.full()) { - A.read_addr.try_write(i_req); - ++i_req; - } - if (!fifo_A.full() & !A.read_data.empty()) { - T tmp; - A.read_data.try_read(tmp); - fifo_A.try_write(tmp); - ++i_resp; - } -} -void read_edge_list_ptr( - const int num_ite, const int M, - const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N - const int K, uint64_t edge_list_ptr, tapa::ostream &fifo_edge_list_ptr, - tapa::ostream &PE_inst); -void read_A(uint64_t A, tapa::ostream> &fifo_A, const int A_len, - const int P_N); -void read_B(uint64_t B, tapa::ostream &fifo_B, const int K, - const int P_N); -void read_C(uint64_t C, tapa::ostream &fifo_C, const int M, - const int P_N, tapa::ostream &wrC_inst); -void write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C, - tapa::async_mmap &C_out) { -#pragma HLS disaggregate variable = wrC_inst -#pragma HLS interface ap_fifo port = wrC_inst._ -#pragma HLS aggregate variable = wrC_inst._ bit -#pragma HLS interface ap_fifo port = wrC_inst._peek -#pragma HLS aggregate variable = wrC_inst._peek bit - void(wrC_inst._.empty()); - void(wrC_inst._peek.empty()); - -#pragma HLS disaggregate variable = fifo_C -#pragma HLS interface ap_fifo port = fifo_C._ -#pragma HLS aggregate variable = fifo_C._ bit -#pragma HLS interface ap_fifo port = fifo_C._peek -#pragma HLS aggregate variable = fifo_C._peek bit - void(fifo_C._.empty()); - void(fifo_C._peek.empty()); - -#pragma HLS disaggregate variable = C_out -#pragma HLS interface ap_fifo port = C_out.read_addr._ -#pragma HLS aggregate variable = C_out.read_addr._ bit -#pragma HLS interface ap_fifo port = C_out.read_data._ -#pragma HLS aggregate variable = C_out.read_data._ bit -#pragma HLS interface ap_fifo port = C_out.write_addr._ -#pragma HLS aggregate variable = C_out.write_addr._ bit -#pragma HLS interface ap_fifo port = C_out.write_data._ -#pragma HLS aggregate variable = C_out.write_data._ bit -#pragma HLS interface ap_fifo port = C_out.write_resp._ -#pragma HLS aggregate variable = C_out.write_resp._ bit -#pragma HLS disaggregate variable = C_out.read_data -#pragma HLS interface ap_fifo port = C_out.read_data._peek -#pragma HLS aggregate variable = C_out.read_data._peek bit -#pragma HLS disaggregate variable = C_out.write_resp -#pragma HLS interface ap_fifo port = C_out.write_resp._peek -#pragma HLS aggregate variable = C_out.write_resp._peek bit - void(C_out.read_addr._.full()); - void(C_out.read_data._.empty()); - void(C_out.read_data._peek.empty()); - void(C_out.write_addr._.full()); - void(C_out.write_data._.full()); - void(C_out.write_resp._.empty()); - void(C_out.write_resp._peek.empty()); - - int M = wrC_inst.read(); - int P_N = wrC_inst.read(); - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int N = P_N & 0xFFFF; - const int num_ite_C = ((M + 15) >> 4) * ((N + 7) >> 3); -l_rp: - for (int rp = 0; rp < rp_time; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min = 1 max = 16 - wr_C: - for (int i_req = 0, i_resp = 0; i_resp < num_ite_C;) { -#pragma HLS loop_tripcount min = 1 max = 500000 -#pragma HLS pipeline style = stp II = 1 - if ((i_req < num_ite_C) & !fifo_C.empty() & !C_out.write_addr.full() & - !C_out.write_data.full()) { - C_out.write_addr.try_write(i_req); - float_v16 tmpv; - fifo_C.try_read(tmpv); - C_out.write_data.try_write(tmpv); - ++i_req; - } - uint8_t n_resp; - if (C_out.write_resp.try_read(n_resp)) { - i_resp += int(n_resp) + 1; - } - } - } -} -void FloatvMultConst(const int alpha_u, const int M, const int P_N, - tapa::istream &fifo_in, - tapa::ostream &fifo_out); -void FloatvAddFloatv(tapa::istream &fifo_in0, - tapa::istream &fifo_in1, - tapa::ostream &fifo_out); -/* -void PU2core(ap_uint<18> & addr_c, - float a_val_f, - float b_val_d0_f, - float b_val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH] - ) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - - float c_val_d0_f = tapa::bit_cast(c_val_d0_u); - float c_val_d1_f = tapa::bit_cast(c_val_d1_u); - - c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f; - c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f; - - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} - -void PEcore(ap_uint<14> & addr_b, - ap_uint<18> & addr_c, - ap_uint<32> & a_val_u, - ap_uint<64> local_C[4][URAM_DEPTH], - float local_B[8][WINDOW_SIZE] - ) { -#pragma HLS inline - //if (addr_c != ((ap_uint<18>) 0x3FFFF)) { - if (addr_c[17] == 0) { - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 4; ++i) { - PU2core(addr_c, - a_val_f, - local_B[i*2+0][addr_b], - local_B[i*2+1][addr_b], - local_C[i] - ); - } - } -} -*/ -void PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u, - float local_B[8][WINDOW_SIZE], float_v8 &abv) { -#pragma HLS inline - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 8; ++i) { - abv[i] = a_val_f * local_B[i][addr_b]; - } -} -void PEG_Bmtx( - tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - // tapa::istream> & fifo_A, - tapa::istream> &fifo_A, - tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out, - tapa::ostreams &fifo_B_out, - // to PEG_Cmtx - tapa::ostream &PE_inst_to_Cmtx, - tapa::ostream &fifo_inst_out_to_Cmtx, - tapa::ostreams &fifo_aBvec); -void PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f; - float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f; - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} -void PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec, - ap_uint<64> local_C[4][URAM_DEPTH]) { -#pragma HLS inline - for (int i = 0; i < 4; ++i) { - PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]); - } -} -void PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - tapa::istreams &fifo_aBvec, - tapa::ostream &fifo_C_out); -/* -void PEG(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - tapa::streams fifo_aBvec("fifo_aBvec"); - tapa::stream PE_inst_to_Cmtx("PE_inst_to_Cmtx"); - tapa::stream -fifo_inst_out_to_Cmtx("fifo_inst_out_to_Cmtx"); - - tapa::task() - .invoke(PEG_Bmtx, - PE_inst_in, - fifo_inst_in, - fifo_A, - fifo_B_in, - PE_inst_out, - fifo_inst_out, - fifo_B_out, - // to PEG_Cmtx - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec) - - .invoke(PEG_Cmtx, - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec, - fifo_C_out) - ; -} - -void PEG_c(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0)? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - - const int num_v_init = (M + 63) >> 6; - //const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - - //define local C buffer and pragma to URAM - //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1 -#pragma HLS array_partition complete variable=local_C dim=1 -#pragma HLS array_partition complete variable=local_C dim=2 - -l_rp: - for(int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min=1 max=16 - - //init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min=1 max=800 -#pragma HLS pipeline style=stp II=1 - //for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - //define local B buffer and pragma local B buffer if partition factor > -1 - - //float local_B[8/2][8][WINDOW_SIZE]; - //float local_B[8][WINDOW_SIZE]; - float local_B[4/2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable=local_B latency=2 -#pragma HLS array_partition variable=local_B complete dim=1 -#pragma HLS array_partition variable=local_B complete dim=2 -#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=3 -//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=2 - - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min=1 max=49 - - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i -* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS -pipeline style=stp II = 1 - - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - b_512_x[k] = fifo_B_in[k].read(); - fifo_B_out[k].write(b_512_x[k]); - } - - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m % -2 * 8]; - } - } - } - ++j; - } - } - - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - - computation: - for (int j = start_32; j < end_32; ) { -#pragma HLS loop_tripcount min=1 max=200 -#pragma HLS pipeline style=stp II=1 -#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE - - //ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - - if (a_pes_ready) { - //for (int p = 0; p < 2; ++p) { - for (int p = 0; p < 4; ++p) { - ap_uint<14> a_col; - ap_uint<18> a_row; - ap_uint<32> a_val; - - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - a_col = a(63, 50); - a_row = a(49, 32); - a_val = a(31, 0); - - // PE process - PEcore(a_col, - a_row, - a_val, - local_C[p], - //local_B - local_B[p/2] - ); - } - ++j; - } - } - start_32 = end_32; - } - - //cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min=1 max=1800 -#pragma HLS pipeline style=stp II=1 - ap_uint<32> u_32_d[8]; - - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i>>2]; - u_32_d[2 * d ] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - - switch (c_idx) { //0,2,1,3 - case 0: c_idx = 2; break; - case 1: c_idx = 3; break; - case 2: c_idx = 1; break; - case 3: c_idx = 0; break; - } - - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << -endl; - } - } -} -*/ -void Scatter_1_2(tapa::istream> &fifo_in, - tapa::ostreams, 2> &fifo_out); -void Merger(tapa::istreams &fifo_in, - tapa::ostream &fifo_out); -void black_hole_int(tapa::istream &fifo_in); -void black_hole_float_v16(tapa::istream &fifo_in); -void Sextans(uint64_t edge_list_ptr, uint64_t edge_list_ch_0, - uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, - uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, - uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, - uint64_t edge_list_ch_7, uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, - uint64_t mat_B_ch_2, uint64_t mat_B_ch_3, uint64_t mat_C_ch_in_0, - uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, - uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, - uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, - uint64_t mat_C_ch_in_7, uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, - uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, - uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, - const int NUM_ITE, const int NUM_A_LEN, const int M, const int K, - const int P_N, const int alpha_u, const int beta_u); diff --git a/benchmarks/tapa_flow/sextans/design/generated/flatten/flatten-f5eeaffa-sextans.cpp b/benchmarks/tapa_flow/sextans/design/generated/flatten/flatten-f5eeaffa-sextans.cpp deleted file mode 100644 index dea949a0..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/flatten/flatten-f5eeaffa-sextans.cpp +++ /dev/null @@ -1,822 +0,0 @@ - - -#include - -#include - -#include - -#include - -#include - -#include - -#include -constexpr int NUM_CH_SPARSE = 8; -constexpr int NUM_CH_B = 4; -constexpr int NUM_CH_C = 8; -const int WINDOW_SIZE = 4096; -const int DEP_DIST_LOAD_STORE = 10; -const int B_PARTITION_FACTOR = 4; -const int URAM_DEPTH = 8192; -using float_v16 = tapa::vec_t; -using float_v8 = tapa::vec_t; -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, int beta_u); -//#include "modules.h" -constexpr int FIFO_DEPTH = 2; -constexpr int PEG_PER_A = 512 / 256; -struct MultBVec { - ap_uint<18> row; - float_v8 abvec; -}; -template -inline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A, - const R A_len, R &i_req, R &i_resp) { -#pragma HLS inline - if ((i_req < A_len) & !A.read_addr.full()) { - A.read_addr.try_write(i_req); - ++i_req; - } - if (!fifo_A.full() & !A.read_data.empty()) { - T tmp; - A.read_data.try_read(tmp); - fifo_A.try_write(tmp); - ++i_resp; - } -} -void read_edge_list_ptr( - const int num_ite, const int M, - const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N - const int K, tapa::async_mmap &edge_list_ptr, - tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) { - PE_inst.write(num_ite); - PE_inst.write(M); - PE_inst.write(P_N); - PE_inst.write(K); - const int N = P_N & 0xFFFF; - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int num_ite_plus1 = num_ite + 1; - const int rp_time_N = rp_time * ((N + 7) >> 3); -l_rp: - for (int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min = 1 max = 16 - rd_ptr: - for (int i_req = 0, i_resp = 0; i_resp < num_ite_plus1;) { -#pragma HLS loop_tripcount min = 1 max = 800 -#pragma HLS pipeline style = stp II = 1 - async_read(edge_list_ptr, fifo_edge_list_ptr, num_ite_plus1, i_req, - i_resp); - } - } -} -void read_A(tapa::async_mmap> &A, - tapa::ostream> &fifo_A, const int A_len, - const int P_N) { - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); -l_rp: - for (int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min = 1 max = 16 - rd_A: - for (int i_req = 0, i_resp = 0; i_resp < A_len;) { -#pragma HLS loop_tripcount min = 1 max = 10000 -#pragma HLS pipeline style = stp II = 1 - async_read(A, fifo_A, A_len, i_req, i_resp); - } - } -} -void read_B(tapa::async_mmap &B, tapa::ostream &fifo_B, - const int K, const int P_N) { - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int N = P_N & 0xFFFF; - const int num_ite_B = ((K + 7) >> 3) * ((N + 7) >> 3); -l_rp: - for (int rp = 0; rp < rp_time; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min = 1 max = 16 - rd_B: - for (int i_req = 0, i_resp = 0; i_resp < num_ite_B;) { -#pragma HLS loop_tripcount min = 1 max = 500000 -#pragma HLS pipeline style = stp II = 1 - async_read(B, fifo_B, num_ite_B, i_req, i_resp); - } - } -} -void read_C(tapa::async_mmap &C, tapa::ostream &fifo_C, - const int M, const int P_N, tapa::ostream &wrC_inst) { - wrC_inst.write(M); - wrC_inst.write(P_N); - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int N = P_N & 0xFFFF; - const int num_ite_C = ((M + 15) >> 4) * ((N + 7) >> 3); -l_rp: - for (int rp = 0; rp < rp_time; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min = 1 max = 16 - rd_C: - for (int i_req = 0, i_resp = 0; i_resp < num_ite_C;) { -#pragma HLS loop_tripcount min = 1 max = 500000 -#pragma HLS pipeline style = stp II = 1 - async_read(C, fifo_C, num_ite_C, i_req, i_resp); - } - } -} -void write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C, - tapa::async_mmap &C_out) { - int M = wrC_inst.read(); - int P_N = wrC_inst.read(); - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int N = P_N & 0xFFFF; - const int num_ite_C = ((M + 15) >> 4) * ((N + 7) >> 3); -l_rp: - for (int rp = 0; rp < rp_time; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min = 1 max = 16 - wr_C: - for (int i_req = 0, i_resp = 0; i_resp < num_ite_C;) { -#pragma HLS loop_tripcount min = 1 max = 500000 -#pragma HLS pipeline style = stp II = 1 - if ((i_req < num_ite_C) & !fifo_C.empty() & !C_out.write_addr.full() & - !C_out.write_data.full()) { - C_out.write_addr.try_write(i_req); - float_v16 tmpv; - fifo_C.try_read(tmpv); - C_out.write_data.try_write(tmpv); - ++i_req; - } - uint8_t n_resp; - if (C_out.write_resp.try_read(n_resp)) { - i_resp += int(n_resp) + 1; - } - } - } -} -void FloatvMultConst(const int alpha_u, const int M, const int P_N, - tapa::istream &fifo_in, - tapa::ostream &fifo_out) { - const float alpha_f = tapa::bit_cast(alpha_u); - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int N = P_N & 0xFFFF; - const int num_ite = ((M + 15) >> 4) * ((N + 7) >> 3) * rp_time; -cc: - for (int i = 0; i < num_ite;) { -#pragma HLS pipeline style = stp II = 1 - float_v16 tmp; - bool read_ready = fifo_in.try_read(tmp); - if (read_ready) { - float_v16 c_out = tmp * alpha_f; - fifo_out.write(c_out); - ++i; - } - } -} -void FloatvAddFloatv(tapa::istream &fifo_in0, - tapa::istream &fifo_in1, - tapa::ostream &fifo_out) { -cc: - for (;;) { -#pragma HLS pipeline style = stp II = 1 - bool flag_nop = fifo_in0.empty() | fifo_in1.empty(); - if (!flag_nop) { - float_v16 tmp0; - fifo_in0.try_read(tmp0); - float_v16 tmp1; - fifo_in1.try_read(tmp1); - float_v16 c_out = tmp0 + tmp1; - fifo_out.write(c_out); - } - } -} -/* -void PU2core(ap_uint<18> & addr_c, - float a_val_f, - float b_val_d0_f, - float b_val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH] - ) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - - float c_val_d0_f = tapa::bit_cast(c_val_d0_u); - float c_val_d1_f = tapa::bit_cast(c_val_d1_u); - - c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f; - c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f; - - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} - -void PEcore(ap_uint<14> & addr_b, - ap_uint<18> & addr_c, - ap_uint<32> & a_val_u, - ap_uint<64> local_C[4][URAM_DEPTH], - float local_B[8][WINDOW_SIZE] - ) { -#pragma HLS inline - //if (addr_c != ((ap_uint<18>) 0x3FFFF)) { - if (addr_c[17] == 0) { - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 4; ++i) { - PU2core(addr_c, - a_val_f, - local_B[i*2+0][addr_b], - local_B[i*2+1][addr_b], - local_C[i] - ); - } - } -} -*/ -void PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u, - float local_B[8][WINDOW_SIZE], float_v8 &abv) { -#pragma HLS inline - float a_val_f = tapa::bit_cast(a_val_u); - for (int i = 0; i < 8; ++i) { - abv[i] = a_val_f * local_B[i][addr_b]; - } -} -void PEG_Bmtx( - tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - // tapa::istream> & fifo_A, - tapa::istream> &fifo_A, - tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out, - tapa::ostreams &fifo_B_out, - // to PEG_Cmtx - tapa::ostream &PE_inst_to_Cmtx, - tapa::ostream &fifo_inst_out_to_Cmtx, - tapa::ostreams &fifo_aBvec) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - PE_inst_to_Cmtx.write(NUM_ITE); - PE_inst_to_Cmtx.write(M); - PE_inst_to_Cmtx.write(P_N); - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); -l_rp: - for (int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min = 1 max = 16 - // float local_B[8/2][8][WINDOW_SIZE]; - // float local_B[8][WINDOW_SIZE]; - float local_B[4 / 2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable = local_B latency = 2 -#pragma HLS array_partition variable = local_B complete dim = 1 -#pragma HLS array_partition variable = local_B complete dim = 2 -#pragma HLS array_partition variable = local_B cyclic factor = \ - B_PARTITION_FACTOR dim = 3 - //#pragma HLS array_partition variable=local_B cyclic - //factor=B_PARTITION_FACTOR dim=2 - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - fifo_inst_out_to_Cmtx.write(start_32); - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min = 1 max = 49 - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && - (j < ((K + 7) >> 3) - i * (WINDOW_SIZE >> 3));) { -#pragma HLS loop_tripcount min = 1 max = 512 -#pragma HLS pipeline style = stp II = 1 - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - fifo_B_in[k].try_read(b_512_x[k]); - fifo_B_out[k].try_write(b_512_x[k]); - } - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m / 2][k + m % 2 * 8]; - } - } - } - ++j; - } - } - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - fifo_inst_out_to_Cmtx.write(end_32); - computation: - for (int j = start_32; j < end_32;) { -#pragma HLS loop_tripcount min = 1 max = 200 -#pragma HLS pipeline style = stp II = 1 - // ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - if (a_pes_ready) { - for (int p = 0; p < 4; ++p) { - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - ap_uint<14> a_col = a(63, 50); - ap_uint<18> a_row = a(49, 32); - ap_uint<32> a_val = a(31, 0); - MultBVec rabv; - rabv.row = a_row; - if (a_row[17] == 0) { - // PE process - PEcore_Bmtx(a_col, a_val, local_B[p / 2], rabv.abvec); - } - fifo_aBvec[p].write(rabv); - } - ++j; - } - } - start_32 = end_32; - } - } -} -void PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f, - ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) { -#pragma HLS inline - ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c]; - ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0); - ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32); - float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f; - float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f; - c_val_d0_u = tapa::bit_cast>(c_val_d0_f); - c_val_d1_u = tapa::bit_cast>(c_val_d1_f); - c_val_d0_d1_u64(31, 0) = c_val_d0_u; - c_val_d0_d1_u64(63, 32) = c_val_d1_u; - local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64; -} -void PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec, - ap_uint<64> local_C[4][URAM_DEPTH]) { -#pragma HLS inline - for (int i = 0; i < 4; ++i) { - PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]); - } -} -void PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in, - tapa::istreams &fifo_aBvec, - tapa::ostream &fifo_C_out) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0) ? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - const int num_v_init = (M + 63) >> 6; - // const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - // define local C buffer and pragma to URAM - // ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable = local_C type = RAM_2P impl = \ - URAM latency = 1 -#pragma HLS array_partition complete variable = local_C dim = 1 -#pragma HLS array_partition complete variable = local_C dim = 2 -l_rp: - for (int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min = 1 max = 16 - // init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min = 1 max = 800 -#pragma HLS pipeline style = stp II = 1 - // for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - auto start_32 = fifo_inst_in.read(); - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min = 1 max = 49 - // computation - const auto end_32 = fifo_inst_in.read(); - computation: - for (int j = start_32; j < end_32;) { -#pragma HLS loop_tripcount min = 1 max = 200 -#pragma HLS pipeline style = stp II = 1 -#pragma HLS dependence true variable = local_C distance = DEP_DIST_LOAD_STORE - bool nop_flag = false; - for (int p = 0; p < 4; ++p) { - nop_flag |= fifo_aBvec[p].empty(); - } - if (!nop_flag) { - for (int p = 0; p < 4; ++p) { - MultBVec rabv; - fifo_aBvec[p].try_read(rabv); - ap_uint<18> a_row = rabv.row; - if (a_row[17] == 0) { - PEcore_Cmtx(a_row, rabv.abvec, local_C[p]); - } - } - ++j; - } - } - start_32 = end_32; - } - // cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min = 1 max = 1800 -#pragma HLS pipeline style = stp II = 1 - ap_uint<32> u_32_d[8]; - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i >> 2]; - u_32_d[2 * d] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - switch (c_idx) { // 0,2,1,3 - case 0: - c_idx = 2; - break; - case 1: - c_idx = 3; - break; - case 2: - c_idx = 1; - break; - case 3: - c_idx = 0; - break; - } - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - // for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << - // endl; - } - } -} -/* -void PEG(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - tapa::streams fifo_aBvec("fifo_aBvec"); - tapa::stream PE_inst_to_Cmtx("PE_inst_to_Cmtx"); - tapa::stream -fifo_inst_out_to_Cmtx("fifo_inst_out_to_Cmtx"); - - tapa::task() - .invoke(PEG_Bmtx, - PE_inst_in, - fifo_inst_in, - fifo_A, - fifo_B_in, - PE_inst_out, - fifo_inst_out, - fifo_B_out, - // to PEG_Cmtx - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec) - - .invoke(PEG_Cmtx, - PE_inst_to_Cmtx, - fifo_inst_out_to_Cmtx, - fifo_aBvec, - fifo_C_out) - ; -} - -void PEG_c(tapa::istream & PE_inst_in, - tapa::istream & fifo_inst_in, - //tapa::istream> & fifo_A, - tapa::istream> & fifo_A, - tapa::istreams & fifo_B_in, // [256(16)] * 2, 2: -dim d - // [64(32bits * 2.0)] * 8 dim - tapa::ostream & PE_inst_out, - tapa::ostream & fifo_inst_out, - tapa::ostreams & fifo_B_out, - tapa::ostream & fifo_C_out - ) { - const int NUM_ITE = PE_inst_in.read(); - const int M = PE_inst_in.read(); - const int P_N = PE_inst_in.read(); - const int K = PE_inst_in.read(); - - PE_inst_out.write(NUM_ITE); - PE_inst_out.write(M); - PE_inst_out.write(P_N); - PE_inst_out.write(K); - - const int N16 = P_N >> 16; - const int rp_time = (N16 == 0)? 1 : N16; - const int N = P_N & 0xFFFF; - const int rp_time_N = rp_time * ((N + 7) >> 3); - - const int num_v_init = (M + 63) >> 6; - //const int num_v_out = (M + 31) >> 5; - const int num_v_out = (M + 15) >> 4; - - //define local C buffer and pragma to URAM - //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH]; - ap_uint<64> local_C[4][8 / 2][URAM_DEPTH]; -#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1 -#pragma HLS array_partition complete variable=local_C dim=1 -#pragma HLS array_partition complete variable=local_C dim=2 - -l_rp: - for(int rp = 0; rp < rp_time_N; rp++) { -#pragma HLS loop_flatten off -#pragma HLS loop_tripcount min=1 max=16 - - //init local C - init_C: - for (int i = 0; i < num_v_init; ++i) { -#pragma HLS loop_tripcount min=1 max=800 -#pragma HLS pipeline style=stp II=1 - //for (int j = 0; j < 2; ++j) { - for (int j = 0; j < 4; ++j) { - for (int k = 0; k < 8 / 2; ++k) { - local_C[j][k][i] = 0; - } - } - } - //define local B buffer and pragma local B buffer if partition factor > -1 - - //float local_B[8/2][8][WINDOW_SIZE]; - //float local_B[8][WINDOW_SIZE]; - float local_B[4/2][8][WINDOW_SIZE]; -#pragma HLS bind_storage variable=local_B latency=2 -#pragma HLS array_partition variable=local_B complete dim=1 -#pragma HLS array_partition variable=local_B complete dim=2 -#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=3 -//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR -dim=2 - - auto start_32 = fifo_inst_in.read(); - fifo_inst_out.write(start_32); - - main: - for (int i = 0; i < NUM_ITE; ++i) { -#pragma HLS loop_tripcount min=1 max=49 - - // fill onchip B - read_B: - for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i -* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS -pipeline style=stp II = 1 - - bool b_2048_ready = true; - bool b_2048_out_not_full = true; - for (int k = 0; k < NUM_CH_B; ++k) { - b_2048_ready &= !fifo_B_in[k].empty(); - b_2048_out_not_full &= !fifo_B_out[k].full(); - } - - if (b_2048_ready & b_2048_out_not_full) { - float_v16 b_512_x[NUM_CH_B]; - for (int k = 0; k < NUM_CH_B; ++k) { - b_512_x[k] = fifo_B_in[k].read(); - fifo_B_out[k].write(b_512_x[k]); - } - - for (int k = 0; k < 8; ++k) { - for (int m = 0; m < 8; ++m) { - for (int l = 0; l < 2; ++l) { - local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m % -2 * 8]; - } - } - } - ++j; - } - } - - // computation - const auto end_32 = fifo_inst_in.read(); - fifo_inst_out.write(end_32); - - computation: - for (int j = start_32; j < end_32; ) { -#pragma HLS loop_tripcount min=1 max=200 -#pragma HLS pipeline style=stp II=1 -#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE - - //ap_uint<128> a_pes; - ap_uint<256> a_pes; - bool a_pes_ready = fifo_A.try_read(a_pes); - - if (a_pes_ready) { - //for (int p = 0; p < 2; ++p) { - for (int p = 0; p < 4; ++p) { - ap_uint<14> a_col; - ap_uint<18> a_row; - ap_uint<32> a_val; - - ap_uint<64> a = a_pes(63 + p * 64, p * 64); - a_col = a(63, 50); - a_row = a(49, 32); - a_val = a(31, 0); - - // PE process - PEcore(a_col, - a_row, - a_val, - local_C[p], - //local_B - local_B[p/2] - ); - } - ++j; - } - } - start_32 = end_32; - } - - //cout << "PE = " << pe_idx << endl; - write_C_outer: - for (int i = 0, c_idx = 0; i < num_v_out; ++i) { -#pragma HLS loop_tripcount min=1 max=1800 -#pragma HLS pipeline style=stp II=1 - ap_uint<32> u_32_d[8]; - - for (int d = 0; d < 4; ++d) { - ap_uint<64> u_64 = local_C[c_idx][d][i>>2]; - u_32_d[2 * d ] = u_64(31, 0); - u_32_d[2 * d + 1] = u_64(63, 32); - } - - switch (c_idx) { //0,2,1,3 - case 0: c_idx = 2; break; - case 1: c_idx = 3; break; - case 2: c_idx = 1; break; - case 3: c_idx = 0; break; - } - - float_v8 out_v; - for (int d = 0; d < 8; ++d) { - out_v[d] = tapa::bit_cast(u_32_d[d]); - } - fifo_C_out.write(out_v); - //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << " ";} cout << -endl; - } - } -} -*/ -void Scatter_1_2(tapa::istream> &fifo_in, - tapa::ostreams, 2> &fifo_out) { - for (;;) { -#pragma HLS pipeline style = stp II = 1 - bool flag_nop = fifo_in.empty(); - for (int i = 0; i < 2; ++i) { - flag_nop |= fifo_out[i].full(); - } - if (!flag_nop) { - ap_uint<512> tmp; - fifo_in.try_read(tmp); - for (int i = 0; i < 2; ++i) { - fifo_out[i].try_write(tmp(255 + i * 256, i * 256)); - } - } - } -} -void Merger(tapa::istreams &fifo_in, - tapa::ostream &fifo_out) { - for (;;) { -#pragma HLS pipeline style = stp II = 1 - bool flag_nop = fifo_out.full() | fifo_in[0].empty() | fifo_in[1].empty(); - if (!flag_nop) { - float_v16 tmpv16; - float_v8 tmpv8[2]; -#pragma HLS aggregate variable = tmpv16 - fifo_in[0].try_read(tmpv8[0]); - fifo_in[1].try_read(tmpv8[1]); - for (int i = 0; i < 8; ++i) { - tmpv16[i] = tmpv8[0][i]; - tmpv16[i + 8] = tmpv8[1][i]; - } - fifo_out.try_write(tmpv16); - } - } -} -void black_hole_int(tapa::istream &fifo_in) { - for (;;) { -#pragma HLS pipeline style = stp II = 1 - fifo_in.read(nullptr); - } -} -void black_hole_float_v16(tapa::istream &fifo_in) { - for (;;) { -#pragma HLS pipeline style = stp II = 1 - fifo_in.read(nullptr); - } -} -void Sextans(tapa::mmap edge_list_ptr, - tapa::mmaps, NUM_CH_SPARSE> edge_list_ch, - tapa::mmaps mat_B_ch, - tapa::mmaps mat_C_ch_in, - tapa::mmaps mat_C_ch, const int NUM_ITE, - const int NUM_A_LEN, const int M, const int K, const int P_N, - const int alpha_u, const int beta_u) { - tapa::streams PE_inst( - "PE_inst"); - tapa::streams wrC_inst("wrC_inst"); - tapa::streams - fifo_edge_list_ptr("fifo_edge_list_ptr"); - tapa::streams PE_inst_to_Cmtx( - "PE_inst_to_Cmtx"); - tapa::streams - fifo_edge_list_ptr_to_Cmtx("fifo_edge_list_ptr_to_Cmtx"); - /* ============================== */ - tapa::streams, NUM_CH_SPARSE, FIFO_DEPTH> fifo_A("fifo_A"); - tapa::streams, NUM_CH_SPARSE * PEG_PER_A, FIFO_DEPTH> fifo_A_pe( - "fifo_A_pe"); - tapa::streams - fifo_B_pe("fifo_B_pe"); - tapa::streams fifo_C_pe( - "fifo_C_pe"); - tapa::streams fifo_aBvec( - "fifo_aBvec"); - tapa::streams fifo_C_read_in( - "fifo_C_read_in"); - tapa::streams fifo_C_read_in_beta( - "fifo_C_read_in_beta"); - tapa::streams fifo_C_ch_result( - "fifo_C_ch_result"); - tapa::streams fifo_C_ch_result_alpha( - "fifo_C_ch_result_alpha"); - tapa::streams fifo_C_ch("fifo_C_ch"); - tapa::task() - .invoke(read_edge_list_ptr, NUM_ITE, M, P_N, K, edge_list_ptr, - fifo_edge_list_ptr, PE_inst) - .invoke(read_A, edge_list_ch, fifo_A, - NUM_A_LEN, P_N) - .invoke(Scatter_1_2, fifo_A, fifo_A_pe) - .invoke(read_B, mat_B_ch, fifo_B_pe, K, P_N) - .invoke( - PEG_Bmtx, PE_inst, fifo_edge_list_ptr, fifo_A_pe, fifo_B_pe, PE_inst, - fifo_edge_list_ptr, fifo_B_pe, PE_inst_to_Cmtx, - fifo_edge_list_ptr_to_Cmtx, fifo_aBvec) - .invoke(PEG_Cmtx, PE_inst_to_Cmtx, - fifo_edge_list_ptr_to_Cmtx, - fifo_aBvec, fifo_C_pe) - .invoke(black_hole_int, PE_inst) - .invoke(black_hole_int, fifo_edge_list_ptr) - .invoke(black_hole_float_v16, fifo_B_pe) - .invoke(Merger, fifo_C_pe, fifo_C_ch_result) - .invoke(read_C, mat_C_ch_in, fifo_C_read_in, M, P_N, - wrC_inst) - .invoke(FloatvMultConst, beta_u, M, P_N, - fifo_C_read_in, fifo_C_read_in_beta) - .invoke(FloatvMultConst, alpha_u, M, P_N, - fifo_C_ch_result, fifo_C_ch_result_alpha) - .invoke(FloatvAddFloatv, fifo_C_ch_result_alpha, - fifo_C_read_in_beta, fifo_C_ch) - .invoke(write_C, wrC_inst, fifo_C_ch, mat_C_ch); -} diff --git a/benchmarks/tapa_flow/sextans/design/generated/graph.json b/benchmarks/tapa_flow/sextans/design/generated/graph.json deleted file mode 100644 index 7d4ee9cf..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/graph.json +++ /dev/null @@ -1,6798 +0,0 @@ -{ - "cflags": [ - "-std=c++17", - "-I", - "/home/Licheng-Guo/dev/tapa/backend/python/tapa/../../../src", - "-isystem", - "/opt/tools/xilinx/Vitis_HLS/2022.2/include" - ], - "tasks": { - "FloatvAddFloatv": { - "code": "\n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \nconstexpr int NUM_CH_SPARSE = 8;\nconstexpr int NUM_CH_B = 4;\nconstexpr int NUM_CH_C = 8;\nconst int WINDOW_SIZE = 4096;\nconst int DEP_DIST_LOAD_STORE = 10;\nconst int B_PARTITION_FACTOR = 4;\nconst int URAM_DEPTH = 8192;\nusing float_v16 = tapa::vec_t;\nusing float_v8 = tapa::vec_t;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, int beta_u);\n//#include \"modules.h\"\nconstexpr int FIFO_DEPTH = 2;\nconstexpr int PEG_PER_A = 512 / 256;\nstruct MultBVec {\n ap_uint<18> row;\n float_v8 abvec;\n};\ntemplate \ninline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A,\n const R A_len, R &i_req, R &i_resp) {\n#pragma HLS inline\n if ((i_req < A_len) & !A.read_addr.full()) {\n A.read_addr.try_write(i_req);\n ++i_req;\n }\n if (!fifo_A.full() & !A.read_data.empty()) {\n T tmp;\n A.read_data.try_read(tmp);\n fifo_A.try_write(tmp);\n ++i_resp;\n }\n}\nvoid read_edge_list_ptr(\n const int num_ite, const int M,\n const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N\n const int K, uint64_t edge_list_ptr,\n tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) ;\nvoid read_A(uint64_t A,\n tapa::ostream> &fifo_A, const int A_len,\n const int P_N) ;\nvoid read_B(uint64_t B, tapa::ostream &fifo_B,\n const int K, const int P_N) ;\nvoid read_C(uint64_t C, tapa::ostream &fifo_C,\n const int M, const int P_N, tapa::ostream &wrC_inst) ;\nvoid write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C,\n uint64_t C_out) ;\nvoid FloatvMultConst(const int alpha_u, const int M, const int P_N,\n tapa::istream &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid FloatvAddFloatv(tapa::istream &fifo_in0,\n tapa::istream &fifo_in1,\n tapa::ostream &fifo_out) {\n#pragma HLS disaggregate variable = fifo_in0\n#pragma HLS interface ap_fifo port = fifo_in0._\n#pragma HLS aggregate variable = fifo_in0._ bit\n#pragma HLS interface ap_fifo port = fifo_in0._peek\n#pragma HLS aggregate variable = fifo_in0._peek bit\nvoid(fifo_in0._.empty());\nvoid(fifo_in0._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_in1\n#pragma HLS interface ap_fifo port = fifo_in1._\n#pragma HLS aggregate variable = fifo_in1._ bit\n#pragma HLS interface ap_fifo port = fifo_in1._peek\n#pragma HLS aggregate variable = fifo_in1._peek bit\nvoid(fifo_in1._.empty());\nvoid(fifo_in1._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_out\n#pragma HLS interface ap_fifo port = fifo_out._\n#pragma HLS aggregate variable = fifo_out._ bit\nvoid(fifo_out._.full());\n\ncc:\n for (;;) {\n#pragma HLS pipeline style = stp II = 1\n bool flag_nop = fifo_in0.empty() | fifo_in1.empty();\n if (!flag_nop) {\n float_v16 tmp0;\n fifo_in0.try_read(tmp0);\n float_v16 tmp1;\n fifo_in1.try_read(tmp1);\n float_v16 c_out = tmp0 + tmp1;\n fifo_out.write(c_out);\n }\n }\n}\n/*\nvoid PU2core(ap_uint<18> & addr_c,\n float a_val_f,\n float b_val_d0_f,\n float b_val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]\n ) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u);\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u);\n\n c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f;\n c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f;\n\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\n\nvoid PEcore(ap_uint<14> & addr_b,\n ap_uint<18> & addr_c,\n ap_uint<32> & a_val_u,\n ap_uint<64> local_C[4][URAM_DEPTH],\n float local_B[8][WINDOW_SIZE]\n ) {\n#pragma HLS inline\n //if (addr_c != ((ap_uint<18>) 0x3FFFF)) {\n if (addr_c[17] == 0) {\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 4; ++i) {\n PU2core(addr_c,\n a_val_f,\n local_B[i*2+0][addr_b],\n local_B[i*2+1][addr_b],\n local_C[i]\n );\n }\n }\n}\n*/\nvoid PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u,\n float local_B[8][WINDOW_SIZE], float_v8 &abv) {\n#pragma HLS inline\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 8; ++i) {\n abv[i] = a_val_f * local_B[i][addr_b];\n }\n}\nvoid PEG_Bmtx(\n tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n // tapa::istream> & fifo_A,\n tapa::istream> &fifo_A,\n tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out,\n tapa::ostreams &fifo_B_out,\n // to PEG_Cmtx\n tapa::ostream &PE_inst_to_Cmtx,\n tapa::ostream &fifo_inst_out_to_Cmtx,\n tapa::ostreams &fifo_aBvec) ;\nvoid PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f;\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f;\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\nvoid PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec,\n ap_uint<64> local_C[4][URAM_DEPTH]) {\n#pragma HLS inline\n for (int i = 0; i < 4; ++i) {\n PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]);\n }\n}\nvoid PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n tapa::istreams &fifo_aBvec,\n tapa::ostream &fifo_C_out) ;\n/*\nvoid PEG(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n tapa::streams fifo_aBvec(\"fifo_aBvec\");\n tapa::stream PE_inst_to_Cmtx(\"PE_inst_to_Cmtx\");\n tapa::stream\nfifo_inst_out_to_Cmtx(\"fifo_inst_out_to_Cmtx\");\n\n tapa::task()\n .invoke(PEG_Bmtx,\n PE_inst_in,\n fifo_inst_in,\n fifo_A,\n fifo_B_in,\n PE_inst_out,\n fifo_inst_out,\n fifo_B_out,\n // to PEG_Cmtx\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec)\n\n .invoke(PEG_Cmtx,\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec,\n fifo_C_out)\n ;\n}\n\nvoid PEG_c(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0)? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n\n const int num_v_init = (M + 63) >> 6;\n //const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n\n //define local C buffer and pragma to URAM\n //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1\n#pragma HLS array_partition complete variable=local_C dim=1\n#pragma HLS array_partition complete variable=local_C dim=2\n\nl_rp:\n for(int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min=1 max=16\n\n //init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min=1 max=800\n#pragma HLS pipeline style=stp II=1\n //for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n //define local B buffer and pragma local B buffer if partition factor >\n1\n\n //float local_B[8/2][8][WINDOW_SIZE];\n //float local_B[8][WINDOW_SIZE];\n float local_B[4/2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable=local_B latency=2\n#pragma HLS array_partition variable=local_B complete dim=1\n#pragma HLS array_partition variable=local_B complete dim=2\n#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=3\n//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=2\n\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min=1 max=49\n\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i\n* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS\npipeline style=stp II = 1\n\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_512_x[k] = fifo_B_in[k].read();\n fifo_B_out[k].write(b_512_x[k]);\n }\n\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m %\n2 * 8];\n }\n }\n }\n ++j;\n }\n }\n\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n\n computation:\n for (int j = start_32; j < end_32; ) {\n#pragma HLS loop_tripcount min=1 max=200\n#pragma HLS pipeline style=stp II=1\n#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE\n\n //ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n\n if (a_pes_ready) {\n //for (int p = 0; p < 2; ++p) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<14> a_col;\n ap_uint<18> a_row;\n ap_uint<32> a_val;\n\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n a_col = a(63, 50);\n a_row = a(49, 32);\n a_val = a(31, 0);\n\n // PE process\n PEcore(a_col,\n a_row,\n a_val,\n local_C[p],\n //local_B\n local_B[p/2]\n );\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n\n //cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min=1 max=1800\n#pragma HLS pipeline style=stp II=1\n ap_uint<32> u_32_d[8];\n\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i>>2];\n u_32_d[2 * d ] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n\n switch (c_idx) { //0,2,1,3\n case 0: c_idx = 2; break;\n case 1: c_idx = 3; break;\n case 2: c_idx = 1; break;\n case 3: c_idx = 0; break;\n }\n\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\nendl;\n }\n }\n}\n*/\nvoid Scatter_1_2(tapa::istream> &fifo_in,\n tapa::ostreams, 2> &fifo_out) ;\nvoid Merger(tapa::istreams &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid black_hole_int(tapa::istream &fifo_in) ;\nvoid black_hole_float_v16(tapa::istream &fifo_in) ;\nvoid Sextans(uint64_t edge_list_ptr,\n uint64_t edge_list_ch_0, uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, uint64_t edge_list_ch_7,\n uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, uint64_t mat_B_ch_2, uint64_t mat_B_ch_3,\n uint64_t mat_C_ch_in_0, uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, uint64_t mat_C_ch_in_7,\n uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, const int beta_u) ;\n", - "level": "lower", - "target": "hls", - "vendor": "xilinx" - }, - "FloatvMultConst": { - "code": "\n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \nconstexpr int NUM_CH_SPARSE = 8;\nconstexpr int NUM_CH_B = 4;\nconstexpr int NUM_CH_C = 8;\nconst int WINDOW_SIZE = 4096;\nconst int DEP_DIST_LOAD_STORE = 10;\nconst int B_PARTITION_FACTOR = 4;\nconst int URAM_DEPTH = 8192;\nusing float_v16 = tapa::vec_t;\nusing float_v8 = tapa::vec_t;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, int beta_u);\n//#include \"modules.h\"\nconstexpr int FIFO_DEPTH = 2;\nconstexpr int PEG_PER_A = 512 / 256;\nstruct MultBVec {\n ap_uint<18> row;\n float_v8 abvec;\n};\ntemplate \ninline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A,\n const R A_len, R &i_req, R &i_resp) {\n#pragma HLS inline\n if ((i_req < A_len) & !A.read_addr.full()) {\n A.read_addr.try_write(i_req);\n ++i_req;\n }\n if (!fifo_A.full() & !A.read_data.empty()) {\n T tmp;\n A.read_data.try_read(tmp);\n fifo_A.try_write(tmp);\n ++i_resp;\n }\n}\nvoid read_edge_list_ptr(\n const int num_ite, const int M,\n const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N\n const int K, uint64_t edge_list_ptr,\n tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) ;\nvoid read_A(uint64_t A,\n tapa::ostream> &fifo_A, const int A_len,\n const int P_N) ;\nvoid read_B(uint64_t B, tapa::ostream &fifo_B,\n const int K, const int P_N) ;\nvoid read_C(uint64_t C, tapa::ostream &fifo_C,\n const int M, const int P_N, tapa::ostream &wrC_inst) ;\nvoid write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C,\n uint64_t C_out) ;\nvoid FloatvMultConst(const int alpha_u, const int M, const int P_N,\n tapa::istream &fifo_in,\n tapa::ostream &fifo_out) {\n\n\n\n#pragma HLS disaggregate variable = fifo_in\n#pragma HLS interface ap_fifo port = fifo_in._\n#pragma HLS aggregate variable = fifo_in._ bit\n#pragma HLS interface ap_fifo port = fifo_in._peek\n#pragma HLS aggregate variable = fifo_in._peek bit\nvoid(fifo_in._.empty());\nvoid(fifo_in._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_out\n#pragma HLS interface ap_fifo port = fifo_out._\n#pragma HLS aggregate variable = fifo_out._ bit\nvoid(fifo_out._.full());\n\n const float alpha_f = tapa::bit_cast(alpha_u);\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0) ? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int num_ite = ((M + 15) >> 4) * ((N + 7) >> 3) * rp_time;\ncc:\n for (int i = 0; i < num_ite;) {\n#pragma HLS pipeline style = stp II = 1\n float_v16 tmp;\n bool read_ready = fifo_in.try_read(tmp);\n if (read_ready) {\n float_v16 c_out = tmp * alpha_f;\n fifo_out.write(c_out);\n ++i;\n }\n }\n}\nvoid FloatvAddFloatv(tapa::istream &fifo_in0,\n tapa::istream &fifo_in1,\n tapa::ostream &fifo_out) ;\n/*\nvoid PU2core(ap_uint<18> & addr_c,\n float a_val_f,\n float b_val_d0_f,\n float b_val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]\n ) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u);\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u);\n\n c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f;\n c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f;\n\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\n\nvoid PEcore(ap_uint<14> & addr_b,\n ap_uint<18> & addr_c,\n ap_uint<32> & a_val_u,\n ap_uint<64> local_C[4][URAM_DEPTH],\n float local_B[8][WINDOW_SIZE]\n ) {\n#pragma HLS inline\n //if (addr_c != ((ap_uint<18>) 0x3FFFF)) {\n if (addr_c[17] == 0) {\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 4; ++i) {\n PU2core(addr_c,\n a_val_f,\n local_B[i*2+0][addr_b],\n local_B[i*2+1][addr_b],\n local_C[i]\n );\n }\n }\n}\n*/\nvoid PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u,\n float local_B[8][WINDOW_SIZE], float_v8 &abv) {\n#pragma HLS inline\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 8; ++i) {\n abv[i] = a_val_f * local_B[i][addr_b];\n }\n}\nvoid PEG_Bmtx(\n tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n // tapa::istream> & fifo_A,\n tapa::istream> &fifo_A,\n tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out,\n tapa::ostreams &fifo_B_out,\n // to PEG_Cmtx\n tapa::ostream &PE_inst_to_Cmtx,\n tapa::ostream &fifo_inst_out_to_Cmtx,\n tapa::ostreams &fifo_aBvec) ;\nvoid PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f;\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f;\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\nvoid PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec,\n ap_uint<64> local_C[4][URAM_DEPTH]) {\n#pragma HLS inline\n for (int i = 0; i < 4; ++i) {\n PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]);\n }\n}\nvoid PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n tapa::istreams &fifo_aBvec,\n tapa::ostream &fifo_C_out) ;\n/*\nvoid PEG(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n tapa::streams fifo_aBvec(\"fifo_aBvec\");\n tapa::stream PE_inst_to_Cmtx(\"PE_inst_to_Cmtx\");\n tapa::stream\nfifo_inst_out_to_Cmtx(\"fifo_inst_out_to_Cmtx\");\n\n tapa::task()\n .invoke(PEG_Bmtx,\n PE_inst_in,\n fifo_inst_in,\n fifo_A,\n fifo_B_in,\n PE_inst_out,\n fifo_inst_out,\n fifo_B_out,\n // to PEG_Cmtx\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec)\n\n .invoke(PEG_Cmtx,\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec,\n fifo_C_out)\n ;\n}\n\nvoid PEG_c(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0)? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n\n const int num_v_init = (M + 63) >> 6;\n //const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n\n //define local C buffer and pragma to URAM\n //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1\n#pragma HLS array_partition complete variable=local_C dim=1\n#pragma HLS array_partition complete variable=local_C dim=2\n\nl_rp:\n for(int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min=1 max=16\n\n //init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min=1 max=800\n#pragma HLS pipeline style=stp II=1\n //for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n //define local B buffer and pragma local B buffer if partition factor >\n1\n\n //float local_B[8/2][8][WINDOW_SIZE];\n //float local_B[8][WINDOW_SIZE];\n float local_B[4/2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable=local_B latency=2\n#pragma HLS array_partition variable=local_B complete dim=1\n#pragma HLS array_partition variable=local_B complete dim=2\n#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=3\n//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=2\n\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min=1 max=49\n\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i\n* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS\npipeline style=stp II = 1\n\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_512_x[k] = fifo_B_in[k].read();\n fifo_B_out[k].write(b_512_x[k]);\n }\n\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m %\n2 * 8];\n }\n }\n }\n ++j;\n }\n }\n\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n\n computation:\n for (int j = start_32; j < end_32; ) {\n#pragma HLS loop_tripcount min=1 max=200\n#pragma HLS pipeline style=stp II=1\n#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE\n\n //ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n\n if (a_pes_ready) {\n //for (int p = 0; p < 2; ++p) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<14> a_col;\n ap_uint<18> a_row;\n ap_uint<32> a_val;\n\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n a_col = a(63, 50);\n a_row = a(49, 32);\n a_val = a(31, 0);\n\n // PE process\n PEcore(a_col,\n a_row,\n a_val,\n local_C[p],\n //local_B\n local_B[p/2]\n );\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n\n //cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min=1 max=1800\n#pragma HLS pipeline style=stp II=1\n ap_uint<32> u_32_d[8];\n\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i>>2];\n u_32_d[2 * d ] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n\n switch (c_idx) { //0,2,1,3\n case 0: c_idx = 2; break;\n case 1: c_idx = 3; break;\n case 2: c_idx = 1; break;\n case 3: c_idx = 0; break;\n }\n\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\nendl;\n }\n }\n}\n*/\nvoid Scatter_1_2(tapa::istream> &fifo_in,\n tapa::ostreams, 2> &fifo_out) ;\nvoid Merger(tapa::istreams &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid black_hole_int(tapa::istream &fifo_in) ;\nvoid black_hole_float_v16(tapa::istream &fifo_in) ;\nvoid Sextans(uint64_t edge_list_ptr,\n uint64_t edge_list_ch_0, uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, uint64_t edge_list_ch_7,\n uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, uint64_t mat_B_ch_2, uint64_t mat_B_ch_3,\n uint64_t mat_C_ch_in_0, uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, uint64_t mat_C_ch_in_7,\n uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, const int beta_u) ;\n", - "level": "lower", - "target": "hls", - "vendor": "xilinx" - }, - "Merger": { - "code": "\n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \nconstexpr int NUM_CH_SPARSE = 8;\nconstexpr int NUM_CH_B = 4;\nconstexpr int NUM_CH_C = 8;\nconst int WINDOW_SIZE = 4096;\nconst int DEP_DIST_LOAD_STORE = 10;\nconst int B_PARTITION_FACTOR = 4;\nconst int URAM_DEPTH = 8192;\nusing float_v16 = tapa::vec_t;\nusing float_v8 = tapa::vec_t;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, int beta_u);\n//#include \"modules.h\"\nconstexpr int FIFO_DEPTH = 2;\nconstexpr int PEG_PER_A = 512 / 256;\nstruct MultBVec {\n ap_uint<18> row;\n float_v8 abvec;\n};\ntemplate \ninline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A,\n const R A_len, R &i_req, R &i_resp) {\n#pragma HLS inline\n if ((i_req < A_len) & !A.read_addr.full()) {\n A.read_addr.try_write(i_req);\n ++i_req;\n }\n if (!fifo_A.full() & !A.read_data.empty()) {\n T tmp;\n A.read_data.try_read(tmp);\n fifo_A.try_write(tmp);\n ++i_resp;\n }\n}\nvoid read_edge_list_ptr(\n const int num_ite, const int M,\n const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N\n const int K, uint64_t edge_list_ptr,\n tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) ;\nvoid read_A(uint64_t A,\n tapa::ostream> &fifo_A, const int A_len,\n const int P_N) ;\nvoid read_B(uint64_t B, tapa::ostream &fifo_B,\n const int K, const int P_N) ;\nvoid read_C(uint64_t C, tapa::ostream &fifo_C,\n const int M, const int P_N, tapa::ostream &wrC_inst) ;\nvoid write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C,\n uint64_t C_out) ;\nvoid FloatvMultConst(const int alpha_u, const int M, const int P_N,\n tapa::istream &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid FloatvAddFloatv(tapa::istream &fifo_in0,\n tapa::istream &fifo_in1,\n tapa::ostream &fifo_out) ;\n/*\nvoid PU2core(ap_uint<18> & addr_c,\n float a_val_f,\n float b_val_d0_f,\n float b_val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]\n ) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u);\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u);\n\n c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f;\n c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f;\n\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\n\nvoid PEcore(ap_uint<14> & addr_b,\n ap_uint<18> & addr_c,\n ap_uint<32> & a_val_u,\n ap_uint<64> local_C[4][URAM_DEPTH],\n float local_B[8][WINDOW_SIZE]\n ) {\n#pragma HLS inline\n //if (addr_c != ((ap_uint<18>) 0x3FFFF)) {\n if (addr_c[17] == 0) {\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 4; ++i) {\n PU2core(addr_c,\n a_val_f,\n local_B[i*2+0][addr_b],\n local_B[i*2+1][addr_b],\n local_C[i]\n );\n }\n }\n}\n*/\nvoid PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u,\n float local_B[8][WINDOW_SIZE], float_v8 &abv) {\n#pragma HLS inline\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 8; ++i) {\n abv[i] = a_val_f * local_B[i][addr_b];\n }\n}\nvoid PEG_Bmtx(\n tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n // tapa::istream> & fifo_A,\n tapa::istream> &fifo_A,\n tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out,\n tapa::ostreams &fifo_B_out,\n // to PEG_Cmtx\n tapa::ostream &PE_inst_to_Cmtx,\n tapa::ostream &fifo_inst_out_to_Cmtx,\n tapa::ostreams &fifo_aBvec) ;\nvoid PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f;\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f;\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\nvoid PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec,\n ap_uint<64> local_C[4][URAM_DEPTH]) {\n#pragma HLS inline\n for (int i = 0; i < 4; ++i) {\n PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]);\n }\n}\nvoid PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n tapa::istreams &fifo_aBvec,\n tapa::ostream &fifo_C_out) ;\n/*\nvoid PEG(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n tapa::streams fifo_aBvec(\"fifo_aBvec\");\n tapa::stream PE_inst_to_Cmtx(\"PE_inst_to_Cmtx\");\n tapa::stream\nfifo_inst_out_to_Cmtx(\"fifo_inst_out_to_Cmtx\");\n\n tapa::task()\n .invoke(PEG_Bmtx,\n PE_inst_in,\n fifo_inst_in,\n fifo_A,\n fifo_B_in,\n PE_inst_out,\n fifo_inst_out,\n fifo_B_out,\n // to PEG_Cmtx\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec)\n\n .invoke(PEG_Cmtx,\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec,\n fifo_C_out)\n ;\n}\n\nvoid PEG_c(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0)? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n\n const int num_v_init = (M + 63) >> 6;\n //const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n\n //define local C buffer and pragma to URAM\n //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1\n#pragma HLS array_partition complete variable=local_C dim=1\n#pragma HLS array_partition complete variable=local_C dim=2\n\nl_rp:\n for(int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min=1 max=16\n\n //init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min=1 max=800\n#pragma HLS pipeline style=stp II=1\n //for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n //define local B buffer and pragma local B buffer if partition factor >\n1\n\n //float local_B[8/2][8][WINDOW_SIZE];\n //float local_B[8][WINDOW_SIZE];\n float local_B[4/2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable=local_B latency=2\n#pragma HLS array_partition variable=local_B complete dim=1\n#pragma HLS array_partition variable=local_B complete dim=2\n#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=3\n//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=2\n\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min=1 max=49\n\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i\n* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS\npipeline style=stp II = 1\n\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_512_x[k] = fifo_B_in[k].read();\n fifo_B_out[k].write(b_512_x[k]);\n }\n\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m %\n2 * 8];\n }\n }\n }\n ++j;\n }\n }\n\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n\n computation:\n for (int j = start_32; j < end_32; ) {\n#pragma HLS loop_tripcount min=1 max=200\n#pragma HLS pipeline style=stp II=1\n#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE\n\n //ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n\n if (a_pes_ready) {\n //for (int p = 0; p < 2; ++p) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<14> a_col;\n ap_uint<18> a_row;\n ap_uint<32> a_val;\n\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n a_col = a(63, 50);\n a_row = a(49, 32);\n a_val = a(31, 0);\n\n // PE process\n PEcore(a_col,\n a_row,\n a_val,\n local_C[p],\n //local_B\n local_B[p/2]\n );\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n\n //cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min=1 max=1800\n#pragma HLS pipeline style=stp II=1\n ap_uint<32> u_32_d[8];\n\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i>>2];\n u_32_d[2 * d ] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n\n switch (c_idx) { //0,2,1,3\n case 0: c_idx = 2; break;\n case 1: c_idx = 3; break;\n case 2: c_idx = 1; break;\n case 3: c_idx = 0; break;\n }\n\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\nendl;\n }\n }\n}\n*/\nvoid Scatter_1_2(tapa::istream> &fifo_in,\n tapa::ostreams, 2> &fifo_out) ;\nvoid Merger(tapa::istreams &fifo_in,\n tapa::ostream &fifo_out) {\n#pragma HLS disaggregate variable = fifo_in\n#pragma HLS array_partition variable = fifo_in complete\n#pragma HLS interface ap_fifo port = fifo_in[0]._\n#pragma HLS aggregate variable = fifo_in[0]._ bit\n#pragma HLS interface ap_fifo port = fifo_in[0]._peek\n#pragma HLS aggregate variable = fifo_in[0]._peek bit\nvoid(fifo_in[0]._.empty());\nvoid(fifo_in[0]._peek.empty());\n#pragma HLS interface ap_fifo port = fifo_in[1]._\n#pragma HLS aggregate variable = fifo_in[1]._ bit\n#pragma HLS interface ap_fifo port = fifo_in[1]._peek\n#pragma HLS aggregate variable = fifo_in[1]._peek bit\nvoid(fifo_in[1]._.empty());\nvoid(fifo_in[1]._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_out\n#pragma HLS interface ap_fifo port = fifo_out._\n#pragma HLS aggregate variable = fifo_out._ bit\nvoid(fifo_out._.full());\n\n for (;;) {\n#pragma HLS pipeline style = stp II = 1\n bool flag_nop = fifo_out.full() | fifo_in[0].empty() | fifo_in[1].empty();\n if (!flag_nop) {\n float_v16 tmpv16;\n float_v8 tmpv8[2];\n#pragma HLS aggregate variable = tmpv16\n fifo_in[0].try_read(tmpv8[0]);\n fifo_in[1].try_read(tmpv8[1]);\n for (int i = 0; i < 8; ++i) {\n tmpv16[i] = tmpv8[0][i];\n tmpv16[i + 8] = tmpv8[1][i];\n }\n fifo_out.try_write(tmpv16);\n }\n }\n}\nvoid black_hole_int(tapa::istream &fifo_in) ;\nvoid black_hole_float_v16(tapa::istream &fifo_in) ;\nvoid Sextans(uint64_t edge_list_ptr,\n uint64_t edge_list_ch_0, uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, uint64_t edge_list_ch_7,\n uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, uint64_t mat_B_ch_2, uint64_t mat_B_ch_3,\n uint64_t mat_C_ch_in_0, uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, uint64_t mat_C_ch_in_7,\n uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, const int beta_u) ;\n", - "level": "lower", - "target": "hls", - "vendor": "xilinx" - }, - "PEG_Bmtx": { - "code": "\n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \nconstexpr int NUM_CH_SPARSE = 8;\nconstexpr int NUM_CH_B = 4;\nconstexpr int NUM_CH_C = 8;\nconst int WINDOW_SIZE = 4096;\nconst int DEP_DIST_LOAD_STORE = 10;\nconst int B_PARTITION_FACTOR = 4;\nconst int URAM_DEPTH = 8192;\nusing float_v16 = tapa::vec_t;\nusing float_v8 = tapa::vec_t;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, int beta_u);\n//#include \"modules.h\"\nconstexpr int FIFO_DEPTH = 2;\nconstexpr int PEG_PER_A = 512 / 256;\nstruct MultBVec {\n ap_uint<18> row;\n float_v8 abvec;\n};\ntemplate \ninline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A,\n const R A_len, R &i_req, R &i_resp) {\n#pragma HLS inline\n if ((i_req < A_len) & !A.read_addr.full()) {\n A.read_addr.try_write(i_req);\n ++i_req;\n }\n if (!fifo_A.full() & !A.read_data.empty()) {\n T tmp;\n A.read_data.try_read(tmp);\n fifo_A.try_write(tmp);\n ++i_resp;\n }\n}\nvoid read_edge_list_ptr(\n const int num_ite, const int M,\n const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N\n const int K, uint64_t edge_list_ptr,\n tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) ;\nvoid read_A(uint64_t A,\n tapa::ostream> &fifo_A, const int A_len,\n const int P_N) ;\nvoid read_B(uint64_t B, tapa::ostream &fifo_B,\n const int K, const int P_N) ;\nvoid read_C(uint64_t C, tapa::ostream &fifo_C,\n const int M, const int P_N, tapa::ostream &wrC_inst) ;\nvoid write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C,\n uint64_t C_out) ;\nvoid FloatvMultConst(const int alpha_u, const int M, const int P_N,\n tapa::istream &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid FloatvAddFloatv(tapa::istream &fifo_in0,\n tapa::istream &fifo_in1,\n tapa::ostream &fifo_out) ;\n/*\nvoid PU2core(ap_uint<18> & addr_c,\n float a_val_f,\n float b_val_d0_f,\n float b_val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]\n ) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u);\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u);\n\n c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f;\n c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f;\n\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\n\nvoid PEcore(ap_uint<14> & addr_b,\n ap_uint<18> & addr_c,\n ap_uint<32> & a_val_u,\n ap_uint<64> local_C[4][URAM_DEPTH],\n float local_B[8][WINDOW_SIZE]\n ) {\n#pragma HLS inline\n //if (addr_c != ((ap_uint<18>) 0x3FFFF)) {\n if (addr_c[17] == 0) {\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 4; ++i) {\n PU2core(addr_c,\n a_val_f,\n local_B[i*2+0][addr_b],\n local_B[i*2+1][addr_b],\n local_C[i]\n );\n }\n }\n}\n*/\nvoid PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u,\n float local_B[8][WINDOW_SIZE], float_v8 &abv) {\n#pragma HLS inline\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 8; ++i) {\n abv[i] = a_val_f * local_B[i][addr_b];\n }\n}\nvoid PEG_Bmtx(\n tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n // tapa::istream> & fifo_A,\n tapa::istream> &fifo_A,\n tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out,\n tapa::ostreams &fifo_B_out,\n // to PEG_Cmtx\n tapa::ostream &PE_inst_to_Cmtx,\n tapa::ostream &fifo_inst_out_to_Cmtx,\n tapa::ostreams &fifo_aBvec) {\n#pragma HLS disaggregate variable = PE_inst_in\n#pragma HLS interface ap_fifo port = PE_inst_in._\n#pragma HLS aggregate variable = PE_inst_in._ bit\n#pragma HLS interface ap_fifo port = PE_inst_in._peek\n#pragma HLS aggregate variable = PE_inst_in._peek bit\nvoid(PE_inst_in._.empty());\nvoid(PE_inst_in._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_inst_in\n#pragma HLS interface ap_fifo port = fifo_inst_in._\n#pragma HLS aggregate variable = fifo_inst_in._ bit\n#pragma HLS interface ap_fifo port = fifo_inst_in._peek\n#pragma HLS aggregate variable = fifo_inst_in._peek bit\nvoid(fifo_inst_in._.empty());\nvoid(fifo_inst_in._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_A\n#pragma HLS interface ap_fifo port = fifo_A._\n#pragma HLS aggregate variable = fifo_A._ bit\n#pragma HLS interface ap_fifo port = fifo_A._peek\n#pragma HLS aggregate variable = fifo_A._peek bit\nvoid(fifo_A._.empty());\nvoid(fifo_A._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_B_in\n#pragma HLS array_partition variable = fifo_B_in complete\n#pragma HLS interface ap_fifo port = fifo_B_in[0]._\n#pragma HLS aggregate variable = fifo_B_in[0]._ bit\n#pragma HLS interface ap_fifo port = fifo_B_in[0]._peek\n#pragma HLS aggregate variable = fifo_B_in[0]._peek bit\nvoid(fifo_B_in[0]._.empty());\nvoid(fifo_B_in[0]._peek.empty());\n#pragma HLS interface ap_fifo port = fifo_B_in[1]._\n#pragma HLS aggregate variable = fifo_B_in[1]._ bit\n#pragma HLS interface ap_fifo port = fifo_B_in[1]._peek\n#pragma HLS aggregate variable = fifo_B_in[1]._peek bit\nvoid(fifo_B_in[1]._.empty());\nvoid(fifo_B_in[1]._peek.empty());\n#pragma HLS interface ap_fifo port = fifo_B_in[2]._\n#pragma HLS aggregate variable = fifo_B_in[2]._ bit\n#pragma HLS interface ap_fifo port = fifo_B_in[2]._peek\n#pragma HLS aggregate variable = fifo_B_in[2]._peek bit\nvoid(fifo_B_in[2]._.empty());\nvoid(fifo_B_in[2]._peek.empty());\n#pragma HLS interface ap_fifo port = fifo_B_in[3]._\n#pragma HLS aggregate variable = fifo_B_in[3]._ bit\n#pragma HLS interface ap_fifo port = fifo_B_in[3]._peek\n#pragma HLS aggregate variable = fifo_B_in[3]._peek bit\nvoid(fifo_B_in[3]._.empty());\nvoid(fifo_B_in[3]._peek.empty());\n\n#pragma HLS disaggregate variable = PE_inst_out\n#pragma HLS interface ap_fifo port = PE_inst_out._\n#pragma HLS aggregate variable = PE_inst_out._ bit\nvoid(PE_inst_out._.full());\n\n#pragma HLS disaggregate variable = fifo_inst_out\n#pragma HLS interface ap_fifo port = fifo_inst_out._\n#pragma HLS aggregate variable = fifo_inst_out._ bit\nvoid(fifo_inst_out._.full());\n\n#pragma HLS disaggregate variable = fifo_B_out\n#pragma HLS array_partition variable = fifo_B_out complete\n#pragma HLS interface ap_fifo port = fifo_B_out[0]._\n#pragma HLS aggregate variable = fifo_B_out[0]._ bit\nvoid(fifo_B_out[0]._.full());\n#pragma HLS interface ap_fifo port = fifo_B_out[1]._\n#pragma HLS aggregate variable = fifo_B_out[1]._ bit\nvoid(fifo_B_out[1]._.full());\n#pragma HLS interface ap_fifo port = fifo_B_out[2]._\n#pragma HLS aggregate variable = fifo_B_out[2]._ bit\nvoid(fifo_B_out[2]._.full());\n#pragma HLS interface ap_fifo port = fifo_B_out[3]._\n#pragma HLS aggregate variable = fifo_B_out[3]._ bit\nvoid(fifo_B_out[3]._.full());\n\n#pragma HLS disaggregate variable = PE_inst_to_Cmtx\n#pragma HLS interface ap_fifo port = PE_inst_to_Cmtx._\n#pragma HLS aggregate variable = PE_inst_to_Cmtx._ bit\nvoid(PE_inst_to_Cmtx._.full());\n\n#pragma HLS disaggregate variable = fifo_inst_out_to_Cmtx\n#pragma HLS interface ap_fifo port = fifo_inst_out_to_Cmtx._\n#pragma HLS aggregate variable = fifo_inst_out_to_Cmtx._ bit\nvoid(fifo_inst_out_to_Cmtx._.full());\n\n#pragma HLS disaggregate variable = fifo_aBvec\n#pragma HLS array_partition variable = fifo_aBvec complete\n#pragma HLS interface ap_fifo port = fifo_aBvec[0]._\n#pragma HLS aggregate variable = fifo_aBvec[0]._ bit\nvoid(fifo_aBvec[0]._.full());\n#pragma HLS interface ap_fifo port = fifo_aBvec[1]._\n#pragma HLS aggregate variable = fifo_aBvec[1]._ bit\nvoid(fifo_aBvec[1]._.full());\n#pragma HLS interface ap_fifo port = fifo_aBvec[2]._\n#pragma HLS aggregate variable = fifo_aBvec[2]._ bit\nvoid(fifo_aBvec[2]._.full());\n#pragma HLS interface ap_fifo port = fifo_aBvec[3]._\n#pragma HLS aggregate variable = fifo_aBvec[3]._ bit\nvoid(fifo_aBvec[3]._.full());\n\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n PE_inst_to_Cmtx.write(NUM_ITE);\n PE_inst_to_Cmtx.write(M);\n PE_inst_to_Cmtx.write(P_N);\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0) ? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\nl_rp:\n for (int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min = 1 max = 16\n // float local_B[8/2][8][WINDOW_SIZE];\n // float local_B[8][WINDOW_SIZE];\n float local_B[4 / 2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable = local_B latency = 2\n#pragma HLS array_partition variable = local_B complete dim = 1\n#pragma HLS array_partition variable = local_B complete dim = 2\n#pragma HLS array_partition variable = local_B cyclic factor = \\\n B_PARTITION_FACTOR dim = 3\n //#pragma HLS array_partition variable=local_B cyclic\n //factor=B_PARTITION_FACTOR dim=2\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n fifo_inst_out_to_Cmtx.write(start_32);\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min = 1 max = 49\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) &&\n (j < ((K + 7) >> 3) - i * (WINDOW_SIZE >> 3));) {\n#pragma HLS loop_tripcount min = 1 max = 512\n#pragma HLS pipeline style = stp II = 1\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n fifo_B_in[k].try_read(b_512_x[k]);\n fifo_B_out[k].try_write(b_512_x[k]);\n }\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m / 2][k + m % 2 * 8];\n }\n }\n }\n ++j;\n }\n }\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n fifo_inst_out_to_Cmtx.write(end_32);\n computation:\n for (int j = start_32; j < end_32;) {\n#pragma HLS loop_tripcount min = 1 max = 200\n#pragma HLS pipeline style = stp II = 1\n // ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n if (a_pes_ready) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n ap_uint<14> a_col = a(63, 50);\n ap_uint<18> a_row = a(49, 32);\n ap_uint<32> a_val = a(31, 0);\n MultBVec rabv;\n rabv.row = a_row;\n if (a_row[17] == 0) {\n // PE process\n PEcore_Bmtx(a_col, a_val, local_B[p / 2], rabv.abvec);\n }\n fifo_aBvec[p].write(rabv);\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n }\n}\nvoid PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f;\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f;\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\nvoid PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec,\n ap_uint<64> local_C[4][URAM_DEPTH]) {\n#pragma HLS inline\n for (int i = 0; i < 4; ++i) {\n PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]);\n }\n}\nvoid PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n tapa::istreams &fifo_aBvec,\n tapa::ostream &fifo_C_out) ;\n/*\nvoid PEG(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n tapa::streams fifo_aBvec(\"fifo_aBvec\");\n tapa::stream PE_inst_to_Cmtx(\"PE_inst_to_Cmtx\");\n tapa::stream\nfifo_inst_out_to_Cmtx(\"fifo_inst_out_to_Cmtx\");\n\n tapa::task()\n .invoke(PEG_Bmtx,\n PE_inst_in,\n fifo_inst_in,\n fifo_A,\n fifo_B_in,\n PE_inst_out,\n fifo_inst_out,\n fifo_B_out,\n // to PEG_Cmtx\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec)\n\n .invoke(PEG_Cmtx,\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec,\n fifo_C_out)\n ;\n}\n\nvoid PEG_c(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0)? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n\n const int num_v_init = (M + 63) >> 6;\n //const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n\n //define local C buffer and pragma to URAM\n //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1\n#pragma HLS array_partition complete variable=local_C dim=1\n#pragma HLS array_partition complete variable=local_C dim=2\n\nl_rp:\n for(int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min=1 max=16\n\n //init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min=1 max=800\n#pragma HLS pipeline style=stp II=1\n //for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n //define local B buffer and pragma local B buffer if partition factor >\n1\n\n //float local_B[8/2][8][WINDOW_SIZE];\n //float local_B[8][WINDOW_SIZE];\n float local_B[4/2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable=local_B latency=2\n#pragma HLS array_partition variable=local_B complete dim=1\n#pragma HLS array_partition variable=local_B complete dim=2\n#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=3\n//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=2\n\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min=1 max=49\n\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i\n* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS\npipeline style=stp II = 1\n\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_512_x[k] = fifo_B_in[k].read();\n fifo_B_out[k].write(b_512_x[k]);\n }\n\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m %\n2 * 8];\n }\n }\n }\n ++j;\n }\n }\n\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n\n computation:\n for (int j = start_32; j < end_32; ) {\n#pragma HLS loop_tripcount min=1 max=200\n#pragma HLS pipeline style=stp II=1\n#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE\n\n //ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n\n if (a_pes_ready) {\n //for (int p = 0; p < 2; ++p) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<14> a_col;\n ap_uint<18> a_row;\n ap_uint<32> a_val;\n\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n a_col = a(63, 50);\n a_row = a(49, 32);\n a_val = a(31, 0);\n\n // PE process\n PEcore(a_col,\n a_row,\n a_val,\n local_C[p],\n //local_B\n local_B[p/2]\n );\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n\n //cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min=1 max=1800\n#pragma HLS pipeline style=stp II=1\n ap_uint<32> u_32_d[8];\n\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i>>2];\n u_32_d[2 * d ] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n\n switch (c_idx) { //0,2,1,3\n case 0: c_idx = 2; break;\n case 1: c_idx = 3; break;\n case 2: c_idx = 1; break;\n case 3: c_idx = 0; break;\n }\n\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\nendl;\n }\n }\n}\n*/\nvoid Scatter_1_2(tapa::istream> &fifo_in,\n tapa::ostreams, 2> &fifo_out) ;\nvoid Merger(tapa::istreams &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid black_hole_int(tapa::istream &fifo_in) ;\nvoid black_hole_float_v16(tapa::istream &fifo_in) ;\nvoid Sextans(uint64_t edge_list_ptr,\n uint64_t edge_list_ch_0, uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, uint64_t edge_list_ch_7,\n uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, uint64_t mat_B_ch_2, uint64_t mat_B_ch_3,\n uint64_t mat_C_ch_in_0, uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, uint64_t mat_C_ch_in_7,\n uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, const int beta_u) ;\n", - "level": "lower", - "target": "hls", - "vendor": "xilinx" - }, - "PEG_Cmtx": { - "code": "\n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \nconstexpr int NUM_CH_SPARSE = 8;\nconstexpr int NUM_CH_B = 4;\nconstexpr int NUM_CH_C = 8;\nconst int WINDOW_SIZE = 4096;\nconst int DEP_DIST_LOAD_STORE = 10;\nconst int B_PARTITION_FACTOR = 4;\nconst int URAM_DEPTH = 8192;\nusing float_v16 = tapa::vec_t;\nusing float_v8 = tapa::vec_t;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, int beta_u);\n//#include \"modules.h\"\nconstexpr int FIFO_DEPTH = 2;\nconstexpr int PEG_PER_A = 512 / 256;\nstruct MultBVec {\n ap_uint<18> row;\n float_v8 abvec;\n};\ntemplate \ninline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A,\n const R A_len, R &i_req, R &i_resp) {\n#pragma HLS inline\n if ((i_req < A_len) & !A.read_addr.full()) {\n A.read_addr.try_write(i_req);\n ++i_req;\n }\n if (!fifo_A.full() & !A.read_data.empty()) {\n T tmp;\n A.read_data.try_read(tmp);\n fifo_A.try_write(tmp);\n ++i_resp;\n }\n}\nvoid read_edge_list_ptr(\n const int num_ite, const int M,\n const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N\n const int K, uint64_t edge_list_ptr,\n tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) ;\nvoid read_A(uint64_t A,\n tapa::ostream> &fifo_A, const int A_len,\n const int P_N) ;\nvoid read_B(uint64_t B, tapa::ostream &fifo_B,\n const int K, const int P_N) ;\nvoid read_C(uint64_t C, tapa::ostream &fifo_C,\n const int M, const int P_N, tapa::ostream &wrC_inst) ;\nvoid write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C,\n uint64_t C_out) ;\nvoid FloatvMultConst(const int alpha_u, const int M, const int P_N,\n tapa::istream &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid FloatvAddFloatv(tapa::istream &fifo_in0,\n tapa::istream &fifo_in1,\n tapa::ostream &fifo_out) ;\n/*\nvoid PU2core(ap_uint<18> & addr_c,\n float a_val_f,\n float b_val_d0_f,\n float b_val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]\n ) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u);\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u);\n\n c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f;\n c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f;\n\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\n\nvoid PEcore(ap_uint<14> & addr_b,\n ap_uint<18> & addr_c,\n ap_uint<32> & a_val_u,\n ap_uint<64> local_C[4][URAM_DEPTH],\n float local_B[8][WINDOW_SIZE]\n ) {\n#pragma HLS inline\n //if (addr_c != ((ap_uint<18>) 0x3FFFF)) {\n if (addr_c[17] == 0) {\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 4; ++i) {\n PU2core(addr_c,\n a_val_f,\n local_B[i*2+0][addr_b],\n local_B[i*2+1][addr_b],\n local_C[i]\n );\n }\n }\n}\n*/\nvoid PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u,\n float local_B[8][WINDOW_SIZE], float_v8 &abv) {\n#pragma HLS inline\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 8; ++i) {\n abv[i] = a_val_f * local_B[i][addr_b];\n }\n}\nvoid PEG_Bmtx(\n tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n // tapa::istream> & fifo_A,\n tapa::istream> &fifo_A,\n tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out,\n tapa::ostreams &fifo_B_out,\n // to PEG_Cmtx\n tapa::ostream &PE_inst_to_Cmtx,\n tapa::ostream &fifo_inst_out_to_Cmtx,\n tapa::ostreams &fifo_aBvec) ;\nvoid PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f;\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f;\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\nvoid PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec,\n ap_uint<64> local_C[4][URAM_DEPTH]) {\n#pragma HLS inline\n for (int i = 0; i < 4; ++i) {\n PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]);\n }\n}\nvoid PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n tapa::istreams &fifo_aBvec,\n tapa::ostream &fifo_C_out) {\n#pragma HLS disaggregate variable = PE_inst_in\n#pragma HLS interface ap_fifo port = PE_inst_in._\n#pragma HLS aggregate variable = PE_inst_in._ bit\n#pragma HLS interface ap_fifo port = PE_inst_in._peek\n#pragma HLS aggregate variable = PE_inst_in._peek bit\nvoid(PE_inst_in._.empty());\nvoid(PE_inst_in._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_inst_in\n#pragma HLS interface ap_fifo port = fifo_inst_in._\n#pragma HLS aggregate variable = fifo_inst_in._ bit\n#pragma HLS interface ap_fifo port = fifo_inst_in._peek\n#pragma HLS aggregate variable = fifo_inst_in._peek bit\nvoid(fifo_inst_in._.empty());\nvoid(fifo_inst_in._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_aBvec\n#pragma HLS array_partition variable = fifo_aBvec complete\n#pragma HLS interface ap_fifo port = fifo_aBvec[0]._\n#pragma HLS aggregate variable = fifo_aBvec[0]._ bit\n#pragma HLS interface ap_fifo port = fifo_aBvec[0]._peek\n#pragma HLS aggregate variable = fifo_aBvec[0]._peek bit\nvoid(fifo_aBvec[0]._.empty());\nvoid(fifo_aBvec[0]._peek.empty());\n#pragma HLS interface ap_fifo port = fifo_aBvec[1]._\n#pragma HLS aggregate variable = fifo_aBvec[1]._ bit\n#pragma HLS interface ap_fifo port = fifo_aBvec[1]._peek\n#pragma HLS aggregate variable = fifo_aBvec[1]._peek bit\nvoid(fifo_aBvec[1]._.empty());\nvoid(fifo_aBvec[1]._peek.empty());\n#pragma HLS interface ap_fifo port = fifo_aBvec[2]._\n#pragma HLS aggregate variable = fifo_aBvec[2]._ bit\n#pragma HLS interface ap_fifo port = fifo_aBvec[2]._peek\n#pragma HLS aggregate variable = fifo_aBvec[2]._peek bit\nvoid(fifo_aBvec[2]._.empty());\nvoid(fifo_aBvec[2]._peek.empty());\n#pragma HLS interface ap_fifo port = fifo_aBvec[3]._\n#pragma HLS aggregate variable = fifo_aBvec[3]._ bit\n#pragma HLS interface ap_fifo port = fifo_aBvec[3]._peek\n#pragma HLS aggregate variable = fifo_aBvec[3]._peek bit\nvoid(fifo_aBvec[3]._.empty());\nvoid(fifo_aBvec[3]._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_C_out\n#pragma HLS interface ap_fifo port = fifo_C_out._\n#pragma HLS aggregate variable = fifo_C_out._ bit\nvoid(fifo_C_out._.full());\n\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0) ? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n const int num_v_init = (M + 63) >> 6;\n // const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n // define local C buffer and pragma to URAM\n // ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable = local_C type = RAM_2P impl = \\\n URAM latency = 1\n#pragma HLS array_partition complete variable = local_C dim = 1\n#pragma HLS array_partition complete variable = local_C dim = 2\nl_rp:\n for (int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min = 1 max = 16\n // init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min = 1 max = 800\n#pragma HLS pipeline style = stp II = 1\n // for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n auto start_32 = fifo_inst_in.read();\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min = 1 max = 49\n // computation\n const auto end_32 = fifo_inst_in.read();\n computation:\n for (int j = start_32; j < end_32;) {\n#pragma HLS loop_tripcount min = 1 max = 200\n#pragma HLS pipeline style = stp II = 1\n#pragma HLS dependence true variable = local_C distance = DEP_DIST_LOAD_STORE\n bool nop_flag = false;\n for (int p = 0; p < 4; ++p) {\n nop_flag |= fifo_aBvec[p].empty();\n }\n if (!nop_flag) {\n for (int p = 0; p < 4; ++p) {\n MultBVec rabv;\n fifo_aBvec[p].try_read(rabv);\n ap_uint<18> a_row = rabv.row;\n if (a_row[17] == 0) {\n PEcore_Cmtx(a_row, rabv.abvec, local_C[p]);\n }\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n // cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min = 1 max = 1800\n#pragma HLS pipeline style = stp II = 1\n ap_uint<32> u_32_d[8];\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i >> 2];\n u_32_d[2 * d] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n switch (c_idx) { // 0,2,1,3\n case 0:\n c_idx = 2;\n break;\n case 1:\n c_idx = 3;\n break;\n case 2:\n c_idx = 1;\n break;\n case 3:\n c_idx = 0;\n break;\n }\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n // for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\n // endl;\n }\n }\n}\n/*\nvoid PEG(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n tapa::streams fifo_aBvec(\"fifo_aBvec\");\n tapa::stream PE_inst_to_Cmtx(\"PE_inst_to_Cmtx\");\n tapa::stream\nfifo_inst_out_to_Cmtx(\"fifo_inst_out_to_Cmtx\");\n\n tapa::task()\n .invoke(PEG_Bmtx,\n PE_inst_in,\n fifo_inst_in,\n fifo_A,\n fifo_B_in,\n PE_inst_out,\n fifo_inst_out,\n fifo_B_out,\n // to PEG_Cmtx\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec)\n\n .invoke(PEG_Cmtx,\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec,\n fifo_C_out)\n ;\n}\n\nvoid PEG_c(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0)? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n\n const int num_v_init = (M + 63) >> 6;\n //const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n\n //define local C buffer and pragma to URAM\n //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1\n#pragma HLS array_partition complete variable=local_C dim=1\n#pragma HLS array_partition complete variable=local_C dim=2\n\nl_rp:\n for(int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min=1 max=16\n\n //init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min=1 max=800\n#pragma HLS pipeline style=stp II=1\n //for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n //define local B buffer and pragma local B buffer if partition factor >\n1\n\n //float local_B[8/2][8][WINDOW_SIZE];\n //float local_B[8][WINDOW_SIZE];\n float local_B[4/2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable=local_B latency=2\n#pragma HLS array_partition variable=local_B complete dim=1\n#pragma HLS array_partition variable=local_B complete dim=2\n#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=3\n//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=2\n\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min=1 max=49\n\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i\n* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS\npipeline style=stp II = 1\n\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_512_x[k] = fifo_B_in[k].read();\n fifo_B_out[k].write(b_512_x[k]);\n }\n\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m %\n2 * 8];\n }\n }\n }\n ++j;\n }\n }\n\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n\n computation:\n for (int j = start_32; j < end_32; ) {\n#pragma HLS loop_tripcount min=1 max=200\n#pragma HLS pipeline style=stp II=1\n#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE\n\n //ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n\n if (a_pes_ready) {\n //for (int p = 0; p < 2; ++p) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<14> a_col;\n ap_uint<18> a_row;\n ap_uint<32> a_val;\n\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n a_col = a(63, 50);\n a_row = a(49, 32);\n a_val = a(31, 0);\n\n // PE process\n PEcore(a_col,\n a_row,\n a_val,\n local_C[p],\n //local_B\n local_B[p/2]\n );\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n\n //cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min=1 max=1800\n#pragma HLS pipeline style=stp II=1\n ap_uint<32> u_32_d[8];\n\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i>>2];\n u_32_d[2 * d ] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n\n switch (c_idx) { //0,2,1,3\n case 0: c_idx = 2; break;\n case 1: c_idx = 3; break;\n case 2: c_idx = 1; break;\n case 3: c_idx = 0; break;\n }\n\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\nendl;\n }\n }\n}\n*/\nvoid Scatter_1_2(tapa::istream> &fifo_in,\n tapa::ostreams, 2> &fifo_out) ;\nvoid Merger(tapa::istreams &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid black_hole_int(tapa::istream &fifo_in) ;\nvoid black_hole_float_v16(tapa::istream &fifo_in) ;\nvoid Sextans(uint64_t edge_list_ptr,\n uint64_t edge_list_ch_0, uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, uint64_t edge_list_ch_7,\n uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, uint64_t mat_B_ch_2, uint64_t mat_B_ch_3,\n uint64_t mat_C_ch_in_0, uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, uint64_t mat_C_ch_in_7,\n uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, const int beta_u) ;\n", - "level": "lower", - "target": "hls", - "vendor": "xilinx" - }, - "Scatter_1_2": { - "code": "\n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \nconstexpr int NUM_CH_SPARSE = 8;\nconstexpr int NUM_CH_B = 4;\nconstexpr int NUM_CH_C = 8;\nconst int WINDOW_SIZE = 4096;\nconst int DEP_DIST_LOAD_STORE = 10;\nconst int B_PARTITION_FACTOR = 4;\nconst int URAM_DEPTH = 8192;\nusing float_v16 = tapa::vec_t;\nusing float_v8 = tapa::vec_t;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, int beta_u);\n//#include \"modules.h\"\nconstexpr int FIFO_DEPTH = 2;\nconstexpr int PEG_PER_A = 512 / 256;\nstruct MultBVec {\n ap_uint<18> row;\n float_v8 abvec;\n};\ntemplate \ninline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A,\n const R A_len, R &i_req, R &i_resp) {\n#pragma HLS inline\n if ((i_req < A_len) & !A.read_addr.full()) {\n A.read_addr.try_write(i_req);\n ++i_req;\n }\n if (!fifo_A.full() & !A.read_data.empty()) {\n T tmp;\n A.read_data.try_read(tmp);\n fifo_A.try_write(tmp);\n ++i_resp;\n }\n}\nvoid read_edge_list_ptr(\n const int num_ite, const int M,\n const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N\n const int K, uint64_t edge_list_ptr,\n tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) ;\nvoid read_A(uint64_t A,\n tapa::ostream> &fifo_A, const int A_len,\n const int P_N) ;\nvoid read_B(uint64_t B, tapa::ostream &fifo_B,\n const int K, const int P_N) ;\nvoid read_C(uint64_t C, tapa::ostream &fifo_C,\n const int M, const int P_N, tapa::ostream &wrC_inst) ;\nvoid write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C,\n uint64_t C_out) ;\nvoid FloatvMultConst(const int alpha_u, const int M, const int P_N,\n tapa::istream &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid FloatvAddFloatv(tapa::istream &fifo_in0,\n tapa::istream &fifo_in1,\n tapa::ostream &fifo_out) ;\n/*\nvoid PU2core(ap_uint<18> & addr_c,\n float a_val_f,\n float b_val_d0_f,\n float b_val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]\n ) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u);\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u);\n\n c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f;\n c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f;\n\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\n\nvoid PEcore(ap_uint<14> & addr_b,\n ap_uint<18> & addr_c,\n ap_uint<32> & a_val_u,\n ap_uint<64> local_C[4][URAM_DEPTH],\n float local_B[8][WINDOW_SIZE]\n ) {\n#pragma HLS inline\n //if (addr_c != ((ap_uint<18>) 0x3FFFF)) {\n if (addr_c[17] == 0) {\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 4; ++i) {\n PU2core(addr_c,\n a_val_f,\n local_B[i*2+0][addr_b],\n local_B[i*2+1][addr_b],\n local_C[i]\n );\n }\n }\n}\n*/\nvoid PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u,\n float local_B[8][WINDOW_SIZE], float_v8 &abv) {\n#pragma HLS inline\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 8; ++i) {\n abv[i] = a_val_f * local_B[i][addr_b];\n }\n}\nvoid PEG_Bmtx(\n tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n // tapa::istream> & fifo_A,\n tapa::istream> &fifo_A,\n tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out,\n tapa::ostreams &fifo_B_out,\n // to PEG_Cmtx\n tapa::ostream &PE_inst_to_Cmtx,\n tapa::ostream &fifo_inst_out_to_Cmtx,\n tapa::ostreams &fifo_aBvec) ;\nvoid PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f;\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f;\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\nvoid PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec,\n ap_uint<64> local_C[4][URAM_DEPTH]) {\n#pragma HLS inline\n for (int i = 0; i < 4; ++i) {\n PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]);\n }\n}\nvoid PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n tapa::istreams &fifo_aBvec,\n tapa::ostream &fifo_C_out) ;\n/*\nvoid PEG(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n tapa::streams fifo_aBvec(\"fifo_aBvec\");\n tapa::stream PE_inst_to_Cmtx(\"PE_inst_to_Cmtx\");\n tapa::stream\nfifo_inst_out_to_Cmtx(\"fifo_inst_out_to_Cmtx\");\n\n tapa::task()\n .invoke(PEG_Bmtx,\n PE_inst_in,\n fifo_inst_in,\n fifo_A,\n fifo_B_in,\n PE_inst_out,\n fifo_inst_out,\n fifo_B_out,\n // to PEG_Cmtx\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec)\n\n .invoke(PEG_Cmtx,\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec,\n fifo_C_out)\n ;\n}\n\nvoid PEG_c(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0)? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n\n const int num_v_init = (M + 63) >> 6;\n //const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n\n //define local C buffer and pragma to URAM\n //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1\n#pragma HLS array_partition complete variable=local_C dim=1\n#pragma HLS array_partition complete variable=local_C dim=2\n\nl_rp:\n for(int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min=1 max=16\n\n //init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min=1 max=800\n#pragma HLS pipeline style=stp II=1\n //for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n //define local B buffer and pragma local B buffer if partition factor >\n1\n\n //float local_B[8/2][8][WINDOW_SIZE];\n //float local_B[8][WINDOW_SIZE];\n float local_B[4/2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable=local_B latency=2\n#pragma HLS array_partition variable=local_B complete dim=1\n#pragma HLS array_partition variable=local_B complete dim=2\n#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=3\n//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=2\n\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min=1 max=49\n\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i\n* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS\npipeline style=stp II = 1\n\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_512_x[k] = fifo_B_in[k].read();\n fifo_B_out[k].write(b_512_x[k]);\n }\n\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m %\n2 * 8];\n }\n }\n }\n ++j;\n }\n }\n\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n\n computation:\n for (int j = start_32; j < end_32; ) {\n#pragma HLS loop_tripcount min=1 max=200\n#pragma HLS pipeline style=stp II=1\n#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE\n\n //ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n\n if (a_pes_ready) {\n //for (int p = 0; p < 2; ++p) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<14> a_col;\n ap_uint<18> a_row;\n ap_uint<32> a_val;\n\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n a_col = a(63, 50);\n a_row = a(49, 32);\n a_val = a(31, 0);\n\n // PE process\n PEcore(a_col,\n a_row,\n a_val,\n local_C[p],\n //local_B\n local_B[p/2]\n );\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n\n //cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min=1 max=1800\n#pragma HLS pipeline style=stp II=1\n ap_uint<32> u_32_d[8];\n\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i>>2];\n u_32_d[2 * d ] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n\n switch (c_idx) { //0,2,1,3\n case 0: c_idx = 2; break;\n case 1: c_idx = 3; break;\n case 2: c_idx = 1; break;\n case 3: c_idx = 0; break;\n }\n\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\nendl;\n }\n }\n}\n*/\nvoid Scatter_1_2(tapa::istream> &fifo_in,\n tapa::ostreams, 2> &fifo_out) {\n#pragma HLS disaggregate variable = fifo_in\n#pragma HLS interface ap_fifo port = fifo_in._\n#pragma HLS aggregate variable = fifo_in._ bit\n#pragma HLS interface ap_fifo port = fifo_in._peek\n#pragma HLS aggregate variable = fifo_in._peek bit\nvoid(fifo_in._.empty());\nvoid(fifo_in._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_out\n#pragma HLS array_partition variable = fifo_out complete\n#pragma HLS interface ap_fifo port = fifo_out[0]._\n#pragma HLS aggregate variable = fifo_out[0]._ bit\nvoid(fifo_out[0]._.full());\n#pragma HLS interface ap_fifo port = fifo_out[1]._\n#pragma HLS aggregate variable = fifo_out[1]._ bit\nvoid(fifo_out[1]._.full());\n\n for (;;) {\n#pragma HLS pipeline style = stp II = 1\n bool flag_nop = fifo_in.empty();\n for (int i = 0; i < 2; ++i) {\n flag_nop |= fifo_out[i].full();\n }\n if (!flag_nop) {\n ap_uint<512> tmp;\n fifo_in.try_read(tmp);\n for (int i = 0; i < 2; ++i) {\n fifo_out[i].try_write(tmp(255 + i * 256, i * 256));\n }\n }\n }\n}\nvoid Merger(tapa::istreams &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid black_hole_int(tapa::istream &fifo_in) ;\nvoid black_hole_float_v16(tapa::istream &fifo_in) ;\nvoid Sextans(uint64_t edge_list_ptr,\n uint64_t edge_list_ch_0, uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, uint64_t edge_list_ch_7,\n uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, uint64_t mat_B_ch_2, uint64_t mat_B_ch_3,\n uint64_t mat_C_ch_in_0, uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, uint64_t mat_C_ch_in_7,\n uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, const int beta_u) ;\n", - "level": "lower", - "target": "hls", - "vendor": "xilinx" - }, - "Sextans": { - "code": "\n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \nconstexpr int NUM_CH_SPARSE = 8;\nconstexpr int NUM_CH_B = 4;\nconstexpr int NUM_CH_C = 8;\nconst int WINDOW_SIZE = 4096;\nconst int DEP_DIST_LOAD_STORE = 10;\nconst int B_PARTITION_FACTOR = 4;\nconst int URAM_DEPTH = 8192;\nusing float_v16 = tapa::vec_t;\nusing float_v8 = tapa::vec_t;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, int beta_u);\n//#include \"modules.h\"\nconstexpr int FIFO_DEPTH = 2;\nconstexpr int PEG_PER_A = 512 / 256;\nstruct MultBVec {\n ap_uint<18> row;\n float_v8 abvec;\n};\ntemplate \ninline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A,\n const R A_len, R &i_req, R &i_resp) {\n#pragma HLS inline\n if ((i_req < A_len) & !A.read_addr.full()) {\n A.read_addr.try_write(i_req);\n ++i_req;\n }\n if (!fifo_A.full() & !A.read_data.empty()) {\n T tmp;\n A.read_data.try_read(tmp);\n fifo_A.try_write(tmp);\n ++i_resp;\n }\n}\nvoid read_edge_list_ptr(\n const int num_ite, const int M,\n const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N\n const int K, uint64_t edge_list_ptr,\n tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) ;\nvoid read_A(uint64_t A,\n tapa::ostream> &fifo_A, const int A_len,\n const int P_N) ;\nvoid read_B(uint64_t B, tapa::ostream &fifo_B,\n const int K, const int P_N) ;\nvoid read_C(uint64_t C, tapa::ostream &fifo_C,\n const int M, const int P_N, tapa::ostream &wrC_inst) ;\nvoid write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C,\n uint64_t C_out) ;\nvoid FloatvMultConst(const int alpha_u, const int M, const int P_N,\n tapa::istream &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid FloatvAddFloatv(tapa::istream &fifo_in0,\n tapa::istream &fifo_in1,\n tapa::ostream &fifo_out) ;\n/*\nvoid PU2core(ap_uint<18> & addr_c,\n float a_val_f,\n float b_val_d0_f,\n float b_val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]\n ) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u);\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u);\n\n c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f;\n c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f;\n\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\n\nvoid PEcore(ap_uint<14> & addr_b,\n ap_uint<18> & addr_c,\n ap_uint<32> & a_val_u,\n ap_uint<64> local_C[4][URAM_DEPTH],\n float local_B[8][WINDOW_SIZE]\n ) {\n#pragma HLS inline\n //if (addr_c != ((ap_uint<18>) 0x3FFFF)) {\n if (addr_c[17] == 0) {\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 4; ++i) {\n PU2core(addr_c,\n a_val_f,\n local_B[i*2+0][addr_b],\n local_B[i*2+1][addr_b],\n local_C[i]\n );\n }\n }\n}\n*/\nvoid PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u,\n float local_B[8][WINDOW_SIZE], float_v8 &abv) {\n#pragma HLS inline\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 8; ++i) {\n abv[i] = a_val_f * local_B[i][addr_b];\n }\n}\nvoid PEG_Bmtx(\n tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n // tapa::istream> & fifo_A,\n tapa::istream> &fifo_A,\n tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out,\n tapa::ostreams &fifo_B_out,\n // to PEG_Cmtx\n tapa::ostream &PE_inst_to_Cmtx,\n tapa::ostream &fifo_inst_out_to_Cmtx,\n tapa::ostreams &fifo_aBvec) ;\nvoid PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f;\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f;\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\nvoid PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec,\n ap_uint<64> local_C[4][URAM_DEPTH]) {\n#pragma HLS inline\n for (int i = 0; i < 4; ++i) {\n PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]);\n }\n}\nvoid PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n tapa::istreams &fifo_aBvec,\n tapa::ostream &fifo_C_out) ;\n/*\nvoid PEG(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n tapa::streams fifo_aBvec(\"fifo_aBvec\");\n tapa::stream PE_inst_to_Cmtx(\"PE_inst_to_Cmtx\");\n tapa::stream\nfifo_inst_out_to_Cmtx(\"fifo_inst_out_to_Cmtx\");\n\n tapa::task()\n .invoke(PEG_Bmtx,\n PE_inst_in,\n fifo_inst_in,\n fifo_A,\n fifo_B_in,\n PE_inst_out,\n fifo_inst_out,\n fifo_B_out,\n // to PEG_Cmtx\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec)\n\n .invoke(PEG_Cmtx,\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec,\n fifo_C_out)\n ;\n}\n\nvoid PEG_c(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0)? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n\n const int num_v_init = (M + 63) >> 6;\n //const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n\n //define local C buffer and pragma to URAM\n //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1\n#pragma HLS array_partition complete variable=local_C dim=1\n#pragma HLS array_partition complete variable=local_C dim=2\n\nl_rp:\n for(int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min=1 max=16\n\n //init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min=1 max=800\n#pragma HLS pipeline style=stp II=1\n //for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n //define local B buffer and pragma local B buffer if partition factor >\n1\n\n //float local_B[8/2][8][WINDOW_SIZE];\n //float local_B[8][WINDOW_SIZE];\n float local_B[4/2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable=local_B latency=2\n#pragma HLS array_partition variable=local_B complete dim=1\n#pragma HLS array_partition variable=local_B complete dim=2\n#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=3\n//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=2\n\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min=1 max=49\n\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i\n* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS\npipeline style=stp II = 1\n\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_512_x[k] = fifo_B_in[k].read();\n fifo_B_out[k].write(b_512_x[k]);\n }\n\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m %\n2 * 8];\n }\n }\n }\n ++j;\n }\n }\n\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n\n computation:\n for (int j = start_32; j < end_32; ) {\n#pragma HLS loop_tripcount min=1 max=200\n#pragma HLS pipeline style=stp II=1\n#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE\n\n //ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n\n if (a_pes_ready) {\n //for (int p = 0; p < 2; ++p) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<14> a_col;\n ap_uint<18> a_row;\n ap_uint<32> a_val;\n\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n a_col = a(63, 50);\n a_row = a(49, 32);\n a_val = a(31, 0);\n\n // PE process\n PEcore(a_col,\n a_row,\n a_val,\n local_C[p],\n //local_B\n local_B[p/2]\n );\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n\n //cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min=1 max=1800\n#pragma HLS pipeline style=stp II=1\n ap_uint<32> u_32_d[8];\n\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i>>2];\n u_32_d[2 * d ] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n\n switch (c_idx) { //0,2,1,3\n case 0: c_idx = 2; break;\n case 1: c_idx = 3; break;\n case 2: c_idx = 1; break;\n case 3: c_idx = 0; break;\n }\n\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\nendl;\n }\n }\n}\n*/\nvoid Scatter_1_2(tapa::istream> &fifo_in,\n tapa::ostreams, 2> &fifo_out) ;\nvoid Merger(tapa::istreams &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid black_hole_int(tapa::istream &fifo_in) ;\nvoid black_hole_float_v16(tapa::istream &fifo_in) ;\nextern \"C\" {\n\nvoid Sextans(uint64_t edge_list_ptr,\n uint64_t edge_list_ch_0, uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, uint64_t edge_list_ch_7,\n uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, uint64_t mat_B_ch_2, uint64_t mat_B_ch_3,\n uint64_t mat_C_ch_in_0, uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, uint64_t mat_C_ch_in_7,\n uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, const int beta_u) {\n\n#pragma HLS interface s_axilite port = edge_list_ptr bundle = control\n{ auto val = reinterpret_cast(edge_list_ptr); }\n{ auto val = reinterpret_cast(edge_list_ptr); }\n\n#pragma HLS interface s_axilite port = edge_list_ch_0 bundle = control\n#pragma HLS interface s_axilite port = edge_list_ch_1 bundle = control\n#pragma HLS interface s_axilite port = edge_list_ch_2 bundle = control\n#pragma HLS interface s_axilite port = edge_list_ch_3 bundle = control\n#pragma HLS interface s_axilite port = edge_list_ch_4 bundle = control\n#pragma HLS interface s_axilite port = edge_list_ch_5 bundle = control\n#pragma HLS interface s_axilite port = edge_list_ch_6 bundle = control\n#pragma HLS interface s_axilite port = edge_list_ch_7 bundle = control\n{ auto val = reinterpret_cast(edge_list_ch_0); }\n{ auto val = reinterpret_cast(edge_list_ch_1); }\n{ auto val = reinterpret_cast(edge_list_ch_2); }\n{ auto val = reinterpret_cast(edge_list_ch_3); }\n{ auto val = reinterpret_cast(edge_list_ch_4); }\n{ auto val = reinterpret_cast(edge_list_ch_5); }\n{ auto val = reinterpret_cast(edge_list_ch_6); }\n{ auto val = reinterpret_cast(edge_list_ch_7); }\n\n#pragma HLS interface s_axilite port = mat_B_ch_0 bundle = control\n#pragma HLS interface s_axilite port = mat_B_ch_1 bundle = control\n#pragma HLS interface s_axilite port = mat_B_ch_2 bundle = control\n#pragma HLS interface s_axilite port = mat_B_ch_3 bundle = control\n{ auto val = reinterpret_cast(mat_B_ch_0); }\n{ auto val = reinterpret_cast(mat_B_ch_1); }\n{ auto val = reinterpret_cast(mat_B_ch_2); }\n{ auto val = reinterpret_cast(mat_B_ch_3); }\n\n#pragma HLS interface s_axilite port = mat_C_ch_in_0 bundle = control\n#pragma HLS interface s_axilite port = mat_C_ch_in_1 bundle = control\n#pragma HLS interface s_axilite port = mat_C_ch_in_2 bundle = control\n#pragma HLS interface s_axilite port = mat_C_ch_in_3 bundle = control\n#pragma HLS interface s_axilite port = mat_C_ch_in_4 bundle = control\n#pragma HLS interface s_axilite port = mat_C_ch_in_5 bundle = control\n#pragma HLS interface s_axilite port = mat_C_ch_in_6 bundle = control\n#pragma HLS interface s_axilite port = mat_C_ch_in_7 bundle = control\n{ auto val = reinterpret_cast(mat_C_ch_in_0); }\n{ auto val = reinterpret_cast(mat_C_ch_in_1); }\n{ auto val = reinterpret_cast(mat_C_ch_in_2); }\n{ auto val = reinterpret_cast(mat_C_ch_in_3); }\n{ auto val = reinterpret_cast(mat_C_ch_in_4); }\n{ auto val = reinterpret_cast(mat_C_ch_in_5); }\n{ auto val = reinterpret_cast(mat_C_ch_in_6); }\n{ auto val = reinterpret_cast(mat_C_ch_in_7); }\n\n#pragma HLS interface s_axilite port = mat_C_ch_0 bundle = control\n#pragma HLS interface s_axilite port = mat_C_ch_1 bundle = control\n#pragma HLS interface s_axilite port = mat_C_ch_2 bundle = control\n#pragma HLS interface s_axilite port = mat_C_ch_3 bundle = control\n#pragma HLS interface s_axilite port = mat_C_ch_4 bundle = control\n#pragma HLS interface s_axilite port = mat_C_ch_5 bundle = control\n#pragma HLS interface s_axilite port = mat_C_ch_6 bundle = control\n#pragma HLS interface s_axilite port = mat_C_ch_7 bundle = control\n{ auto val = reinterpret_cast(mat_C_ch_0); }\n{ auto val = reinterpret_cast(mat_C_ch_1); }\n{ auto val = reinterpret_cast(mat_C_ch_2); }\n{ auto val = reinterpret_cast(mat_C_ch_3); }\n{ auto val = reinterpret_cast(mat_C_ch_4); }\n{ auto val = reinterpret_cast(mat_C_ch_5); }\n{ auto val = reinterpret_cast(mat_C_ch_6); }\n{ auto val = reinterpret_cast(mat_C_ch_7); }\n\n#pragma HLS interface s_axilite port = NUM_ITE bundle = control\n{ auto val = reinterpret_cast(NUM_ITE); }\n\n#pragma HLS interface s_axilite port = NUM_A_LEN bundle = control\n{ auto val = reinterpret_cast(NUM_A_LEN); }\n\n#pragma HLS interface s_axilite port = M bundle = control\n{ auto val = reinterpret_cast(M); }\n\n#pragma HLS interface s_axilite port = K bundle = control\n{ auto val = reinterpret_cast(K); }\n\n#pragma HLS interface s_axilite port = P_N bundle = control\n{ auto val = reinterpret_cast(P_N); }\n\n#pragma HLS interface s_axilite port = alpha_u bundle = control\n{ auto val = reinterpret_cast(alpha_u); }\n\n#pragma HLS interface s_axilite port = beta_u bundle = control\n{ auto val = reinterpret_cast(beta_u); }\n\n\n#pragma HLS interface s_axilite port = return bundle = control\n}\n\n\n} // extern \"C\"\n\n", - "fifos": { - "PE_inst_Sextans[0]": { - "consumed_by": [ - "PEG_Bmtx", - 0 - ], - "depth": 2, - "produced_by": [ - "read_edge_list_ptr", - 0 - ] - }, - "PE_inst_Sextans[10]": { - "consumed_by": [ - "PEG_Bmtx", - 10 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 9 - ] - }, - "PE_inst_Sextans[11]": { - "consumed_by": [ - "PEG_Bmtx", - 11 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 10 - ] - }, - "PE_inst_Sextans[12]": { - "consumed_by": [ - "PEG_Bmtx", - 12 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 11 - ] - }, - "PE_inst_Sextans[13]": { - "consumed_by": [ - "PEG_Bmtx", - 13 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 12 - ] - }, - "PE_inst_Sextans[14]": { - "consumed_by": [ - "PEG_Bmtx", - 14 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 13 - ] - }, - "PE_inst_Sextans[15]": { - "consumed_by": [ - "PEG_Bmtx", - 15 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 14 - ] - }, - "PE_inst_Sextans[16]": { - "consumed_by": [ - "black_hole_int", - 0 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 15 - ] - }, - "PE_inst_Sextans[1]": { - "consumed_by": [ - "PEG_Bmtx", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 0 - ] - }, - "PE_inst_Sextans[2]": { - "consumed_by": [ - "PEG_Bmtx", - 2 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 1 - ] - }, - "PE_inst_Sextans[3]": { - "consumed_by": [ - "PEG_Bmtx", - 3 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 2 - ] - }, - "PE_inst_Sextans[4]": { - "consumed_by": [ - "PEG_Bmtx", - 4 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 3 - ] - }, - "PE_inst_Sextans[5]": { - "consumed_by": [ - "PEG_Bmtx", - 5 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 4 - ] - }, - "PE_inst_Sextans[6]": { - "consumed_by": [ - "PEG_Bmtx", - 6 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 5 - ] - }, - "PE_inst_Sextans[7]": { - "consumed_by": [ - "PEG_Bmtx", - 7 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 6 - ] - }, - "PE_inst_Sextans[8]": { - "consumed_by": [ - "PEG_Bmtx", - 8 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 7 - ] - }, - "PE_inst_Sextans[9]": { - "consumed_by": [ - "PEG_Bmtx", - 9 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 8 - ] - }, - "PE_inst_to_Cmtx_Sextans[0]": { - "consumed_by": [ - "PEG_Cmtx", - 0 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 0 - ] - }, - "PE_inst_to_Cmtx_Sextans[10]": { - "consumed_by": [ - "PEG_Cmtx", - 10 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 10 - ] - }, - "PE_inst_to_Cmtx_Sextans[11]": { - "consumed_by": [ - "PEG_Cmtx", - 11 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 11 - ] - }, - "PE_inst_to_Cmtx_Sextans[12]": { - "consumed_by": [ - "PEG_Cmtx", - 12 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 12 - ] - }, - "PE_inst_to_Cmtx_Sextans[13]": { - "consumed_by": [ - "PEG_Cmtx", - 13 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 13 - ] - }, - "PE_inst_to_Cmtx_Sextans[14]": { - "consumed_by": [ - "PEG_Cmtx", - 14 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 14 - ] - }, - "PE_inst_to_Cmtx_Sextans[15]": { - "consumed_by": [ - "PEG_Cmtx", - 15 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 15 - ] - }, - "PE_inst_to_Cmtx_Sextans[1]": { - "consumed_by": [ - "PEG_Cmtx", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 1 - ] - }, - "PE_inst_to_Cmtx_Sextans[2]": { - "consumed_by": [ - "PEG_Cmtx", - 2 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 2 - ] - }, - "PE_inst_to_Cmtx_Sextans[3]": { - "consumed_by": [ - "PEG_Cmtx", - 3 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 3 - ] - }, - "PE_inst_to_Cmtx_Sextans[4]": { - "consumed_by": [ - "PEG_Cmtx", - 4 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 4 - ] - }, - "PE_inst_to_Cmtx_Sextans[5]": { - "consumed_by": [ - "PEG_Cmtx", - 5 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 5 - ] - }, - "PE_inst_to_Cmtx_Sextans[6]": { - "consumed_by": [ - "PEG_Cmtx", - 6 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 6 - ] - }, - "PE_inst_to_Cmtx_Sextans[7]": { - "consumed_by": [ - "PEG_Cmtx", - 7 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 7 - ] - }, - "PE_inst_to_Cmtx_Sextans[8]": { - "consumed_by": [ - "PEG_Cmtx", - 8 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 8 - ] - }, - "PE_inst_to_Cmtx_Sextans[9]": { - "consumed_by": [ - "PEG_Cmtx", - 9 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 9 - ] - }, - "fifo_A_Sextans[0]": { - "consumed_by": [ - "Scatter_1_2", - 0 - ], - "depth": 2, - "produced_by": [ - "read_A", - 0 - ] - }, - "fifo_A_Sextans[1]": { - "consumed_by": [ - "Scatter_1_2", - 1 - ], - "depth": 2, - "produced_by": [ - "read_A", - 1 - ] - }, - "fifo_A_Sextans[2]": { - "consumed_by": [ - "Scatter_1_2", - 2 - ], - "depth": 2, - "produced_by": [ - "read_A", - 2 - ] - }, - "fifo_A_Sextans[3]": { - "consumed_by": [ - "Scatter_1_2", - 3 - ], - "depth": 2, - "produced_by": [ - "read_A", - 3 - ] - }, - "fifo_A_Sextans[4]": { - "consumed_by": [ - "Scatter_1_2", - 4 - ], - "depth": 2, - "produced_by": [ - "read_A", - 4 - ] - }, - "fifo_A_Sextans[5]": { - "consumed_by": [ - "Scatter_1_2", - 5 - ], - "depth": 2, - "produced_by": [ - "read_A", - 5 - ] - }, - "fifo_A_Sextans[6]": { - "consumed_by": [ - "Scatter_1_2", - 6 - ], - "depth": 2, - "produced_by": [ - "read_A", - 6 - ] - }, - "fifo_A_Sextans[7]": { - "consumed_by": [ - "Scatter_1_2", - 7 - ], - "depth": 2, - "produced_by": [ - "read_A", - 7 - ] - }, - "fifo_A_pe_Sextans[0]": { - "consumed_by": [ - "PEG_Bmtx", - 0 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 0 - ] - }, - "fifo_A_pe_Sextans[10]": { - "consumed_by": [ - "PEG_Bmtx", - 10 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 5 - ] - }, - "fifo_A_pe_Sextans[11]": { - "consumed_by": [ - "PEG_Bmtx", - 11 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 5 - ] - }, - "fifo_A_pe_Sextans[12]": { - "consumed_by": [ - "PEG_Bmtx", - 12 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 6 - ] - }, - "fifo_A_pe_Sextans[13]": { - "consumed_by": [ - "PEG_Bmtx", - 13 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 6 - ] - }, - "fifo_A_pe_Sextans[14]": { - "consumed_by": [ - "PEG_Bmtx", - 14 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 7 - ] - }, - "fifo_A_pe_Sextans[15]": { - "consumed_by": [ - "PEG_Bmtx", - 15 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 7 - ] - }, - "fifo_A_pe_Sextans[1]": { - "consumed_by": [ - "PEG_Bmtx", - 1 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 0 - ] - }, - "fifo_A_pe_Sextans[2]": { - "consumed_by": [ - "PEG_Bmtx", - 2 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 1 - ] - }, - "fifo_A_pe_Sextans[3]": { - "consumed_by": [ - "PEG_Bmtx", - 3 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 1 - ] - }, - "fifo_A_pe_Sextans[4]": { - "consumed_by": [ - "PEG_Bmtx", - 4 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 2 - ] - }, - "fifo_A_pe_Sextans[5]": { - "consumed_by": [ - "PEG_Bmtx", - 5 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 2 - ] - }, - "fifo_A_pe_Sextans[6]": { - "consumed_by": [ - "PEG_Bmtx", - 6 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 3 - ] - }, - "fifo_A_pe_Sextans[7]": { - "consumed_by": [ - "PEG_Bmtx", - 7 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 3 - ] - }, - "fifo_A_pe_Sextans[8]": { - "consumed_by": [ - "PEG_Bmtx", - 8 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 4 - ] - }, - "fifo_A_pe_Sextans[9]": { - "consumed_by": [ - "PEG_Bmtx", - 9 - ], - "depth": 2, - "produced_by": [ - "Scatter_1_2", - 4 - ] - }, - "fifo_B_pe_Sextans[0]": { - "consumed_by": [ - "PEG_Bmtx", - 0 - ], - "depth": 2, - "produced_by": [ - "read_B", - 0 - ] - }, - "fifo_B_pe_Sextans[10]": { - "consumed_by": [ - "PEG_Bmtx", - 2 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 1 - ] - }, - "fifo_B_pe_Sextans[11]": { - "consumed_by": [ - "PEG_Bmtx", - 2 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 1 - ] - }, - "fifo_B_pe_Sextans[12]": { - "consumed_by": [ - "PEG_Bmtx", - 3 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 2 - ] - }, - "fifo_B_pe_Sextans[13]": { - "consumed_by": [ - "PEG_Bmtx", - 3 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 2 - ] - }, - "fifo_B_pe_Sextans[14]": { - "consumed_by": [ - "PEG_Bmtx", - 3 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 2 - ] - }, - "fifo_B_pe_Sextans[15]": { - "consumed_by": [ - "PEG_Bmtx", - 3 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 2 - ] - }, - "fifo_B_pe_Sextans[16]": { - "consumed_by": [ - "PEG_Bmtx", - 4 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 3 - ] - }, - "fifo_B_pe_Sextans[17]": { - "consumed_by": [ - "PEG_Bmtx", - 4 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 3 - ] - }, - "fifo_B_pe_Sextans[18]": { - "consumed_by": [ - "PEG_Bmtx", - 4 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 3 - ] - }, - "fifo_B_pe_Sextans[19]": { - "consumed_by": [ - "PEG_Bmtx", - 4 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 3 - ] - }, - "fifo_B_pe_Sextans[1]": { - "consumed_by": [ - "PEG_Bmtx", - 0 - ], - "depth": 2, - "produced_by": [ - "read_B", - 1 - ] - }, - "fifo_B_pe_Sextans[20]": { - "consumed_by": [ - "PEG_Bmtx", - 5 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 4 - ] - }, - "fifo_B_pe_Sextans[21]": { - "consumed_by": [ - "PEG_Bmtx", - 5 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 4 - ] - }, - "fifo_B_pe_Sextans[22]": { - "consumed_by": [ - "PEG_Bmtx", - 5 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 4 - ] - }, - "fifo_B_pe_Sextans[23]": { - "consumed_by": [ - "PEG_Bmtx", - 5 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 4 - ] - }, - "fifo_B_pe_Sextans[24]": { - "consumed_by": [ - "PEG_Bmtx", - 6 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 5 - ] - }, - "fifo_B_pe_Sextans[25]": { - "consumed_by": [ - "PEG_Bmtx", - 6 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 5 - ] - }, - "fifo_B_pe_Sextans[26]": { - "consumed_by": [ - "PEG_Bmtx", - 6 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 5 - ] - }, - "fifo_B_pe_Sextans[27]": { - "consumed_by": [ - "PEG_Bmtx", - 6 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 5 - ] - }, - "fifo_B_pe_Sextans[28]": { - "consumed_by": [ - "PEG_Bmtx", - 7 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 6 - ] - }, - "fifo_B_pe_Sextans[29]": { - "consumed_by": [ - "PEG_Bmtx", - 7 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 6 - ] - }, - "fifo_B_pe_Sextans[2]": { - "consumed_by": [ - "PEG_Bmtx", - 0 - ], - "depth": 2, - "produced_by": [ - "read_B", - 2 - ] - }, - "fifo_B_pe_Sextans[30]": { - "consumed_by": [ - "PEG_Bmtx", - 7 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 6 - ] - }, - "fifo_B_pe_Sextans[31]": { - "consumed_by": [ - "PEG_Bmtx", - 7 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 6 - ] - }, - "fifo_B_pe_Sextans[32]": { - "consumed_by": [ - "PEG_Bmtx", - 8 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 7 - ] - }, - "fifo_B_pe_Sextans[33]": { - "consumed_by": [ - "PEG_Bmtx", - 8 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 7 - ] - }, - "fifo_B_pe_Sextans[34]": { - "consumed_by": [ - "PEG_Bmtx", - 8 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 7 - ] - }, - "fifo_B_pe_Sextans[35]": { - "consumed_by": [ - "PEG_Bmtx", - 8 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 7 - ] - }, - "fifo_B_pe_Sextans[36]": { - "consumed_by": [ - "PEG_Bmtx", - 9 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 8 - ] - }, - "fifo_B_pe_Sextans[37]": { - "consumed_by": [ - "PEG_Bmtx", - 9 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 8 - ] - }, - "fifo_B_pe_Sextans[38]": { - "consumed_by": [ - "PEG_Bmtx", - 9 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 8 - ] - }, - "fifo_B_pe_Sextans[39]": { - "consumed_by": [ - "PEG_Bmtx", - 9 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 8 - ] - }, - "fifo_B_pe_Sextans[3]": { - "consumed_by": [ - "PEG_Bmtx", - 0 - ], - "depth": 2, - "produced_by": [ - "read_B", - 3 - ] - }, - "fifo_B_pe_Sextans[40]": { - "consumed_by": [ - "PEG_Bmtx", - 10 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 9 - ] - }, - "fifo_B_pe_Sextans[41]": { - "consumed_by": [ - "PEG_Bmtx", - 10 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 9 - ] - }, - "fifo_B_pe_Sextans[42]": { - "consumed_by": [ - "PEG_Bmtx", - 10 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 9 - ] - }, - "fifo_B_pe_Sextans[43]": { - "consumed_by": [ - "PEG_Bmtx", - 10 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 9 - ] - }, - "fifo_B_pe_Sextans[44]": { - "consumed_by": [ - "PEG_Bmtx", - 11 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 10 - ] - }, - "fifo_B_pe_Sextans[45]": { - "consumed_by": [ - "PEG_Bmtx", - 11 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 10 - ] - }, - "fifo_B_pe_Sextans[46]": { - "consumed_by": [ - "PEG_Bmtx", - 11 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 10 - ] - }, - "fifo_B_pe_Sextans[47]": { - "consumed_by": [ - "PEG_Bmtx", - 11 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 10 - ] - }, - "fifo_B_pe_Sextans[48]": { - "consumed_by": [ - "PEG_Bmtx", - 12 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 11 - ] - }, - "fifo_B_pe_Sextans[49]": { - "consumed_by": [ - "PEG_Bmtx", - 12 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 11 - ] - }, - "fifo_B_pe_Sextans[4]": { - "consumed_by": [ - "PEG_Bmtx", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 0 - ] - }, - "fifo_B_pe_Sextans[50]": { - "consumed_by": [ - "PEG_Bmtx", - 12 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 11 - ] - }, - "fifo_B_pe_Sextans[51]": { - "consumed_by": [ - "PEG_Bmtx", - 12 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 11 - ] - }, - "fifo_B_pe_Sextans[52]": { - "consumed_by": [ - "PEG_Bmtx", - 13 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 12 - ] - }, - "fifo_B_pe_Sextans[53]": { - "consumed_by": [ - "PEG_Bmtx", - 13 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 12 - ] - }, - "fifo_B_pe_Sextans[54]": { - "consumed_by": [ - "PEG_Bmtx", - 13 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 12 - ] - }, - "fifo_B_pe_Sextans[55]": { - "consumed_by": [ - "PEG_Bmtx", - 13 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 12 - ] - }, - "fifo_B_pe_Sextans[56]": { - "consumed_by": [ - "PEG_Bmtx", - 14 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 13 - ] - }, - "fifo_B_pe_Sextans[57]": { - "consumed_by": [ - "PEG_Bmtx", - 14 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 13 - ] - }, - "fifo_B_pe_Sextans[58]": { - "consumed_by": [ - "PEG_Bmtx", - 14 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 13 - ] - }, - "fifo_B_pe_Sextans[59]": { - "consumed_by": [ - "PEG_Bmtx", - 14 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 13 - ] - }, - "fifo_B_pe_Sextans[5]": { - "consumed_by": [ - "PEG_Bmtx", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 0 - ] - }, - "fifo_B_pe_Sextans[60]": { - "consumed_by": [ - "PEG_Bmtx", - 15 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 14 - ] - }, - "fifo_B_pe_Sextans[61]": { - "consumed_by": [ - "PEG_Bmtx", - 15 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 14 - ] - }, - "fifo_B_pe_Sextans[62]": { - "consumed_by": [ - "PEG_Bmtx", - 15 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 14 - ] - }, - "fifo_B_pe_Sextans[63]": { - "consumed_by": [ - "PEG_Bmtx", - 15 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 14 - ] - }, - "fifo_B_pe_Sextans[64]": { - "consumed_by": [ - "black_hole_float_v16", - 0 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 15 - ] - }, - "fifo_B_pe_Sextans[65]": { - "consumed_by": [ - "black_hole_float_v16", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 15 - ] - }, - "fifo_B_pe_Sextans[66]": { - "consumed_by": [ - "black_hole_float_v16", - 2 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 15 - ] - }, - "fifo_B_pe_Sextans[67]": { - "consumed_by": [ - "black_hole_float_v16", - 3 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 15 - ] - }, - "fifo_B_pe_Sextans[6]": { - "consumed_by": [ - "PEG_Bmtx", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 0 - ] - }, - "fifo_B_pe_Sextans[7]": { - "consumed_by": [ - "PEG_Bmtx", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 0 - ] - }, - "fifo_B_pe_Sextans[8]": { - "consumed_by": [ - "PEG_Bmtx", - 2 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 1 - ] - }, - "fifo_B_pe_Sextans[9]": { - "consumed_by": [ - "PEG_Bmtx", - 2 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 1 - ] - }, - "fifo_C_ch_Sextans[0]": { - "consumed_by": [ - "write_C", - 0 - ], - "depth": 2, - "produced_by": [ - "FloatvAddFloatv", - 0 - ] - }, - "fifo_C_ch_Sextans[1]": { - "consumed_by": [ - "write_C", - 1 - ], - "depth": 2, - "produced_by": [ - "FloatvAddFloatv", - 1 - ] - }, - "fifo_C_ch_Sextans[2]": { - "consumed_by": [ - "write_C", - 2 - ], - "depth": 2, - "produced_by": [ - "FloatvAddFloatv", - 2 - ] - }, - "fifo_C_ch_Sextans[3]": { - "consumed_by": [ - "write_C", - 3 - ], - "depth": 2, - "produced_by": [ - "FloatvAddFloatv", - 3 - ] - }, - "fifo_C_ch_Sextans[4]": { - "consumed_by": [ - "write_C", - 4 - ], - "depth": 2, - "produced_by": [ - "FloatvAddFloatv", - 4 - ] - }, - "fifo_C_ch_Sextans[5]": { - "consumed_by": [ - "write_C", - 5 - ], - "depth": 2, - "produced_by": [ - "FloatvAddFloatv", - 5 - ] - }, - "fifo_C_ch_Sextans[6]": { - "consumed_by": [ - "write_C", - 6 - ], - "depth": 2, - "produced_by": [ - "FloatvAddFloatv", - 6 - ] - }, - "fifo_C_ch_Sextans[7]": { - "consumed_by": [ - "write_C", - 7 - ], - "depth": 2, - "produced_by": [ - "FloatvAddFloatv", - 7 - ] - }, - "fifo_C_ch_result_Sextans[0]": { - "consumed_by": [ - "FloatvMultConst", - 8 - ], - "depth": 2, - "produced_by": [ - "Merger", - 0 - ] - }, - "fifo_C_ch_result_Sextans[1]": { - "consumed_by": [ - "FloatvMultConst", - 9 - ], - "depth": 2, - "produced_by": [ - "Merger", - 1 - ] - }, - "fifo_C_ch_result_Sextans[2]": { - "consumed_by": [ - "FloatvMultConst", - 10 - ], - "depth": 2, - "produced_by": [ - "Merger", - 2 - ] - }, - "fifo_C_ch_result_Sextans[3]": { - "consumed_by": [ - "FloatvMultConst", - 11 - ], - "depth": 2, - "produced_by": [ - "Merger", - 3 - ] - }, - "fifo_C_ch_result_Sextans[4]": { - "consumed_by": [ - "FloatvMultConst", - 12 - ], - "depth": 2, - "produced_by": [ - "Merger", - 4 - ] - }, - "fifo_C_ch_result_Sextans[5]": { - "consumed_by": [ - "FloatvMultConst", - 13 - ], - "depth": 2, - "produced_by": [ - "Merger", - 5 - ] - }, - "fifo_C_ch_result_Sextans[6]": { - "consumed_by": [ - "FloatvMultConst", - 14 - ], - "depth": 2, - "produced_by": [ - "Merger", - 6 - ] - }, - "fifo_C_ch_result_Sextans[7]": { - "consumed_by": [ - "FloatvMultConst", - 15 - ], - "depth": 2, - "produced_by": [ - "Merger", - 7 - ] - }, - "fifo_C_ch_result_alpha_Sextans[0]": { - "consumed_by": [ - "FloatvAddFloatv", - 0 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 8 - ] - }, - "fifo_C_ch_result_alpha_Sextans[1]": { - "consumed_by": [ - "FloatvAddFloatv", - 1 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 9 - ] - }, - "fifo_C_ch_result_alpha_Sextans[2]": { - "consumed_by": [ - "FloatvAddFloatv", - 2 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 10 - ] - }, - "fifo_C_ch_result_alpha_Sextans[3]": { - "consumed_by": [ - "FloatvAddFloatv", - 3 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 11 - ] - }, - "fifo_C_ch_result_alpha_Sextans[4]": { - "consumed_by": [ - "FloatvAddFloatv", - 4 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 12 - ] - }, - "fifo_C_ch_result_alpha_Sextans[5]": { - "consumed_by": [ - "FloatvAddFloatv", - 5 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 13 - ] - }, - "fifo_C_ch_result_alpha_Sextans[6]": { - "consumed_by": [ - "FloatvAddFloatv", - 6 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 14 - ] - }, - "fifo_C_ch_result_alpha_Sextans[7]": { - "consumed_by": [ - "FloatvAddFloatv", - 7 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 15 - ] - }, - "fifo_C_pe_Sextans[0]": { - "consumed_by": [ - "Merger", - 0 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 0 - ] - }, - "fifo_C_pe_Sextans[10]": { - "consumed_by": [ - "Merger", - 5 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 10 - ] - }, - "fifo_C_pe_Sextans[11]": { - "consumed_by": [ - "Merger", - 5 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 11 - ] - }, - "fifo_C_pe_Sextans[12]": { - "consumed_by": [ - "Merger", - 6 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 12 - ] - }, - "fifo_C_pe_Sextans[13]": { - "consumed_by": [ - "Merger", - 6 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 13 - ] - }, - "fifo_C_pe_Sextans[14]": { - "consumed_by": [ - "Merger", - 7 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 14 - ] - }, - "fifo_C_pe_Sextans[15]": { - "consumed_by": [ - "Merger", - 7 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 15 - ] - }, - "fifo_C_pe_Sextans[1]": { - "consumed_by": [ - "Merger", - 0 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 1 - ] - }, - "fifo_C_pe_Sextans[2]": { - "consumed_by": [ - "Merger", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 2 - ] - }, - "fifo_C_pe_Sextans[3]": { - "consumed_by": [ - "Merger", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 3 - ] - }, - "fifo_C_pe_Sextans[4]": { - "consumed_by": [ - "Merger", - 2 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 4 - ] - }, - "fifo_C_pe_Sextans[5]": { - "consumed_by": [ - "Merger", - 2 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 5 - ] - }, - "fifo_C_pe_Sextans[6]": { - "consumed_by": [ - "Merger", - 3 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 6 - ] - }, - "fifo_C_pe_Sextans[7]": { - "consumed_by": [ - "Merger", - 3 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 7 - ] - }, - "fifo_C_pe_Sextans[8]": { - "consumed_by": [ - "Merger", - 4 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 8 - ] - }, - "fifo_C_pe_Sextans[9]": { - "consumed_by": [ - "Merger", - 4 - ], - "depth": 2, - "produced_by": [ - "PEG_Cmtx", - 9 - ] - }, - "fifo_C_read_in_Sextans[0]": { - "consumed_by": [ - "FloatvMultConst", - 0 - ], - "depth": 2, - "produced_by": [ - "read_C", - 0 - ] - }, - "fifo_C_read_in_Sextans[1]": { - "consumed_by": [ - "FloatvMultConst", - 1 - ], - "depth": 2, - "produced_by": [ - "read_C", - 1 - ] - }, - "fifo_C_read_in_Sextans[2]": { - "consumed_by": [ - "FloatvMultConst", - 2 - ], - "depth": 2, - "produced_by": [ - "read_C", - 2 - ] - }, - "fifo_C_read_in_Sextans[3]": { - "consumed_by": [ - "FloatvMultConst", - 3 - ], - "depth": 2, - "produced_by": [ - "read_C", - 3 - ] - }, - "fifo_C_read_in_Sextans[4]": { - "consumed_by": [ - "FloatvMultConst", - 4 - ], - "depth": 2, - "produced_by": [ - "read_C", - 4 - ] - }, - "fifo_C_read_in_Sextans[5]": { - "consumed_by": [ - "FloatvMultConst", - 5 - ], - "depth": 2, - "produced_by": [ - "read_C", - 5 - ] - }, - "fifo_C_read_in_Sextans[6]": { - "consumed_by": [ - "FloatvMultConst", - 6 - ], - "depth": 2, - "produced_by": [ - "read_C", - 6 - ] - }, - "fifo_C_read_in_Sextans[7]": { - "consumed_by": [ - "FloatvMultConst", - 7 - ], - "depth": 2, - "produced_by": [ - "read_C", - 7 - ] - }, - "fifo_C_read_in_beta_Sextans[0]": { - "consumed_by": [ - "FloatvAddFloatv", - 0 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 0 - ] - }, - "fifo_C_read_in_beta_Sextans[1]": { - "consumed_by": [ - "FloatvAddFloatv", - 1 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 1 - ] - }, - "fifo_C_read_in_beta_Sextans[2]": { - "consumed_by": [ - "FloatvAddFloatv", - 2 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 2 - ] - }, - "fifo_C_read_in_beta_Sextans[3]": { - "consumed_by": [ - "FloatvAddFloatv", - 3 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 3 - ] - }, - "fifo_C_read_in_beta_Sextans[4]": { - "consumed_by": [ - "FloatvAddFloatv", - 4 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 4 - ] - }, - "fifo_C_read_in_beta_Sextans[5]": { - "consumed_by": [ - "FloatvAddFloatv", - 5 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 5 - ] - }, - "fifo_C_read_in_beta_Sextans[6]": { - "consumed_by": [ - "FloatvAddFloatv", - 6 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 6 - ] - }, - "fifo_C_read_in_beta_Sextans[7]": { - "consumed_by": [ - "FloatvAddFloatv", - 7 - ], - "depth": 2, - "produced_by": [ - "FloatvMultConst", - 7 - ] - }, - "fifo_aBvec_Sextans[0]": { - "consumed_by": [ - "PEG_Cmtx", - 0 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 0 - ] - }, - "fifo_aBvec_Sextans[10]": { - "consumed_by": [ - "PEG_Cmtx", - 2 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 2 - ] - }, - "fifo_aBvec_Sextans[11]": { - "consumed_by": [ - "PEG_Cmtx", - 2 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 2 - ] - }, - "fifo_aBvec_Sextans[12]": { - "consumed_by": [ - "PEG_Cmtx", - 3 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 3 - ] - }, - "fifo_aBvec_Sextans[13]": { - "consumed_by": [ - "PEG_Cmtx", - 3 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 3 - ] - }, - "fifo_aBvec_Sextans[14]": { - "consumed_by": [ - "PEG_Cmtx", - 3 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 3 - ] - }, - "fifo_aBvec_Sextans[15]": { - "consumed_by": [ - "PEG_Cmtx", - 3 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 3 - ] - }, - "fifo_aBvec_Sextans[16]": { - "consumed_by": [ - "PEG_Cmtx", - 4 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 4 - ] - }, - "fifo_aBvec_Sextans[17]": { - "consumed_by": [ - "PEG_Cmtx", - 4 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 4 - ] - }, - "fifo_aBvec_Sextans[18]": { - "consumed_by": [ - "PEG_Cmtx", - 4 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 4 - ] - }, - "fifo_aBvec_Sextans[19]": { - "consumed_by": [ - "PEG_Cmtx", - 4 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 4 - ] - }, - "fifo_aBvec_Sextans[1]": { - "consumed_by": [ - "PEG_Cmtx", - 0 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 0 - ] - }, - "fifo_aBvec_Sextans[20]": { - "consumed_by": [ - "PEG_Cmtx", - 5 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 5 - ] - }, - "fifo_aBvec_Sextans[21]": { - "consumed_by": [ - "PEG_Cmtx", - 5 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 5 - ] - }, - "fifo_aBvec_Sextans[22]": { - "consumed_by": [ - "PEG_Cmtx", - 5 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 5 - ] - }, - "fifo_aBvec_Sextans[23]": { - "consumed_by": [ - "PEG_Cmtx", - 5 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 5 - ] - }, - "fifo_aBvec_Sextans[24]": { - "consumed_by": [ - "PEG_Cmtx", - 6 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 6 - ] - }, - "fifo_aBvec_Sextans[25]": { - "consumed_by": [ - "PEG_Cmtx", - 6 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 6 - ] - }, - "fifo_aBvec_Sextans[26]": { - "consumed_by": [ - "PEG_Cmtx", - 6 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 6 - ] - }, - "fifo_aBvec_Sextans[27]": { - "consumed_by": [ - "PEG_Cmtx", - 6 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 6 - ] - }, - "fifo_aBvec_Sextans[28]": { - "consumed_by": [ - "PEG_Cmtx", - 7 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 7 - ] - }, - "fifo_aBvec_Sextans[29]": { - "consumed_by": [ - "PEG_Cmtx", - 7 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 7 - ] - }, - "fifo_aBvec_Sextans[2]": { - "consumed_by": [ - "PEG_Cmtx", - 0 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 0 - ] - }, - "fifo_aBvec_Sextans[30]": { - "consumed_by": [ - "PEG_Cmtx", - 7 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 7 - ] - }, - "fifo_aBvec_Sextans[31]": { - "consumed_by": [ - "PEG_Cmtx", - 7 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 7 - ] - }, - "fifo_aBvec_Sextans[32]": { - "consumed_by": [ - "PEG_Cmtx", - 8 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 8 - ] - }, - "fifo_aBvec_Sextans[33]": { - "consumed_by": [ - "PEG_Cmtx", - 8 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 8 - ] - }, - "fifo_aBvec_Sextans[34]": { - "consumed_by": [ - "PEG_Cmtx", - 8 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 8 - ] - }, - "fifo_aBvec_Sextans[35]": { - "consumed_by": [ - "PEG_Cmtx", - 8 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 8 - ] - }, - "fifo_aBvec_Sextans[36]": { - "consumed_by": [ - "PEG_Cmtx", - 9 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 9 - ] - }, - "fifo_aBvec_Sextans[37]": { - "consumed_by": [ - "PEG_Cmtx", - 9 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 9 - ] - }, - "fifo_aBvec_Sextans[38]": { - "consumed_by": [ - "PEG_Cmtx", - 9 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 9 - ] - }, - "fifo_aBvec_Sextans[39]": { - "consumed_by": [ - "PEG_Cmtx", - 9 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 9 - ] - }, - "fifo_aBvec_Sextans[3]": { - "consumed_by": [ - "PEG_Cmtx", - 0 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 0 - ] - }, - "fifo_aBvec_Sextans[40]": { - "consumed_by": [ - "PEG_Cmtx", - 10 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 10 - ] - }, - "fifo_aBvec_Sextans[41]": { - "consumed_by": [ - "PEG_Cmtx", - 10 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 10 - ] - }, - "fifo_aBvec_Sextans[42]": { - "consumed_by": [ - "PEG_Cmtx", - 10 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 10 - ] - }, - "fifo_aBvec_Sextans[43]": { - "consumed_by": [ - "PEG_Cmtx", - 10 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 10 - ] - }, - "fifo_aBvec_Sextans[44]": { - "consumed_by": [ - "PEG_Cmtx", - 11 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 11 - ] - }, - "fifo_aBvec_Sextans[45]": { - "consumed_by": [ - "PEG_Cmtx", - 11 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 11 - ] - }, - "fifo_aBvec_Sextans[46]": { - "consumed_by": [ - "PEG_Cmtx", - 11 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 11 - ] - }, - "fifo_aBvec_Sextans[47]": { - "consumed_by": [ - "PEG_Cmtx", - 11 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 11 - ] - }, - "fifo_aBvec_Sextans[48]": { - "consumed_by": [ - "PEG_Cmtx", - 12 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 12 - ] - }, - "fifo_aBvec_Sextans[49]": { - "consumed_by": [ - "PEG_Cmtx", - 12 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 12 - ] - }, - "fifo_aBvec_Sextans[4]": { - "consumed_by": [ - "PEG_Cmtx", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 1 - ] - }, - "fifo_aBvec_Sextans[50]": { - "consumed_by": [ - "PEG_Cmtx", - 12 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 12 - ] - }, - "fifo_aBvec_Sextans[51]": { - "consumed_by": [ - "PEG_Cmtx", - 12 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 12 - ] - }, - "fifo_aBvec_Sextans[52]": { - "consumed_by": [ - "PEG_Cmtx", - 13 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 13 - ] - }, - "fifo_aBvec_Sextans[53]": { - "consumed_by": [ - "PEG_Cmtx", - 13 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 13 - ] - }, - "fifo_aBvec_Sextans[54]": { - "consumed_by": [ - "PEG_Cmtx", - 13 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 13 - ] - }, - "fifo_aBvec_Sextans[55]": { - "consumed_by": [ - "PEG_Cmtx", - 13 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 13 - ] - }, - "fifo_aBvec_Sextans[56]": { - "consumed_by": [ - "PEG_Cmtx", - 14 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 14 - ] - }, - "fifo_aBvec_Sextans[57]": { - "consumed_by": [ - "PEG_Cmtx", - 14 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 14 - ] - }, - "fifo_aBvec_Sextans[58]": { - "consumed_by": [ - "PEG_Cmtx", - 14 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 14 - ] - }, - "fifo_aBvec_Sextans[59]": { - "consumed_by": [ - "PEG_Cmtx", - 14 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 14 - ] - }, - "fifo_aBvec_Sextans[5]": { - "consumed_by": [ - "PEG_Cmtx", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 1 - ] - }, - "fifo_aBvec_Sextans[60]": { - "consumed_by": [ - "PEG_Cmtx", - 15 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 15 - ] - }, - "fifo_aBvec_Sextans[61]": { - "consumed_by": [ - "PEG_Cmtx", - 15 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 15 - ] - }, - "fifo_aBvec_Sextans[62]": { - "consumed_by": [ - "PEG_Cmtx", - 15 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 15 - ] - }, - "fifo_aBvec_Sextans[63]": { - "consumed_by": [ - "PEG_Cmtx", - 15 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 15 - ] - }, - "fifo_aBvec_Sextans[6]": { - "consumed_by": [ - "PEG_Cmtx", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 1 - ] - }, - "fifo_aBvec_Sextans[7]": { - "consumed_by": [ - "PEG_Cmtx", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 1 - ] - }, - "fifo_aBvec_Sextans[8]": { - "consumed_by": [ - "PEG_Cmtx", - 2 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 2 - ] - }, - "fifo_aBvec_Sextans[9]": { - "consumed_by": [ - "PEG_Cmtx", - 2 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 2 - ] - }, - "fifo_edge_list_ptr_Sextans[0]": { - "consumed_by": [ - "PEG_Bmtx", - 0 - ], - "depth": 2, - "produced_by": [ - "read_edge_list_ptr", - 0 - ] - }, - "fifo_edge_list_ptr_Sextans[10]": { - "consumed_by": [ - "PEG_Bmtx", - 10 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 9 - ] - }, - "fifo_edge_list_ptr_Sextans[11]": { - "consumed_by": [ - "PEG_Bmtx", - 11 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 10 - ] - }, - "fifo_edge_list_ptr_Sextans[12]": { - "consumed_by": [ - "PEG_Bmtx", - 12 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 11 - ] - }, - "fifo_edge_list_ptr_Sextans[13]": { - "consumed_by": [ - "PEG_Bmtx", - 13 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 12 - ] - }, - "fifo_edge_list_ptr_Sextans[14]": { - "consumed_by": [ - "PEG_Bmtx", - 14 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 13 - ] - }, - "fifo_edge_list_ptr_Sextans[15]": { - "consumed_by": [ - "PEG_Bmtx", - 15 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 14 - ] - }, - "fifo_edge_list_ptr_Sextans[16]": { - "consumed_by": [ - "black_hole_int", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 15 - ] - }, - "fifo_edge_list_ptr_Sextans[1]": { - "consumed_by": [ - "PEG_Bmtx", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 0 - ] - }, - "fifo_edge_list_ptr_Sextans[2]": { - "consumed_by": [ - "PEG_Bmtx", - 2 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 1 - ] - }, - "fifo_edge_list_ptr_Sextans[3]": { - "consumed_by": [ - "PEG_Bmtx", - 3 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 2 - ] - }, - "fifo_edge_list_ptr_Sextans[4]": { - "consumed_by": [ - "PEG_Bmtx", - 4 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 3 - ] - }, - "fifo_edge_list_ptr_Sextans[5]": { - "consumed_by": [ - "PEG_Bmtx", - 5 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 4 - ] - }, - "fifo_edge_list_ptr_Sextans[6]": { - "consumed_by": [ - "PEG_Bmtx", - 6 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 5 - ] - }, - "fifo_edge_list_ptr_Sextans[7]": { - "consumed_by": [ - "PEG_Bmtx", - 7 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 6 - ] - }, - "fifo_edge_list_ptr_Sextans[8]": { - "consumed_by": [ - "PEG_Bmtx", - 8 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 7 - ] - }, - "fifo_edge_list_ptr_Sextans[9]": { - "consumed_by": [ - "PEG_Bmtx", - 9 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 8 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[0]": { - "consumed_by": [ - "PEG_Cmtx", - 0 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 0 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[10]": { - "consumed_by": [ - "PEG_Cmtx", - 10 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 10 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[11]": { - "consumed_by": [ - "PEG_Cmtx", - 11 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 11 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[12]": { - "consumed_by": [ - "PEG_Cmtx", - 12 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 12 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[13]": { - "consumed_by": [ - "PEG_Cmtx", - 13 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 13 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[14]": { - "consumed_by": [ - "PEG_Cmtx", - 14 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 14 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[15]": { - "consumed_by": [ - "PEG_Cmtx", - 15 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 15 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[1]": { - "consumed_by": [ - "PEG_Cmtx", - 1 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 1 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[2]": { - "consumed_by": [ - "PEG_Cmtx", - 2 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 2 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[3]": { - "consumed_by": [ - "PEG_Cmtx", - 3 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 3 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[4]": { - "consumed_by": [ - "PEG_Cmtx", - 4 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 4 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[5]": { - "consumed_by": [ - "PEG_Cmtx", - 5 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 5 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[6]": { - "consumed_by": [ - "PEG_Cmtx", - 6 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 6 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[7]": { - "consumed_by": [ - "PEG_Cmtx", - 7 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 7 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[8]": { - "consumed_by": [ - "PEG_Cmtx", - 8 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 8 - ] - }, - "fifo_edge_list_ptr_to_Cmtx_Sextans[9]": { - "consumed_by": [ - "PEG_Cmtx", - 9 - ], - "depth": 2, - "produced_by": [ - "PEG_Bmtx", - 9 - ] - }, - "wrC_inst_Sextans[0]": { - "consumed_by": [ - "write_C", - 0 - ], - "depth": 2, - "produced_by": [ - "read_C", - 0 - ] - }, - "wrC_inst_Sextans[1]": { - "consumed_by": [ - "write_C", - 1 - ], - "depth": 2, - "produced_by": [ - "read_C", - 1 - ] - }, - "wrC_inst_Sextans[2]": { - "consumed_by": [ - "write_C", - 2 - ], - "depth": 2, - "produced_by": [ - "read_C", - 2 - ] - }, - "wrC_inst_Sextans[3]": { - "consumed_by": [ - "write_C", - 3 - ], - "depth": 2, - "produced_by": [ - "read_C", - 3 - ] - }, - "wrC_inst_Sextans[4]": { - "consumed_by": [ - "write_C", - 4 - ], - "depth": 2, - "produced_by": [ - "read_C", - 4 - ] - }, - "wrC_inst_Sextans[5]": { - "consumed_by": [ - "write_C", - 5 - ], - "depth": 2, - "produced_by": [ - "read_C", - 5 - ] - }, - "wrC_inst_Sextans[6]": { - "consumed_by": [ - "write_C", - 6 - ], - "depth": 2, - "produced_by": [ - "read_C", - 6 - ] - }, - "wrC_inst_Sextans[7]": { - "consumed_by": [ - "write_C", - 7 - ], - "depth": 2, - "produced_by": [ - "read_C", - 7 - ] - } - }, - "frt_interface": "#include \n#include \n#include \n\n\n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \nconstexpr int NUM_CH_SPARSE = 8;\nconstexpr int NUM_CH_B = 4;\nconstexpr int NUM_CH_C = 8;\nconst int WINDOW_SIZE = 4096;\nconst int DEP_DIST_LOAD_STORE = 10;\nconst int B_PARTITION_FACTOR = 4;\nconst int URAM_DEPTH = 8192;\nusing float_v16 = tapa::vec_t;\nusing float_v8 = tapa::vec_t;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, int beta_u);\n//#include \"modules.h\"\nconstexpr int FIFO_DEPTH = 2;\nconstexpr int PEG_PER_A = 512 / 256;\nstruct MultBVec {\n ap_uint<18> row;\n float_v8 abvec;\n};\ntemplate \ninline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A,\n const R A_len, R &i_req, R &i_resp) {\n#pragma HLS inline\n if ((i_req < A_len) & !A.read_addr.full()) {\n A.read_addr.try_write(i_req);\n ++i_req;\n }\n if (!fifo_A.full() & !A.read_data.empty()) {\n T tmp;\n A.read_data.try_read(tmp);\n fifo_A.try_write(tmp);\n ++i_resp;\n }\n}\nvoid read_edge_list_ptr(\n const int num_ite, const int M,\n const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N\n const int K, uint64_t edge_list_ptr,\n tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) ;\nvoid read_A(uint64_t A,\n tapa::ostream> &fifo_A, const int A_len,\n const int P_N) ;\nvoid read_B(uint64_t B, tapa::ostream &fifo_B,\n const int K, const int P_N) ;\nvoid read_C(uint64_t C, tapa::ostream &fifo_C,\n const int M, const int P_N, tapa::ostream &wrC_inst) ;\nvoid write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C,\n uint64_t C_out) ;\nvoid FloatvMultConst(const int alpha_u, const int M, const int P_N,\n tapa::istream &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid FloatvAddFloatv(tapa::istream &fifo_in0,\n tapa::istream &fifo_in1,\n tapa::ostream &fifo_out) ;\n/*\nvoid PU2core(ap_uint<18> & addr_c,\n float a_val_f,\n float b_val_d0_f,\n float b_val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]\n ) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u);\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u);\n\n c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f;\n c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f;\n\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\n\nvoid PEcore(ap_uint<14> & addr_b,\n ap_uint<18> & addr_c,\n ap_uint<32> & a_val_u,\n ap_uint<64> local_C[4][URAM_DEPTH],\n float local_B[8][WINDOW_SIZE]\n ) {\n#pragma HLS inline\n //if (addr_c != ((ap_uint<18>) 0x3FFFF)) {\n if (addr_c[17] == 0) {\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 4; ++i) {\n PU2core(addr_c,\n a_val_f,\n local_B[i*2+0][addr_b],\n local_B[i*2+1][addr_b],\n local_C[i]\n );\n }\n }\n}\n*/\nvoid PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u,\n float local_B[8][WINDOW_SIZE], float_v8 &abv) {\n#pragma HLS inline\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 8; ++i) {\n abv[i] = a_val_f * local_B[i][addr_b];\n }\n}\nvoid PEG_Bmtx(\n tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n // tapa::istream> & fifo_A,\n tapa::istream> &fifo_A,\n tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out,\n tapa::ostreams &fifo_B_out,\n // to PEG_Cmtx\n tapa::ostream &PE_inst_to_Cmtx,\n tapa::ostream &fifo_inst_out_to_Cmtx,\n tapa::ostreams &fifo_aBvec) ;\nvoid PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f;\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f;\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\nvoid PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec,\n ap_uint<64> local_C[4][URAM_DEPTH]) {\n#pragma HLS inline\n for (int i = 0; i < 4; ++i) {\n PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]);\n }\n}\nvoid PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n tapa::istreams &fifo_aBvec,\n tapa::ostream &fifo_C_out) ;\n/*\nvoid PEG(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n tapa::streams fifo_aBvec(\"fifo_aBvec\");\n tapa::stream PE_inst_to_Cmtx(\"PE_inst_to_Cmtx\");\n tapa::stream\nfifo_inst_out_to_Cmtx(\"fifo_inst_out_to_Cmtx\");\n\n tapa::task()\n .invoke(PEG_Bmtx,\n PE_inst_in,\n fifo_inst_in,\n fifo_A,\n fifo_B_in,\n PE_inst_out,\n fifo_inst_out,\n fifo_B_out,\n // to PEG_Cmtx\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec)\n\n .invoke(PEG_Cmtx,\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec,\n fifo_C_out)\n ;\n}\n\nvoid PEG_c(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0)? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n\n const int num_v_init = (M + 63) >> 6;\n //const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n\n //define local C buffer and pragma to URAM\n //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1\n#pragma HLS array_partition complete variable=local_C dim=1\n#pragma HLS array_partition complete variable=local_C dim=2\n\nl_rp:\n for(int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min=1 max=16\n\n //init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min=1 max=800\n#pragma HLS pipeline style=stp II=1\n //for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n //define local B buffer and pragma local B buffer if partition factor >\n1\n\n //float local_B[8/2][8][WINDOW_SIZE];\n //float local_B[8][WINDOW_SIZE];\n float local_B[4/2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable=local_B latency=2\n#pragma HLS array_partition variable=local_B complete dim=1\n#pragma HLS array_partition variable=local_B complete dim=2\n#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=3\n//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=2\n\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min=1 max=49\n\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i\n* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS\npipeline style=stp II = 1\n\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_512_x[k] = fifo_B_in[k].read();\n fifo_B_out[k].write(b_512_x[k]);\n }\n\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m %\n2 * 8];\n }\n }\n }\n ++j;\n }\n }\n\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n\n computation:\n for (int j = start_32; j < end_32; ) {\n#pragma HLS loop_tripcount min=1 max=200\n#pragma HLS pipeline style=stp II=1\n#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE\n\n //ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n\n if (a_pes_ready) {\n //for (int p = 0; p < 2; ++p) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<14> a_col;\n ap_uint<18> a_row;\n ap_uint<32> a_val;\n\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n a_col = a(63, 50);\n a_row = a(49, 32);\n a_val = a(31, 0);\n\n // PE process\n PEcore(a_col,\n a_row,\n a_val,\n local_C[p],\n //local_B\n local_B[p/2]\n );\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n\n //cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min=1 max=1800\n#pragma HLS pipeline style=stp II=1\n ap_uint<32> u_32_d[8];\n\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i>>2];\n u_32_d[2 * d ] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n\n switch (c_idx) { //0,2,1,3\n case 0: c_idx = 2; break;\n case 1: c_idx = 3; break;\n case 2: c_idx = 1; break;\n case 3: c_idx = 0; break;\n }\n\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\nendl;\n }\n }\n}\n*/\nvoid Scatter_1_2(tapa::istream> &fifo_in,\n tapa::ostreams, 2> &fifo_out) ;\nvoid Merger(tapa::istreams &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid black_hole_int(tapa::istream &fifo_in) ;\nvoid black_hole_float_v16(tapa::istream &fifo_in) ;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, const int beta_u) {\n#define TAPAB_APP \"TAPAB_Sextans\"\n#define TAPAB \"TAPAB\"\n const char* _tapa_bitstream = nullptr;\n if ((_tapa_bitstream = getenv(TAPAB_APP)) ||\n (_tapa_bitstream = getenv(TAPAB))) {\n fpga::Instance _tapa_instance(_tapa_bitstream);\n int _tapa_arg_index = 0;\n for (const auto& _tapa_arg_info : _tapa_instance.GetArgsInfo()) {\n if (false) {\n } else if (_tapa_arg_info.name == \"edge_list_ptr\") {\n auto _tapa_arg = fpga::ReadWrite(edge_list_ptr.get(), edge_list_ptr.size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"edge_list_ch_0\") {\n auto _tapa_arg = fpga::ReadWrite(edge_list_ch[0].get(), edge_list_ch[0].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"edge_list_ch_1\") {\n auto _tapa_arg = fpga::ReadWrite(edge_list_ch[1].get(), edge_list_ch[1].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"edge_list_ch_2\") {\n auto _tapa_arg = fpga::ReadWrite(edge_list_ch[2].get(), edge_list_ch[2].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"edge_list_ch_3\") {\n auto _tapa_arg = fpga::ReadWrite(edge_list_ch[3].get(), edge_list_ch[3].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"edge_list_ch_4\") {\n auto _tapa_arg = fpga::ReadWrite(edge_list_ch[4].get(), edge_list_ch[4].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"edge_list_ch_5\") {\n auto _tapa_arg = fpga::ReadWrite(edge_list_ch[5].get(), edge_list_ch[5].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"edge_list_ch_6\") {\n auto _tapa_arg = fpga::ReadWrite(edge_list_ch[6].get(), edge_list_ch[6].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"edge_list_ch_7\") {\n auto _tapa_arg = fpga::ReadWrite(edge_list_ch[7].get(), edge_list_ch[7].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_B_ch_0\") {\n auto _tapa_arg = fpga::ReadWrite(mat_B_ch[0].get(), mat_B_ch[0].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_B_ch_1\") {\n auto _tapa_arg = fpga::ReadWrite(mat_B_ch[1].get(), mat_B_ch[1].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_B_ch_2\") {\n auto _tapa_arg = fpga::ReadWrite(mat_B_ch[2].get(), mat_B_ch[2].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_B_ch_3\") {\n auto _tapa_arg = fpga::ReadWrite(mat_B_ch[3].get(), mat_B_ch[3].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_in_0\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch_in[0].get(), mat_C_ch_in[0].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_in_1\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch_in[1].get(), mat_C_ch_in[1].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_in_2\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch_in[2].get(), mat_C_ch_in[2].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_in_3\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch_in[3].get(), mat_C_ch_in[3].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_in_4\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch_in[4].get(), mat_C_ch_in[4].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_in_5\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch_in[5].get(), mat_C_ch_in[5].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_in_6\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch_in[6].get(), mat_C_ch_in[6].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_in_7\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch_in[7].get(), mat_C_ch_in[7].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_0\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch[0].get(), mat_C_ch[0].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_1\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch[1].get(), mat_C_ch[1].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_2\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch[2].get(), mat_C_ch[2].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_3\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch[3].get(), mat_C_ch[3].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_4\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch[4].get(), mat_C_ch[4].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_5\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch[5].get(), mat_C_ch[5].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_6\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch[6].get(), mat_C_ch[6].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"mat_C_ch_7\") {\n auto _tapa_arg = fpga::ReadWrite(mat_C_ch[7].get(), mat_C_ch[7].size());\n _tapa_instance.SetArg(_tapa_arg_index, _tapa_arg);\n } else if (_tapa_arg_info.name == \"NUM_ITE\") {\n _tapa_instance.SetArg(_tapa_arg_index, NUM_ITE);\n } else if (_tapa_arg_info.name == \"NUM_A_LEN\") {\n _tapa_instance.SetArg(_tapa_arg_index, NUM_A_LEN);\n } else if (_tapa_arg_info.name == \"M\") {\n _tapa_instance.SetArg(_tapa_arg_index, M);\n } else if (_tapa_arg_info.name == \"K\") {\n _tapa_instance.SetArg(_tapa_arg_index, K);\n } else if (_tapa_arg_info.name == \"P_N\") {\n _tapa_instance.SetArg(_tapa_arg_index, P_N);\n } else if (_tapa_arg_info.name == \"alpha_u\") {\n _tapa_instance.SetArg(_tapa_arg_index, alpha_u);\n } else if (_tapa_arg_info.name == \"beta_u\") {\n _tapa_instance.SetArg(_tapa_arg_index, beta_u);\n } else {\n std::stringstream ss;\n ss << \"unknown argument: \" << _tapa_arg_info;\n throw std::runtime_error(ss.str());\n }\n ++_tapa_arg_index;\n }\n _tapa_instance.WriteToDevice();\n _tapa_instance.Exec();\n _tapa_instance.ReadFromDevice();\n _tapa_instance.Finish();\n } else {\n throw std::runtime_error(\"no bitstream found; please set `\" TAPAB_APP\n \"` or `\" TAPAB \"`\");\n }\n}\n", - "level": "upper", - "ports": [ - { - "cat": "mmap", - "name": "edge_list_ptr", - "type": "int*", - "width": 32 - }, - { - "cat": "mmap", - "name": "edge_list_ch[0]", - "type": "ap_uint<512>*", - "width": 512 - }, - { - "cat": "mmap", - "name": "edge_list_ch[1]", - "type": "ap_uint<512>*", - "width": 512 - }, - { - "cat": "mmap", - "name": "edge_list_ch[2]", - "type": "ap_uint<512>*", - "width": 512 - }, - { - "cat": "mmap", - "name": "edge_list_ch[3]", - "type": "ap_uint<512>*", - "width": 512 - }, - { - "cat": "mmap", - "name": "edge_list_ch[4]", - "type": "ap_uint<512>*", - "width": 512 - }, - { - "cat": "mmap", - "name": "edge_list_ch[5]", - "type": "ap_uint<512>*", - "width": 512 - }, - { - "cat": "mmap", - "name": "edge_list_ch[6]", - "type": "ap_uint<512>*", - "width": 512 - }, - { - "cat": "mmap", - "name": "edge_list_ch[7]", - "type": "ap_uint<512>*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_B_ch[0]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_B_ch[1]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_B_ch[2]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_B_ch[3]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch_in[0]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch_in[1]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch_in[2]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch_in[3]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch_in[4]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch_in[5]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch_in[6]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch_in[7]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch[0]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch[1]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch[2]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch[3]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch[4]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch[5]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch[6]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "mmap", - "name": "mat_C_ch[7]", - "type": "float_v16*", - "width": 512 - }, - { - "cat": "scalar", - "name": "NUM_ITE", - "type": "const int", - "width": 32 - }, - { - "cat": "scalar", - "name": "NUM_A_LEN", - "type": "const int", - "width": 32 - }, - { - "cat": "scalar", - "name": "M", - "type": "const int", - "width": 32 - }, - { - "cat": "scalar", - "name": "K", - "type": "const int", - "width": 32 - }, - { - "cat": "scalar", - "name": "P_N", - "type": "const int", - "width": 32 - }, - { - "cat": "scalar", - "name": "alpha_u", - "type": "const int", - "width": 32 - }, - { - "cat": "scalar", - "name": "beta_u", - "type": "const int", - "width": 32 - } - ], - "target": "hls", - "tasks": { - "FloatvAddFloatv": [ - { - "args": { - "fifo_in0": { - "arg": "fifo_C_ch_result_alpha_Sextans[0]", - "cat": "istream" - }, - "fifo_in1": { - "arg": "fifo_C_read_in_beta_Sextans[0]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_Sextans[0]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in0": { - "arg": "fifo_C_ch_result_alpha_Sextans[1]", - "cat": "istream" - }, - "fifo_in1": { - "arg": "fifo_C_read_in_beta_Sextans[1]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_Sextans[1]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in0": { - "arg": "fifo_C_ch_result_alpha_Sextans[2]", - "cat": "istream" - }, - "fifo_in1": { - "arg": "fifo_C_read_in_beta_Sextans[2]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_Sextans[2]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in0": { - "arg": "fifo_C_ch_result_alpha_Sextans[3]", - "cat": "istream" - }, - "fifo_in1": { - "arg": "fifo_C_read_in_beta_Sextans[3]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_Sextans[3]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in0": { - "arg": "fifo_C_ch_result_alpha_Sextans[4]", - "cat": "istream" - }, - "fifo_in1": { - "arg": "fifo_C_read_in_beta_Sextans[4]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_Sextans[4]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in0": { - "arg": "fifo_C_ch_result_alpha_Sextans[5]", - "cat": "istream" - }, - "fifo_in1": { - "arg": "fifo_C_read_in_beta_Sextans[5]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_Sextans[5]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in0": { - "arg": "fifo_C_ch_result_alpha_Sextans[6]", - "cat": "istream" - }, - "fifo_in1": { - "arg": "fifo_C_read_in_beta_Sextans[6]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_Sextans[6]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in0": { - "arg": "fifo_C_ch_result_alpha_Sextans[7]", - "cat": "istream" - }, - "fifo_in1": { - "arg": "fifo_C_read_in_beta_Sextans[7]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_Sextans[7]", - "cat": "ostream" - } - }, - "step": -1 - } - ], - "FloatvMultConst": [ - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "beta_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_read_in_Sextans[0]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_read_in_beta_Sextans[0]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "beta_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_read_in_Sextans[1]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_read_in_beta_Sextans[1]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "beta_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_read_in_Sextans[2]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_read_in_beta_Sextans[2]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "beta_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_read_in_Sextans[3]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_read_in_beta_Sextans[3]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "beta_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_read_in_Sextans[4]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_read_in_beta_Sextans[4]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "beta_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_read_in_Sextans[5]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_read_in_beta_Sextans[5]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "beta_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_read_in_Sextans[6]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_read_in_beta_Sextans[6]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "beta_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_read_in_Sextans[7]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_read_in_beta_Sextans[7]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "alpha_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_ch_result_Sextans[0]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_alpha_Sextans[0]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "alpha_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_ch_result_Sextans[1]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_alpha_Sextans[1]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "alpha_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_ch_result_Sextans[2]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_alpha_Sextans[2]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "alpha_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_ch_result_Sextans[3]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_alpha_Sextans[3]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "alpha_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_ch_result_Sextans[4]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_alpha_Sextans[4]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "alpha_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_ch_result_Sextans[5]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_alpha_Sextans[5]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "alpha_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_ch_result_Sextans[6]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_alpha_Sextans[6]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "alpha_u": { - "arg": "alpha_u", - "cat": "scalar" - }, - "fifo_in": { - "arg": "fifo_C_ch_result_Sextans[7]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_alpha_Sextans[7]", - "cat": "ostream" - } - }, - "step": 0 - } - ], - "Merger": [ - { - "args": { - "fifo_in[0]": { - "arg": "fifo_C_pe_Sextans[0]", - "cat": "istream" - }, - "fifo_in[1]": { - "arg": "fifo_C_pe_Sextans[1]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_Sextans[0]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in[0]": { - "arg": "fifo_C_pe_Sextans[2]", - "cat": "istream" - }, - "fifo_in[1]": { - "arg": "fifo_C_pe_Sextans[3]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_Sextans[1]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in[0]": { - "arg": "fifo_C_pe_Sextans[4]", - "cat": "istream" - }, - "fifo_in[1]": { - "arg": "fifo_C_pe_Sextans[5]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_Sextans[2]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in[0]": { - "arg": "fifo_C_pe_Sextans[6]", - "cat": "istream" - }, - "fifo_in[1]": { - "arg": "fifo_C_pe_Sextans[7]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_Sextans[3]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in[0]": { - "arg": "fifo_C_pe_Sextans[8]", - "cat": "istream" - }, - "fifo_in[1]": { - "arg": "fifo_C_pe_Sextans[9]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_Sextans[4]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in[0]": { - "arg": "fifo_C_pe_Sextans[10]", - "cat": "istream" - }, - "fifo_in[1]": { - "arg": "fifo_C_pe_Sextans[11]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_Sextans[5]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in[0]": { - "arg": "fifo_C_pe_Sextans[12]", - "cat": "istream" - }, - "fifo_in[1]": { - "arg": "fifo_C_pe_Sextans[13]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_Sextans[6]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in[0]": { - "arg": "fifo_C_pe_Sextans[14]", - "cat": "istream" - }, - "fifo_in[1]": { - "arg": "fifo_C_pe_Sextans[15]", - "cat": "istream" - }, - "fifo_out": { - "arg": "fifo_C_ch_result_Sextans[7]", - "cat": "ostream" - } - }, - "step": -1 - } - ], - "PEG_Bmtx": [ - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[0]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[1]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[0]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[0]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[0]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[1]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[2]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[3]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[4]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[5]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[6]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[7]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[0]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[1]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[2]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[3]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[0]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[1]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[0]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[1]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[2]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[1]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[1]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[4]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[5]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[6]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[7]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[8]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[9]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[10]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[11]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[4]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[5]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[6]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[7]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[1]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[2]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[1]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[2]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[3]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[2]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[2]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[8]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[9]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[10]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[11]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[12]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[13]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[14]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[15]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[8]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[9]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[10]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[11]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[2]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[3]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[2]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[3]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[4]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[3]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[3]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[12]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[13]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[14]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[15]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[16]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[17]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[18]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[19]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[12]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[13]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[14]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[15]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[3]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[4]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[3]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[4]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[5]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[4]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[4]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[16]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[17]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[18]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[19]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[20]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[21]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[22]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[23]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[16]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[17]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[18]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[19]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[4]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[5]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[4]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[5]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[6]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[5]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[5]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[20]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[21]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[22]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[23]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[24]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[25]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[26]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[27]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[20]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[21]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[22]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[23]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[5]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[6]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[5]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[6]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[7]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[6]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[6]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[24]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[25]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[26]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[27]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[28]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[29]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[30]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[31]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[24]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[25]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[26]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[27]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[6]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[7]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[6]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[7]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[8]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[7]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[7]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[28]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[29]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[30]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[31]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[32]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[33]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[34]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[35]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[28]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[29]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[30]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[31]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[7]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[8]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[7]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[8]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[9]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[8]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[8]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[32]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[33]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[34]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[35]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[36]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[37]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[38]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[39]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[32]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[33]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[34]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[35]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[8]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[9]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[8]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[9]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[10]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[9]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[9]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[36]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[37]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[38]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[39]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[40]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[41]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[42]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[43]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[36]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[37]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[38]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[39]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[9]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[10]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[9]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[10]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[11]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[10]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[10]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[40]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[41]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[42]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[43]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[44]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[45]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[46]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[47]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[40]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[41]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[42]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[43]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[10]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[11]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[10]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[11]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[12]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[11]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[11]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[44]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[45]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[46]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[47]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[48]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[49]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[50]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[51]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[44]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[45]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[46]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[47]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[11]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[12]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[11]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[12]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[13]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[12]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[12]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[48]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[49]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[50]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[51]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[52]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[53]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[54]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[55]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[48]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[49]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[50]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[51]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[12]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[13]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[12]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[13]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[14]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[13]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[13]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[52]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[53]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[54]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[55]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[56]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[57]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[58]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[59]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[52]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[53]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[54]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[55]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[13]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[14]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[13]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[14]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[15]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[14]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[14]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[56]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[57]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[58]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[59]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[60]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[61]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[62]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[63]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[56]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[57]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[58]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[59]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[14]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[15]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[14]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_Sextans[15]", - "cat": "istream" - }, - "PE_inst_out": { - "arg": "PE_inst_Sextans[16]", - "cat": "ostream" - }, - "PE_inst_to_Cmtx": { - "arg": "PE_inst_to_Cmtx_Sextans[15]", - "cat": "ostream" - }, - "fifo_A": { - "arg": "fifo_A_pe_Sextans[15]", - "cat": "istream" - }, - "fifo_B_in[0]": { - "arg": "fifo_B_pe_Sextans[60]", - "cat": "istream" - }, - "fifo_B_in[1]": { - "arg": "fifo_B_pe_Sextans[61]", - "cat": "istream" - }, - "fifo_B_in[2]": { - "arg": "fifo_B_pe_Sextans[62]", - "cat": "istream" - }, - "fifo_B_in[3]": { - "arg": "fifo_B_pe_Sextans[63]", - "cat": "istream" - }, - "fifo_B_out[0]": { - "arg": "fifo_B_pe_Sextans[64]", - "cat": "ostream" - }, - "fifo_B_out[1]": { - "arg": "fifo_B_pe_Sextans[65]", - "cat": "ostream" - }, - "fifo_B_out[2]": { - "arg": "fifo_B_pe_Sextans[66]", - "cat": "ostream" - }, - "fifo_B_out[3]": { - "arg": "fifo_B_pe_Sextans[67]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[60]", - "cat": "ostream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[61]", - "cat": "ostream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[62]", - "cat": "ostream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[63]", - "cat": "ostream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_Sextans[15]", - "cat": "istream" - }, - "fifo_inst_out": { - "arg": "fifo_edge_list_ptr_Sextans[16]", - "cat": "ostream" - }, - "fifo_inst_out_to_Cmtx": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[15]", - "cat": "ostream" - } - }, - "step": 0 - } - ], - "PEG_Cmtx": [ - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[0]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[0]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[0]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[1]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[2]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[3]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[0]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[1]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[1]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[4]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[5]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[6]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[7]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[1]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[2]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[2]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[8]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[9]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[10]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[11]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[2]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[3]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[3]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[12]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[13]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[14]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[15]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[3]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[4]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[4]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[16]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[17]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[18]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[19]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[4]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[5]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[5]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[20]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[21]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[22]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[23]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[5]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[6]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[6]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[24]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[25]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[26]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[27]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[6]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[7]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[7]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[28]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[29]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[30]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[31]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[7]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[8]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[8]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[32]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[33]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[34]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[35]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[8]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[9]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[9]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[36]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[37]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[38]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[39]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[9]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[10]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[10]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[40]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[41]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[42]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[43]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[10]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[11]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[11]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[44]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[45]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[46]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[47]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[11]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[12]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[12]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[48]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[49]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[50]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[51]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[12]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[13]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[13]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[52]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[53]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[54]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[55]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[13]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[14]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[14]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[56]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[57]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[58]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[59]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[14]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "PE_inst_in": { - "arg": "PE_inst_to_Cmtx_Sextans[15]", - "cat": "istream" - }, - "fifo_C_out": { - "arg": "fifo_C_pe_Sextans[15]", - "cat": "ostream" - }, - "fifo_aBvec[0]": { - "arg": "fifo_aBvec_Sextans[60]", - "cat": "istream" - }, - "fifo_aBvec[1]": { - "arg": "fifo_aBvec_Sextans[61]", - "cat": "istream" - }, - "fifo_aBvec[2]": { - "arg": "fifo_aBvec_Sextans[62]", - "cat": "istream" - }, - "fifo_aBvec[3]": { - "arg": "fifo_aBvec_Sextans[63]", - "cat": "istream" - }, - "fifo_inst_in": { - "arg": "fifo_edge_list_ptr_to_Cmtx_Sextans[15]", - "cat": "istream" - } - }, - "step": 0 - } - ], - "Scatter_1_2": [ - { - "args": { - "fifo_in": { - "arg": "fifo_A_Sextans[0]", - "cat": "istream" - }, - "fifo_out[0]": { - "arg": "fifo_A_pe_Sextans[0]", - "cat": "ostream" - }, - "fifo_out[1]": { - "arg": "fifo_A_pe_Sextans[1]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in": { - "arg": "fifo_A_Sextans[1]", - "cat": "istream" - }, - "fifo_out[0]": { - "arg": "fifo_A_pe_Sextans[2]", - "cat": "ostream" - }, - "fifo_out[1]": { - "arg": "fifo_A_pe_Sextans[3]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in": { - "arg": "fifo_A_Sextans[2]", - "cat": "istream" - }, - "fifo_out[0]": { - "arg": "fifo_A_pe_Sextans[4]", - "cat": "ostream" - }, - "fifo_out[1]": { - "arg": "fifo_A_pe_Sextans[5]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in": { - "arg": "fifo_A_Sextans[3]", - "cat": "istream" - }, - "fifo_out[0]": { - "arg": "fifo_A_pe_Sextans[6]", - "cat": "ostream" - }, - "fifo_out[1]": { - "arg": "fifo_A_pe_Sextans[7]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in": { - "arg": "fifo_A_Sextans[4]", - "cat": "istream" - }, - "fifo_out[0]": { - "arg": "fifo_A_pe_Sextans[8]", - "cat": "ostream" - }, - "fifo_out[1]": { - "arg": "fifo_A_pe_Sextans[9]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in": { - "arg": "fifo_A_Sextans[5]", - "cat": "istream" - }, - "fifo_out[0]": { - "arg": "fifo_A_pe_Sextans[10]", - "cat": "ostream" - }, - "fifo_out[1]": { - "arg": "fifo_A_pe_Sextans[11]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in": { - "arg": "fifo_A_Sextans[6]", - "cat": "istream" - }, - "fifo_out[0]": { - "arg": "fifo_A_pe_Sextans[12]", - "cat": "ostream" - }, - "fifo_out[1]": { - "arg": "fifo_A_pe_Sextans[13]", - "cat": "ostream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in": { - "arg": "fifo_A_Sextans[7]", - "cat": "istream" - }, - "fifo_out[0]": { - "arg": "fifo_A_pe_Sextans[14]", - "cat": "ostream" - }, - "fifo_out[1]": { - "arg": "fifo_A_pe_Sextans[15]", - "cat": "ostream" - } - }, - "step": -1 - } - ], - "black_hole_float_v16": [ - { - "args": { - "fifo_in": { - "arg": "fifo_B_pe_Sextans[64]", - "cat": "istream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in": { - "arg": "fifo_B_pe_Sextans[65]", - "cat": "istream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in": { - "arg": "fifo_B_pe_Sextans[66]", - "cat": "istream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in": { - "arg": "fifo_B_pe_Sextans[67]", - "cat": "istream" - } - }, - "step": -1 - } - ], - "black_hole_int": [ - { - "args": { - "fifo_in": { - "arg": "PE_inst_Sextans[16]", - "cat": "istream" - } - }, - "step": -1 - }, - { - "args": { - "fifo_in": { - "arg": "fifo_edge_list_ptr_Sextans[16]", - "cat": "istream" - } - }, - "step": -1 - } - ], - "read_A": [ - { - "args": { - "A": { - "arg": "edge_list_ch[0]", - "cat": "async_mmap" - }, - "A_len": { - "arg": "NUM_A_LEN", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_A": { - "arg": "fifo_A_Sextans[0]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "A": { - "arg": "edge_list_ch[1]", - "cat": "async_mmap" - }, - "A_len": { - "arg": "NUM_A_LEN", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_A": { - "arg": "fifo_A_Sextans[1]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "A": { - "arg": "edge_list_ch[2]", - "cat": "async_mmap" - }, - "A_len": { - "arg": "NUM_A_LEN", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_A": { - "arg": "fifo_A_Sextans[2]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "A": { - "arg": "edge_list_ch[3]", - "cat": "async_mmap" - }, - "A_len": { - "arg": "NUM_A_LEN", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_A": { - "arg": "fifo_A_Sextans[3]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "A": { - "arg": "edge_list_ch[4]", - "cat": "async_mmap" - }, - "A_len": { - "arg": "NUM_A_LEN", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_A": { - "arg": "fifo_A_Sextans[4]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "A": { - "arg": "edge_list_ch[5]", - "cat": "async_mmap" - }, - "A_len": { - "arg": "NUM_A_LEN", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_A": { - "arg": "fifo_A_Sextans[5]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "A": { - "arg": "edge_list_ch[6]", - "cat": "async_mmap" - }, - "A_len": { - "arg": "NUM_A_LEN", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_A": { - "arg": "fifo_A_Sextans[6]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "A": { - "arg": "edge_list_ch[7]", - "cat": "async_mmap" - }, - "A_len": { - "arg": "NUM_A_LEN", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_A": { - "arg": "fifo_A_Sextans[7]", - "cat": "ostream" - } - }, - "step": 0 - } - ], - "read_B": [ - { - "args": { - "B": { - "arg": "mat_B_ch[0]", - "cat": "async_mmap" - }, - "K": { - "arg": "K", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_B": { - "arg": "fifo_B_pe_Sextans[0]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "B": { - "arg": "mat_B_ch[1]", - "cat": "async_mmap" - }, - "K": { - "arg": "K", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_B": { - "arg": "fifo_B_pe_Sextans[1]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "B": { - "arg": "mat_B_ch[2]", - "cat": "async_mmap" - }, - "K": { - "arg": "K", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_B": { - "arg": "fifo_B_pe_Sextans[2]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "B": { - "arg": "mat_B_ch[3]", - "cat": "async_mmap" - }, - "K": { - "arg": "K", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_B": { - "arg": "fifo_B_pe_Sextans[3]", - "cat": "ostream" - } - }, - "step": 0 - } - ], - "read_C": [ - { - "args": { - "C": { - "arg": "mat_C_ch_in[0]", - "cat": "async_mmap" - }, - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_C": { - "arg": "fifo_C_read_in_Sextans[0]", - "cat": "ostream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[0]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "C": { - "arg": "mat_C_ch_in[1]", - "cat": "async_mmap" - }, - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_C": { - "arg": "fifo_C_read_in_Sextans[1]", - "cat": "ostream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[1]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "C": { - "arg": "mat_C_ch_in[2]", - "cat": "async_mmap" - }, - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_C": { - "arg": "fifo_C_read_in_Sextans[2]", - "cat": "ostream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[2]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "C": { - "arg": "mat_C_ch_in[3]", - "cat": "async_mmap" - }, - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_C": { - "arg": "fifo_C_read_in_Sextans[3]", - "cat": "ostream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[3]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "C": { - "arg": "mat_C_ch_in[4]", - "cat": "async_mmap" - }, - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_C": { - "arg": "fifo_C_read_in_Sextans[4]", - "cat": "ostream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[4]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "C": { - "arg": "mat_C_ch_in[5]", - "cat": "async_mmap" - }, - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_C": { - "arg": "fifo_C_read_in_Sextans[5]", - "cat": "ostream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[5]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "C": { - "arg": "mat_C_ch_in[6]", - "cat": "async_mmap" - }, - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_C": { - "arg": "fifo_C_read_in_Sextans[6]", - "cat": "ostream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[6]", - "cat": "ostream" - } - }, - "step": 0 - }, - { - "args": { - "C": { - "arg": "mat_C_ch_in[7]", - "cat": "async_mmap" - }, - "M": { - "arg": "M", - "cat": "scalar" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "fifo_C": { - "arg": "fifo_C_read_in_Sextans[7]", - "cat": "ostream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[7]", - "cat": "ostream" - } - }, - "step": 0 - } - ], - "read_edge_list_ptr": [ - { - "args": { - "K": { - "arg": "K", - "cat": "scalar" - }, - "M": { - "arg": "M", - "cat": "scalar" - }, - "PE_inst": { - "arg": "PE_inst_Sextans[0]", - "cat": "ostream" - }, - "P_N": { - "arg": "P_N", - "cat": "scalar" - }, - "edge_list_ptr": { - "arg": "edge_list_ptr", - "cat": "async_mmap" - }, - "fifo_edge_list_ptr": { - "arg": "fifo_edge_list_ptr_Sextans[0]", - "cat": "ostream" - }, - "num_ite": { - "arg": "NUM_ITE", - "cat": "scalar" - } - }, - "step": 0 - } - ], - "write_C": [ - { - "args": { - "C_out": { - "arg": "mat_C_ch[0]", - "cat": "async_mmap" - }, - "fifo_C": { - "arg": "fifo_C_ch_Sextans[0]", - "cat": "istream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[0]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "C_out": { - "arg": "mat_C_ch[1]", - "cat": "async_mmap" - }, - "fifo_C": { - "arg": "fifo_C_ch_Sextans[1]", - "cat": "istream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[1]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "C_out": { - "arg": "mat_C_ch[2]", - "cat": "async_mmap" - }, - "fifo_C": { - "arg": "fifo_C_ch_Sextans[2]", - "cat": "istream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[2]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "C_out": { - "arg": "mat_C_ch[3]", - "cat": "async_mmap" - }, - "fifo_C": { - "arg": "fifo_C_ch_Sextans[3]", - "cat": "istream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[3]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "C_out": { - "arg": "mat_C_ch[4]", - "cat": "async_mmap" - }, - "fifo_C": { - "arg": "fifo_C_ch_Sextans[4]", - "cat": "istream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[4]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "C_out": { - "arg": "mat_C_ch[5]", - "cat": "async_mmap" - }, - "fifo_C": { - "arg": "fifo_C_ch_Sextans[5]", - "cat": "istream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[5]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "C_out": { - "arg": "mat_C_ch[6]", - "cat": "async_mmap" - }, - "fifo_C": { - "arg": "fifo_C_ch_Sextans[6]", - "cat": "istream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[6]", - "cat": "istream" - } - }, - "step": 0 - }, - { - "args": { - "C_out": { - "arg": "mat_C_ch[7]", - "cat": "async_mmap" - }, - "fifo_C": { - "arg": "fifo_C_ch_Sextans[7]", - "cat": "istream" - }, - "wrC_inst": { - "arg": "wrC_inst_Sextans[7]", - "cat": "istream" - } - }, - "step": 0 - } - ] - }, - "vendor": "xilinx" - }, - "black_hole_float_v16": { - "code": "\n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \nconstexpr int NUM_CH_SPARSE = 8;\nconstexpr int NUM_CH_B = 4;\nconstexpr int NUM_CH_C = 8;\nconst int WINDOW_SIZE = 4096;\nconst int DEP_DIST_LOAD_STORE = 10;\nconst int B_PARTITION_FACTOR = 4;\nconst int URAM_DEPTH = 8192;\nusing float_v16 = tapa::vec_t;\nusing float_v8 = tapa::vec_t;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, int beta_u);\n//#include \"modules.h\"\nconstexpr int FIFO_DEPTH = 2;\nconstexpr int PEG_PER_A = 512 / 256;\nstruct MultBVec {\n ap_uint<18> row;\n float_v8 abvec;\n};\ntemplate \ninline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A,\n const R A_len, R &i_req, R &i_resp) {\n#pragma HLS inline\n if ((i_req < A_len) & !A.read_addr.full()) {\n A.read_addr.try_write(i_req);\n ++i_req;\n }\n if (!fifo_A.full() & !A.read_data.empty()) {\n T tmp;\n A.read_data.try_read(tmp);\n fifo_A.try_write(tmp);\n ++i_resp;\n }\n}\nvoid read_edge_list_ptr(\n const int num_ite, const int M,\n const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N\n const int K, uint64_t edge_list_ptr,\n tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) ;\nvoid read_A(uint64_t A,\n tapa::ostream> &fifo_A, const int A_len,\n const int P_N) ;\nvoid read_B(uint64_t B, tapa::ostream &fifo_B,\n const int K, const int P_N) ;\nvoid read_C(uint64_t C, tapa::ostream &fifo_C,\n const int M, const int P_N, tapa::ostream &wrC_inst) ;\nvoid write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C,\n uint64_t C_out) ;\nvoid FloatvMultConst(const int alpha_u, const int M, const int P_N,\n tapa::istream &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid FloatvAddFloatv(tapa::istream &fifo_in0,\n tapa::istream &fifo_in1,\n tapa::ostream &fifo_out) ;\n/*\nvoid PU2core(ap_uint<18> & addr_c,\n float a_val_f,\n float b_val_d0_f,\n float b_val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]\n ) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u);\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u);\n\n c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f;\n c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f;\n\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\n\nvoid PEcore(ap_uint<14> & addr_b,\n ap_uint<18> & addr_c,\n ap_uint<32> & a_val_u,\n ap_uint<64> local_C[4][URAM_DEPTH],\n float local_B[8][WINDOW_SIZE]\n ) {\n#pragma HLS inline\n //if (addr_c != ((ap_uint<18>) 0x3FFFF)) {\n if (addr_c[17] == 0) {\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 4; ++i) {\n PU2core(addr_c,\n a_val_f,\n local_B[i*2+0][addr_b],\n local_B[i*2+1][addr_b],\n local_C[i]\n );\n }\n }\n}\n*/\nvoid PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u,\n float local_B[8][WINDOW_SIZE], float_v8 &abv) {\n#pragma HLS inline\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 8; ++i) {\n abv[i] = a_val_f * local_B[i][addr_b];\n }\n}\nvoid PEG_Bmtx(\n tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n // tapa::istream> & fifo_A,\n tapa::istream> &fifo_A,\n tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out,\n tapa::ostreams &fifo_B_out,\n // to PEG_Cmtx\n tapa::ostream &PE_inst_to_Cmtx,\n tapa::ostream &fifo_inst_out_to_Cmtx,\n tapa::ostreams &fifo_aBvec) ;\nvoid PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f;\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f;\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\nvoid PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec,\n ap_uint<64> local_C[4][URAM_DEPTH]) {\n#pragma HLS inline\n for (int i = 0; i < 4; ++i) {\n PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]);\n }\n}\nvoid PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n tapa::istreams &fifo_aBvec,\n tapa::ostream &fifo_C_out) ;\n/*\nvoid PEG(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n tapa::streams fifo_aBvec(\"fifo_aBvec\");\n tapa::stream PE_inst_to_Cmtx(\"PE_inst_to_Cmtx\");\n tapa::stream\nfifo_inst_out_to_Cmtx(\"fifo_inst_out_to_Cmtx\");\n\n tapa::task()\n .invoke(PEG_Bmtx,\n PE_inst_in,\n fifo_inst_in,\n fifo_A,\n fifo_B_in,\n PE_inst_out,\n fifo_inst_out,\n fifo_B_out,\n // to PEG_Cmtx\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec)\n\n .invoke(PEG_Cmtx,\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec,\n fifo_C_out)\n ;\n}\n\nvoid PEG_c(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0)? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n\n const int num_v_init = (M + 63) >> 6;\n //const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n\n //define local C buffer and pragma to URAM\n //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1\n#pragma HLS array_partition complete variable=local_C dim=1\n#pragma HLS array_partition complete variable=local_C dim=2\n\nl_rp:\n for(int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min=1 max=16\n\n //init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min=1 max=800\n#pragma HLS pipeline style=stp II=1\n //for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n //define local B buffer and pragma local B buffer if partition factor >\n1\n\n //float local_B[8/2][8][WINDOW_SIZE];\n //float local_B[8][WINDOW_SIZE];\n float local_B[4/2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable=local_B latency=2\n#pragma HLS array_partition variable=local_B complete dim=1\n#pragma HLS array_partition variable=local_B complete dim=2\n#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=3\n//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=2\n\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min=1 max=49\n\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i\n* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS\npipeline style=stp II = 1\n\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_512_x[k] = fifo_B_in[k].read();\n fifo_B_out[k].write(b_512_x[k]);\n }\n\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m %\n2 * 8];\n }\n }\n }\n ++j;\n }\n }\n\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n\n computation:\n for (int j = start_32; j < end_32; ) {\n#pragma HLS loop_tripcount min=1 max=200\n#pragma HLS pipeline style=stp II=1\n#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE\n\n //ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n\n if (a_pes_ready) {\n //for (int p = 0; p < 2; ++p) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<14> a_col;\n ap_uint<18> a_row;\n ap_uint<32> a_val;\n\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n a_col = a(63, 50);\n a_row = a(49, 32);\n a_val = a(31, 0);\n\n // PE process\n PEcore(a_col,\n a_row,\n a_val,\n local_C[p],\n //local_B\n local_B[p/2]\n );\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n\n //cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min=1 max=1800\n#pragma HLS pipeline style=stp II=1\n ap_uint<32> u_32_d[8];\n\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i>>2];\n u_32_d[2 * d ] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n\n switch (c_idx) { //0,2,1,3\n case 0: c_idx = 2; break;\n case 1: c_idx = 3; break;\n case 2: c_idx = 1; break;\n case 3: c_idx = 0; break;\n }\n\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\nendl;\n }\n }\n}\n*/\nvoid Scatter_1_2(tapa::istream> &fifo_in,\n tapa::ostreams, 2> &fifo_out) ;\nvoid Merger(tapa::istreams &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid black_hole_int(tapa::istream &fifo_in) ;\nvoid black_hole_float_v16(tapa::istream &fifo_in) {\n#pragma HLS disaggregate variable = fifo_in\n#pragma HLS interface ap_fifo port = fifo_in._\n#pragma HLS aggregate variable = fifo_in._ bit\n#pragma HLS interface ap_fifo port = fifo_in._peek\n#pragma HLS aggregate variable = fifo_in._peek bit\nvoid(fifo_in._.empty());\nvoid(fifo_in._peek.empty());\n\n for (;;) {\n#pragma HLS pipeline style = stp II = 1\n fifo_in.read(nullptr);\n }\n}\nvoid Sextans(uint64_t edge_list_ptr,\n uint64_t edge_list_ch_0, uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, uint64_t edge_list_ch_7,\n uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, uint64_t mat_B_ch_2, uint64_t mat_B_ch_3,\n uint64_t mat_C_ch_in_0, uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, uint64_t mat_C_ch_in_7,\n uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, const int beta_u) ;\n", - "level": "lower", - "target": "hls", - "vendor": "xilinx" - }, - "black_hole_int": { - "code": "\n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \nconstexpr int NUM_CH_SPARSE = 8;\nconstexpr int NUM_CH_B = 4;\nconstexpr int NUM_CH_C = 8;\nconst int WINDOW_SIZE = 4096;\nconst int DEP_DIST_LOAD_STORE = 10;\nconst int B_PARTITION_FACTOR = 4;\nconst int URAM_DEPTH = 8192;\nusing float_v16 = tapa::vec_t;\nusing float_v8 = tapa::vec_t;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, int beta_u);\n//#include \"modules.h\"\nconstexpr int FIFO_DEPTH = 2;\nconstexpr int PEG_PER_A = 512 / 256;\nstruct MultBVec {\n ap_uint<18> row;\n float_v8 abvec;\n};\ntemplate \ninline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A,\n const R A_len, R &i_req, R &i_resp) {\n#pragma HLS inline\n if ((i_req < A_len) & !A.read_addr.full()) {\n A.read_addr.try_write(i_req);\n ++i_req;\n }\n if (!fifo_A.full() & !A.read_data.empty()) {\n T tmp;\n A.read_data.try_read(tmp);\n fifo_A.try_write(tmp);\n ++i_resp;\n }\n}\nvoid read_edge_list_ptr(\n const int num_ite, const int M,\n const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N\n const int K, uint64_t edge_list_ptr,\n tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) ;\nvoid read_A(uint64_t A,\n tapa::ostream> &fifo_A, const int A_len,\n const int P_N) ;\nvoid read_B(uint64_t B, tapa::ostream &fifo_B,\n const int K, const int P_N) ;\nvoid read_C(uint64_t C, tapa::ostream &fifo_C,\n const int M, const int P_N, tapa::ostream &wrC_inst) ;\nvoid write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C,\n uint64_t C_out) ;\nvoid FloatvMultConst(const int alpha_u, const int M, const int P_N,\n tapa::istream &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid FloatvAddFloatv(tapa::istream &fifo_in0,\n tapa::istream &fifo_in1,\n tapa::ostream &fifo_out) ;\n/*\nvoid PU2core(ap_uint<18> & addr_c,\n float a_val_f,\n float b_val_d0_f,\n float b_val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]\n ) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u);\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u);\n\n c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f;\n c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f;\n\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\n\nvoid PEcore(ap_uint<14> & addr_b,\n ap_uint<18> & addr_c,\n ap_uint<32> & a_val_u,\n ap_uint<64> local_C[4][URAM_DEPTH],\n float local_B[8][WINDOW_SIZE]\n ) {\n#pragma HLS inline\n //if (addr_c != ((ap_uint<18>) 0x3FFFF)) {\n if (addr_c[17] == 0) {\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 4; ++i) {\n PU2core(addr_c,\n a_val_f,\n local_B[i*2+0][addr_b],\n local_B[i*2+1][addr_b],\n local_C[i]\n );\n }\n }\n}\n*/\nvoid PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u,\n float local_B[8][WINDOW_SIZE], float_v8 &abv) {\n#pragma HLS inline\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 8; ++i) {\n abv[i] = a_val_f * local_B[i][addr_b];\n }\n}\nvoid PEG_Bmtx(\n tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n // tapa::istream> & fifo_A,\n tapa::istream> &fifo_A,\n tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out,\n tapa::ostreams &fifo_B_out,\n // to PEG_Cmtx\n tapa::ostream &PE_inst_to_Cmtx,\n tapa::ostream &fifo_inst_out_to_Cmtx,\n tapa::ostreams &fifo_aBvec) ;\nvoid PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f;\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f;\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\nvoid PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec,\n ap_uint<64> local_C[4][URAM_DEPTH]) {\n#pragma HLS inline\n for (int i = 0; i < 4; ++i) {\n PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]);\n }\n}\nvoid PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n tapa::istreams &fifo_aBvec,\n tapa::ostream &fifo_C_out) ;\n/*\nvoid PEG(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n tapa::streams fifo_aBvec(\"fifo_aBvec\");\n tapa::stream PE_inst_to_Cmtx(\"PE_inst_to_Cmtx\");\n tapa::stream\nfifo_inst_out_to_Cmtx(\"fifo_inst_out_to_Cmtx\");\n\n tapa::task()\n .invoke(PEG_Bmtx,\n PE_inst_in,\n fifo_inst_in,\n fifo_A,\n fifo_B_in,\n PE_inst_out,\n fifo_inst_out,\n fifo_B_out,\n // to PEG_Cmtx\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec)\n\n .invoke(PEG_Cmtx,\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec,\n fifo_C_out)\n ;\n}\n\nvoid PEG_c(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0)? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n\n const int num_v_init = (M + 63) >> 6;\n //const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n\n //define local C buffer and pragma to URAM\n //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1\n#pragma HLS array_partition complete variable=local_C dim=1\n#pragma HLS array_partition complete variable=local_C dim=2\n\nl_rp:\n for(int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min=1 max=16\n\n //init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min=1 max=800\n#pragma HLS pipeline style=stp II=1\n //for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n //define local B buffer and pragma local B buffer if partition factor >\n1\n\n //float local_B[8/2][8][WINDOW_SIZE];\n //float local_B[8][WINDOW_SIZE];\n float local_B[4/2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable=local_B latency=2\n#pragma HLS array_partition variable=local_B complete dim=1\n#pragma HLS array_partition variable=local_B complete dim=2\n#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=3\n//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=2\n\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min=1 max=49\n\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i\n* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS\npipeline style=stp II = 1\n\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_512_x[k] = fifo_B_in[k].read();\n fifo_B_out[k].write(b_512_x[k]);\n }\n\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m %\n2 * 8];\n }\n }\n }\n ++j;\n }\n }\n\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n\n computation:\n for (int j = start_32; j < end_32; ) {\n#pragma HLS loop_tripcount min=1 max=200\n#pragma HLS pipeline style=stp II=1\n#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE\n\n //ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n\n if (a_pes_ready) {\n //for (int p = 0; p < 2; ++p) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<14> a_col;\n ap_uint<18> a_row;\n ap_uint<32> a_val;\n\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n a_col = a(63, 50);\n a_row = a(49, 32);\n a_val = a(31, 0);\n\n // PE process\n PEcore(a_col,\n a_row,\n a_val,\n local_C[p],\n //local_B\n local_B[p/2]\n );\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n\n //cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min=1 max=1800\n#pragma HLS pipeline style=stp II=1\n ap_uint<32> u_32_d[8];\n\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i>>2];\n u_32_d[2 * d ] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n\n switch (c_idx) { //0,2,1,3\n case 0: c_idx = 2; break;\n case 1: c_idx = 3; break;\n case 2: c_idx = 1; break;\n case 3: c_idx = 0; break;\n }\n\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\nendl;\n }\n }\n}\n*/\nvoid Scatter_1_2(tapa::istream> &fifo_in,\n tapa::ostreams, 2> &fifo_out) ;\nvoid Merger(tapa::istreams &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid black_hole_int(tapa::istream &fifo_in) {\n#pragma HLS disaggregate variable = fifo_in\n#pragma HLS interface ap_fifo port = fifo_in._\n#pragma HLS aggregate variable = fifo_in._ bit\n#pragma HLS interface ap_fifo port = fifo_in._peek\n#pragma HLS aggregate variable = fifo_in._peek bit\nvoid(fifo_in._.empty());\nvoid(fifo_in._peek.empty());\n\n for (;;) {\n#pragma HLS pipeline style = stp II = 1\n fifo_in.read(nullptr);\n }\n}\nvoid black_hole_float_v16(tapa::istream &fifo_in) ;\nvoid Sextans(uint64_t edge_list_ptr,\n uint64_t edge_list_ch_0, uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, uint64_t edge_list_ch_7,\n uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, uint64_t mat_B_ch_2, uint64_t mat_B_ch_3,\n uint64_t mat_C_ch_in_0, uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, uint64_t mat_C_ch_in_7,\n uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, const int beta_u) ;\n", - "level": "lower", - "target": "hls", - "vendor": "xilinx" - }, - "read_A": { - "code": "\n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \nconstexpr int NUM_CH_SPARSE = 8;\nconstexpr int NUM_CH_B = 4;\nconstexpr int NUM_CH_C = 8;\nconst int WINDOW_SIZE = 4096;\nconst int DEP_DIST_LOAD_STORE = 10;\nconst int B_PARTITION_FACTOR = 4;\nconst int URAM_DEPTH = 8192;\nusing float_v16 = tapa::vec_t;\nusing float_v8 = tapa::vec_t;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, int beta_u);\n//#include \"modules.h\"\nconstexpr int FIFO_DEPTH = 2;\nconstexpr int PEG_PER_A = 512 / 256;\nstruct MultBVec {\n ap_uint<18> row;\n float_v8 abvec;\n};\ntemplate \ninline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A,\n const R A_len, R &i_req, R &i_resp) {\n#pragma HLS inline\n if ((i_req < A_len) & !A.read_addr.full()) {\n A.read_addr.try_write(i_req);\n ++i_req;\n }\n if (!fifo_A.full() & !A.read_data.empty()) {\n T tmp;\n A.read_data.try_read(tmp);\n fifo_A.try_write(tmp);\n ++i_resp;\n }\n}\nvoid read_edge_list_ptr(\n const int num_ite, const int M,\n const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N\n const int K, uint64_t edge_list_ptr,\n tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) ;\nvoid read_A(tapa::async_mmap> &A,\n tapa::ostream> &fifo_A, const int A_len,\n const int P_N) {\n#pragma HLS disaggregate variable = A\n#pragma HLS interface ap_fifo port = A.read_addr._\n#pragma HLS aggregate variable = A.read_addr._ bit\n#pragma HLS interface ap_fifo port = A.read_data._\n#pragma HLS aggregate variable = A.read_data._ bit\n#pragma HLS interface ap_fifo port = A.write_addr._\n#pragma HLS aggregate variable = A.write_addr._ bit\n#pragma HLS interface ap_fifo port = A.write_data._\n#pragma HLS aggregate variable = A.write_data._ bit\n#pragma HLS interface ap_fifo port = A.write_resp._\n#pragma HLS aggregate variable = A.write_resp._ bit\n#pragma HLS disaggregate variable = A .read_data\n#pragma HLS interface ap_fifo port = A.read_data._peek\n#pragma HLS aggregate variable = A.read_data._peek bit\n#pragma HLS disaggregate variable = A .write_resp\n#pragma HLS interface ap_fifo port = A.write_resp._peek\n#pragma HLS aggregate variable = A.write_resp._peek bit\nvoid(A.read_addr._.full());\nvoid(A.read_data._.empty());\nvoid(A.read_data._peek.empty());\nvoid(A.write_addr._.full());\nvoid(A.write_data._.full());\nvoid(A.write_resp._.empty());\nvoid(A.write_resp._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_A\n#pragma HLS interface ap_fifo port = fifo_A._\n#pragma HLS aggregate variable = fifo_A._ bit\nvoid(fifo_A._.full());\n\n\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0) ? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\nl_rp:\n for (int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min = 1 max = 16\n rd_A:\n for (int i_req = 0, i_resp = 0; i_resp < A_len;) {\n#pragma HLS loop_tripcount min = 1 max = 10000\n#pragma HLS pipeline style = stp II = 1\n async_read(A, fifo_A, A_len, i_req, i_resp);\n }\n }\n}\nvoid read_B(uint64_t B, tapa::ostream &fifo_B,\n const int K, const int P_N) ;\nvoid read_C(uint64_t C, tapa::ostream &fifo_C,\n const int M, const int P_N, tapa::ostream &wrC_inst) ;\nvoid write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C,\n uint64_t C_out) ;\nvoid FloatvMultConst(const int alpha_u, const int M, const int P_N,\n tapa::istream &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid FloatvAddFloatv(tapa::istream &fifo_in0,\n tapa::istream &fifo_in1,\n tapa::ostream &fifo_out) ;\n/*\nvoid PU2core(ap_uint<18> & addr_c,\n float a_val_f,\n float b_val_d0_f,\n float b_val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]\n ) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u);\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u);\n\n c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f;\n c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f;\n\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\n\nvoid PEcore(ap_uint<14> & addr_b,\n ap_uint<18> & addr_c,\n ap_uint<32> & a_val_u,\n ap_uint<64> local_C[4][URAM_DEPTH],\n float local_B[8][WINDOW_SIZE]\n ) {\n#pragma HLS inline\n //if (addr_c != ((ap_uint<18>) 0x3FFFF)) {\n if (addr_c[17] == 0) {\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 4; ++i) {\n PU2core(addr_c,\n a_val_f,\n local_B[i*2+0][addr_b],\n local_B[i*2+1][addr_b],\n local_C[i]\n );\n }\n }\n}\n*/\nvoid PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u,\n float local_B[8][WINDOW_SIZE], float_v8 &abv) {\n#pragma HLS inline\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 8; ++i) {\n abv[i] = a_val_f * local_B[i][addr_b];\n }\n}\nvoid PEG_Bmtx(\n tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n // tapa::istream> & fifo_A,\n tapa::istream> &fifo_A,\n tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out,\n tapa::ostreams &fifo_B_out,\n // to PEG_Cmtx\n tapa::ostream &PE_inst_to_Cmtx,\n tapa::ostream &fifo_inst_out_to_Cmtx,\n tapa::ostreams &fifo_aBvec) ;\nvoid PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f;\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f;\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\nvoid PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec,\n ap_uint<64> local_C[4][URAM_DEPTH]) {\n#pragma HLS inline\n for (int i = 0; i < 4; ++i) {\n PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]);\n }\n}\nvoid PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n tapa::istreams &fifo_aBvec,\n tapa::ostream &fifo_C_out) ;\n/*\nvoid PEG(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n tapa::streams fifo_aBvec(\"fifo_aBvec\");\n tapa::stream PE_inst_to_Cmtx(\"PE_inst_to_Cmtx\");\n tapa::stream\nfifo_inst_out_to_Cmtx(\"fifo_inst_out_to_Cmtx\");\n\n tapa::task()\n .invoke(PEG_Bmtx,\n PE_inst_in,\n fifo_inst_in,\n fifo_A,\n fifo_B_in,\n PE_inst_out,\n fifo_inst_out,\n fifo_B_out,\n // to PEG_Cmtx\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec)\n\n .invoke(PEG_Cmtx,\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec,\n fifo_C_out)\n ;\n}\n\nvoid PEG_c(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0)? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n\n const int num_v_init = (M + 63) >> 6;\n //const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n\n //define local C buffer and pragma to URAM\n //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1\n#pragma HLS array_partition complete variable=local_C dim=1\n#pragma HLS array_partition complete variable=local_C dim=2\n\nl_rp:\n for(int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min=1 max=16\n\n //init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min=1 max=800\n#pragma HLS pipeline style=stp II=1\n //for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n //define local B buffer and pragma local B buffer if partition factor >\n1\n\n //float local_B[8/2][8][WINDOW_SIZE];\n //float local_B[8][WINDOW_SIZE];\n float local_B[4/2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable=local_B latency=2\n#pragma HLS array_partition variable=local_B complete dim=1\n#pragma HLS array_partition variable=local_B complete dim=2\n#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=3\n//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=2\n\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min=1 max=49\n\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i\n* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS\npipeline style=stp II = 1\n\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_512_x[k] = fifo_B_in[k].read();\n fifo_B_out[k].write(b_512_x[k]);\n }\n\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m %\n2 * 8];\n }\n }\n }\n ++j;\n }\n }\n\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n\n computation:\n for (int j = start_32; j < end_32; ) {\n#pragma HLS loop_tripcount min=1 max=200\n#pragma HLS pipeline style=stp II=1\n#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE\n\n //ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n\n if (a_pes_ready) {\n //for (int p = 0; p < 2; ++p) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<14> a_col;\n ap_uint<18> a_row;\n ap_uint<32> a_val;\n\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n a_col = a(63, 50);\n a_row = a(49, 32);\n a_val = a(31, 0);\n\n // PE process\n PEcore(a_col,\n a_row,\n a_val,\n local_C[p],\n //local_B\n local_B[p/2]\n );\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n\n //cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min=1 max=1800\n#pragma HLS pipeline style=stp II=1\n ap_uint<32> u_32_d[8];\n\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i>>2];\n u_32_d[2 * d ] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n\n switch (c_idx) { //0,2,1,3\n case 0: c_idx = 2; break;\n case 1: c_idx = 3; break;\n case 2: c_idx = 1; break;\n case 3: c_idx = 0; break;\n }\n\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\nendl;\n }\n }\n}\n*/\nvoid Scatter_1_2(tapa::istream> &fifo_in,\n tapa::ostreams, 2> &fifo_out) ;\nvoid Merger(tapa::istreams &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid black_hole_int(tapa::istream &fifo_in) ;\nvoid black_hole_float_v16(tapa::istream &fifo_in) ;\nvoid Sextans(uint64_t edge_list_ptr,\n uint64_t edge_list_ch_0, uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, uint64_t edge_list_ch_7,\n uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, uint64_t mat_B_ch_2, uint64_t mat_B_ch_3,\n uint64_t mat_C_ch_in_0, uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, uint64_t mat_C_ch_in_7,\n uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, const int beta_u) ;\n", - "level": "lower", - "target": "hls", - "vendor": "xilinx" - }, - "read_B": { - "code": "\n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \nconstexpr int NUM_CH_SPARSE = 8;\nconstexpr int NUM_CH_B = 4;\nconstexpr int NUM_CH_C = 8;\nconst int WINDOW_SIZE = 4096;\nconst int DEP_DIST_LOAD_STORE = 10;\nconst int B_PARTITION_FACTOR = 4;\nconst int URAM_DEPTH = 8192;\nusing float_v16 = tapa::vec_t;\nusing float_v8 = tapa::vec_t;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, int beta_u);\n//#include \"modules.h\"\nconstexpr int FIFO_DEPTH = 2;\nconstexpr int PEG_PER_A = 512 / 256;\nstruct MultBVec {\n ap_uint<18> row;\n float_v8 abvec;\n};\ntemplate \ninline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A,\n const R A_len, R &i_req, R &i_resp) {\n#pragma HLS inline\n if ((i_req < A_len) & !A.read_addr.full()) {\n A.read_addr.try_write(i_req);\n ++i_req;\n }\n if (!fifo_A.full() & !A.read_data.empty()) {\n T tmp;\n A.read_data.try_read(tmp);\n fifo_A.try_write(tmp);\n ++i_resp;\n }\n}\nvoid read_edge_list_ptr(\n const int num_ite, const int M,\n const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N\n const int K, uint64_t edge_list_ptr,\n tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) ;\nvoid read_A(uint64_t A,\n tapa::ostream> &fifo_A, const int A_len,\n const int P_N) ;\nvoid read_B(tapa::async_mmap &B, tapa::ostream &fifo_B,\n const int K, const int P_N) {\n#pragma HLS disaggregate variable = B\n#pragma HLS interface ap_fifo port = B.read_addr._\n#pragma HLS aggregate variable = B.read_addr._ bit\n#pragma HLS interface ap_fifo port = B.read_data._\n#pragma HLS aggregate variable = B.read_data._ bit\n#pragma HLS interface ap_fifo port = B.write_addr._\n#pragma HLS aggregate variable = B.write_addr._ bit\n#pragma HLS interface ap_fifo port = B.write_data._\n#pragma HLS aggregate variable = B.write_data._ bit\n#pragma HLS interface ap_fifo port = B.write_resp._\n#pragma HLS aggregate variable = B.write_resp._ bit\n#pragma HLS disaggregate variable = B .read_data\n#pragma HLS interface ap_fifo port = B.read_data._peek\n#pragma HLS aggregate variable = B.read_data._peek bit\n#pragma HLS disaggregate variable = B .write_resp\n#pragma HLS interface ap_fifo port = B.write_resp._peek\n#pragma HLS aggregate variable = B.write_resp._peek bit\nvoid(B.read_addr._.full());\nvoid(B.read_data._.empty());\nvoid(B.read_data._peek.empty());\nvoid(B.write_addr._.full());\nvoid(B.write_data._.full());\nvoid(B.write_resp._.empty());\nvoid(B.write_resp._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_B\n#pragma HLS interface ap_fifo port = fifo_B._\n#pragma HLS aggregate variable = fifo_B._ bit\nvoid(fifo_B._.full());\n\n\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0) ? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int num_ite_B = ((K + 7) >> 3) * ((N + 7) >> 3);\nl_rp:\n for (int rp = 0; rp < rp_time; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min = 1 max = 16\n rd_B:\n for (int i_req = 0, i_resp = 0; i_resp < num_ite_B;) {\n#pragma HLS loop_tripcount min = 1 max = 500000\n#pragma HLS pipeline style = stp II = 1\n async_read(B, fifo_B, num_ite_B, i_req, i_resp);\n }\n }\n}\nvoid read_C(uint64_t C, tapa::ostream &fifo_C,\n const int M, const int P_N, tapa::ostream &wrC_inst) ;\nvoid write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C,\n uint64_t C_out) ;\nvoid FloatvMultConst(const int alpha_u, const int M, const int P_N,\n tapa::istream &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid FloatvAddFloatv(tapa::istream &fifo_in0,\n tapa::istream &fifo_in1,\n tapa::ostream &fifo_out) ;\n/*\nvoid PU2core(ap_uint<18> & addr_c,\n float a_val_f,\n float b_val_d0_f,\n float b_val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]\n ) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u);\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u);\n\n c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f;\n c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f;\n\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\n\nvoid PEcore(ap_uint<14> & addr_b,\n ap_uint<18> & addr_c,\n ap_uint<32> & a_val_u,\n ap_uint<64> local_C[4][URAM_DEPTH],\n float local_B[8][WINDOW_SIZE]\n ) {\n#pragma HLS inline\n //if (addr_c != ((ap_uint<18>) 0x3FFFF)) {\n if (addr_c[17] == 0) {\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 4; ++i) {\n PU2core(addr_c,\n a_val_f,\n local_B[i*2+0][addr_b],\n local_B[i*2+1][addr_b],\n local_C[i]\n );\n }\n }\n}\n*/\nvoid PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u,\n float local_B[8][WINDOW_SIZE], float_v8 &abv) {\n#pragma HLS inline\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 8; ++i) {\n abv[i] = a_val_f * local_B[i][addr_b];\n }\n}\nvoid PEG_Bmtx(\n tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n // tapa::istream> & fifo_A,\n tapa::istream> &fifo_A,\n tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out,\n tapa::ostreams &fifo_B_out,\n // to PEG_Cmtx\n tapa::ostream &PE_inst_to_Cmtx,\n tapa::ostream &fifo_inst_out_to_Cmtx,\n tapa::ostreams &fifo_aBvec) ;\nvoid PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f;\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f;\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\nvoid PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec,\n ap_uint<64> local_C[4][URAM_DEPTH]) {\n#pragma HLS inline\n for (int i = 0; i < 4; ++i) {\n PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]);\n }\n}\nvoid PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n tapa::istreams &fifo_aBvec,\n tapa::ostream &fifo_C_out) ;\n/*\nvoid PEG(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n tapa::streams fifo_aBvec(\"fifo_aBvec\");\n tapa::stream PE_inst_to_Cmtx(\"PE_inst_to_Cmtx\");\n tapa::stream\nfifo_inst_out_to_Cmtx(\"fifo_inst_out_to_Cmtx\");\n\n tapa::task()\n .invoke(PEG_Bmtx,\n PE_inst_in,\n fifo_inst_in,\n fifo_A,\n fifo_B_in,\n PE_inst_out,\n fifo_inst_out,\n fifo_B_out,\n // to PEG_Cmtx\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec)\n\n .invoke(PEG_Cmtx,\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec,\n fifo_C_out)\n ;\n}\n\nvoid PEG_c(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0)? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n\n const int num_v_init = (M + 63) >> 6;\n //const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n\n //define local C buffer and pragma to URAM\n //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1\n#pragma HLS array_partition complete variable=local_C dim=1\n#pragma HLS array_partition complete variable=local_C dim=2\n\nl_rp:\n for(int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min=1 max=16\n\n //init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min=1 max=800\n#pragma HLS pipeline style=stp II=1\n //for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n //define local B buffer and pragma local B buffer if partition factor >\n1\n\n //float local_B[8/2][8][WINDOW_SIZE];\n //float local_B[8][WINDOW_SIZE];\n float local_B[4/2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable=local_B latency=2\n#pragma HLS array_partition variable=local_B complete dim=1\n#pragma HLS array_partition variable=local_B complete dim=2\n#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=3\n//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=2\n\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min=1 max=49\n\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i\n* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS\npipeline style=stp II = 1\n\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_512_x[k] = fifo_B_in[k].read();\n fifo_B_out[k].write(b_512_x[k]);\n }\n\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m %\n2 * 8];\n }\n }\n }\n ++j;\n }\n }\n\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n\n computation:\n for (int j = start_32; j < end_32; ) {\n#pragma HLS loop_tripcount min=1 max=200\n#pragma HLS pipeline style=stp II=1\n#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE\n\n //ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n\n if (a_pes_ready) {\n //for (int p = 0; p < 2; ++p) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<14> a_col;\n ap_uint<18> a_row;\n ap_uint<32> a_val;\n\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n a_col = a(63, 50);\n a_row = a(49, 32);\n a_val = a(31, 0);\n\n // PE process\n PEcore(a_col,\n a_row,\n a_val,\n local_C[p],\n //local_B\n local_B[p/2]\n );\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n\n //cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min=1 max=1800\n#pragma HLS pipeline style=stp II=1\n ap_uint<32> u_32_d[8];\n\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i>>2];\n u_32_d[2 * d ] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n\n switch (c_idx) { //0,2,1,3\n case 0: c_idx = 2; break;\n case 1: c_idx = 3; break;\n case 2: c_idx = 1; break;\n case 3: c_idx = 0; break;\n }\n\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\nendl;\n }\n }\n}\n*/\nvoid Scatter_1_2(tapa::istream> &fifo_in,\n tapa::ostreams, 2> &fifo_out) ;\nvoid Merger(tapa::istreams &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid black_hole_int(tapa::istream &fifo_in) ;\nvoid black_hole_float_v16(tapa::istream &fifo_in) ;\nvoid Sextans(uint64_t edge_list_ptr,\n uint64_t edge_list_ch_0, uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, uint64_t edge_list_ch_7,\n uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, uint64_t mat_B_ch_2, uint64_t mat_B_ch_3,\n uint64_t mat_C_ch_in_0, uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, uint64_t mat_C_ch_in_7,\n uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, const int beta_u) ;\n", - "level": "lower", - "target": "hls", - "vendor": "xilinx" - }, - "read_C": { - "code": "\n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \nconstexpr int NUM_CH_SPARSE = 8;\nconstexpr int NUM_CH_B = 4;\nconstexpr int NUM_CH_C = 8;\nconst int WINDOW_SIZE = 4096;\nconst int DEP_DIST_LOAD_STORE = 10;\nconst int B_PARTITION_FACTOR = 4;\nconst int URAM_DEPTH = 8192;\nusing float_v16 = tapa::vec_t;\nusing float_v8 = tapa::vec_t;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, int beta_u);\n//#include \"modules.h\"\nconstexpr int FIFO_DEPTH = 2;\nconstexpr int PEG_PER_A = 512 / 256;\nstruct MultBVec {\n ap_uint<18> row;\n float_v8 abvec;\n};\ntemplate \ninline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A,\n const R A_len, R &i_req, R &i_resp) {\n#pragma HLS inline\n if ((i_req < A_len) & !A.read_addr.full()) {\n A.read_addr.try_write(i_req);\n ++i_req;\n }\n if (!fifo_A.full() & !A.read_data.empty()) {\n T tmp;\n A.read_data.try_read(tmp);\n fifo_A.try_write(tmp);\n ++i_resp;\n }\n}\nvoid read_edge_list_ptr(\n const int num_ite, const int M,\n const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N\n const int K, uint64_t edge_list_ptr,\n tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) ;\nvoid read_A(uint64_t A,\n tapa::ostream> &fifo_A, const int A_len,\n const int P_N) ;\nvoid read_B(uint64_t B, tapa::ostream &fifo_B,\n const int K, const int P_N) ;\nvoid read_C(tapa::async_mmap &C, tapa::ostream &fifo_C,\n const int M, const int P_N, tapa::ostream &wrC_inst) {\n#pragma HLS disaggregate variable = C\n#pragma HLS interface ap_fifo port = C.read_addr._\n#pragma HLS aggregate variable = C.read_addr._ bit\n#pragma HLS interface ap_fifo port = C.read_data._\n#pragma HLS aggregate variable = C.read_data._ bit\n#pragma HLS interface ap_fifo port = C.write_addr._\n#pragma HLS aggregate variable = C.write_addr._ bit\n#pragma HLS interface ap_fifo port = C.write_data._\n#pragma HLS aggregate variable = C.write_data._ bit\n#pragma HLS interface ap_fifo port = C.write_resp._\n#pragma HLS aggregate variable = C.write_resp._ bit\n#pragma HLS disaggregate variable = C .read_data\n#pragma HLS interface ap_fifo port = C.read_data._peek\n#pragma HLS aggregate variable = C.read_data._peek bit\n#pragma HLS disaggregate variable = C .write_resp\n#pragma HLS interface ap_fifo port = C.write_resp._peek\n#pragma HLS aggregate variable = C.write_resp._peek bit\nvoid(C.read_addr._.full());\nvoid(C.read_data._.empty());\nvoid(C.read_data._peek.empty());\nvoid(C.write_addr._.full());\nvoid(C.write_data._.full());\nvoid(C.write_resp._.empty());\nvoid(C.write_resp._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_C\n#pragma HLS interface ap_fifo port = fifo_C._\n#pragma HLS aggregate variable = fifo_C._ bit\nvoid(fifo_C._.full());\n\n\n\n#pragma HLS disaggregate variable = wrC_inst\n#pragma HLS interface ap_fifo port = wrC_inst._\n#pragma HLS aggregate variable = wrC_inst._ bit\nvoid(wrC_inst._.full());\n\n wrC_inst.write(M);\n wrC_inst.write(P_N);\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0) ? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int num_ite_C = ((M + 15) >> 4) * ((N + 7) >> 3);\nl_rp:\n for (int rp = 0; rp < rp_time; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min = 1 max = 16\n rd_C:\n for (int i_req = 0, i_resp = 0; i_resp < num_ite_C;) {\n#pragma HLS loop_tripcount min = 1 max = 500000\n#pragma HLS pipeline style = stp II = 1\n async_read(C, fifo_C, num_ite_C, i_req, i_resp);\n }\n }\n}\nvoid write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C,\n uint64_t C_out) ;\nvoid FloatvMultConst(const int alpha_u, const int M, const int P_N,\n tapa::istream &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid FloatvAddFloatv(tapa::istream &fifo_in0,\n tapa::istream &fifo_in1,\n tapa::ostream &fifo_out) ;\n/*\nvoid PU2core(ap_uint<18> & addr_c,\n float a_val_f,\n float b_val_d0_f,\n float b_val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]\n ) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u);\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u);\n\n c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f;\n c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f;\n\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\n\nvoid PEcore(ap_uint<14> & addr_b,\n ap_uint<18> & addr_c,\n ap_uint<32> & a_val_u,\n ap_uint<64> local_C[4][URAM_DEPTH],\n float local_B[8][WINDOW_SIZE]\n ) {\n#pragma HLS inline\n //if (addr_c != ((ap_uint<18>) 0x3FFFF)) {\n if (addr_c[17] == 0) {\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 4; ++i) {\n PU2core(addr_c,\n a_val_f,\n local_B[i*2+0][addr_b],\n local_B[i*2+1][addr_b],\n local_C[i]\n );\n }\n }\n}\n*/\nvoid PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u,\n float local_B[8][WINDOW_SIZE], float_v8 &abv) {\n#pragma HLS inline\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 8; ++i) {\n abv[i] = a_val_f * local_B[i][addr_b];\n }\n}\nvoid PEG_Bmtx(\n tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n // tapa::istream> & fifo_A,\n tapa::istream> &fifo_A,\n tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out,\n tapa::ostreams &fifo_B_out,\n // to PEG_Cmtx\n tapa::ostream &PE_inst_to_Cmtx,\n tapa::ostream &fifo_inst_out_to_Cmtx,\n tapa::ostreams &fifo_aBvec) ;\nvoid PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f;\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f;\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\nvoid PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec,\n ap_uint<64> local_C[4][URAM_DEPTH]) {\n#pragma HLS inline\n for (int i = 0; i < 4; ++i) {\n PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]);\n }\n}\nvoid PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n tapa::istreams &fifo_aBvec,\n tapa::ostream &fifo_C_out) ;\n/*\nvoid PEG(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n tapa::streams fifo_aBvec(\"fifo_aBvec\");\n tapa::stream PE_inst_to_Cmtx(\"PE_inst_to_Cmtx\");\n tapa::stream\nfifo_inst_out_to_Cmtx(\"fifo_inst_out_to_Cmtx\");\n\n tapa::task()\n .invoke(PEG_Bmtx,\n PE_inst_in,\n fifo_inst_in,\n fifo_A,\n fifo_B_in,\n PE_inst_out,\n fifo_inst_out,\n fifo_B_out,\n // to PEG_Cmtx\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec)\n\n .invoke(PEG_Cmtx,\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec,\n fifo_C_out)\n ;\n}\n\nvoid PEG_c(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0)? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n\n const int num_v_init = (M + 63) >> 6;\n //const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n\n //define local C buffer and pragma to URAM\n //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1\n#pragma HLS array_partition complete variable=local_C dim=1\n#pragma HLS array_partition complete variable=local_C dim=2\n\nl_rp:\n for(int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min=1 max=16\n\n //init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min=1 max=800\n#pragma HLS pipeline style=stp II=1\n //for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n //define local B buffer and pragma local B buffer if partition factor >\n1\n\n //float local_B[8/2][8][WINDOW_SIZE];\n //float local_B[8][WINDOW_SIZE];\n float local_B[4/2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable=local_B latency=2\n#pragma HLS array_partition variable=local_B complete dim=1\n#pragma HLS array_partition variable=local_B complete dim=2\n#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=3\n//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=2\n\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min=1 max=49\n\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i\n* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS\npipeline style=stp II = 1\n\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_512_x[k] = fifo_B_in[k].read();\n fifo_B_out[k].write(b_512_x[k]);\n }\n\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m %\n2 * 8];\n }\n }\n }\n ++j;\n }\n }\n\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n\n computation:\n for (int j = start_32; j < end_32; ) {\n#pragma HLS loop_tripcount min=1 max=200\n#pragma HLS pipeline style=stp II=1\n#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE\n\n //ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n\n if (a_pes_ready) {\n //for (int p = 0; p < 2; ++p) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<14> a_col;\n ap_uint<18> a_row;\n ap_uint<32> a_val;\n\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n a_col = a(63, 50);\n a_row = a(49, 32);\n a_val = a(31, 0);\n\n // PE process\n PEcore(a_col,\n a_row,\n a_val,\n local_C[p],\n //local_B\n local_B[p/2]\n );\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n\n //cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min=1 max=1800\n#pragma HLS pipeline style=stp II=1\n ap_uint<32> u_32_d[8];\n\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i>>2];\n u_32_d[2 * d ] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n\n switch (c_idx) { //0,2,1,3\n case 0: c_idx = 2; break;\n case 1: c_idx = 3; break;\n case 2: c_idx = 1; break;\n case 3: c_idx = 0; break;\n }\n\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\nendl;\n }\n }\n}\n*/\nvoid Scatter_1_2(tapa::istream> &fifo_in,\n tapa::ostreams, 2> &fifo_out) ;\nvoid Merger(tapa::istreams &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid black_hole_int(tapa::istream &fifo_in) ;\nvoid black_hole_float_v16(tapa::istream &fifo_in) ;\nvoid Sextans(uint64_t edge_list_ptr,\n uint64_t edge_list_ch_0, uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, uint64_t edge_list_ch_7,\n uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, uint64_t mat_B_ch_2, uint64_t mat_B_ch_3,\n uint64_t mat_C_ch_in_0, uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, uint64_t mat_C_ch_in_7,\n uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, const int beta_u) ;\n", - "level": "lower", - "target": "hls", - "vendor": "xilinx" - }, - "read_edge_list_ptr": { - "code": "\n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \nconstexpr int NUM_CH_SPARSE = 8;\nconstexpr int NUM_CH_B = 4;\nconstexpr int NUM_CH_C = 8;\nconst int WINDOW_SIZE = 4096;\nconst int DEP_DIST_LOAD_STORE = 10;\nconst int B_PARTITION_FACTOR = 4;\nconst int URAM_DEPTH = 8192;\nusing float_v16 = tapa::vec_t;\nusing float_v8 = tapa::vec_t;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, int beta_u);\n//#include \"modules.h\"\nconstexpr int FIFO_DEPTH = 2;\nconstexpr int PEG_PER_A = 512 / 256;\nstruct MultBVec {\n ap_uint<18> row;\n float_v8 abvec;\n};\ntemplate \ninline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A,\n const R A_len, R &i_req, R &i_resp) {\n#pragma HLS inline\n if ((i_req < A_len) & !A.read_addr.full()) {\n A.read_addr.try_write(i_req);\n ++i_req;\n }\n if (!fifo_A.full() & !A.read_data.empty()) {\n T tmp;\n A.read_data.try_read(tmp);\n fifo_A.try_write(tmp);\n ++i_resp;\n }\n}\nvoid read_edge_list_ptr(\n const int num_ite, const int M,\n const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N\n const int K, tapa::async_mmap &edge_list_ptr,\n tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) {\n\n\n\n\n#pragma HLS disaggregate variable = edge_list_ptr\n#pragma HLS interface ap_fifo port = edge_list_ptr.read_addr._\n#pragma HLS aggregate variable = edge_list_ptr.read_addr._ bit\n#pragma HLS interface ap_fifo port = edge_list_ptr.read_data._\n#pragma HLS aggregate variable = edge_list_ptr.read_data._ bit\n#pragma HLS interface ap_fifo port = edge_list_ptr.write_addr._\n#pragma HLS aggregate variable = edge_list_ptr.write_addr._ bit\n#pragma HLS interface ap_fifo port = edge_list_ptr.write_data._\n#pragma HLS aggregate variable = edge_list_ptr.write_data._ bit\n#pragma HLS interface ap_fifo port = edge_list_ptr.write_resp._\n#pragma HLS aggregate variable = edge_list_ptr.write_resp._ bit\n#pragma HLS disaggregate variable = edge_list_ptr .read_data\n#pragma HLS interface ap_fifo port = edge_list_ptr.read_data._peek\n#pragma HLS aggregate variable = edge_list_ptr.read_data._peek bit\n#pragma HLS disaggregate variable = edge_list_ptr .write_resp\n#pragma HLS interface ap_fifo port = edge_list_ptr.write_resp._peek\n#pragma HLS aggregate variable = edge_list_ptr.write_resp._peek bit\nvoid(edge_list_ptr.read_addr._.full());\nvoid(edge_list_ptr.read_data._.empty());\nvoid(edge_list_ptr.read_data._peek.empty());\nvoid(edge_list_ptr.write_addr._.full());\nvoid(edge_list_ptr.write_data._.full());\nvoid(edge_list_ptr.write_resp._.empty());\nvoid(edge_list_ptr.write_resp._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_edge_list_ptr\n#pragma HLS interface ap_fifo port = fifo_edge_list_ptr._\n#pragma HLS aggregate variable = fifo_edge_list_ptr._ bit\nvoid(fifo_edge_list_ptr._.full());\n\n#pragma HLS disaggregate variable = PE_inst\n#pragma HLS interface ap_fifo port = PE_inst._\n#pragma HLS aggregate variable = PE_inst._ bit\nvoid(PE_inst._.full());\n\n PE_inst.write(num_ite);\n PE_inst.write(M);\n PE_inst.write(P_N);\n PE_inst.write(K);\n const int N = P_N & 0xFFFF;\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0) ? 1 : N16;\n const int num_ite_plus1 = num_ite + 1;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\nl_rp:\n for (int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min = 1 max = 16\n rd_ptr:\n for (int i_req = 0, i_resp = 0; i_resp < num_ite_plus1;) {\n#pragma HLS loop_tripcount min = 1 max = 800\n#pragma HLS pipeline style = stp II = 1\n async_read(edge_list_ptr, fifo_edge_list_ptr, num_ite_plus1, i_req,\n i_resp);\n }\n }\n}\nvoid read_A(uint64_t A,\n tapa::ostream> &fifo_A, const int A_len,\n const int P_N) ;\nvoid read_B(uint64_t B, tapa::ostream &fifo_B,\n const int K, const int P_N) ;\nvoid read_C(uint64_t C, tapa::ostream &fifo_C,\n const int M, const int P_N, tapa::ostream &wrC_inst) ;\nvoid write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C,\n uint64_t C_out) ;\nvoid FloatvMultConst(const int alpha_u, const int M, const int P_N,\n tapa::istream &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid FloatvAddFloatv(tapa::istream &fifo_in0,\n tapa::istream &fifo_in1,\n tapa::ostream &fifo_out) ;\n/*\nvoid PU2core(ap_uint<18> & addr_c,\n float a_val_f,\n float b_val_d0_f,\n float b_val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]\n ) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u);\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u);\n\n c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f;\n c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f;\n\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\n\nvoid PEcore(ap_uint<14> & addr_b,\n ap_uint<18> & addr_c,\n ap_uint<32> & a_val_u,\n ap_uint<64> local_C[4][URAM_DEPTH],\n float local_B[8][WINDOW_SIZE]\n ) {\n#pragma HLS inline\n //if (addr_c != ((ap_uint<18>) 0x3FFFF)) {\n if (addr_c[17] == 0) {\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 4; ++i) {\n PU2core(addr_c,\n a_val_f,\n local_B[i*2+0][addr_b],\n local_B[i*2+1][addr_b],\n local_C[i]\n );\n }\n }\n}\n*/\nvoid PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u,\n float local_B[8][WINDOW_SIZE], float_v8 &abv) {\n#pragma HLS inline\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 8; ++i) {\n abv[i] = a_val_f * local_B[i][addr_b];\n }\n}\nvoid PEG_Bmtx(\n tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n // tapa::istream> & fifo_A,\n tapa::istream> &fifo_A,\n tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out,\n tapa::ostreams &fifo_B_out,\n // to PEG_Cmtx\n tapa::ostream &PE_inst_to_Cmtx,\n tapa::ostream &fifo_inst_out_to_Cmtx,\n tapa::ostreams &fifo_aBvec) ;\nvoid PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f;\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f;\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\nvoid PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec,\n ap_uint<64> local_C[4][URAM_DEPTH]) {\n#pragma HLS inline\n for (int i = 0; i < 4; ++i) {\n PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]);\n }\n}\nvoid PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n tapa::istreams &fifo_aBvec,\n tapa::ostream &fifo_C_out) ;\n/*\nvoid PEG(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n tapa::streams fifo_aBvec(\"fifo_aBvec\");\n tapa::stream PE_inst_to_Cmtx(\"PE_inst_to_Cmtx\");\n tapa::stream\nfifo_inst_out_to_Cmtx(\"fifo_inst_out_to_Cmtx\");\n\n tapa::task()\n .invoke(PEG_Bmtx,\n PE_inst_in,\n fifo_inst_in,\n fifo_A,\n fifo_B_in,\n PE_inst_out,\n fifo_inst_out,\n fifo_B_out,\n // to PEG_Cmtx\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec)\n\n .invoke(PEG_Cmtx,\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec,\n fifo_C_out)\n ;\n}\n\nvoid PEG_c(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0)? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n\n const int num_v_init = (M + 63) >> 6;\n //const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n\n //define local C buffer and pragma to URAM\n //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1\n#pragma HLS array_partition complete variable=local_C dim=1\n#pragma HLS array_partition complete variable=local_C dim=2\n\nl_rp:\n for(int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min=1 max=16\n\n //init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min=1 max=800\n#pragma HLS pipeline style=stp II=1\n //for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n //define local B buffer and pragma local B buffer if partition factor >\n1\n\n //float local_B[8/2][8][WINDOW_SIZE];\n //float local_B[8][WINDOW_SIZE];\n float local_B[4/2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable=local_B latency=2\n#pragma HLS array_partition variable=local_B complete dim=1\n#pragma HLS array_partition variable=local_B complete dim=2\n#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=3\n//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=2\n\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min=1 max=49\n\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i\n* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS\npipeline style=stp II = 1\n\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_512_x[k] = fifo_B_in[k].read();\n fifo_B_out[k].write(b_512_x[k]);\n }\n\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m %\n2 * 8];\n }\n }\n }\n ++j;\n }\n }\n\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n\n computation:\n for (int j = start_32; j < end_32; ) {\n#pragma HLS loop_tripcount min=1 max=200\n#pragma HLS pipeline style=stp II=1\n#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE\n\n //ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n\n if (a_pes_ready) {\n //for (int p = 0; p < 2; ++p) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<14> a_col;\n ap_uint<18> a_row;\n ap_uint<32> a_val;\n\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n a_col = a(63, 50);\n a_row = a(49, 32);\n a_val = a(31, 0);\n\n // PE process\n PEcore(a_col,\n a_row,\n a_val,\n local_C[p],\n //local_B\n local_B[p/2]\n );\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n\n //cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min=1 max=1800\n#pragma HLS pipeline style=stp II=1\n ap_uint<32> u_32_d[8];\n\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i>>2];\n u_32_d[2 * d ] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n\n switch (c_idx) { //0,2,1,3\n case 0: c_idx = 2; break;\n case 1: c_idx = 3; break;\n case 2: c_idx = 1; break;\n case 3: c_idx = 0; break;\n }\n\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\nendl;\n }\n }\n}\n*/\nvoid Scatter_1_2(tapa::istream> &fifo_in,\n tapa::ostreams, 2> &fifo_out) ;\nvoid Merger(tapa::istreams &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid black_hole_int(tapa::istream &fifo_in) ;\nvoid black_hole_float_v16(tapa::istream &fifo_in) ;\nvoid Sextans(uint64_t edge_list_ptr,\n uint64_t edge_list_ch_0, uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, uint64_t edge_list_ch_7,\n uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, uint64_t mat_B_ch_2, uint64_t mat_B_ch_3,\n uint64_t mat_C_ch_in_0, uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, uint64_t mat_C_ch_in_7,\n uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, const int beta_u) ;\n", - "level": "lower", - "target": "hls", - "vendor": "xilinx" - }, - "write_C": { - "code": "\n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \n\n#include \nconstexpr int NUM_CH_SPARSE = 8;\nconstexpr int NUM_CH_B = 4;\nconstexpr int NUM_CH_C = 8;\nconst int WINDOW_SIZE = 4096;\nconst int DEP_DIST_LOAD_STORE = 10;\nconst int B_PARTITION_FACTOR = 4;\nconst int URAM_DEPTH = 8192;\nusing float_v16 = tapa::vec_t;\nusing float_v8 = tapa::vec_t;\nvoid Sextans(tapa::mmap edge_list_ptr,\n tapa::mmaps, NUM_CH_SPARSE> edge_list_ch,\n tapa::mmaps mat_B_ch,\n tapa::mmaps mat_C_ch_in,\n tapa::mmaps mat_C_ch, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, int beta_u);\n//#include \"modules.h\"\nconstexpr int FIFO_DEPTH = 2;\nconstexpr int PEG_PER_A = 512 / 256;\nstruct MultBVec {\n ap_uint<18> row;\n float_v8 abvec;\n};\ntemplate \ninline void async_read(tapa::async_mmap &A, tapa::ostream &fifo_A,\n const R A_len, R &i_req, R &i_resp) {\n#pragma HLS inline\n if ((i_req < A_len) & !A.read_addr.full()) {\n A.read_addr.try_write(i_req);\n ++i_req;\n }\n if (!fifo_A.full() & !A.read_data.empty()) {\n T tmp;\n A.read_data.try_read(tmp);\n fifo_A.try_write(tmp);\n ++i_resp;\n }\n}\nvoid read_edge_list_ptr(\n const int num_ite, const int M,\n const int P_N, // bit 31 - 16: repeat time, bit 15 - 0: N\n const int K, uint64_t edge_list_ptr,\n tapa::ostream &fifo_edge_list_ptr, tapa::ostream &PE_inst) ;\nvoid read_A(uint64_t A,\n tapa::ostream> &fifo_A, const int A_len,\n const int P_N) ;\nvoid read_B(uint64_t B, tapa::ostream &fifo_B,\n const int K, const int P_N) ;\nvoid read_C(uint64_t C, tapa::ostream &fifo_C,\n const int M, const int P_N, tapa::ostream &wrC_inst) ;\nvoid write_C(tapa::istream &wrC_inst, tapa::istream &fifo_C,\n tapa::async_mmap &C_out) {\n#pragma HLS disaggregate variable = wrC_inst\n#pragma HLS interface ap_fifo port = wrC_inst._\n#pragma HLS aggregate variable = wrC_inst._ bit\n#pragma HLS interface ap_fifo port = wrC_inst._peek\n#pragma HLS aggregate variable = wrC_inst._peek bit\nvoid(wrC_inst._.empty());\nvoid(wrC_inst._peek.empty());\n\n#pragma HLS disaggregate variable = fifo_C\n#pragma HLS interface ap_fifo port = fifo_C._\n#pragma HLS aggregate variable = fifo_C._ bit\n#pragma HLS interface ap_fifo port = fifo_C._peek\n#pragma HLS aggregate variable = fifo_C._peek bit\nvoid(fifo_C._.empty());\nvoid(fifo_C._peek.empty());\n\n#pragma HLS disaggregate variable = C_out\n#pragma HLS interface ap_fifo port = C_out.read_addr._\n#pragma HLS aggregate variable = C_out.read_addr._ bit\n#pragma HLS interface ap_fifo port = C_out.read_data._\n#pragma HLS aggregate variable = C_out.read_data._ bit\n#pragma HLS interface ap_fifo port = C_out.write_addr._\n#pragma HLS aggregate variable = C_out.write_addr._ bit\n#pragma HLS interface ap_fifo port = C_out.write_data._\n#pragma HLS aggregate variable = C_out.write_data._ bit\n#pragma HLS interface ap_fifo port = C_out.write_resp._\n#pragma HLS aggregate variable = C_out.write_resp._ bit\n#pragma HLS disaggregate variable = C_out .read_data\n#pragma HLS interface ap_fifo port = C_out.read_data._peek\n#pragma HLS aggregate variable = C_out.read_data._peek bit\n#pragma HLS disaggregate variable = C_out .write_resp\n#pragma HLS interface ap_fifo port = C_out.write_resp._peek\n#pragma HLS aggregate variable = C_out.write_resp._peek bit\nvoid(C_out.read_addr._.full());\nvoid(C_out.read_data._.empty());\nvoid(C_out.read_data._peek.empty());\nvoid(C_out.write_addr._.full());\nvoid(C_out.write_data._.full());\nvoid(C_out.write_resp._.empty());\nvoid(C_out.write_resp._peek.empty());\n\n int M = wrC_inst.read();\n int P_N = wrC_inst.read();\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0) ? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int num_ite_C = ((M + 15) >> 4) * ((N + 7) >> 3);\nl_rp:\n for (int rp = 0; rp < rp_time; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min = 1 max = 16\n wr_C:\n for (int i_req = 0, i_resp = 0; i_resp < num_ite_C;) {\n#pragma HLS loop_tripcount min = 1 max = 500000\n#pragma HLS pipeline style = stp II = 1\n if ((i_req < num_ite_C) & !fifo_C.empty() & !C_out.write_addr.full() &\n !C_out.write_data.full()) {\n C_out.write_addr.try_write(i_req);\n float_v16 tmpv;\n fifo_C.try_read(tmpv);\n C_out.write_data.try_write(tmpv);\n ++i_req;\n }\n uint8_t n_resp;\n if (C_out.write_resp.try_read(n_resp)) {\n i_resp += int(n_resp) + 1;\n }\n }\n }\n}\nvoid FloatvMultConst(const int alpha_u, const int M, const int P_N,\n tapa::istream &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid FloatvAddFloatv(tapa::istream &fifo_in0,\n tapa::istream &fifo_in1,\n tapa::ostream &fifo_out) ;\n/*\nvoid PU2core(ap_uint<18> & addr_c,\n float a_val_f,\n float b_val_d0_f,\n float b_val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]\n ) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u);\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u);\n\n c_val_d0_f += tapa::reg(a_val_f) * b_val_d0_f;\n c_val_d1_f += tapa::reg(a_val_f) * b_val_d1_f;\n\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\n\nvoid PEcore(ap_uint<14> & addr_b,\n ap_uint<18> & addr_c,\n ap_uint<32> & a_val_u,\n ap_uint<64> local_C[4][URAM_DEPTH],\n float local_B[8][WINDOW_SIZE]\n ) {\n#pragma HLS inline\n //if (addr_c != ((ap_uint<18>) 0x3FFFF)) {\n if (addr_c[17] == 0) {\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 4; ++i) {\n PU2core(addr_c,\n a_val_f,\n local_B[i*2+0][addr_b],\n local_B[i*2+1][addr_b],\n local_C[i]\n );\n }\n }\n}\n*/\nvoid PEcore_Bmtx(ap_uint<14> addr_b, ap_uint<32> a_val_u,\n float local_B[8][WINDOW_SIZE], float_v8 &abv) {\n#pragma HLS inline\n float a_val_f = tapa::bit_cast(a_val_u);\n for (int i = 0; i < 8; ++i) {\n abv[i] = a_val_f * local_B[i][addr_b];\n }\n}\nvoid PEG_Bmtx(\n tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n // tapa::istream> & fifo_A,\n tapa::istream> &fifo_A,\n tapa::istreams &fifo_B_in, // [256(16)] * 2, 2: dim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream &PE_inst_out, tapa::ostream &fifo_inst_out,\n tapa::ostreams &fifo_B_out,\n // to PEG_Cmtx\n tapa::ostream &PE_inst_to_Cmtx,\n tapa::ostream &fifo_inst_out_to_Cmtx,\n tapa::ostreams &fifo_aBvec) ;\nvoid PU2core_Cmtx(ap_uint<18> addr_c, float val_d0_f, float val_d1_f,\n ap_uint<64> local_C_pe0_d0_d1[URAM_DEPTH]) {\n#pragma HLS inline\n ap_uint<64> c_val_d0_d1_u64 = local_C_pe0_d0_d1[addr_c];\n ap_uint<32> c_val_d0_u = c_val_d0_d1_u64(31, 0);\n ap_uint<32> c_val_d1_u = c_val_d0_d1_u64(63, 32);\n float c_val_d0_f = tapa::bit_cast(c_val_d0_u) + val_d0_f;\n float c_val_d1_f = tapa::bit_cast(c_val_d1_u) + val_d1_f;\n c_val_d0_u = tapa::bit_cast>(c_val_d0_f);\n c_val_d1_u = tapa::bit_cast>(c_val_d1_f);\n c_val_d0_d1_u64(31, 0) = c_val_d0_u;\n c_val_d0_d1_u64(63, 32) = c_val_d1_u;\n local_C_pe0_d0_d1[addr_c] = c_val_d0_d1_u64;\n}\nvoid PEcore_Cmtx(ap_uint<18> addr_c, float_v8 &abvec,\n ap_uint<64> local_C[4][URAM_DEPTH]) {\n#pragma HLS inline\n for (int i = 0; i < 4; ++i) {\n PU2core_Cmtx(addr_c, abvec[i * 2 + 0], abvec[i * 2 + 1], local_C[i]);\n }\n}\nvoid PEG_Cmtx(tapa::istream &PE_inst_in, tapa::istream &fifo_inst_in,\n tapa::istreams &fifo_aBvec,\n tapa::ostream &fifo_C_out) ;\n/*\nvoid PEG(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n tapa::streams fifo_aBvec(\"fifo_aBvec\");\n tapa::stream PE_inst_to_Cmtx(\"PE_inst_to_Cmtx\");\n tapa::stream\nfifo_inst_out_to_Cmtx(\"fifo_inst_out_to_Cmtx\");\n\n tapa::task()\n .invoke(PEG_Bmtx,\n PE_inst_in,\n fifo_inst_in,\n fifo_A,\n fifo_B_in,\n PE_inst_out,\n fifo_inst_out,\n fifo_B_out,\n // to PEG_Cmtx\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec)\n\n .invoke(PEG_Cmtx,\n PE_inst_to_Cmtx,\n fifo_inst_out_to_Cmtx,\n fifo_aBvec,\n fifo_C_out)\n ;\n}\n\nvoid PEG_c(tapa::istream & PE_inst_in,\n tapa::istream & fifo_inst_in,\n //tapa::istream> & fifo_A,\n tapa::istream> & fifo_A,\n tapa::istreams & fifo_B_in, // [256(16)] * 2, 2:\ndim d\n // [64(32bits * 2.0)] * 8 dim\n tapa::ostream & PE_inst_out,\n tapa::ostream & fifo_inst_out,\n tapa::ostreams & fifo_B_out,\n tapa::ostream & fifo_C_out\n ) {\n const int NUM_ITE = PE_inst_in.read();\n const int M = PE_inst_in.read();\n const int P_N = PE_inst_in.read();\n const int K = PE_inst_in.read();\n\n PE_inst_out.write(NUM_ITE);\n PE_inst_out.write(M);\n PE_inst_out.write(P_N);\n PE_inst_out.write(K);\n\n const int N16 = P_N >> 16;\n const int rp_time = (N16 == 0)? 1 : N16;\n const int N = P_N & 0xFFFF;\n const int rp_time_N = rp_time * ((N + 7) >> 3);\n\n const int num_v_init = (M + 63) >> 6;\n //const int num_v_out = (M + 31) >> 5;\n const int num_v_out = (M + 15) >> 4;\n\n //define local C buffer and pragma to URAM\n //ap_uint<64> local_C[2][8 / 2][URAM_DEPTH];\n ap_uint<64> local_C[4][8 / 2][URAM_DEPTH];\n#pragma HLS bind_storage variable=local_C type=RAM_2P impl=URAM latency=1\n#pragma HLS array_partition complete variable=local_C dim=1\n#pragma HLS array_partition complete variable=local_C dim=2\n\nl_rp:\n for(int rp = 0; rp < rp_time_N; rp++) {\n#pragma HLS loop_flatten off\n#pragma HLS loop_tripcount min=1 max=16\n\n //init local C\n init_C:\n for (int i = 0; i < num_v_init; ++i) {\n#pragma HLS loop_tripcount min=1 max=800\n#pragma HLS pipeline style=stp II=1\n //for (int j = 0; j < 2; ++j) {\n for (int j = 0; j < 4; ++j) {\n for (int k = 0; k < 8 / 2; ++k) {\n local_C[j][k][i] = 0;\n }\n }\n }\n //define local B buffer and pragma local B buffer if partition factor >\n1\n\n //float local_B[8/2][8][WINDOW_SIZE];\n //float local_B[8][WINDOW_SIZE];\n float local_B[4/2][8][WINDOW_SIZE];\n#pragma HLS bind_storage variable=local_B latency=2\n#pragma HLS array_partition variable=local_B complete dim=1\n#pragma HLS array_partition variable=local_B complete dim=2\n#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=3\n//#pragma HLS array_partition variable=local_B cyclic factor=B_PARTITION_FACTOR\ndim=2\n\n auto start_32 = fifo_inst_in.read();\n fifo_inst_out.write(start_32);\n\n main:\n for (int i = 0; i < NUM_ITE; ++i) {\n#pragma HLS loop_tripcount min=1 max=49\n\n // fill onchip B\n read_B:\n for (int j = 0; (j < (WINDOW_SIZE >> 3)) && (j < ((K + 7) >> 3) - i\n* (WINDOW_SIZE >> 3)); ) { #pragma HLS loop_tripcount min=1 max=512 #pragma HLS\npipeline style=stp II = 1\n\n bool b_2048_ready = true;\n bool b_2048_out_not_full = true;\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_2048_ready &= !fifo_B_in[k].empty();\n b_2048_out_not_full &= !fifo_B_out[k].full();\n }\n\n if (b_2048_ready & b_2048_out_not_full) {\n float_v16 b_512_x[NUM_CH_B];\n for (int k = 0; k < NUM_CH_B; ++k) {\n b_512_x[k] = fifo_B_in[k].read();\n fifo_B_out[k].write(b_512_x[k]);\n }\n\n for (int k = 0; k < 8; ++k) {\n for (int m = 0; m < 8; ++m) {\n for (int l = 0; l < 2; ++l) {\n local_B[l][m][j * 8 + k] = b_512_x[m/2][k + m %\n2 * 8];\n }\n }\n }\n ++j;\n }\n }\n\n // computation\n const auto end_32 = fifo_inst_in.read();\n fifo_inst_out.write(end_32);\n\n computation:\n for (int j = start_32; j < end_32; ) {\n#pragma HLS loop_tripcount min=1 max=200\n#pragma HLS pipeline style=stp II=1\n#pragma HLS dependence true variable=local_C distance=DEP_DIST_LOAD_STORE\n\n //ap_uint<128> a_pes;\n ap_uint<256> a_pes;\n bool a_pes_ready = fifo_A.try_read(a_pes);\n\n if (a_pes_ready) {\n //for (int p = 0; p < 2; ++p) {\n for (int p = 0; p < 4; ++p) {\n ap_uint<14> a_col;\n ap_uint<18> a_row;\n ap_uint<32> a_val;\n\n ap_uint<64> a = a_pes(63 + p * 64, p * 64);\n a_col = a(63, 50);\n a_row = a(49, 32);\n a_val = a(31, 0);\n\n // PE process\n PEcore(a_col,\n a_row,\n a_val,\n local_C[p],\n //local_B\n local_B[p/2]\n );\n }\n ++j;\n }\n }\n start_32 = end_32;\n }\n\n //cout << \"PE = \" << pe_idx << endl;\n write_C_outer:\n for (int i = 0, c_idx = 0; i < num_v_out; ++i) {\n#pragma HLS loop_tripcount min=1 max=1800\n#pragma HLS pipeline style=stp II=1\n ap_uint<32> u_32_d[8];\n\n for (int d = 0; d < 4; ++d) {\n ap_uint<64> u_64 = local_C[c_idx][d][i>>2];\n u_32_d[2 * d ] = u_64(31, 0);\n u_32_d[2 * d + 1] = u_64(63, 32);\n }\n\n switch (c_idx) { //0,2,1,3\n case 0: c_idx = 2; break;\n case 1: c_idx = 3; break;\n case 2: c_idx = 1; break;\n case 3: c_idx = 0; break;\n }\n\n float_v8 out_v;\n for (int d = 0; d < 8; ++d) {\n out_v[d] = tapa::bit_cast(u_32_d[d]);\n }\n fifo_C_out.write(out_v);\n //for (int ii = 0; ii < 8; ++ii) {cout << out_v[ii] << \" \";} cout <<\nendl;\n }\n }\n}\n*/\nvoid Scatter_1_2(tapa::istream> &fifo_in,\n tapa::ostreams, 2> &fifo_out) ;\nvoid Merger(tapa::istreams &fifo_in,\n tapa::ostream &fifo_out) ;\nvoid black_hole_int(tapa::istream &fifo_in) ;\nvoid black_hole_float_v16(tapa::istream &fifo_in) ;\nvoid Sextans(uint64_t edge_list_ptr,\n uint64_t edge_list_ch_0, uint64_t edge_list_ch_1, uint64_t edge_list_ch_2, uint64_t edge_list_ch_3, uint64_t edge_list_ch_4, uint64_t edge_list_ch_5, uint64_t edge_list_ch_6, uint64_t edge_list_ch_7,\n uint64_t mat_B_ch_0, uint64_t mat_B_ch_1, uint64_t mat_B_ch_2, uint64_t mat_B_ch_3,\n uint64_t mat_C_ch_in_0, uint64_t mat_C_ch_in_1, uint64_t mat_C_ch_in_2, uint64_t mat_C_ch_in_3, uint64_t mat_C_ch_in_4, uint64_t mat_C_ch_in_5, uint64_t mat_C_ch_in_6, uint64_t mat_C_ch_in_7,\n uint64_t mat_C_ch_0, uint64_t mat_C_ch_1, uint64_t mat_C_ch_2, uint64_t mat_C_ch_3, uint64_t mat_C_ch_4, uint64_t mat_C_ch_5, uint64_t mat_C_ch_6, uint64_t mat_C_ch_7, const int NUM_ITE,\n const int NUM_A_LEN, const int M, const int K, const int P_N,\n const int alpha_u, const int beta_u) ;\n", - "level": "lower", - "target": "hls", - "vendor": "xilinx" - } - }, - "top": "Sextans" -} diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv.v deleted file mode 100644 index 886ab0ac..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv.v +++ /dev/null @@ -1,242 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -(* CORE_GENERATION_INFO="FloatvAddFloatv_FloatvAddFloatv,hls_ip_2022_2,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xcu280-fsvh2892-2L-e,HLS_INPUT_CLOCK=3.330000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=2.342000,HLS_SYN_LAT=-1,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=6704,HLS_SYN_LUT=3644,HLS_VERSION=2022_2}" *) - -module FloatvAddFloatv ( - ap_clk, - ap_rst_n, - ap_start, - ap_done, - ap_idle, - ap_ready, - fifo_in0_s_dout, - fifo_in0_s_empty_n, - fifo_in0_s_read, - fifo_in0_peek_dout, - fifo_in0_peek_empty_n, - fifo_in0_peek_read, - fifo_in1_s_dout, - fifo_in1_s_empty_n, - fifo_in1_s_read, - fifo_in1_peek_dout, - fifo_in1_peek_empty_n, - fifo_in1_peek_read, - fifo_out_din, - fifo_out_full_n, - fifo_out_write -); - -parameter ap_ST_fsm_state1 = 3'd1; -parameter ap_ST_fsm_state2 = 3'd2; -parameter ap_ST_fsm_state3 = 3'd4; - -input ap_clk; -input ap_rst_n; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [512:0] fifo_in0_s_dout; -input fifo_in0_s_empty_n; -output fifo_in0_s_read; -input [512:0] fifo_in0_peek_dout; -input fifo_in0_peek_empty_n; -output fifo_in0_peek_read; -input [512:0] fifo_in1_s_dout; -input fifo_in1_s_empty_n; -output fifo_in1_s_read; -input [512:0] fifo_in1_peek_dout; -input fifo_in1_peek_empty_n; -output fifo_in1_peek_read; -output [512:0] fifo_out_din; -input fifo_out_full_n; -output fifo_out_write; - -reg ap_done; -reg ap_idle; -reg ap_ready; -reg fifo_in0_s_read; -reg fifo_in1_s_read; -reg fifo_out_write; - - reg ap_rst_n_inv; -(* fsm_encoding = "none" *) reg [2:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -wire grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_start; -wire grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_done; -wire grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_idle; -wire grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_ready; -wire grp_FloatvAddFloatv_Pipeline_cc_fu_76_fifo_in0_s_read; -wire grp_FloatvAddFloatv_Pipeline_cc_fu_76_fifo_in1_s_read; -wire [512:0] grp_FloatvAddFloatv_Pipeline_cc_fu_76_fifo_out_din; -wire grp_FloatvAddFloatv_Pipeline_cc_fu_76_fifo_out_write; -reg grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_start_reg; -wire ap_CS_fsm_state2; -wire ap_CS_fsm_state3; -reg [2:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -wire ap_ST_fsm_state2_blk; -reg ap_ST_fsm_state3_blk; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 3'd1; -#0 grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_start_reg = 1'b0; -end - -FloatvAddFloatv_FloatvAddFloatv_Pipeline_cc grp_FloatvAddFloatv_Pipeline_cc_fu_76( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_start), - .ap_done(grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_done), - .ap_idle(grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_idle), - .ap_ready(grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_ready), - .fifo_in0_s_dout(fifo_in0_s_dout), - .fifo_in0_s_empty_n(fifo_in0_s_empty_n), - .fifo_in0_s_read(grp_FloatvAddFloatv_Pipeline_cc_fu_76_fifo_in0_s_read), - .fifo_in1_s_dout(fifo_in1_s_dout), - .fifo_in1_s_empty_n(fifo_in1_s_empty_n), - .fifo_in1_s_read(grp_FloatvAddFloatv_Pipeline_cc_fu_76_fifo_in1_s_read), - .fifo_out_din(grp_FloatvAddFloatv_Pipeline_cc_fu_76_fifo_out_din), - .fifo_out_full_n(fifo_out_full_n), - .fifo_out_write(grp_FloatvAddFloatv_Pipeline_cc_fu_76_fifo_out_write) -); - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_start_reg <= 1'b0; - end else begin - if ((1'b1 == ap_CS_fsm_state2)) begin - grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_start_reg <= 1'b1; - end else if ((grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_ready == 1'b1)) begin - grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_start_reg <= 1'b0; - end - end -end - -always @ (*) begin - if ((ap_start == 1'b0)) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -assign ap_ST_fsm_state2_blk = 1'b0; - -always @ (*) begin - if ((grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_done == 1'b0)) begin - ap_ST_fsm_state3_blk = 1'b1; - end else begin - ap_ST_fsm_state3_blk = 1'b0; - end -end - -always @ (*) begin - if (((grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin - ap_ready = 1'b1; - end else begin - ap_ready = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state3)) begin - fifo_in0_s_read = grp_FloatvAddFloatv_Pipeline_cc_fu_76_fifo_in0_s_read; - end else begin - fifo_in0_s_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state3)) begin - fifo_in1_s_read = grp_FloatvAddFloatv_Pipeline_cc_fu_76_fifo_in1_s_read; - end else begin - fifo_in1_s_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state3)) begin - fifo_out_write = grp_FloatvAddFloatv_Pipeline_cc_fu_76_fifo_out_write; - end else begin - fifo_out_write = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - ap_NS_fsm = ap_ST_fsm_state3; - end - ap_ST_fsm_state3 : begin - if (((grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin - ap_NS_fsm = ap_ST_fsm_state1; - end else begin - ap_NS_fsm = ap_ST_fsm_state3; - end - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; - -assign ap_CS_fsm_state3 = ap_CS_fsm[32'd2]; - -always @ (*) begin - ap_rst_n_inv = ~ap_rst_n; -end - -assign fifo_in0_peek_read = 1'b0; - -assign fifo_in1_peek_read = 1'b0; - -assign fifo_out_din = grp_FloatvAddFloatv_Pipeline_cc_fu_76_fifo_out_din; - -assign grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_start = grp_FloatvAddFloatv_Pipeline_cc_fu_76_ap_start_reg; - -endmodule //FloatvAddFloatv diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv_FloatvAddFloatv_Pipeline_cc.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv_FloatvAddFloatv_Pipeline_cc.v deleted file mode 100644 index 4a57b40b..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv_FloatvAddFloatv_Pipeline_cc.v +++ /dev/null @@ -1,1516 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module FloatvAddFloatv_FloatvAddFloatv_Pipeline_cc ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - fifo_in0_s_dout, - fifo_in0_s_empty_n, - fifo_in0_s_read, - fifo_in1_s_dout, - fifo_in1_s_empty_n, - fifo_in1_s_read, - fifo_out_din, - fifo_out_full_n, - fifo_out_write -); - -parameter ap_ST_fsm_state1 = 2'd1; -parameter ap_ST_fsm_pp0_stage0 = 2'd2; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [512:0] fifo_in0_s_dout; -input fifo_in0_s_empty_n; -output fifo_in0_s_read; -input [512:0] fifo_in1_s_dout; -input fifo_in1_s_empty_n; -output fifo_in1_s_read; -output [512:0] fifo_out_din; -input fifo_out_full_n; -output fifo_out_write; - -reg ap_done; -reg ap_idle; -reg fifo_in0_s_read; -reg fifo_in1_s_read; -reg fifo_out_write; - -(* fsm_encoding = "none" *) reg [1:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -reg fifo_out_blk_n; -reg ap_enable_reg_pp0_iter8; -wire ap_block_pp0_stage0; -reg [0:0] and_ln97_reg_1158; -reg [0:0] and_ln97_reg_1158_pp0_iter7_reg; -wire ap_block_state2_pp0_stage0_iter0; -wire ap_block_state3_pp0_stage0_iter1; -wire ap_block_state4_pp0_stage0_iter2; -wire ap_block_state5_pp0_stage0_iter3; -wire ap_block_state6_pp0_stage0_iter4; -wire ap_block_state7_pp0_stage0_iter5; -wire ap_block_state8_pp0_stage0_iter6; -wire ap_block_state9_pp0_stage0_iter7; -reg ap_block_state10_pp0_stage0_iter8; -reg ap_block_pp0_stage0_11001; -wire [0:0] and_ln97_fu_613_p2; -wire ap_CS_fsm_pp0_stage0; -reg [0:0] and_ln97_reg_1158_pp0_iter1_reg; -reg [0:0] and_ln97_reg_1158_pp0_iter2_reg; -reg [0:0] and_ln97_reg_1158_pp0_iter3_reg; -reg [0:0] and_ln97_reg_1158_pp0_iter4_reg; -reg [0:0] and_ln97_reg_1158_pp0_iter5_reg; -reg [0:0] and_ln97_reg_1158_pp0_iter6_reg; -wire [0:0] p_vld2_fu_619_p1; -wire [31:0] elem_val_M_elems_fu_661_p1; -wire [31:0] elem_val_M_elems_1_fu_675_p1; -wire [31:0] bitcast_ln78_fu_689_p1; -wire [31:0] bitcast_ln78_1_fu_703_p1; -wire [31:0] bitcast_ln78_2_fu_717_p1; -wire [31:0] bitcast_ln78_3_fu_731_p1; -wire [31:0] bitcast_ln78_4_fu_745_p1; -wire [31:0] bitcast_ln78_5_fu_759_p1; -wire [31:0] bitcast_ln78_6_fu_773_p1; -wire [31:0] bitcast_ln78_7_fu_787_p1; -wire [31:0] bitcast_ln78_8_fu_801_p1; -wire [31:0] bitcast_ln78_9_fu_815_p1; -wire [31:0] bitcast_ln78_10_fu_829_p1; -wire [31:0] bitcast_ln78_11_fu_833_p1; -wire [31:0] bitcast_ln78_12_fu_837_p1; -wire [31:0] bitcast_ln78_13_fu_841_p1; -wire [0:0] p_vld_fu_845_p1; -wire [31:0] elem_val_M_elems_4_fu_887_p1; -wire [31:0] elem_val_M_elems_5_fu_901_p1; -wire [31:0] bitcast_ln78_16_fu_915_p1; -wire [31:0] bitcast_ln78_17_fu_929_p1; -wire [31:0] bitcast_ln78_18_fu_943_p1; -wire [31:0] bitcast_ln78_19_fu_957_p1; -wire [31:0] bitcast_ln78_20_fu_971_p1; -wire [31:0] bitcast_ln78_21_fu_985_p1; -wire [31:0] bitcast_ln78_22_fu_999_p1; -wire [31:0] bitcast_ln78_23_fu_1013_p1; -wire [31:0] bitcast_ln78_24_fu_1027_p1; -wire [31:0] bitcast_ln78_25_fu_1041_p1; -wire [31:0] bitcast_ln78_26_fu_1055_p1; -wire [31:0] bitcast_ln78_27_fu_1059_p1; -wire [31:0] bitcast_ln78_28_fu_1063_p1; -wire [31:0] bitcast_ln78_29_fu_1067_p1; -wire [31:0] grp_fu_517_p2; -reg [31:0] add_i_reg_1330; -wire [31:0] grp_fu_523_p2; -reg [31:0] add_i_1_reg_1335; -wire [31:0] grp_fu_529_p2; -reg [31:0] add_i_2_reg_1340; -wire [31:0] grp_fu_535_p2; -reg [31:0] add_i_3_reg_1345; -wire [31:0] grp_fu_541_p2; -reg [31:0] add_i_4_reg_1350; -wire [31:0] grp_fu_547_p2; -reg [31:0] add_i_5_reg_1355; -wire [31:0] grp_fu_553_p2; -reg [31:0] add_i_6_reg_1360; -wire [31:0] grp_fu_559_p2; -reg [31:0] add_i_7_reg_1365; -wire [31:0] grp_fu_565_p2; -reg [31:0] add_i_8_reg_1370; -wire [31:0] grp_fu_571_p2; -reg [31:0] add_i_9_reg_1375; -wire [31:0] grp_fu_577_p2; -reg [31:0] add_i_s_reg_1380; -wire [31:0] grp_fu_583_p2; -reg [31:0] add_i_10_reg_1385; -wire [31:0] grp_fu_589_p2; -reg [31:0] add_i_11_reg_1390; -wire [31:0] grp_fu_595_p2; -reg [31:0] add_i_12_reg_1395; -wire [31:0] grp_fu_601_p2; -reg [31:0] add_i_13_reg_1400; -wire [31:0] grp_fu_607_p2; -reg [31:0] add_i_14_reg_1405; -reg ap_enable_reg_pp0_iter0; -reg ap_enable_reg_pp0_iter1; -reg ap_block_pp0_stage0_subdone; -reg ap_enable_reg_pp0_iter2; -reg ap_enable_reg_pp0_iter3; -reg ap_enable_reg_pp0_iter4; -reg ap_enable_reg_pp0_iter5; -reg ap_enable_reg_pp0_iter6; -reg ap_enable_reg_pp0_iter7; -wire [31:0] ap_phi_reg_pp0_iter0_elem_val_M_elems_3_reg_133; -reg [31:0] ap_phi_reg_pp0_iter1_elem_val_M_elems_3_reg_133; -wire [31:0] ap_phi_reg_pp0_iter0_elem_val_M_elems_2_reg_145; -reg [31:0] ap_phi_reg_pp0_iter1_elem_val_M_elems_2_reg_145; -wire [31:0] ap_phi_reg_pp0_iter0_empty_reg_157; -reg [31:0] ap_phi_reg_pp0_iter1_empty_reg_157; -wire [31:0] ap_phi_reg_pp0_iter0_empty_75_reg_169; -reg [31:0] ap_phi_reg_pp0_iter1_empty_75_reg_169; -wire [31:0] ap_phi_reg_pp0_iter0_empty_76_reg_181; -reg [31:0] ap_phi_reg_pp0_iter1_empty_76_reg_181; -wire [31:0] ap_phi_reg_pp0_iter0_empty_77_reg_193; -reg [31:0] ap_phi_reg_pp0_iter1_empty_77_reg_193; -wire [31:0] ap_phi_reg_pp0_iter0_empty_78_reg_205; -reg [31:0] ap_phi_reg_pp0_iter1_empty_78_reg_205; -wire [31:0] ap_phi_reg_pp0_iter0_empty_79_reg_217; -reg [31:0] ap_phi_reg_pp0_iter1_empty_79_reg_217; -wire [31:0] ap_phi_reg_pp0_iter0_empty_80_reg_229; -reg [31:0] ap_phi_reg_pp0_iter1_empty_80_reg_229; -wire [31:0] ap_phi_reg_pp0_iter0_empty_81_reg_241; -reg [31:0] ap_phi_reg_pp0_iter1_empty_81_reg_241; -wire [31:0] ap_phi_reg_pp0_iter0_empty_82_reg_253; -reg [31:0] ap_phi_reg_pp0_iter1_empty_82_reg_253; -wire [31:0] ap_phi_reg_pp0_iter0_empty_83_reg_265; -reg [31:0] ap_phi_reg_pp0_iter1_empty_83_reg_265; -wire [31:0] ap_phi_reg_pp0_iter0_empty_84_reg_277; -reg [31:0] ap_phi_reg_pp0_iter1_empty_84_reg_277; -wire [31:0] ap_phi_reg_pp0_iter0_empty_85_reg_289; -reg [31:0] ap_phi_reg_pp0_iter1_empty_85_reg_289; -wire [31:0] ap_phi_reg_pp0_iter0_empty_86_reg_301; -reg [31:0] ap_phi_reg_pp0_iter1_empty_86_reg_301; -wire [31:0] ap_phi_reg_pp0_iter0_empty_87_reg_313; -reg [31:0] ap_phi_reg_pp0_iter1_empty_87_reg_313; -wire [31:0] ap_phi_reg_pp0_iter0_elem_i_val_sroa_32_0_reg_325; -reg [31:0] ap_phi_reg_pp0_iter1_elem_i_val_sroa_32_0_reg_325; -wire [31:0] ap_phi_reg_pp0_iter0_elem_i_val_sroa_30_0_reg_337; -reg [31:0] ap_phi_reg_pp0_iter1_elem_i_val_sroa_30_0_reg_337; -wire [31:0] ap_phi_reg_pp0_iter0_elem_i_val_sroa_28_0_reg_349; -reg [31:0] ap_phi_reg_pp0_iter1_elem_i_val_sroa_28_0_reg_349; -wire [31:0] ap_phi_reg_pp0_iter0_elem_i_val_sroa_26_0_reg_361; -reg [31:0] ap_phi_reg_pp0_iter1_elem_i_val_sroa_26_0_reg_361; -wire [31:0] ap_phi_reg_pp0_iter0_elem_i_val_sroa_24_0_reg_373; -reg [31:0] ap_phi_reg_pp0_iter1_elem_i_val_sroa_24_0_reg_373; -wire [31:0] ap_phi_reg_pp0_iter0_elem_i_val_sroa_22_0_reg_385; -reg [31:0] ap_phi_reg_pp0_iter1_elem_i_val_sroa_22_0_reg_385; -wire [31:0] ap_phi_reg_pp0_iter0_elem_i_val_sroa_20_0_reg_397; -reg [31:0] ap_phi_reg_pp0_iter1_elem_i_val_sroa_20_0_reg_397; -wire [31:0] ap_phi_reg_pp0_iter0_elem_i_val_sroa_18_0_reg_409; -reg [31:0] ap_phi_reg_pp0_iter1_elem_i_val_sroa_18_0_reg_409; -wire [31:0] ap_phi_reg_pp0_iter0_elem_i_val_sroa_16_0_reg_421; -reg [31:0] ap_phi_reg_pp0_iter1_elem_i_val_sroa_16_0_reg_421; -wire [31:0] ap_phi_reg_pp0_iter0_elem_i_val_sroa_14_0_reg_433; -reg [31:0] ap_phi_reg_pp0_iter1_elem_i_val_sroa_14_0_reg_433; -wire [31:0] ap_phi_reg_pp0_iter0_elem_i_val_sroa_12_0_reg_445; -reg [31:0] ap_phi_reg_pp0_iter1_elem_i_val_sroa_12_0_reg_445; -wire [31:0] ap_phi_reg_pp0_iter0_elem_i_val_sroa_10_0_reg_457; -reg [31:0] ap_phi_reg_pp0_iter1_elem_i_val_sroa_10_0_reg_457; -wire [31:0] ap_phi_reg_pp0_iter0_elem_i_val_sroa_8_0_reg_469; -reg [31:0] ap_phi_reg_pp0_iter1_elem_i_val_sroa_8_0_reg_469; -wire [31:0] ap_phi_reg_pp0_iter0_elem_i_val_sroa_6_0_reg_481; -reg [31:0] ap_phi_reg_pp0_iter1_elem_i_val_sroa_6_0_reg_481; -wire [31:0] ap_phi_reg_pp0_iter0_elem_val_M_elems_7_reg_493; -reg [31:0] ap_phi_reg_pp0_iter1_elem_val_M_elems_7_reg_493; -wire [31:0] ap_phi_reg_pp0_iter0_elem_val_M_elems_6_reg_505; -reg [31:0] ap_phi_reg_pp0_iter1_elem_val_M_elems_6_reg_505; -wire [0:0] tmp_nbreadreq_fu_98_p3; -wire [0:0] tmp_1_nbreadreq_fu_106_p3; -wire [0:0] fifo_in0_s_read_nbread_fu_114_p2_0; -wire [0:0] fifo_in1_s_read_nbread_fu_120_p2_0; -reg ap_block_pp0_stage0_01001; -wire [31:0] trunc_ln78_fu_627_p1; -wire [31:0] tmp_3_fu_665_p4; -wire [31:0] tmp_4_fu_679_p4; -wire [31:0] tmp_5_fu_693_p4; -wire [31:0] tmp_6_fu_707_p4; -wire [31:0] tmp_7_fu_721_p4; -wire [31:0] tmp_8_fu_735_p4; -wire [31:0] tmp_9_fu_749_p4; -wire [31:0] tmp_s_fu_763_p4; -wire [31:0] tmp_2_fu_777_p4; -wire [31:0] tmp_10_fu_791_p4; -wire [31:0] tmp_11_fu_805_p4; -wire [31:0] tmp_12_fu_819_p4; -wire [31:0] tmp_13_fu_631_p4; -wire [31:0] trunc_ln_fu_641_p4; -wire [31:0] trunc_ln78_2_fu_651_p4; -wire [31:0] trunc_ln78_1_fu_853_p1; -wire [31:0] tmp_15_fu_891_p4; -wire [31:0] tmp_16_fu_905_p4; -wire [31:0] tmp_17_fu_919_p4; -wire [31:0] tmp_18_fu_933_p4; -wire [31:0] tmp_19_fu_947_p4; -wire [31:0] tmp_20_fu_961_p4; -wire [31:0] tmp_21_fu_975_p4; -wire [31:0] tmp_22_fu_989_p4; -wire [31:0] tmp_23_fu_1003_p4; -wire [31:0] tmp_24_fu_1017_p4; -wire [31:0] tmp_25_fu_1031_p4; -wire [31:0] tmp_26_fu_1045_p4; -wire [31:0] tmp_14_fu_857_p4; -wire [31:0] trunc_ln78_4_fu_867_p4; -wire [31:0] trunc_ln78_5_fu_877_p4; -wire [31:0] bitcast_ln151_15_fu_1116_p1; -wire [31:0] bitcast_ln151_14_fu_1113_p1; -wire [31:0] bitcast_ln151_13_fu_1110_p1; -wire [31:0] bitcast_ln151_12_fu_1107_p1; -wire [31:0] bitcast_ln151_11_fu_1104_p1; -wire [31:0] bitcast_ln151_10_fu_1101_p1; -wire [31:0] bitcast_ln151_9_fu_1098_p1; -wire [31:0] bitcast_ln151_8_fu_1095_p1; -wire [31:0] bitcast_ln151_7_fu_1092_p1; -wire [31:0] bitcast_ln151_6_fu_1089_p1; -wire [31:0] bitcast_ln151_5_fu_1086_p1; -wire [31:0] bitcast_ln151_4_fu_1083_p1; -wire [31:0] bitcast_ln151_3_fu_1080_p1; -wire [31:0] bitcast_ln151_2_fu_1077_p1; -wire [31:0] bitcast_ln151_1_fu_1074_p1; -wire [31:0] bitcast_ln151_fu_1071_p1; -reg grp_fu_517_ce; -reg grp_fu_523_ce; -reg grp_fu_529_ce; -reg grp_fu_535_ce; -reg grp_fu_541_ce; -reg grp_fu_547_ce; -reg grp_fu_553_ce; -reg grp_fu_559_ce; -reg grp_fu_565_ce; -reg grp_fu_571_ce; -reg grp_fu_577_ce; -reg grp_fu_583_ce; -reg grp_fu_589_ce; -reg grp_fu_595_ce; -reg grp_fu_601_ce; -reg grp_fu_607_ce; -reg [1:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -reg ap_idle_pp0; -wire ap_enable_pp0; -reg ap_condition_444; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 2'd1; -#0 ap_enable_reg_pp0_iter8 = 1'b0; -#0 ap_enable_reg_pp0_iter0 = 1'b0; -#0 ap_enable_reg_pp0_iter1 = 1'b0; -#0 ap_enable_reg_pp0_iter2 = 1'b0; -#0 ap_enable_reg_pp0_iter3 = 1'b0; -#0 ap_enable_reg_pp0_iter4 = 1'b0; -#0 ap_enable_reg_pp0_iter5 = 1'b0; -#0 ap_enable_reg_pp0_iter6 = 1'b0; -#0 ap_enable_reg_pp0_iter7 = 1'b0; -end - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U1( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_elem_val_M_elems_3_reg_133), - .din1(ap_phi_reg_pp0_iter1_elem_val_M_elems_6_reg_505), - .ce(grp_fu_517_ce), - .dout(grp_fu_517_p2) -); - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U2( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_elem_val_M_elems_2_reg_145), - .din1(ap_phi_reg_pp0_iter1_elem_val_M_elems_7_reg_493), - .ce(grp_fu_523_ce), - .dout(grp_fu_523_p2) -); - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U3( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_empty_reg_157), - .din1(ap_phi_reg_pp0_iter1_elem_i_val_sroa_6_0_reg_481), - .ce(grp_fu_529_ce), - .dout(grp_fu_529_p2) -); - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U4( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_empty_75_reg_169), - .din1(ap_phi_reg_pp0_iter1_elem_i_val_sroa_8_0_reg_469), - .ce(grp_fu_535_ce), - .dout(grp_fu_535_p2) -); - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U5( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_empty_76_reg_181), - .din1(ap_phi_reg_pp0_iter1_elem_i_val_sroa_10_0_reg_457), - .ce(grp_fu_541_ce), - .dout(grp_fu_541_p2) -); - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U6( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_empty_77_reg_193), - .din1(ap_phi_reg_pp0_iter1_elem_i_val_sroa_12_0_reg_445), - .ce(grp_fu_547_ce), - .dout(grp_fu_547_p2) -); - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U7( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_empty_78_reg_205), - .din1(ap_phi_reg_pp0_iter1_elem_i_val_sroa_14_0_reg_433), - .ce(grp_fu_553_ce), - .dout(grp_fu_553_p2) -); - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U8( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_empty_79_reg_217), - .din1(ap_phi_reg_pp0_iter1_elem_i_val_sroa_16_0_reg_421), - .ce(grp_fu_559_ce), - .dout(grp_fu_559_p2) -); - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U9( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_empty_80_reg_229), - .din1(ap_phi_reg_pp0_iter1_elem_i_val_sroa_18_0_reg_409), - .ce(grp_fu_565_ce), - .dout(grp_fu_565_p2) -); - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U10( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_empty_81_reg_241), - .din1(ap_phi_reg_pp0_iter1_elem_i_val_sroa_20_0_reg_397), - .ce(grp_fu_571_ce), - .dout(grp_fu_571_p2) -); - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U11( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_empty_82_reg_253), - .din1(ap_phi_reg_pp0_iter1_elem_i_val_sroa_22_0_reg_385), - .ce(grp_fu_577_ce), - .dout(grp_fu_577_p2) -); - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U12( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_empty_83_reg_265), - .din1(ap_phi_reg_pp0_iter1_elem_i_val_sroa_24_0_reg_373), - .ce(grp_fu_583_ce), - .dout(grp_fu_583_p2) -); - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U13( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_empty_84_reg_277), - .din1(ap_phi_reg_pp0_iter1_elem_i_val_sroa_26_0_reg_361), - .ce(grp_fu_589_ce), - .dout(grp_fu_589_p2) -); - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U14( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_empty_85_reg_289), - .din1(ap_phi_reg_pp0_iter1_elem_i_val_sroa_28_0_reg_349), - .ce(grp_fu_595_ce), - .dout(grp_fu_595_p2) -); - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U15( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_empty_86_reg_301), - .din1(ap_phi_reg_pp0_iter1_elem_i_val_sroa_30_0_reg_337), - .ce(grp_fu_601_ce), - .dout(grp_fu_601_p2) -); - -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U16( - .clk(ap_clk), - .reset(ap_rst), - .din0(ap_phi_reg_pp0_iter1_empty_87_reg_313), - .din1(ap_phi_reg_pp0_iter1_elem_i_val_sroa_32_0_reg_325), - .ce(grp_fu_607_ce), - .dout(grp_fu_607_p2) -); - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter0 <= 1'b0; - end else begin - if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin - ap_enable_reg_pp0_iter0 <= 1'b1; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0; - end else if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter2 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter2 <= ap_enable_reg_pp0_iter1; - end else if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin - ap_enable_reg_pp0_iter2 <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter3 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter3 <= ap_enable_reg_pp0_iter2; - end else if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin - ap_enable_reg_pp0_iter3 <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter4 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter4 <= ap_enable_reg_pp0_iter3; - end else if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin - ap_enable_reg_pp0_iter4 <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter5 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter5 <= ap_enable_reg_pp0_iter4; - end else if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin - ap_enable_reg_pp0_iter5 <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter6 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter6 <= ap_enable_reg_pp0_iter5; - end else if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin - ap_enable_reg_pp0_iter6 <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter7 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter7 <= ap_enable_reg_pp0_iter6; - end else if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin - ap_enable_reg_pp0_iter7 <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter8 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter8 <= ap_enable_reg_pp0_iter7; - end else if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin - ap_enable_reg_pp0_iter8 <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_10_0_reg_457 <= bitcast_ln78_18_fu_943_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_10_0_reg_457 <= ap_phi_reg_pp0_iter0_elem_i_val_sroa_10_0_reg_457; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_12_0_reg_445 <= bitcast_ln78_19_fu_957_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_12_0_reg_445 <= ap_phi_reg_pp0_iter0_elem_i_val_sroa_12_0_reg_445; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_14_0_reg_433 <= bitcast_ln78_20_fu_971_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_14_0_reg_433 <= ap_phi_reg_pp0_iter0_elem_i_val_sroa_14_0_reg_433; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_16_0_reg_421 <= bitcast_ln78_21_fu_985_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_16_0_reg_421 <= ap_phi_reg_pp0_iter0_elem_i_val_sroa_16_0_reg_421; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_18_0_reg_409 <= bitcast_ln78_22_fu_999_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_18_0_reg_409 <= ap_phi_reg_pp0_iter0_elem_i_val_sroa_18_0_reg_409; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_20_0_reg_397 <= bitcast_ln78_23_fu_1013_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_20_0_reg_397 <= ap_phi_reg_pp0_iter0_elem_i_val_sroa_20_0_reg_397; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_22_0_reg_385 <= bitcast_ln78_24_fu_1027_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_22_0_reg_385 <= ap_phi_reg_pp0_iter0_elem_i_val_sroa_22_0_reg_385; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_24_0_reg_373 <= bitcast_ln78_25_fu_1041_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_24_0_reg_373 <= ap_phi_reg_pp0_iter0_elem_i_val_sroa_24_0_reg_373; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_26_0_reg_361 <= bitcast_ln78_26_fu_1055_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_26_0_reg_361 <= ap_phi_reg_pp0_iter0_elem_i_val_sroa_26_0_reg_361; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_28_0_reg_349 <= bitcast_ln78_27_fu_1059_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_28_0_reg_349 <= ap_phi_reg_pp0_iter0_elem_i_val_sroa_28_0_reg_349; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_30_0_reg_337 <= bitcast_ln78_28_fu_1063_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_30_0_reg_337 <= ap_phi_reg_pp0_iter0_elem_i_val_sroa_30_0_reg_337; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_32_0_reg_325 <= bitcast_ln78_29_fu_1067_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_32_0_reg_325 <= ap_phi_reg_pp0_iter0_elem_i_val_sroa_32_0_reg_325; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_6_0_reg_481 <= bitcast_ln78_16_fu_915_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_6_0_reg_481 <= ap_phi_reg_pp0_iter0_elem_i_val_sroa_6_0_reg_481; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_8_0_reg_469 <= bitcast_ln78_17_fu_929_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_i_val_sroa_8_0_reg_469 <= ap_phi_reg_pp0_iter0_elem_i_val_sroa_8_0_reg_469; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_val_M_elems_2_reg_145 <= elem_val_M_elems_1_fu_675_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_val_M_elems_2_reg_145 <= ap_phi_reg_pp0_iter0_elem_val_M_elems_2_reg_145; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_val_M_elems_3_reg_133 <= elem_val_M_elems_fu_661_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_val_M_elems_3_reg_133 <= ap_phi_reg_pp0_iter0_elem_val_M_elems_3_reg_133; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_val_M_elems_6_reg_505 <= elem_val_M_elems_4_fu_887_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_val_M_elems_6_reg_505 <= ap_phi_reg_pp0_iter0_elem_val_M_elems_6_reg_505; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld_fu_845_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_elem_val_M_elems_7_reg_493 <= elem_val_M_elems_5_fu_901_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_elem_val_M_elems_7_reg_493 <= ap_phi_reg_pp0_iter0_elem_val_M_elems_7_reg_493; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_empty_75_reg_169 <= bitcast_ln78_1_fu_703_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_empty_75_reg_169 <= ap_phi_reg_pp0_iter0_empty_75_reg_169; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_empty_76_reg_181 <= bitcast_ln78_2_fu_717_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_empty_76_reg_181 <= ap_phi_reg_pp0_iter0_empty_76_reg_181; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_empty_77_reg_193 <= bitcast_ln78_3_fu_731_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_empty_77_reg_193 <= ap_phi_reg_pp0_iter0_empty_77_reg_193; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_empty_78_reg_205 <= bitcast_ln78_4_fu_745_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_empty_78_reg_205 <= ap_phi_reg_pp0_iter0_empty_78_reg_205; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_empty_79_reg_217 <= bitcast_ln78_5_fu_759_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_empty_79_reg_217 <= ap_phi_reg_pp0_iter0_empty_79_reg_217; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_empty_80_reg_229 <= bitcast_ln78_6_fu_773_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_empty_80_reg_229 <= ap_phi_reg_pp0_iter0_empty_80_reg_229; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_empty_81_reg_241 <= bitcast_ln78_7_fu_787_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_empty_81_reg_241 <= ap_phi_reg_pp0_iter0_empty_81_reg_241; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_empty_82_reg_253 <= bitcast_ln78_8_fu_801_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_empty_82_reg_253 <= ap_phi_reg_pp0_iter0_empty_82_reg_253; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_empty_83_reg_265 <= bitcast_ln78_9_fu_815_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_empty_83_reg_265 <= ap_phi_reg_pp0_iter0_empty_83_reg_265; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_empty_84_reg_277 <= bitcast_ln78_10_fu_829_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_empty_84_reg_277 <= ap_phi_reg_pp0_iter0_empty_84_reg_277; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_empty_85_reg_289 <= bitcast_ln78_11_fu_833_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_empty_85_reg_289 <= ap_phi_reg_pp0_iter0_empty_85_reg_289; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_empty_86_reg_301 <= bitcast_ln78_12_fu_837_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_empty_86_reg_301 <= ap_phi_reg_pp0_iter0_empty_86_reg_301; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_empty_87_reg_313 <= bitcast_ln78_13_fu_841_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_empty_87_reg_313 <= ap_phi_reg_pp0_iter0_empty_87_reg_313; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_condition_444)) begin - if (((1'd1 == and_ln97_fu_613_p2) & (p_vld2_fu_619_p1 == 1'd1))) begin - ap_phi_reg_pp0_iter1_empty_reg_157 <= bitcast_ln78_fu_689_p1; - end else if ((1'b1 == 1'b1)) begin - ap_phi_reg_pp0_iter1_empty_reg_157 <= ap_phi_reg_pp0_iter0_empty_reg_157; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'd1 == and_ln97_reg_1158_pp0_iter6_reg) & (1'b0 == ap_block_pp0_stage0_11001))) begin - add_i_10_reg_1385 <= grp_fu_583_p2; - add_i_11_reg_1390 <= grp_fu_589_p2; - add_i_12_reg_1395 <= grp_fu_595_p2; - add_i_13_reg_1400 <= grp_fu_601_p2; - add_i_14_reg_1405 <= grp_fu_607_p2; - add_i_1_reg_1335 <= grp_fu_523_p2; - add_i_2_reg_1340 <= grp_fu_529_p2; - add_i_3_reg_1345 <= grp_fu_535_p2; - add_i_4_reg_1350 <= grp_fu_541_p2; - add_i_5_reg_1355 <= grp_fu_547_p2; - add_i_6_reg_1360 <= grp_fu_553_p2; - add_i_7_reg_1365 <= grp_fu_559_p2; - add_i_8_reg_1370 <= grp_fu_565_p2; - add_i_9_reg_1375 <= grp_fu_571_p2; - add_i_reg_1330 <= grp_fu_517_p2; - add_i_s_reg_1380 <= grp_fu_577_p2; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - and_ln97_reg_1158 <= and_ln97_fu_613_p2; - and_ln97_reg_1158_pp0_iter1_reg <= and_ln97_reg_1158; - end -end - -always @ (posedge ap_clk) begin - if ((1'b0 == ap_block_pp0_stage0_11001)) begin - and_ln97_reg_1158_pp0_iter2_reg <= and_ln97_reg_1158_pp0_iter1_reg; - and_ln97_reg_1158_pp0_iter3_reg <= and_ln97_reg_1158_pp0_iter2_reg; - and_ln97_reg_1158_pp0_iter4_reg <= and_ln97_reg_1158_pp0_iter3_reg; - and_ln97_reg_1158_pp0_iter5_reg <= and_ln97_reg_1158_pp0_iter4_reg; - and_ln97_reg_1158_pp0_iter6_reg <= and_ln97_reg_1158_pp0_iter5_reg; - and_ln97_reg_1158_pp0_iter7_reg <= and_ln97_reg_1158_pp0_iter6_reg; - end -end - -always @ (*) begin - if ((ap_start == 1'b0)) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -always @ (*) begin - if (((ap_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((ap_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((ap_enable_reg_pp0_iter7 == 1'b0) & (ap_enable_reg_pp0_iter6 == 1'b0) & (ap_enable_reg_pp0_iter5 == 1'b0) & (ap_enable_reg_pp0_iter4 == 1'b0) & (ap_enable_reg_pp0_iter3 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0) & (ap_enable_reg_pp0_iter8 == 1'b0))) begin - ap_idle_pp0 = 1'b1; - end else begin - ap_idle_pp0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln97_fu_613_p2) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_11001) & (fifo_in0_s_empty_n == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - fifo_in0_s_read = 1'b1; - end else begin - fifo_in0_s_read = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln97_fu_613_p2) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_11001) & (fifo_in1_s_empty_n == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - fifo_in1_s_read = 1'b1; - end else begin - fifo_in1_s_read = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln97_reg_1158_pp0_iter7_reg) & (1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter8 == 1'b1))) begin - fifo_out_blk_n = fifo_out_full_n; - end else begin - fifo_out_blk_n = 1'b1; - end -end - -always @ (*) begin - if (((1'd1 == and_ln97_reg_1158_pp0_iter7_reg) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter8 == 1'b1))) begin - fifo_out_write = 1'b1; - end else begin - fifo_out_write = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_517_ce = 1'b1; - end else begin - grp_fu_517_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_523_ce = 1'b1; - end else begin - grp_fu_523_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_529_ce = 1'b1; - end else begin - grp_fu_529_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_535_ce = 1'b1; - end else begin - grp_fu_535_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_541_ce = 1'b1; - end else begin - grp_fu_541_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_547_ce = 1'b1; - end else begin - grp_fu_547_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_553_ce = 1'b1; - end else begin - grp_fu_553_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_559_ce = 1'b1; - end else begin - grp_fu_559_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_565_ce = 1'b1; - end else begin - grp_fu_565_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_571_ce = 1'b1; - end else begin - grp_fu_571_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_577_ce = 1'b1; - end else begin - grp_fu_577_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_583_ce = 1'b1; - end else begin - grp_fu_583_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_589_ce = 1'b1; - end else begin - grp_fu_589_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_595_ce = 1'b1; - end else begin - grp_fu_595_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_601_ce = 1'b1; - end else begin - grp_fu_601_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_607_ce = 1'b1; - end else begin - grp_fu_607_ce = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin - ap_NS_fsm = ap_ST_fsm_pp0_stage0; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_pp0_stage0 : begin - ap_NS_fsm = ap_ST_fsm_pp0_stage0; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign and_ln97_fu_613_p2 = (tmp_nbreadreq_fu_98_p3 & tmp_1_nbreadreq_fu_106_p3); - -assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd1]; - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); - -always @ (*) begin - ap_block_pp0_stage0_01001 = ((1'd1 == and_ln97_reg_1158_pp0_iter7_reg) & (ap_enable_reg_pp0_iter8 == 1'b1) & (fifo_out_full_n == 1'b0)); -end - -always @ (*) begin - ap_block_pp0_stage0_11001 = ((1'd1 == and_ln97_reg_1158_pp0_iter7_reg) & (ap_enable_reg_pp0_iter8 == 1'b1) & (fifo_out_full_n == 1'b0)); -end - -always @ (*) begin - ap_block_pp0_stage0_subdone = ((1'd1 == and_ln97_reg_1158_pp0_iter7_reg) & (ap_enable_reg_pp0_iter8 == 1'b1) & (fifo_out_full_n == 1'b0)); -end - -always @ (*) begin - ap_block_state10_pp0_stage0_iter8 = ((1'd1 == and_ln97_reg_1158_pp0_iter7_reg) & (fifo_out_full_n == 1'b0)); -end - -assign ap_block_state2_pp0_stage0_iter0 = ~(1'b1 == 1'b1); - -assign ap_block_state3_pp0_stage0_iter1 = ~(1'b1 == 1'b1); - -assign ap_block_state4_pp0_stage0_iter2 = ~(1'b1 == 1'b1); - -assign ap_block_state5_pp0_stage0_iter3 = ~(1'b1 == 1'b1); - -assign ap_block_state6_pp0_stage0_iter4 = ~(1'b1 == 1'b1); - -assign ap_block_state7_pp0_stage0_iter5 = ~(1'b1 == 1'b1); - -assign ap_block_state8_pp0_stage0_iter6 = ~(1'b1 == 1'b1); - -assign ap_block_state9_pp0_stage0_iter7 = ~(1'b1 == 1'b1); - -always @ (*) begin - ap_condition_444 = ((ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0)); -end - -assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); - -assign ap_phi_reg_pp0_iter0_elem_i_val_sroa_10_0_reg_457 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_i_val_sroa_12_0_reg_445 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_i_val_sroa_14_0_reg_433 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_i_val_sroa_16_0_reg_421 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_i_val_sroa_18_0_reg_409 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_i_val_sroa_20_0_reg_397 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_i_val_sroa_22_0_reg_385 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_i_val_sroa_24_0_reg_373 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_i_val_sroa_26_0_reg_361 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_i_val_sroa_28_0_reg_349 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_i_val_sroa_30_0_reg_337 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_i_val_sroa_32_0_reg_325 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_i_val_sroa_6_0_reg_481 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_i_val_sroa_8_0_reg_469 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_val_M_elems_2_reg_145 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_val_M_elems_3_reg_133 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_val_M_elems_6_reg_505 = 'bx; - -assign ap_phi_reg_pp0_iter0_elem_val_M_elems_7_reg_493 = 'bx; - -assign ap_phi_reg_pp0_iter0_empty_75_reg_169 = 'bx; - -assign ap_phi_reg_pp0_iter0_empty_76_reg_181 = 'bx; - -assign ap_phi_reg_pp0_iter0_empty_77_reg_193 = 'bx; - -assign ap_phi_reg_pp0_iter0_empty_78_reg_205 = 'bx; - -assign ap_phi_reg_pp0_iter0_empty_79_reg_217 = 'bx; - -assign ap_phi_reg_pp0_iter0_empty_80_reg_229 = 'bx; - -assign ap_phi_reg_pp0_iter0_empty_81_reg_241 = 'bx; - -assign ap_phi_reg_pp0_iter0_empty_82_reg_253 = 'bx; - -assign ap_phi_reg_pp0_iter0_empty_83_reg_265 = 'bx; - -assign ap_phi_reg_pp0_iter0_empty_84_reg_277 = 'bx; - -assign ap_phi_reg_pp0_iter0_empty_85_reg_289 = 'bx; - -assign ap_phi_reg_pp0_iter0_empty_86_reg_301 = 'bx; - -assign ap_phi_reg_pp0_iter0_empty_87_reg_313 = 'bx; - -assign ap_phi_reg_pp0_iter0_empty_reg_157 = 'bx; - -assign ap_ready = 1'b0; - -assign bitcast_ln151_10_fu_1101_p1 = add_i_s_reg_1380; - -assign bitcast_ln151_11_fu_1104_p1 = add_i_10_reg_1385; - -assign bitcast_ln151_12_fu_1107_p1 = add_i_11_reg_1390; - -assign bitcast_ln151_13_fu_1110_p1 = add_i_12_reg_1395; - -assign bitcast_ln151_14_fu_1113_p1 = add_i_13_reg_1400; - -assign bitcast_ln151_15_fu_1116_p1 = add_i_14_reg_1405; - -assign bitcast_ln151_1_fu_1074_p1 = add_i_1_reg_1335; - -assign bitcast_ln151_2_fu_1077_p1 = add_i_2_reg_1340; - -assign bitcast_ln151_3_fu_1080_p1 = add_i_3_reg_1345; - -assign bitcast_ln151_4_fu_1083_p1 = add_i_4_reg_1350; - -assign bitcast_ln151_5_fu_1086_p1 = add_i_5_reg_1355; - -assign bitcast_ln151_6_fu_1089_p1 = add_i_6_reg_1360; - -assign bitcast_ln151_7_fu_1092_p1 = add_i_7_reg_1365; - -assign bitcast_ln151_8_fu_1095_p1 = add_i_8_reg_1370; - -assign bitcast_ln151_9_fu_1098_p1 = add_i_9_reg_1375; - -assign bitcast_ln151_fu_1071_p1 = add_i_reg_1330; - -assign bitcast_ln78_10_fu_829_p1 = tmp_12_fu_819_p4; - -assign bitcast_ln78_11_fu_833_p1 = tmp_13_fu_631_p4; - -assign bitcast_ln78_12_fu_837_p1 = trunc_ln_fu_641_p4; - -assign bitcast_ln78_13_fu_841_p1 = trunc_ln78_2_fu_651_p4; - -assign bitcast_ln78_16_fu_915_p1 = tmp_16_fu_905_p4; - -assign bitcast_ln78_17_fu_929_p1 = tmp_17_fu_919_p4; - -assign bitcast_ln78_18_fu_943_p1 = tmp_18_fu_933_p4; - -assign bitcast_ln78_19_fu_957_p1 = tmp_19_fu_947_p4; - -assign bitcast_ln78_1_fu_703_p1 = tmp_5_fu_693_p4; - -assign bitcast_ln78_20_fu_971_p1 = tmp_20_fu_961_p4; - -assign bitcast_ln78_21_fu_985_p1 = tmp_21_fu_975_p4; - -assign bitcast_ln78_22_fu_999_p1 = tmp_22_fu_989_p4; - -assign bitcast_ln78_23_fu_1013_p1 = tmp_23_fu_1003_p4; - -assign bitcast_ln78_24_fu_1027_p1 = tmp_24_fu_1017_p4; - -assign bitcast_ln78_25_fu_1041_p1 = tmp_25_fu_1031_p4; - -assign bitcast_ln78_26_fu_1055_p1 = tmp_26_fu_1045_p4; - -assign bitcast_ln78_27_fu_1059_p1 = tmp_14_fu_857_p4; - -assign bitcast_ln78_28_fu_1063_p1 = trunc_ln78_4_fu_867_p4; - -assign bitcast_ln78_29_fu_1067_p1 = trunc_ln78_5_fu_877_p4; - -assign bitcast_ln78_2_fu_717_p1 = tmp_6_fu_707_p4; - -assign bitcast_ln78_3_fu_731_p1 = tmp_7_fu_721_p4; - -assign bitcast_ln78_4_fu_745_p1 = tmp_8_fu_735_p4; - -assign bitcast_ln78_5_fu_759_p1 = tmp_9_fu_749_p4; - -assign bitcast_ln78_6_fu_773_p1 = tmp_s_fu_763_p4; - -assign bitcast_ln78_7_fu_787_p1 = tmp_2_fu_777_p4; - -assign bitcast_ln78_8_fu_801_p1 = tmp_10_fu_791_p4; - -assign bitcast_ln78_9_fu_815_p1 = tmp_11_fu_805_p4; - -assign bitcast_ln78_fu_689_p1 = tmp_4_fu_679_p4; - -assign elem_val_M_elems_1_fu_675_p1 = tmp_3_fu_665_p4; - -assign elem_val_M_elems_4_fu_887_p1 = trunc_ln78_1_fu_853_p1; - -assign elem_val_M_elems_5_fu_901_p1 = tmp_15_fu_891_p4; - -assign elem_val_M_elems_fu_661_p1 = trunc_ln78_fu_627_p1; - -assign fifo_in0_s_read_nbread_fu_114_p2_0 = fifo_in0_s_empty_n; - -assign fifo_in1_s_read_nbread_fu_120_p2_0 = fifo_in1_s_empty_n; - -assign fifo_out_din = {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{1'd0}, {bitcast_ln151_15_fu_1116_p1}}}, {bitcast_ln151_14_fu_1113_p1}}}, {bitcast_ln151_13_fu_1110_p1}}}, {bitcast_ln151_12_fu_1107_p1}}}, {bitcast_ln151_11_fu_1104_p1}}}, {bitcast_ln151_10_fu_1101_p1}}}, {bitcast_ln151_9_fu_1098_p1}}}, {bitcast_ln151_8_fu_1095_p1}}}, {bitcast_ln151_7_fu_1092_p1}}}, {bitcast_ln151_6_fu_1089_p1}}}, {bitcast_ln151_5_fu_1086_p1}}}, {bitcast_ln151_4_fu_1083_p1}}}, {bitcast_ln151_3_fu_1080_p1}}}, {bitcast_ln151_2_fu_1077_p1}}}, {bitcast_ln151_1_fu_1074_p1}}}, {bitcast_ln151_fu_1071_p1}}; - -assign p_vld2_fu_619_p1 = fifo_in0_s_read_nbread_fu_114_p2_0; - -assign p_vld_fu_845_p1 = fifo_in1_s_read_nbread_fu_120_p2_0; - -assign tmp_10_fu_791_p4 = {{fifo_in0_s_dout[351:320]}}; - -assign tmp_11_fu_805_p4 = {{fifo_in0_s_dout[383:352]}}; - -assign tmp_12_fu_819_p4 = {{fifo_in0_s_dout[415:384]}}; - -assign tmp_13_fu_631_p4 = {{fifo_in0_s_dout[447:416]}}; - -assign tmp_14_fu_857_p4 = {{fifo_in1_s_dout[447:416]}}; - -assign tmp_15_fu_891_p4 = {{fifo_in1_s_dout[63:32]}}; - -assign tmp_16_fu_905_p4 = {{fifo_in1_s_dout[95:64]}}; - -assign tmp_17_fu_919_p4 = {{fifo_in1_s_dout[127:96]}}; - -assign tmp_18_fu_933_p4 = {{fifo_in1_s_dout[159:128]}}; - -assign tmp_19_fu_947_p4 = {{fifo_in1_s_dout[191:160]}}; - -assign tmp_1_nbreadreq_fu_106_p3 = fifo_in1_s_empty_n; - -assign tmp_20_fu_961_p4 = {{fifo_in1_s_dout[223:192]}}; - -assign tmp_21_fu_975_p4 = {{fifo_in1_s_dout[255:224]}}; - -assign tmp_22_fu_989_p4 = {{fifo_in1_s_dout[287:256]}}; - -assign tmp_23_fu_1003_p4 = {{fifo_in1_s_dout[319:288]}}; - -assign tmp_24_fu_1017_p4 = {{fifo_in1_s_dout[351:320]}}; - -assign tmp_25_fu_1031_p4 = {{fifo_in1_s_dout[383:352]}}; - -assign tmp_26_fu_1045_p4 = {{fifo_in1_s_dout[415:384]}}; - -assign tmp_2_fu_777_p4 = {{fifo_in0_s_dout[319:288]}}; - -assign tmp_3_fu_665_p4 = {{fifo_in0_s_dout[63:32]}}; - -assign tmp_4_fu_679_p4 = {{fifo_in0_s_dout[95:64]}}; - -assign tmp_5_fu_693_p4 = {{fifo_in0_s_dout[127:96]}}; - -assign tmp_6_fu_707_p4 = {{fifo_in0_s_dout[159:128]}}; - -assign tmp_7_fu_721_p4 = {{fifo_in0_s_dout[191:160]}}; - -assign tmp_8_fu_735_p4 = {{fifo_in0_s_dout[223:192]}}; - -assign tmp_9_fu_749_p4 = {{fifo_in0_s_dout[255:224]}}; - -assign tmp_nbreadreq_fu_98_p3 = fifo_in0_s_empty_n; - -assign tmp_s_fu_763_p4 = {{fifo_in0_s_dout[287:256]}}; - -assign trunc_ln78_1_fu_853_p1 = fifo_in1_s_dout[31:0]; - -assign trunc_ln78_2_fu_651_p4 = {{fifo_in0_s_dout[511:480]}}; - -assign trunc_ln78_4_fu_867_p4 = {{fifo_in1_s_dout[479:448]}}; - -assign trunc_ln78_5_fu_877_p4 = {{fifo_in1_s_dout[511:480]}}; - -assign trunc_ln78_fu_627_p1 = fifo_in0_s_dout[31:0]; - -assign trunc_ln_fu_641_p4 = {{fifo_in0_s_dout[479:448]}}; - -endmodule //FloatvAddFloatv_FloatvAddFloatv_Pipeline_cc diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1.v deleted file mode 100644 index 97ee3100..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1.v +++ /dev/null @@ -1,76 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1ns/1ps - -module FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1 -#(parameter - ID = 1, - NUM_STAGE = 3, - din0_WIDTH = 32, - din1_WIDTH = 32, - dout_WIDTH = 32 -)( - input wire clk, - input wire reset, - input wire ce, - input wire [din0_WIDTH-1:0] din0, - input wire [din1_WIDTH-1:0] din1, - output wire [dout_WIDTH-1:0] dout -); -//------------------------Local signal------------------- -wire aclk; -wire aclken; -wire a_tvalid; -wire [31:0] a_tdata; -wire b_tvalid; -wire [31:0] b_tdata; -wire r_tvalid; -wire [31:0] r_tdata; -reg [din0_WIDTH-1:0] din0_buf1; -reg [din1_WIDTH-1:0] din1_buf1; -reg ce_r; -wire [dout_WIDTH-1:0] dout_i; -reg [dout_WIDTH-1:0] dout_r; -//------------------------Instantiation------------------ -FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1_ip FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1_ip_u ( - .aclk ( aclk ), - .aclken ( aclken ), - .s_axis_a_tvalid ( a_tvalid ), - .s_axis_a_tdata ( a_tdata ), - .s_axis_b_tvalid ( b_tvalid ), - .s_axis_b_tdata ( b_tdata ), - .m_axis_result_tvalid ( r_tvalid ), - .m_axis_result_tdata ( r_tdata ) -); -//------------------------Body--------------------------- -assign aclk = clk; -assign aclken = ce_r; -assign a_tvalid = 1'b1; -assign a_tdata = din0_buf1; -assign b_tvalid = 1'b1; -assign b_tdata = din1_buf1; -assign dout_i = r_tdata; - -always @(posedge clk) begin - if (ce) begin - din0_buf1 <= din0; - din1_buf1 <= din1; - end -end - -always @ (posedge clk) begin - ce_r <= ce; -end - -always @ (posedge clk) begin - if (ce_r) begin - dout_r <= dout_i; - end -end - -assign dout = ce_r?dout_i:dout_r; -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1_ip.tcl b/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1_ip.tcl deleted file mode 100644 index 0be3ee19..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1_ip.tcl +++ /dev/null @@ -1,45 +0,0 @@ -# BEGIN Vivado Commands -set vivado_ver [version -short] -set fpo_ver 7.1 -if {[regexp -nocase {2015\.1.*} $vivado_ver match]} { - set fpo_ver 7.0 -} -create_ip -name floating_point -version $fpo_ver -vendor xilinx.com -library ip -module_name FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1_ip -# BEGIN Vivado Commands -# BEGIN Vivado Parameters -set_property -dict [list CONFIG.a_precision_type Single \ - CONFIG.a_tuser_width 1 \ - CONFIG.add_sub_value Add \ - CONFIG.b_tuser_width 1 \ - CONFIG.c_a_exponent_width 8 \ - CONFIG.c_a_fraction_width 24 \ - CONFIG.c_compare_operation Programmable \ - CONFIG.c_has_divide_by_zero false \ - CONFIG.c_has_invalid_op false \ - CONFIG.c_has_overflow false \ - CONFIG.c_has_underflow false \ - CONFIG.c_latency 5 \ - CONFIG.c_mult_usage Full_Usage \ - CONFIG.c_optimization Speed_Optimized \ - CONFIG.c_rate 1 \ - CONFIG.c_result_exponent_width 8 \ - CONFIG.c_result_fraction_width 24 \ - CONFIG.component_name FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1_ip \ - CONFIG.flow_control NonBlocking \ - CONFIG.has_a_tlast false \ - CONFIG.has_a_tuser false \ - CONFIG.has_aclken true \ - CONFIG.has_aresetn false \ - CONFIG.has_b_tlast false \ - CONFIG.has_b_tuser false \ - CONFIG.has_operation_tlast false \ - CONFIG.has_operation_tuser false \ - CONFIG.has_result_tready false \ - CONFIG.maximum_latency false \ - CONFIG.operation_tuser_width 1 \ - CONFIG.operation_type Add_Subtract \ - CONFIG.result_precision_type Single \ - CONFIG.result_tlast_behv Null] -objects [get_ips FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1_ip] -quiet -# END Vivado Parameters -set_property generate_synth_checkpoint false [get_files FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1_ip.xci] -generate_target {synthesis simulation} [get_files FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1_ip.xci] diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst.v deleted file mode 100644 index f9be348e..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst.v +++ /dev/null @@ -1,360 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -(* CORE_GENERATION_INFO="FloatvMultConst_FloatvMultConst,hls_ip_2022_2,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xcu280-fsvh2892-2L-e,HLS_INPUT_CLOCK=3.330000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=2.461450,HLS_SYN_LAT=-1,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=3704,HLS_SYN_LUT=1602,HLS_VERSION=2022_2}" *) - -module FloatvMultConst ( - ap_clk, - ap_rst_n, - ap_start, - ap_done, - ap_idle, - ap_ready, - alpha_u, - M, - P_N, - fifo_in_s_dout, - fifo_in_s_empty_n, - fifo_in_s_read, - fifo_in_peek_dout, - fifo_in_peek_empty_n, - fifo_in_peek_read, - fifo_out_din, - fifo_out_full_n, - fifo_out_write -); - -parameter ap_ST_fsm_state1 = 8'd1; -parameter ap_ST_fsm_state2 = 8'd2; -parameter ap_ST_fsm_state3 = 8'd4; -parameter ap_ST_fsm_state4 = 8'd8; -parameter ap_ST_fsm_state5 = 8'd16; -parameter ap_ST_fsm_state6 = 8'd32; -parameter ap_ST_fsm_state7 = 8'd64; -parameter ap_ST_fsm_state8 = 8'd128; - -input ap_clk; -input ap_rst_n; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [31:0] alpha_u; -input [31:0] M; -input [31:0] P_N; -input [512:0] fifo_in_s_dout; -input fifo_in_s_empty_n; -output fifo_in_s_read; -input [512:0] fifo_in_peek_dout; -input fifo_in_peek_empty_n; -output fifo_in_peek_read; -output [512:0] fifo_out_din; -input fifo_out_full_n; -output fifo_out_write; - -reg ap_done; -reg ap_idle; -reg ap_ready; -reg fifo_in_s_read; -reg fifo_out_write; - - reg ap_rst_n_inv; -(* fsm_encoding = "none" *) reg [7:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -reg [13:0] lshr_ln_reg_216; -wire signed [31:0] grp_fu_200_p2; -reg signed [31:0] mul_ln88_reg_221; -wire ap_CS_fsm_state4; -wire ap_CS_fsm_state5; -wire ap_CS_fsm_state6; -wire [31:0] grp_fu_191_p2; -reg [31:0] num_ite_reg_236; -wire [31:0] empty_86_fu_196_p1; -reg [31:0] empty_86_reg_241; -wire ap_CS_fsm_state7; -wire grp_FloatvMultConst_Pipeline_cc_fu_106_ap_start; -wire grp_FloatvMultConst_Pipeline_cc_fu_106_ap_done; -wire grp_FloatvMultConst_Pipeline_cc_fu_106_ap_idle; -wire grp_FloatvMultConst_Pipeline_cc_fu_106_ap_ready; -wire [512:0] grp_FloatvMultConst_Pipeline_cc_fu_106_fifo_out_din; -wire grp_FloatvMultConst_Pipeline_cc_fu_106_fifo_out_write; -wire grp_FloatvMultConst_Pipeline_cc_fu_106_fifo_in_s_read; -reg grp_FloatvMultConst_Pipeline_cc_fu_106_ap_start_reg; -wire ap_CS_fsm_state8; -wire [15:0] N16_fu_120_p4; -wire [0:0] icmp_ln86_fu_130_p2; -wire signed [15:0] rp_time_fu_136_p3; -wire [15:0] N_fu_116_p1; -wire [31:0] add_ln88_fu_152_p2; -wire signed [27:0] trunc_ln_fu_158_p4; -wire [16:0] zext_ln87_fu_148_p1; -wire [16:0] add_ln88_1_fu_172_p2; -wire [13:0] grp_fu_191_p1; -reg [7:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -wire ap_ST_fsm_state2_blk; -wire ap_ST_fsm_state3_blk; -wire ap_ST_fsm_state4_blk; -wire ap_ST_fsm_state5_blk; -wire ap_ST_fsm_state6_blk; -wire ap_ST_fsm_state7_blk; -reg ap_ST_fsm_state8_blk; -wire [31:0] grp_fu_191_p10; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 8'd1; -#0 grp_FloatvMultConst_Pipeline_cc_fu_106_ap_start_reg = 1'b0; -end - -FloatvMultConst_FloatvMultConst_Pipeline_cc grp_FloatvMultConst_Pipeline_cc_fu_106( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_FloatvMultConst_Pipeline_cc_fu_106_ap_start), - .ap_done(grp_FloatvMultConst_Pipeline_cc_fu_106_ap_done), - .ap_idle(grp_FloatvMultConst_Pipeline_cc_fu_106_ap_idle), - .ap_ready(grp_FloatvMultConst_Pipeline_cc_fu_106_ap_ready), - .fifo_out_din(grp_FloatvMultConst_Pipeline_cc_fu_106_fifo_out_din), - .fifo_out_full_n(fifo_out_full_n), - .fifo_out_write(grp_FloatvMultConst_Pipeline_cc_fu_106_fifo_out_write), - .num_ite(num_ite_reg_236), - .fifo_in_s_dout(fifo_in_s_dout), - .fifo_in_s_empty_n(fifo_in_s_empty_n), - .fifo_in_s_read(grp_FloatvMultConst_Pipeline_cc_fu_106_fifo_in_s_read), - .empty(empty_86_reg_241) -); - -FloatvMultConst_mul_32s_14ns_32_2_1 #( - .ID( 1 ), - .NUM_STAGE( 2 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 14 ), - .dout_WIDTH( 32 )) -mul_32s_14ns_32_2_1_U22( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .din0(mul_ln88_reg_221), - .din1(grp_fu_191_p1), - .ce(1'b1), - .dout(grp_fu_191_p2) -); - -FloatvMultConst_mul_mul_16s_28s_32_4_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 16 ), - .din1_WIDTH( 28 ), - .dout_WIDTH( 32 )) -mul_mul_16s_28s_32_4_1_U23( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .din0(rp_time_fu_136_p3), - .din1(trunc_ln_fu_158_p4), - .ce(1'b1), - .dout(grp_fu_200_p2) -); - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_FloatvMultConst_Pipeline_cc_fu_106_ap_start_reg <= 1'b0; - end else begin - if ((1'b1 == ap_CS_fsm_state7)) begin - grp_FloatvMultConst_Pipeline_cc_fu_106_ap_start_reg <= 1'b1; - end else if ((grp_FloatvMultConst_Pipeline_cc_fu_106_ap_ready == 1'b1)) begin - grp_FloatvMultConst_Pipeline_cc_fu_106_ap_start_reg <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state7)) begin - empty_86_reg_241 <= empty_86_fu_196_p1; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state1)) begin - lshr_ln_reg_216 <= {{add_ln88_1_fu_172_p2[16:3]}}; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state4)) begin - mul_ln88_reg_221 <= grp_fu_200_p2; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state6)) begin - num_ite_reg_236 <= grp_fu_191_p2; - end -end - -always @ (*) begin - if ((ap_start == 1'b0)) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -assign ap_ST_fsm_state2_blk = 1'b0; - -assign ap_ST_fsm_state3_blk = 1'b0; - -assign ap_ST_fsm_state4_blk = 1'b0; - -assign ap_ST_fsm_state5_blk = 1'b0; - -assign ap_ST_fsm_state6_blk = 1'b0; - -assign ap_ST_fsm_state7_blk = 1'b0; - -always @ (*) begin - if ((grp_FloatvMultConst_Pipeline_cc_fu_106_ap_done == 1'b0)) begin - ap_ST_fsm_state8_blk = 1'b1; - end else begin - ap_ST_fsm_state8_blk = 1'b0; - end -end - -always @ (*) begin - if (((grp_FloatvMultConst_Pipeline_cc_fu_106_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state8))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((grp_FloatvMultConst_Pipeline_cc_fu_106_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state8))) begin - ap_ready = 1'b1; - end else begin - ap_ready = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state8)) begin - fifo_in_s_read = grp_FloatvMultConst_Pipeline_cc_fu_106_fifo_in_s_read; - end else begin - fifo_in_s_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state8)) begin - fifo_out_write = grp_FloatvMultConst_Pipeline_cc_fu_106_fifo_out_write; - end else begin - fifo_out_write = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - ap_NS_fsm = ap_ST_fsm_state3; - end - ap_ST_fsm_state3 : begin - ap_NS_fsm = ap_ST_fsm_state4; - end - ap_ST_fsm_state4 : begin - ap_NS_fsm = ap_ST_fsm_state5; - end - ap_ST_fsm_state5 : begin - ap_NS_fsm = ap_ST_fsm_state6; - end - ap_ST_fsm_state6 : begin - ap_NS_fsm = ap_ST_fsm_state7; - end - ap_ST_fsm_state7 : begin - ap_NS_fsm = ap_ST_fsm_state8; - end - ap_ST_fsm_state8 : begin - if (((grp_FloatvMultConst_Pipeline_cc_fu_106_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state8))) begin - ap_NS_fsm = ap_ST_fsm_state1; - end else begin - ap_NS_fsm = ap_ST_fsm_state8; - end - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign N16_fu_120_p4 = {{P_N[31:16]}}; - -assign N_fu_116_p1 = P_N[15:0]; - -assign add_ln88_1_fu_172_p2 = (zext_ln87_fu_148_p1 + 17'd7); - -assign add_ln88_fu_152_p2 = (M + 32'd15); - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state4 = ap_CS_fsm[32'd3]; - -assign ap_CS_fsm_state5 = ap_CS_fsm[32'd4]; - -assign ap_CS_fsm_state6 = ap_CS_fsm[32'd5]; - -assign ap_CS_fsm_state7 = ap_CS_fsm[32'd6]; - -assign ap_CS_fsm_state8 = ap_CS_fsm[32'd7]; - -always @ (*) begin - ap_rst_n_inv = ~ap_rst_n; -end - -assign empty_86_fu_196_p1 = alpha_u; - -assign fifo_in_peek_read = 1'b0; - -assign fifo_out_din = grp_FloatvMultConst_Pipeline_cc_fu_106_fifo_out_din; - -assign grp_FloatvMultConst_Pipeline_cc_fu_106_ap_start = grp_FloatvMultConst_Pipeline_cc_fu_106_ap_start_reg; - -assign grp_fu_191_p1 = grp_fu_191_p10; - -assign grp_fu_191_p10 = lshr_ln_reg_216; - -assign icmp_ln86_fu_130_p2 = ((N16_fu_120_p4 == 16'd0) ? 1'b1 : 1'b0); - -assign rp_time_fu_136_p3 = ((icmp_ln86_fu_130_p2[0:0] == 1'b1) ? 16'd1 : N16_fu_120_p4); - -assign trunc_ln_fu_158_p4 = {{add_ln88_fu_152_p2[31:4]}}; - -assign zext_ln87_fu_148_p1 = N_fu_116_p1; - -endmodule //FloatvMultConst diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_FloatvMultConst_Pipeline_cc.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_FloatvMultConst_Pipeline_cc.v deleted file mode 100644 index bb956c4e..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_FloatvMultConst_Pipeline_cc.v +++ /dev/null @@ -1,934 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module FloatvMultConst_FloatvMultConst_Pipeline_cc ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - fifo_out_din, - fifo_out_full_n, - fifo_out_write, - num_ite, - fifo_in_s_dout, - fifo_in_s_empty_n, - fifo_in_s_read, - empty -); - -parameter ap_ST_fsm_pp0_stage0 = 1'd1; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -output [512:0] fifo_out_din; -input fifo_out_full_n; -output fifo_out_write; -input [31:0] num_ite; -input [512:0] fifo_in_s_dout; -input fifo_in_s_empty_n; -output fifo_in_s_read; -input [31:0] empty; - -reg ap_idle; -reg fifo_out_write; -reg fifo_in_s_read; - -(* fsm_encoding = "none" *) reg [0:0] ap_CS_fsm; -wire ap_CS_fsm_pp0_stage0; -wire ap_enable_reg_pp0_iter0; -reg ap_enable_reg_pp0_iter1; -reg ap_enable_reg_pp0_iter2; -reg ap_enable_reg_pp0_iter3; -reg ap_enable_reg_pp0_iter4; -reg ap_enable_reg_pp0_iter5; -reg ap_idle_pp0; -wire ap_block_state1_pp0_stage0_iter0; -wire ap_block_state2_pp0_stage0_iter1; -wire ap_block_state3_pp0_stage0_iter2; -wire ap_block_state4_pp0_stage0_iter3; -wire ap_block_state5_pp0_stage0_iter4; -reg [0:0] p_vld_reg_562; -reg [0:0] p_vld_reg_562_pp0_iter4_reg; -reg ap_block_state6_pp0_stage0_iter5; -reg ap_block_pp0_stage0_subdone; -wire [0:0] icmp_ln90_fu_201_p2; -reg ap_condition_exit_pp0_iter0_stage0; -wire ap_loop_exit_ready; -reg ap_ready_int; -reg fifo_out_blk_n; -wire ap_block_pp0_stage0; -reg ap_block_pp0_stage0_11001; -wire [0:0] p_vld_fu_207_p1; -reg [0:0] p_vld_reg_562_pp0_iter1_reg; -reg [0:0] p_vld_reg_562_pp0_iter2_reg; -reg [0:0] p_vld_reg_562_pp0_iter3_reg; -wire [31:0] trunc_ln78_fu_215_p1; -reg [31:0] trunc_ln78_reg_566; -reg [31:0] tmp_reg_571; -reg [31:0] trunc_ln1_reg_576; -reg [31:0] trunc_ln78_2_reg_581; -reg [31:0] tmp_1_reg_586; -reg [31:0] tmp_2_reg_591; -reg [31:0] tmp_3_reg_596; -reg [31:0] tmp_4_reg_601; -reg [31:0] tmp_5_reg_606; -reg [31:0] tmp_6_reg_611; -reg [31:0] tmp_7_reg_616; -reg [31:0] tmp_8_reg_621; -reg [31:0] tmp_9_reg_626; -reg [31:0] tmp_s_reg_631; -reg [31:0] tmp_10_reg_636; -reg [31:0] tmp_11_reg_641; -wire [31:0] grp_fu_129_p2; -reg [31:0] mul_i_reg_726; -wire [31:0] grp_fu_133_p2; -reg [31:0] mul_i_1_reg_731; -wire [31:0] grp_fu_137_p2; -reg [31:0] mul_i_2_reg_736; -wire [31:0] grp_fu_141_p2; -reg [31:0] mul_i_3_reg_741; -wire [31:0] grp_fu_145_p2; -reg [31:0] mul_i_4_reg_746; -wire [31:0] grp_fu_149_p2; -reg [31:0] mul_i_5_reg_751; -wire [31:0] grp_fu_153_p2; -reg [31:0] mul_i_6_reg_756; -wire [31:0] grp_fu_157_p2; -reg [31:0] mul_i_7_reg_761; -wire [31:0] grp_fu_161_p2; -reg [31:0] mul_i_8_reg_766; -wire [31:0] grp_fu_165_p2; -reg [31:0] mul_i_9_reg_771; -wire [31:0] grp_fu_169_p2; -reg [31:0] mul_i_s_reg_776; -wire [31:0] grp_fu_173_p2; -reg [31:0] mul_i_10_reg_781; -wire [31:0] grp_fu_177_p2; -reg [31:0] mul_i_11_reg_786; -wire [31:0] grp_fu_181_p2; -reg [31:0] mul_i_12_reg_791; -wire [31:0] grp_fu_185_p2; -reg [31:0] mul_i_13_reg_796; -wire [31:0] grp_fu_189_p2; -reg [31:0] mul_i_14_reg_801; -reg [31:0] i_fu_100; -wire [31:0] i_2_fu_369_p2; -wire ap_loop_init; -reg [31:0] ap_sig_allocacmp_i_1; -wire [0:0] fifo_in_s_read_nbread_fu_116_p2_0; -reg ap_block_pp0_stage0_01001; -wire [31:0] grp_fu_129_p0; -wire [31:0] grp_fu_133_p0; -wire [31:0] grp_fu_137_p0; -wire [31:0] grp_fu_141_p0; -wire [31:0] grp_fu_145_p0; -wire [31:0] grp_fu_149_p0; -wire [31:0] grp_fu_153_p0; -wire [31:0] grp_fu_157_p0; -wire [31:0] grp_fu_161_p0; -wire [31:0] grp_fu_165_p0; -wire [31:0] grp_fu_169_p0; -wire [31:0] grp_fu_173_p0; -wire [31:0] grp_fu_177_p0; -wire [31:0] grp_fu_181_p0; -wire [31:0] grp_fu_185_p0; -wire [31:0] grp_fu_189_p0; -wire [31:0] bitcast_ln151_15_fu_489_p1; -wire [31:0] bitcast_ln151_14_fu_486_p1; -wire [31:0] bitcast_ln151_13_fu_483_p1; -wire [31:0] bitcast_ln151_12_fu_480_p1; -wire [31:0] bitcast_ln151_11_fu_477_p1; -wire [31:0] bitcast_ln151_10_fu_474_p1; -wire [31:0] bitcast_ln151_9_fu_471_p1; -wire [31:0] bitcast_ln151_8_fu_468_p1; -wire [31:0] bitcast_ln151_7_fu_465_p1; -wire [31:0] bitcast_ln151_6_fu_462_p1; -wire [31:0] bitcast_ln151_5_fu_459_p1; -wire [31:0] bitcast_ln151_4_fu_456_p1; -wire [31:0] bitcast_ln151_3_fu_453_p1; -wire [31:0] bitcast_ln151_2_fu_450_p1; -wire [31:0] bitcast_ln151_1_fu_447_p1; -wire [31:0] bitcast_ln151_fu_444_p1; -reg grp_fu_129_ce; -reg grp_fu_133_ce; -reg grp_fu_137_ce; -reg grp_fu_141_ce; -reg grp_fu_145_ce; -reg grp_fu_149_ce; -reg grp_fu_153_ce; -reg grp_fu_157_ce; -reg grp_fu_161_ce; -reg grp_fu_165_ce; -reg grp_fu_169_ce; -reg grp_fu_173_ce; -reg grp_fu_177_ce; -reg grp_fu_181_ce; -reg grp_fu_185_ce; -reg grp_fu_189_ce; -reg ap_done_reg; -wire ap_continue_int; -reg ap_done_int; -reg ap_loop_exit_ready_pp0_iter1_reg; -reg ap_loop_exit_ready_pp0_iter2_reg; -reg ap_loop_exit_ready_pp0_iter3_reg; -reg ap_loop_exit_ready_pp0_iter4_reg; -reg [0:0] ap_NS_fsm; -wire ap_enable_pp0; -wire ap_start_int; -reg ap_condition_622; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 1'd1; -#0 ap_enable_reg_pp0_iter1 = 1'b0; -#0 ap_enable_reg_pp0_iter2 = 1'b0; -#0 ap_enable_reg_pp0_iter3 = 1'b0; -#0 ap_enable_reg_pp0_iter4 = 1'b0; -#0 ap_enable_reg_pp0_iter5 = 1'b0; -#0 ap_done_reg = 1'b0; -end - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U1( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_129_p0), - .din1(empty), - .ce(grp_fu_129_ce), - .dout(grp_fu_129_p2) -); - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U2( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_133_p0), - .din1(empty), - .ce(grp_fu_133_ce), - .dout(grp_fu_133_p2) -); - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U3( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_137_p0), - .din1(empty), - .ce(grp_fu_137_ce), - .dout(grp_fu_137_p2) -); - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U4( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_141_p0), - .din1(empty), - .ce(grp_fu_141_ce), - .dout(grp_fu_141_p2) -); - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U5( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_145_p0), - .din1(empty), - .ce(grp_fu_145_ce), - .dout(grp_fu_145_p2) -); - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U6( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_149_p0), - .din1(empty), - .ce(grp_fu_149_ce), - .dout(grp_fu_149_p2) -); - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U7( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_153_p0), - .din1(empty), - .ce(grp_fu_153_ce), - .dout(grp_fu_153_p2) -); - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U8( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_157_p0), - .din1(empty), - .ce(grp_fu_157_ce), - .dout(grp_fu_157_p2) -); - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U9( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_161_p0), - .din1(empty), - .ce(grp_fu_161_ce), - .dout(grp_fu_161_p2) -); - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U10( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_165_p0), - .din1(empty), - .ce(grp_fu_165_ce), - .dout(grp_fu_165_p2) -); - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U11( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_169_p0), - .din1(empty), - .ce(grp_fu_169_ce), - .dout(grp_fu_169_p2) -); - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U12( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_173_p0), - .din1(empty), - .ce(grp_fu_173_ce), - .dout(grp_fu_173_p2) -); - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U13( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_177_p0), - .din1(empty), - .ce(grp_fu_177_ce), - .dout(grp_fu_177_p2) -); - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U14( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_181_p0), - .din1(empty), - .ce(grp_fu_181_ce), - .dout(grp_fu_181_p2) -); - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U15( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_185_p0), - .din1(empty), - .ce(grp_fu_185_ce), - .dout(grp_fu_185_p2) -); - -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U16( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_189_p0), - .din1(empty), - .ce(grp_fu_189_ce), - .dout(grp_fu_189_p2) -); - -FloatvMultConst_flow_control_loop_pipe_sequential_init flow_control_loop_pipe_sequential_init_U( - .ap_clk(ap_clk), - .ap_rst(ap_rst), - .ap_start(ap_start), - .ap_ready(ap_ready), - .ap_done(ap_done), - .ap_start_int(ap_start_int), - .ap_loop_init(ap_loop_init), - .ap_ready_int(ap_ready_int), - .ap_loop_exit_ready(ap_condition_exit_pp0_iter0_stage0), - .ap_loop_exit_done(ap_done_int), - .ap_continue_int(ap_continue_int), - .ap_done_int(ap_done_int) -); - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_pp0_stage0; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_done_reg <= 1'b0; - end else begin - if ((ap_continue_int == 1'b1)) begin - ap_done_reg <= 1'b0; - end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_loop_exit_ready_pp0_iter4_reg == 1'b1))) begin - ap_done_reg <= 1'b1; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else begin - if ((1'b1 == ap_condition_exit_pp0_iter0_stage0)) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_enable_reg_pp0_iter1 <= ap_start_int; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter2 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter2 <= ap_enable_reg_pp0_iter1; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter3 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter3 <= ap_enable_reg_pp0_iter2; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter4 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter4 <= ap_enable_reg_pp0_iter3; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter5 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter5 <= ap_enable_reg_pp0_iter4; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if ((1'b1 == ap_condition_622)) begin - i_fu_100 <= i_2_fu_369_p2; - end else if ((ap_loop_init == 1'b1)) begin - i_fu_100 <= 32'd0; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_loop_exit_ready_pp0_iter1_reg <= ap_loop_exit_ready; - ap_loop_exit_ready_pp0_iter2_reg <= ap_loop_exit_ready_pp0_iter1_reg; - p_vld_reg_562_pp0_iter1_reg <= p_vld_reg_562; - end -end - -always @ (posedge ap_clk) begin - if ((1'b0 == ap_block_pp0_stage0_11001)) begin - ap_loop_exit_ready_pp0_iter3_reg <= ap_loop_exit_ready_pp0_iter2_reg; - ap_loop_exit_ready_pp0_iter4_reg <= ap_loop_exit_ready_pp0_iter3_reg; - p_vld_reg_562_pp0_iter2_reg <= p_vld_reg_562_pp0_iter1_reg; - p_vld_reg_562_pp0_iter3_reg <= p_vld_reg_562_pp0_iter2_reg; - p_vld_reg_562_pp0_iter4_reg <= p_vld_reg_562_pp0_iter3_reg; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_vld_reg_562_pp0_iter3_reg == 1'd1))) begin - mul_i_10_reg_781 <= grp_fu_173_p2; - mul_i_11_reg_786 <= grp_fu_177_p2; - mul_i_12_reg_791 <= grp_fu_181_p2; - mul_i_13_reg_796 <= grp_fu_185_p2; - mul_i_14_reg_801 <= grp_fu_189_p2; - mul_i_1_reg_731 <= grp_fu_133_p2; - mul_i_2_reg_736 <= grp_fu_137_p2; - mul_i_3_reg_741 <= grp_fu_141_p2; - mul_i_4_reg_746 <= grp_fu_145_p2; - mul_i_5_reg_751 <= grp_fu_149_p2; - mul_i_6_reg_756 <= grp_fu_153_p2; - mul_i_7_reg_761 <= grp_fu_157_p2; - mul_i_8_reg_766 <= grp_fu_161_p2; - mul_i_9_reg_771 <= grp_fu_165_p2; - mul_i_reg_726 <= grp_fu_129_p2; - mul_i_s_reg_776 <= grp_fu_169_p2; - end -end - -always @ (posedge ap_clk) begin - if (((icmp_ln90_fu_201_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - p_vld_reg_562 <= fifo_in_s_read_nbread_fu_116_p2_0; - tmp_reg_571 <= {{fifo_in_s_dout[447:416]}}; - trunc_ln1_reg_576 <= {{fifo_in_s_dout[479:448]}}; - trunc_ln78_2_reg_581 <= {{fifo_in_s_dout[511:480]}}; - trunc_ln78_reg_566 <= trunc_ln78_fu_215_p1; - end -end - -always @ (posedge ap_clk) begin - if (((icmp_ln90_fu_201_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0) & (p_vld_fu_207_p1 == 1'd1))) begin - tmp_10_reg_636 <= {{fifo_in_s_dout[383:352]}}; - tmp_11_reg_641 <= {{fifo_in_s_dout[415:384]}}; - tmp_1_reg_586 <= {{fifo_in_s_dout[63:32]}}; - tmp_2_reg_591 <= {{fifo_in_s_dout[95:64]}}; - tmp_3_reg_596 <= {{fifo_in_s_dout[127:96]}}; - tmp_4_reg_601 <= {{fifo_in_s_dout[159:128]}}; - tmp_5_reg_606 <= {{fifo_in_s_dout[191:160]}}; - tmp_6_reg_611 <= {{fifo_in_s_dout[223:192]}}; - tmp_7_reg_616 <= {{fifo_in_s_dout[255:224]}}; - tmp_8_reg_621 <= {{fifo_in_s_dout[287:256]}}; - tmp_9_reg_626 <= {{fifo_in_s_dout[319:288]}}; - tmp_s_reg_631 <= {{fifo_in_s_dout[351:320]}}; - end -end - -always @ (*) begin - if (((icmp_ln90_fu_201_p2 == 1'd0) & (1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_condition_exit_pp0_iter0_stage0 = 1'b1; - end else begin - ap_condition_exit_pp0_iter0_stage0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_loop_exit_ready_pp0_iter4_reg == 1'b1))) begin - ap_done_int = 1'b1; - end else begin - ap_done_int = ap_done_reg; - end -end - -always @ (*) begin - if (((ap_start_int == 1'b0) & (ap_idle_pp0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((ap_enable_reg_pp0_iter5 == 1'b0) & (ap_enable_reg_pp0_iter4 == 1'b0) & (ap_enable_reg_pp0_iter3 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0))) begin - ap_idle_pp0 = 1'b1; - end else begin - ap_idle_pp0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_ready_int = 1'b1; - end else begin - ap_ready_int = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0) & (ap_loop_init == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_sig_allocacmp_i_1 = 32'd0; - end else begin - ap_sig_allocacmp_i_1 = i_fu_100; - end -end - -always @ (*) begin - if (((fifo_in_s_empty_n == 1'b1) & (icmp_ln90_fu_201_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - fifo_in_s_read = 1'b1; - end else begin - fifo_in_s_read = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0) & (p_vld_reg_562_pp0_iter4_reg == 1'd1) & (ap_enable_reg_pp0_iter5 == 1'b1))) begin - fifo_out_blk_n = fifo_out_full_n; - end else begin - fifo_out_blk_n = 1'b1; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_vld_reg_562_pp0_iter4_reg == 1'd1) & (ap_enable_reg_pp0_iter5 == 1'b1))) begin - fifo_out_write = 1'b1; - end else begin - fifo_out_write = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_129_ce = 1'b1; - end else begin - grp_fu_129_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_133_ce = 1'b1; - end else begin - grp_fu_133_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_137_ce = 1'b1; - end else begin - grp_fu_137_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_141_ce = 1'b1; - end else begin - grp_fu_141_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_145_ce = 1'b1; - end else begin - grp_fu_145_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_149_ce = 1'b1; - end else begin - grp_fu_149_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_153_ce = 1'b1; - end else begin - grp_fu_153_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_157_ce = 1'b1; - end else begin - grp_fu_157_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_161_ce = 1'b1; - end else begin - grp_fu_161_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_165_ce = 1'b1; - end else begin - grp_fu_165_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_169_ce = 1'b1; - end else begin - grp_fu_169_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_173_ce = 1'b1; - end else begin - grp_fu_173_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_177_ce = 1'b1; - end else begin - grp_fu_177_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_181_ce = 1'b1; - end else begin - grp_fu_181_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_185_ce = 1'b1; - end else begin - grp_fu_185_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_189_ce = 1'b1; - end else begin - grp_fu_189_ce = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_pp0_stage0 : begin - ap_NS_fsm = ap_ST_fsm_pp0_stage0; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd0]; - -assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); - -always @ (*) begin - ap_block_pp0_stage0_01001 = ((p_vld_reg_562_pp0_iter4_reg == 1'd1) & (fifo_out_full_n == 1'b0) & (ap_enable_reg_pp0_iter5 == 1'b1)); -end - -always @ (*) begin - ap_block_pp0_stage0_11001 = ((p_vld_reg_562_pp0_iter4_reg == 1'd1) & (fifo_out_full_n == 1'b0) & (ap_enable_reg_pp0_iter5 == 1'b1)); -end - -always @ (*) begin - ap_block_pp0_stage0_subdone = ((p_vld_reg_562_pp0_iter4_reg == 1'd1) & (fifo_out_full_n == 1'b0) & (ap_enable_reg_pp0_iter5 == 1'b1)); -end - -assign ap_block_state1_pp0_stage0_iter0 = ~(1'b1 == 1'b1); - -assign ap_block_state2_pp0_stage0_iter1 = ~(1'b1 == 1'b1); - -assign ap_block_state3_pp0_stage0_iter2 = ~(1'b1 == 1'b1); - -assign ap_block_state4_pp0_stage0_iter3 = ~(1'b1 == 1'b1); - -assign ap_block_state5_pp0_stage0_iter4 = ~(1'b1 == 1'b1); - -always @ (*) begin - ap_block_state6_pp0_stage0_iter5 = ((p_vld_reg_562_pp0_iter4_reg == 1'd1) & (fifo_out_full_n == 1'b0)); -end - -always @ (*) begin - ap_condition_622 = ((icmp_ln90_fu_201_p2 == 1'd1) & (ap_enable_reg_pp0_iter0 == 1'b1) & (p_vld_fu_207_p1 == 1'd1)); -end - -assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); - -assign ap_enable_reg_pp0_iter0 = ap_start_int; - -assign ap_loop_exit_ready = ap_condition_exit_pp0_iter0_stage0; - -assign bitcast_ln151_10_fu_474_p1 = mul_i_s_reg_776; - -assign bitcast_ln151_11_fu_477_p1 = mul_i_10_reg_781; - -assign bitcast_ln151_12_fu_480_p1 = mul_i_11_reg_786; - -assign bitcast_ln151_13_fu_483_p1 = mul_i_12_reg_791; - -assign bitcast_ln151_14_fu_486_p1 = mul_i_13_reg_796; - -assign bitcast_ln151_15_fu_489_p1 = mul_i_14_reg_801; - -assign bitcast_ln151_1_fu_447_p1 = mul_i_1_reg_731; - -assign bitcast_ln151_2_fu_450_p1 = mul_i_2_reg_736; - -assign bitcast_ln151_3_fu_453_p1 = mul_i_3_reg_741; - -assign bitcast_ln151_4_fu_456_p1 = mul_i_4_reg_746; - -assign bitcast_ln151_5_fu_459_p1 = mul_i_5_reg_751; - -assign bitcast_ln151_6_fu_462_p1 = mul_i_6_reg_756; - -assign bitcast_ln151_7_fu_465_p1 = mul_i_7_reg_761; - -assign bitcast_ln151_8_fu_468_p1 = mul_i_8_reg_766; - -assign bitcast_ln151_9_fu_471_p1 = mul_i_9_reg_771; - -assign bitcast_ln151_fu_444_p1 = mul_i_reg_726; - -assign fifo_in_s_read_nbread_fu_116_p2_0 = fifo_in_s_empty_n; - -assign fifo_out_din = {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{1'd0}, {bitcast_ln151_15_fu_489_p1}}}, {bitcast_ln151_14_fu_486_p1}}}, {bitcast_ln151_13_fu_483_p1}}}, {bitcast_ln151_12_fu_480_p1}}}, {bitcast_ln151_11_fu_477_p1}}}, {bitcast_ln151_10_fu_474_p1}}}, {bitcast_ln151_9_fu_471_p1}}}, {bitcast_ln151_8_fu_468_p1}}}, {bitcast_ln151_7_fu_465_p1}}}, {bitcast_ln151_6_fu_462_p1}}}, {bitcast_ln151_5_fu_459_p1}}}, {bitcast_ln151_4_fu_456_p1}}}, {bitcast_ln151_3_fu_453_p1}}}, {bitcast_ln151_2_fu_450_p1}}}, {bitcast_ln151_1_fu_447_p1}}}, {bitcast_ln151_fu_444_p1}}; - -assign grp_fu_129_p0 = trunc_ln78_reg_566; - -assign grp_fu_133_p0 = tmp_1_reg_586; - -assign grp_fu_137_p0 = tmp_2_reg_591; - -assign grp_fu_141_p0 = tmp_3_reg_596; - -assign grp_fu_145_p0 = tmp_4_reg_601; - -assign grp_fu_149_p0 = tmp_5_reg_606; - -assign grp_fu_153_p0 = tmp_6_reg_611; - -assign grp_fu_157_p0 = tmp_7_reg_616; - -assign grp_fu_161_p0 = tmp_8_reg_621; - -assign grp_fu_165_p0 = tmp_9_reg_626; - -assign grp_fu_169_p0 = tmp_s_reg_631; - -assign grp_fu_173_p0 = tmp_10_reg_636; - -assign grp_fu_177_p0 = tmp_11_reg_641; - -assign grp_fu_181_p0 = tmp_reg_571; - -assign grp_fu_185_p0 = trunc_ln1_reg_576; - -assign grp_fu_189_p0 = trunc_ln78_2_reg_581; - -assign i_2_fu_369_p2 = (ap_sig_allocacmp_i_1 + 32'd1); - -assign icmp_ln90_fu_201_p2 = (($signed(ap_sig_allocacmp_i_1) < $signed(num_ite)) ? 1'b1 : 1'b0); - -assign p_vld_fu_207_p1 = fifo_in_s_read_nbread_fu_116_p2_0; - -assign trunc_ln78_fu_215_p1 = fifo_in_s_dout[31:0]; - -endmodule //FloatvMultConst_FloatvMultConst_Pipeline_cc diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_flow_control_loop_pipe_sequential_init.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_flow_control_loop_pipe_sequential_init.v deleted file mode 100644 index 48cebe90..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_flow_control_loop_pipe_sequential_init.v +++ /dev/null @@ -1,104 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Tool Version Limit: 2019.12 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1 ns / 1 ps - -module FloatvMultConst_flow_control_loop_pipe_sequential_init( - ap_clk, - ap_rst, - ap_start, - ap_ready, - ap_done, - ap_start_int, - ap_ready_int, - ap_done_int, - ap_continue_int, - ap_loop_init, - ap_loop_exit_ready, - ap_loop_exit_done -); - -input ap_clk; -input ap_rst; - -//Block level handshake with outside loop -input ap_start; -output ap_ready; -output ap_done; - -//Block level handshake with loop body -output ap_start_int; -input ap_ready_int; -input ap_done_int; -output ap_continue_int; - -//Init live in variables -output ap_loop_init; -wire ap_loop_init; -reg ap_loop_init_int; -reg ap_done; -reg ap_done_cache; - -//Exit signal from loop body -input ap_loop_exit_ready; -input ap_loop_exit_done; - -// power-on initialization -initial begin -#0 ap_loop_init_int = 1'b1; -#0 ap_done_cache = 1'b0; -end - -assign ap_start_int = ap_start; - -assign ap_continue_int = 1'b1; - -assign ap_ready = ap_loop_exit_ready; - -//ap_loop_init is valid for the first II -//of the first loop run so as to enable -//the init block ops which are pushed into -//the first state of the pipeline region -always @ (posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_loop_exit_done == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_ready_int == 1'b1) begin - ap_loop_init_int <= 1'b0; - end -end - -assign ap_loop_init = ap_loop_init_int & ap_start; - -// if no ap_continue port and current module is not top module, -// ap_done handshakes with ap_start. Internally, flow control sends out -// ap_conintue_int = 1'b1 so the ap_done_int is asserted high for 1 clock cycle. -// ap_done_cache is used to record ap_done_int, and de-assert if ap_start_int -// is asserted, so DUT can start the next run -always @(posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_done_cache <= 1'b0; - end else if (ap_done_int == 1'b1) begin - ap_done_cache <= 1'b1; - end else if (ap_start_int == 1'b1) begin - ap_done_cache <= 1'b0; - end -end - -// if no ap_continue port and current module is not top module, ap_done handshakes with ap_start -always @(*) -begin - if ((ap_done_int == 1'b1) || ((ap_done_cache == 1'b1) && (ap_start_int == 1'b0))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1.v deleted file mode 100644 index a379d041..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1.v +++ /dev/null @@ -1,76 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1ns/1ps - -module FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1 -#(parameter - ID = 1, - NUM_STAGE = 3, - din0_WIDTH = 32, - din1_WIDTH = 32, - dout_WIDTH = 32 -)( - input wire clk, - input wire reset, - input wire ce, - input wire [din0_WIDTH-1:0] din0, - input wire [din1_WIDTH-1:0] din1, - output wire [dout_WIDTH-1:0] dout -); -//------------------------Local signal------------------- -wire aclk; -wire aclken; -wire a_tvalid; -wire [31:0] a_tdata; -wire b_tvalid; -wire [31:0] b_tdata; -wire r_tvalid; -wire [31:0] r_tdata; -reg [din0_WIDTH-1:0] din0_buf1; -reg [din1_WIDTH-1:0] din1_buf1; -reg ce_r; -wire [dout_WIDTH-1:0] dout_i; -reg [dout_WIDTH-1:0] dout_r; -//------------------------Instantiation------------------ -FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1_ip FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1_ip_u ( - .aclk ( aclk ), - .aclken ( aclken ), - .s_axis_a_tvalid ( a_tvalid ), - .s_axis_a_tdata ( a_tdata ), - .s_axis_b_tvalid ( b_tvalid ), - .s_axis_b_tdata ( b_tdata ), - .m_axis_result_tvalid ( r_tvalid ), - .m_axis_result_tdata ( r_tdata ) -); -//------------------------Body--------------------------- -assign aclk = clk; -assign aclken = ce_r; -assign a_tvalid = 1'b1; -assign a_tdata = din0_buf1; -assign b_tvalid = 1'b1; -assign b_tdata = din1_buf1; -assign dout_i = r_tdata; - -always @(posedge clk) begin - if (ce) begin - din0_buf1 <= din0; - din1_buf1 <= din1; - end -end - -always @ (posedge clk) begin - ce_r <= ce; -end - -always @ (posedge clk) begin - if (ce_r) begin - dout_r <= dout_i; - end -end - -assign dout = ce_r?dout_i:dout_r; -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1_ip.tcl b/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1_ip.tcl deleted file mode 100644 index 533dd906..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1_ip.tcl +++ /dev/null @@ -1,45 +0,0 @@ -# BEGIN Vivado Commands -set vivado_ver [version -short] -set fpo_ver 7.1 -if {[regexp -nocase {2015\.1.*} $vivado_ver match]} { - set fpo_ver 7.0 -} -create_ip -name floating_point -version $fpo_ver -vendor xilinx.com -library ip -module_name FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1_ip -# BEGIN Vivado Commands -# BEGIN Vivado Parameters -set_property -dict [list CONFIG.a_precision_type Single \ - CONFIG.a_tuser_width 1 \ - CONFIG.add_sub_value Both \ - CONFIG.b_tuser_width 1 \ - CONFIG.c_a_exponent_width 8 \ - CONFIG.c_a_fraction_width 24 \ - CONFIG.c_compare_operation Programmable \ - CONFIG.c_has_divide_by_zero false \ - CONFIG.c_has_invalid_op false \ - CONFIG.c_has_overflow false \ - CONFIG.c_has_underflow false \ - CONFIG.c_latency 2 \ - CONFIG.c_mult_usage Max_Usage \ - CONFIG.c_optimization Speed_Optimized \ - CONFIG.c_rate 1 \ - CONFIG.c_result_exponent_width 8 \ - CONFIG.c_result_fraction_width 24 \ - CONFIG.component_name FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1_ip \ - CONFIG.flow_control NonBlocking \ - CONFIG.has_a_tlast false \ - CONFIG.has_a_tuser false \ - CONFIG.has_aclken true \ - CONFIG.has_aresetn false \ - CONFIG.has_b_tlast false \ - CONFIG.has_b_tuser false \ - CONFIG.has_operation_tlast false \ - CONFIG.has_operation_tuser false \ - CONFIG.has_result_tready false \ - CONFIG.maximum_latency false \ - CONFIG.operation_tuser_width 1 \ - CONFIG.operation_type Multiply \ - CONFIG.result_precision_type Single \ - CONFIG.result_tlast_behv Null] -objects [get_ips FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1_ip] -quiet -# END Vivado Parameters -set_property generate_synth_checkpoint false [get_files FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1_ip.xci] -generate_target {synthesis simulation} [get_files FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1_ip.xci] diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_mul_32s_14ns_32_2_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_mul_32s_14ns_32_2_1.v deleted file mode 100644 index 1afab8d0..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_mul_32s_14ns_32_2_1.v +++ /dev/null @@ -1,30 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1 ns / 1 ps - -module FloatvMultConst_mul_32s_14ns_32_2_1(clk, ce, reset, din0, din1, dout); -parameter ID = 1; -parameter NUM_STAGE = 1; -parameter din0_WIDTH = 14; -parameter din1_WIDTH = 12; -parameter dout_WIDTH = 26; -input clk; -input ce; -input reset; -input signed [din0_WIDTH - 1 : 0] din0; -input [din1_WIDTH - 1 : 0] din1; -output[dout_WIDTH - 1 : 0] dout; -reg signed [dout_WIDTH - 1 : 0] dout; -wire signed [dout_WIDTH - 1 : 0] tmp_product; - -assign tmp_product = $signed(din0) * $signed({1'b0, din1}); -always @ (posedge clk) begin - if (ce) begin - dout <= tmp_product; - end -end -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_mul_mul_16s_28s_32_4_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_mul_mul_16s_28s_32_4_1.v deleted file mode 100644 index 95ae7130..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/FloatvMultConst_mul_mul_16s_28s_32_4_1.v +++ /dev/null @@ -1,62 +0,0 @@ - -`timescale 1 ns / 1 ps - - module FloatvMultConst_mul_mul_16s_28s_32_4_1_DSP48_0(clk, rst, ce, a, b, p); -input clk; -input rst; -input ce; -input signed [16 - 1 : 0] a; -input signed [28 - 1 : 0] b; -output signed [32 - 1 : 0] p; - -reg signed [32 - 1 : 0] p_reg; - -reg signed [16 - 1 : 0] a_reg; -reg signed [28 - 1 : 0] b_reg; - -reg signed [32 - 1 : 0] p_reg_tmp; - -always @ (posedge clk) begin - if (ce) begin - a_reg <= a; - b_reg <= b; - p_reg_tmp <= a_reg * b_reg; - p_reg <= p_reg_tmp; - end -end - -assign p = p_reg; - -endmodule -`timescale 1 ns / 1 ps -module FloatvMultConst_mul_mul_16s_28s_32_4_1( - clk, - reset, - ce, - din0, - din1, - dout); - -parameter ID = 32'd1; -parameter NUM_STAGE = 32'd1; -parameter din0_WIDTH = 32'd1; -parameter din1_WIDTH = 32'd1; -parameter dout_WIDTH = 32'd1; -input clk; -input reset; -input ce; -input[din0_WIDTH - 1:0] din0; -input[din1_WIDTH - 1:0] din1; -output[dout_WIDTH - 1:0] dout; - - - -FloatvMultConst_mul_mul_16s_28s_32_4_1_DSP48_0 FloatvMultConst_mul_mul_16s_28s_32_4_1_DSP48_0_U( - .clk( clk ), - .rst( reset ), - .ce( ce ), - .a( din0 ), - .b( din1 ), - .p( dout )); - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/Merger.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/Merger.v deleted file mode 100644 index c568291c..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/Merger.v +++ /dev/null @@ -1,242 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -(* CORE_GENERATION_INFO="Merger_Merger,hls_ip_2022_2,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xcu280-fsvh2892-2L-e,HLS_INPUT_CLOCK=3.330000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=2.430900,HLS_SYN_LAT=-1,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=6,HLS_SYN_LUT=69,HLS_VERSION=2022_2}" *) - -module Merger ( - ap_clk, - ap_rst_n, - ap_start, - ap_done, - ap_idle, - ap_ready, - fifo_in_0_dout, - fifo_in_0_empty_n, - fifo_in_0_read, - fifo_in_1_dout, - fifo_in_1_empty_n, - fifo_in_1_read, - fifo_in_peek_0_dout, - fifo_in_peek_0_empty_n, - fifo_in_peek_0_read, - fifo_in_peek_1_dout, - fifo_in_peek_1_empty_n, - fifo_in_peek_1_read, - fifo_out_din, - fifo_out_full_n, - fifo_out_write -); - -parameter ap_ST_fsm_state1 = 3'd1; -parameter ap_ST_fsm_state2 = 3'd2; -parameter ap_ST_fsm_state3 = 3'd4; - -input ap_clk; -input ap_rst_n; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [256:0] fifo_in_0_dout; -input fifo_in_0_empty_n; -output fifo_in_0_read; -input [256:0] fifo_in_1_dout; -input fifo_in_1_empty_n; -output fifo_in_1_read; -input [256:0] fifo_in_peek_0_dout; -input fifo_in_peek_0_empty_n; -output fifo_in_peek_0_read; -input [256:0] fifo_in_peek_1_dout; -input fifo_in_peek_1_empty_n; -output fifo_in_peek_1_read; -output [512:0] fifo_out_din; -input fifo_out_full_n; -output fifo_out_write; - -reg ap_done; -reg ap_idle; -reg ap_ready; -reg fifo_in_0_read; -reg fifo_in_1_read; -reg fifo_out_write; - - reg ap_rst_n_inv; -(* fsm_encoding = "none" *) reg [2:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -wire grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_start; -wire grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_done; -wire grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_idle; -wire grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_ready; -wire [512:0] grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_fifo_out_din; -wire grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_fifo_out_write; -wire grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_fifo_in_0_read; -wire grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_fifo_in_1_read; -reg grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_start_reg; -wire ap_CS_fsm_state2; -wire ap_CS_fsm_state3; -reg [2:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -wire ap_ST_fsm_state2_blk; -reg ap_ST_fsm_state3_blk; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 3'd1; -#0 grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_start_reg = 1'b0; -end - -Merger_Merger_Pipeline_VITIS_LOOP_410_1 grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_start), - .ap_done(grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_done), - .ap_idle(grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_idle), - .ap_ready(grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_ready), - .fifo_out_din(grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_fifo_out_din), - .fifo_out_full_n(fifo_out_full_n), - .fifo_out_write(grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_fifo_out_write), - .fifo_in_0_dout(fifo_in_0_dout), - .fifo_in_0_empty_n(fifo_in_0_empty_n), - .fifo_in_0_read(grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_fifo_in_0_read), - .fifo_in_1_dout(fifo_in_1_dout), - .fifo_in_1_empty_n(fifo_in_1_empty_n), - .fifo_in_1_read(grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_fifo_in_1_read) -); - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_start_reg <= 1'b0; - end else begin - if ((1'b1 == ap_CS_fsm_state2)) begin - grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_start_reg <= 1'b1; - end else if ((grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_ready == 1'b1)) begin - grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_start_reg <= 1'b0; - end - end -end - -always @ (*) begin - if ((ap_start == 1'b0)) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -assign ap_ST_fsm_state2_blk = 1'b0; - -always @ (*) begin - if ((grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_done == 1'b0)) begin - ap_ST_fsm_state3_blk = 1'b1; - end else begin - ap_ST_fsm_state3_blk = 1'b0; - end -end - -always @ (*) begin - if (((grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin - ap_ready = 1'b1; - end else begin - ap_ready = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state3)) begin - fifo_in_0_read = grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_fifo_in_0_read; - end else begin - fifo_in_0_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state3)) begin - fifo_in_1_read = grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_fifo_in_1_read; - end else begin - fifo_in_1_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state3)) begin - fifo_out_write = grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_fifo_out_write; - end else begin - fifo_out_write = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - ap_NS_fsm = ap_ST_fsm_state3; - end - ap_ST_fsm_state3 : begin - if (((grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin - ap_NS_fsm = ap_ST_fsm_state1; - end else begin - ap_NS_fsm = ap_ST_fsm_state3; - end - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; - -assign ap_CS_fsm_state3 = ap_CS_fsm[32'd2]; - -always @ (*) begin - ap_rst_n_inv = ~ap_rst_n; -end - -assign fifo_in_peek_0_read = 1'b0; - -assign fifo_in_peek_1_read = 1'b0; - -assign fifo_out_din = grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_fifo_out_din; - -assign grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_start = grp_Merger_Pipeline_VITIS_LOOP_410_1_fu_76_ap_start_reg; - -endmodule //Merger diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/Merger_Merger_Pipeline_VITIS_LOOP_410_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/Merger_Merger_Pipeline_VITIS_LOOP_410_1.v deleted file mode 100644 index 1494cf80..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/Merger_Merger_Pipeline_VITIS_LOOP_410_1.v +++ /dev/null @@ -1,201 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module Merger_Merger_Pipeline_VITIS_LOOP_410_1 ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - fifo_out_din, - fifo_out_full_n, - fifo_out_write, - fifo_in_0_dout, - fifo_in_0_empty_n, - fifo_in_0_read, - fifo_in_1_dout, - fifo_in_1_empty_n, - fifo_in_1_read -); - -parameter ap_ST_fsm_state1 = 2'd1; -parameter ap_ST_fsm_state2 = 2'd2; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -output [512:0] fifo_out_din; -input fifo_out_full_n; -output fifo_out_write; -input [256:0] fifo_in_0_dout; -input fifo_in_0_empty_n; -output fifo_in_0_read; -input [256:0] fifo_in_1_dout; -input fifo_in_1_empty_n; -output fifo_in_1_read; - -reg ap_done; -reg ap_idle; -reg fifo_out_write; -reg fifo_in_0_read; -reg fifo_in_1_read; - -(* fsm_encoding = "none" *) reg [1:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -wire [31:0] elem_val_M_elems_1_fu_209_p4; -wire ap_CS_fsm_state2; -wire [0:0] and_ln412_1_fu_191_p2; -wire [31:0] tmp_5_fu_220_p4; -wire [31:0] tmp_6_fu_231_p4; -wire [31:0] tmp_7_fu_242_p4; -wire [31:0] elem_val_M_elems_3_fu_265_p4; -wire [31:0] tmp_3_fu_276_p4; -wire [31:0] tmp_4_fu_287_p4; -wire [31:0] tmp_s_fu_298_p4; -wire [0:0] tmp_1_nbreadreq_fu_70_p3; -wire [0:0] tmp_2_nbreadreq_fu_78_p3; -wire [0:0] and_ln412_fu_185_p2; -wire [0:0] and_ln412_1_fu_191_p1; -wire [95:0] tmp_8_fu_309_p4; -wire [31:0] elem_val_M_elems_2_fu_261_p1; -wire [95:0] tmp_9_fu_319_p4; -wire [31:0] elem_val_M_elems_fu_205_p1; -reg [1:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -wire ap_ST_fsm_state2_blk; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 2'd1; -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (*) begin - if ((ap_start == 1'b0)) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -assign ap_ST_fsm_state2_blk = 1'b0; - -always @ (*) begin - if (((ap_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((ap_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln412_1_fu_191_p2) & (fifo_in_0_empty_n == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin - fifo_in_0_read = 1'b1; - end else begin - fifo_in_0_read = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln412_1_fu_191_p2) & (fifo_in_1_empty_n == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin - fifo_in_1_read = 1'b1; - end else begin - fifo_in_1_read = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln412_1_fu_191_p2) & (fifo_out_full_n == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin - fifo_out_write = 1'b1; - end else begin - fifo_out_write = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - ap_NS_fsm = ap_ST_fsm_state2; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign and_ln412_1_fu_191_p1 = fifo_out_full_n; - -assign and_ln412_1_fu_191_p2 = (and_ln412_fu_185_p2 & and_ln412_1_fu_191_p1); - -assign and_ln412_fu_185_p2 = (tmp_2_nbreadreq_fu_78_p3 & tmp_1_nbreadreq_fu_70_p3); - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; - -assign ap_ready = 1'b0; - -assign elem_val_M_elems_1_fu_209_p4 = {{fifo_in_0_dout[63:32]}}; - -assign elem_val_M_elems_2_fu_261_p1 = fifo_in_1_dout[31:0]; - -assign elem_val_M_elems_3_fu_265_p4 = {{fifo_in_1_dout[63:32]}}; - -assign elem_val_M_elems_fu_205_p1 = fifo_in_0_dout[31:0]; - -assign fifo_out_din = {{{{{{{{{{{{{{{{{{{{{{{{1'd0}, {tmp_8_fu_309_p4}}}, {tmp_s_fu_298_p4}}}, {tmp_4_fu_287_p4}}}, {tmp_3_fu_276_p4}}}, {elem_val_M_elems_3_fu_265_p4}}}, {elem_val_M_elems_2_fu_261_p1}}}, {tmp_9_fu_319_p4}}}, {tmp_7_fu_242_p4}}}, {tmp_6_fu_231_p4}}}, {tmp_5_fu_220_p4}}}, {elem_val_M_elems_1_fu_209_p4}}}, {elem_val_M_elems_fu_205_p1}}; - -assign tmp_1_nbreadreq_fu_70_p3 = fifo_in_0_empty_n; - -assign tmp_2_nbreadreq_fu_78_p3 = fifo_in_1_empty_n; - -assign tmp_3_fu_276_p4 = {{fifo_in_1_dout[95:64]}}; - -assign tmp_4_fu_287_p4 = {{fifo_in_1_dout[127:96]}}; - -assign tmp_5_fu_220_p4 = {{fifo_in_0_dout[95:64]}}; - -assign tmp_6_fu_231_p4 = {{fifo_in_0_dout[127:96]}}; - -assign tmp_7_fu_242_p4 = {{fifo_in_0_dout[159:128]}}; - -assign tmp_8_fu_309_p4 = {{fifo_in_1_dout[255:160]}}; - -assign tmp_9_fu_319_p4 = {{fifo_in_0_dout[255:160]}}; - -assign tmp_s_fu_298_p4 = {{fifo_in_1_dout[159:128]}}; - -endmodule //Merger_Merger_Pipeline_VITIS_LOOP_410_1 diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx.v deleted file mode 100644 index eee6491b..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx.v +++ /dev/null @@ -1,8124 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -(* CORE_GENERATION_INFO="PEG_Bmtx_PEG_Bmtx,hls_ip_2022_2,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xcu280-fsvh2892-2L-e,HLS_INPUT_CLOCK=3.330000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=3.655900,HLS_SYN_LAT=74431,HLS_SYN_TPT=none,HLS_SYN_MEM=128,HLS_SYN_DSP=0,HLS_SYN_FF=8088,HLS_SYN_LUT=9745,HLS_VERSION=2022_2}" *) - -module PEG_Bmtx ( - ap_clk, - ap_rst_n, - ap_start, - ap_done, - ap_idle, - ap_ready, - PE_inst_in_s_dout, - PE_inst_in_s_empty_n, - PE_inst_in_s_read, - PE_inst_in_peek_dout, - PE_inst_in_peek_empty_n, - PE_inst_in_peek_read, - fifo_inst_in_s_dout, - fifo_inst_in_s_empty_n, - fifo_inst_in_s_read, - fifo_inst_in_peek_dout, - fifo_inst_in_peek_empty_n, - fifo_inst_in_peek_read, - fifo_A_s_dout, - fifo_A_s_empty_n, - fifo_A_s_read, - fifo_A_peek_dout, - fifo_A_peek_empty_n, - fifo_A_peek_read, - fifo_B_in_0_dout, - fifo_B_in_0_empty_n, - fifo_B_in_0_read, - fifo_B_in_1_dout, - fifo_B_in_1_empty_n, - fifo_B_in_1_read, - fifo_B_in_2_dout, - fifo_B_in_2_empty_n, - fifo_B_in_2_read, - fifo_B_in_3_dout, - fifo_B_in_3_empty_n, - fifo_B_in_3_read, - fifo_B_in_peek_0_dout, - fifo_B_in_peek_0_empty_n, - fifo_B_in_peek_0_read, - fifo_B_in_peek_1_dout, - fifo_B_in_peek_1_empty_n, - fifo_B_in_peek_1_read, - fifo_B_in_peek_2_dout, - fifo_B_in_peek_2_empty_n, - fifo_B_in_peek_2_read, - fifo_B_in_peek_3_dout, - fifo_B_in_peek_3_empty_n, - fifo_B_in_peek_3_read, - PE_inst_out_din, - PE_inst_out_full_n, - PE_inst_out_write, - fifo_inst_out_din, - fifo_inst_out_full_n, - fifo_inst_out_write, - fifo_B_out_0_din, - fifo_B_out_0_full_n, - fifo_B_out_0_write, - fifo_B_out_1_din, - fifo_B_out_1_full_n, - fifo_B_out_1_write, - fifo_B_out_2_din, - fifo_B_out_2_full_n, - fifo_B_out_2_write, - fifo_B_out_3_din, - fifo_B_out_3_full_n, - fifo_B_out_3_write, - PE_inst_to_Cmtx_din, - PE_inst_to_Cmtx_full_n, - PE_inst_to_Cmtx_write, - fifo_inst_out_to_Cmtx_din, - fifo_inst_out_to_Cmtx_full_n, - fifo_inst_out_to_Cmtx_write, - fifo_aBvec_0_din, - fifo_aBvec_0_full_n, - fifo_aBvec_0_write, - fifo_aBvec_1_din, - fifo_aBvec_1_full_n, - fifo_aBvec_1_write, - fifo_aBvec_2_din, - fifo_aBvec_2_full_n, - fifo_aBvec_2_write, - fifo_aBvec_3_din, - fifo_aBvec_3_full_n, - fifo_aBvec_3_write -); - -parameter ap_ST_fsm_state1 = 15'd1; -parameter ap_ST_fsm_state2 = 15'd2; -parameter ap_ST_fsm_state3 = 15'd4; -parameter ap_ST_fsm_state4 = 15'd8; -parameter ap_ST_fsm_state5 = 15'd16; -parameter ap_ST_fsm_state6 = 15'd32; -parameter ap_ST_fsm_state7 = 15'd64; -parameter ap_ST_fsm_state8 = 15'd128; -parameter ap_ST_fsm_state9 = 15'd256; -parameter ap_ST_fsm_state10 = 15'd512; -parameter ap_ST_fsm_state11 = 15'd1024; -parameter ap_ST_fsm_state12 = 15'd2048; -parameter ap_ST_fsm_state13 = 15'd4096; -parameter ap_ST_fsm_state14 = 15'd8192; -parameter ap_ST_fsm_state15 = 15'd16384; - -input ap_clk; -input ap_rst_n; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [32:0] PE_inst_in_s_dout; -input PE_inst_in_s_empty_n; -output PE_inst_in_s_read; -input [32:0] PE_inst_in_peek_dout; -input PE_inst_in_peek_empty_n; -output PE_inst_in_peek_read; -input [32:0] fifo_inst_in_s_dout; -input fifo_inst_in_s_empty_n; -output fifo_inst_in_s_read; -input [32:0] fifo_inst_in_peek_dout; -input fifo_inst_in_peek_empty_n; -output fifo_inst_in_peek_read; -input [256:0] fifo_A_s_dout; -input fifo_A_s_empty_n; -output fifo_A_s_read; -input [256:0] fifo_A_peek_dout; -input fifo_A_peek_empty_n; -output fifo_A_peek_read; -input [512:0] fifo_B_in_0_dout; -input fifo_B_in_0_empty_n; -output fifo_B_in_0_read; -input [512:0] fifo_B_in_1_dout; -input fifo_B_in_1_empty_n; -output fifo_B_in_1_read; -input [512:0] fifo_B_in_2_dout; -input fifo_B_in_2_empty_n; -output fifo_B_in_2_read; -input [512:0] fifo_B_in_3_dout; -input fifo_B_in_3_empty_n; -output fifo_B_in_3_read; -input [512:0] fifo_B_in_peek_0_dout; -input fifo_B_in_peek_0_empty_n; -output fifo_B_in_peek_0_read; -input [512:0] fifo_B_in_peek_1_dout; -input fifo_B_in_peek_1_empty_n; -output fifo_B_in_peek_1_read; -input [512:0] fifo_B_in_peek_2_dout; -input fifo_B_in_peek_2_empty_n; -output fifo_B_in_peek_2_read; -input [512:0] fifo_B_in_peek_3_dout; -input fifo_B_in_peek_3_empty_n; -output fifo_B_in_peek_3_read; -output [32:0] PE_inst_out_din; -input PE_inst_out_full_n; -output PE_inst_out_write; -output [32:0] fifo_inst_out_din; -input fifo_inst_out_full_n; -output fifo_inst_out_write; -output [512:0] fifo_B_out_0_din; -input fifo_B_out_0_full_n; -output fifo_B_out_0_write; -output [512:0] fifo_B_out_1_din; -input fifo_B_out_1_full_n; -output fifo_B_out_1_write; -output [512:0] fifo_B_out_2_din; -input fifo_B_out_2_full_n; -output fifo_B_out_2_write; -output [512:0] fifo_B_out_3_din; -input fifo_B_out_3_full_n; -output fifo_B_out_3_write; -output [32:0] PE_inst_to_Cmtx_din; -input PE_inst_to_Cmtx_full_n; -output PE_inst_to_Cmtx_write; -output [32:0] fifo_inst_out_to_Cmtx_din; -input fifo_inst_out_to_Cmtx_full_n; -output fifo_inst_out_to_Cmtx_write; -output [274:0] fifo_aBvec_0_din; -input fifo_aBvec_0_full_n; -output fifo_aBvec_0_write; -output [274:0] fifo_aBvec_1_din; -input fifo_aBvec_1_full_n; -output fifo_aBvec_1_write; -output [274:0] fifo_aBvec_2_din; -input fifo_aBvec_2_full_n; -output fifo_aBvec_2_write; -output [274:0] fifo_aBvec_3_din; -input fifo_aBvec_3_full_n; -output fifo_aBvec_3_write; - -reg ap_done; -reg ap_idle; -reg ap_ready; -reg PE_inst_in_s_read; -reg fifo_inst_in_s_read; -reg fifo_A_s_read; -reg fifo_B_in_0_read; -reg fifo_B_in_1_read; -reg fifo_B_in_2_read; -reg fifo_B_in_3_read; -reg[32:0] PE_inst_out_din; -reg PE_inst_out_write; -reg[32:0] fifo_inst_out_din; -reg fifo_inst_out_write; -reg fifo_B_out_0_write; -reg fifo_B_out_1_write; -reg fifo_B_out_2_write; -reg fifo_B_out_3_write; -reg[32:0] PE_inst_to_Cmtx_din; -reg PE_inst_to_Cmtx_write; -reg[32:0] fifo_inst_out_to_Cmtx_din; -reg fifo_inst_out_to_Cmtx_write; -reg fifo_aBvec_0_write; -reg fifo_aBvec_1_write; -reg fifo_aBvec_2_write; -reg fifo_aBvec_3_write; - - reg ap_rst_n_inv; -(* fsm_encoding = "none" *) reg [14:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -reg PE_inst_in_s_blk_n; -wire ap_CS_fsm_state2; -wire ap_CS_fsm_state3; -wire ap_CS_fsm_state7; -reg fifo_inst_in_s_blk_n; -wire ap_CS_fsm_state9; -wire ap_CS_fsm_state13; -reg PE_inst_out_blk_n; -reg fifo_inst_out_blk_n; -reg PE_inst_to_Cmtx_blk_n; -reg fifo_inst_out_to_Cmtx_blk_n; -wire [31:0] NUM_ITE_fu_841_p1; -reg [31:0] NUM_ITE_reg_1069; -reg [15:0] N16_reg_1074; -reg [13:0] lshr_ln_reg_1080; -wire ap_CS_fsm_state4; -wire signed [29:0] grp_fu_1056_p2; -reg signed [29:0] rp_time_N_reg_1095; -wire signed [31:0] shr79_fu_970_p1; -reg signed [31:0] shr79_reg_1100; -wire [27:0] rp_2_fu_986_p2; -reg [27:0] rp_2_reg_1108; -wire ap_CS_fsm_state8; -wire [31:0] start_32_fu_992_p1; -wire [30:0] i_1_fu_1015_p2; -reg [30:0] i_1_reg_1121; -wire ap_CS_fsm_state10; -wire [31:0] sub_fu_1033_p2; -reg [31:0] sub_reg_1126; -wire [0:0] icmp_ln276_fu_1010_p2; -wire [31:0] end_32_fu_1042_p1; -reg [31:0] end_32_reg_1131; -reg [9:0] local_B_address0; -reg local_B_ce0; -reg local_B_we0; -wire [31:0] local_B_q0; -reg [9:0] local_B_address1; -reg local_B_ce1; -reg local_B_we1; -wire [31:0] local_B_q1; -reg [9:0] local_B_1_address0; -reg local_B_1_ce0; -reg local_B_1_we0; -wire [31:0] local_B_1_q0; -reg [9:0] local_B_1_address1; -reg local_B_1_ce1; -reg local_B_1_we1; -wire [31:0] local_B_1_q1; -reg [9:0] local_B_2_address0; -reg local_B_2_ce0; -reg local_B_2_we0; -wire [31:0] local_B_2_q0; -reg [9:0] local_B_2_address1; -reg local_B_2_ce1; -reg local_B_2_we1; -wire [31:0] local_B_2_q1; -reg [9:0] local_B_3_address0; -reg local_B_3_ce0; -reg local_B_3_we0; -wire [31:0] local_B_3_q0; -reg [9:0] local_B_3_address1; -reg local_B_3_ce1; -reg local_B_3_we1; -wire [31:0] local_B_3_q1; -reg [9:0] local_B_4_address0; -reg local_B_4_ce0; -reg local_B_4_we0; -wire [31:0] local_B_4_q0; -reg [9:0] local_B_4_address1; -reg local_B_4_ce1; -reg local_B_4_we1; -wire [31:0] local_B_4_q1; -reg [9:0] local_B_5_address0; -reg local_B_5_ce0; -reg local_B_5_we0; -wire [31:0] local_B_5_q0; -reg [9:0] local_B_5_address1; -reg local_B_5_ce1; -reg local_B_5_we1; -wire [31:0] local_B_5_q1; -reg [9:0] local_B_6_address0; -reg local_B_6_ce0; -reg local_B_6_we0; -wire [31:0] local_B_6_q0; -reg [9:0] local_B_6_address1; -reg local_B_6_ce1; -reg local_B_6_we1; -wire [31:0] local_B_6_q1; -reg [9:0] local_B_7_address0; -reg local_B_7_ce0; -reg local_B_7_we0; -wire [31:0] local_B_7_q0; -reg [9:0] local_B_7_address1; -reg local_B_7_ce1; -reg local_B_7_we1; -wire [31:0] local_B_7_q1; -reg [9:0] local_B_8_address0; -reg local_B_8_ce0; -reg local_B_8_we0; -wire [31:0] local_B_8_q0; -reg [9:0] local_B_8_address1; -reg local_B_8_ce1; -reg local_B_8_we1; -wire [31:0] local_B_8_q1; -reg [9:0] local_B_9_address0; -reg local_B_9_ce0; -reg local_B_9_we0; -wire [31:0] local_B_9_q0; -reg [9:0] local_B_9_address1; -reg local_B_9_ce1; -reg local_B_9_we1; -wire [31:0] local_B_9_q1; -reg [9:0] local_B_10_address0; -reg local_B_10_ce0; -reg local_B_10_we0; -wire [31:0] local_B_10_q0; -reg [9:0] local_B_10_address1; -reg local_B_10_ce1; -reg local_B_10_we1; -wire [31:0] local_B_10_q1; -reg [9:0] local_B_11_address0; -reg local_B_11_ce0; -reg local_B_11_we0; -wire [31:0] local_B_11_q0; -reg [9:0] local_B_11_address1; -reg local_B_11_ce1; -reg local_B_11_we1; -wire [31:0] local_B_11_q1; -reg [9:0] local_B_12_address0; -reg local_B_12_ce0; -reg local_B_12_we0; -wire [31:0] local_B_12_q0; -reg [9:0] local_B_12_address1; -reg local_B_12_ce1; -reg local_B_12_we1; -wire [31:0] local_B_12_q1; -reg [9:0] local_B_13_address0; -reg local_B_13_ce0; -reg local_B_13_we0; -wire [31:0] local_B_13_q0; -reg [9:0] local_B_13_address1; -reg local_B_13_ce1; -reg local_B_13_we1; -wire [31:0] local_B_13_q1; -reg [9:0] local_B_14_address0; -reg local_B_14_ce0; -reg local_B_14_we0; -wire [31:0] local_B_14_q0; -reg [9:0] local_B_14_address1; -reg local_B_14_ce1; -reg local_B_14_we1; -wire [31:0] local_B_14_q1; -reg [9:0] local_B_15_address0; -reg local_B_15_ce0; -reg local_B_15_we0; -wire [31:0] local_B_15_q0; -reg [9:0] local_B_15_address1; -reg local_B_15_ce1; -reg local_B_15_we1; -wire [31:0] local_B_15_q1; -reg [9:0] local_B_16_address0; -reg local_B_16_ce0; -reg local_B_16_we0; -wire [31:0] local_B_16_q0; -reg [9:0] local_B_16_address1; -reg local_B_16_ce1; -reg local_B_16_we1; -wire [31:0] local_B_16_q1; -reg [9:0] local_B_17_address0; -reg local_B_17_ce0; -reg local_B_17_we0; -wire [31:0] local_B_17_q0; -reg [9:0] local_B_17_address1; -reg local_B_17_ce1; -reg local_B_17_we1; -wire [31:0] local_B_17_q1; -reg [9:0] local_B_18_address0; -reg local_B_18_ce0; -reg local_B_18_we0; -wire [31:0] local_B_18_q0; -reg [9:0] local_B_18_address1; -reg local_B_18_ce1; -reg local_B_18_we1; -wire [31:0] local_B_18_q1; -reg [9:0] local_B_19_address0; -reg local_B_19_ce0; -reg local_B_19_we0; -wire [31:0] local_B_19_q0; -reg [9:0] local_B_19_address1; -reg local_B_19_ce1; -reg local_B_19_we1; -wire [31:0] local_B_19_q1; -reg [9:0] local_B_20_address0; -reg local_B_20_ce0; -reg local_B_20_we0; -wire [31:0] local_B_20_q0; -reg [9:0] local_B_20_address1; -reg local_B_20_ce1; -reg local_B_20_we1; -wire [31:0] local_B_20_q1; -reg [9:0] local_B_21_address0; -reg local_B_21_ce0; -reg local_B_21_we0; -wire [31:0] local_B_21_q0; -reg [9:0] local_B_21_address1; -reg local_B_21_ce1; -reg local_B_21_we1; -wire [31:0] local_B_21_q1; -reg [9:0] local_B_22_address0; -reg local_B_22_ce0; -reg local_B_22_we0; -wire [31:0] local_B_22_q0; -reg [9:0] local_B_22_address1; -reg local_B_22_ce1; -reg local_B_22_we1; -wire [31:0] local_B_22_q1; -reg [9:0] local_B_23_address0; -reg local_B_23_ce0; -reg local_B_23_we0; -wire [31:0] local_B_23_q0; -reg [9:0] local_B_23_address1; -reg local_B_23_ce1; -reg local_B_23_we1; -wire [31:0] local_B_23_q1; -reg [9:0] local_B_24_address0; -reg local_B_24_ce0; -reg local_B_24_we0; -wire [31:0] local_B_24_q0; -reg [9:0] local_B_24_address1; -reg local_B_24_ce1; -reg local_B_24_we1; -wire [31:0] local_B_24_q1; -reg [9:0] local_B_25_address0; -reg local_B_25_ce0; -reg local_B_25_we0; -wire [31:0] local_B_25_q0; -reg [9:0] local_B_25_address1; -reg local_B_25_ce1; -reg local_B_25_we1; -wire [31:0] local_B_25_q1; -reg [9:0] local_B_26_address0; -reg local_B_26_ce0; -reg local_B_26_we0; -wire [31:0] local_B_26_q0; -reg [9:0] local_B_26_address1; -reg local_B_26_ce1; -reg local_B_26_we1; -wire [31:0] local_B_26_q1; -reg [9:0] local_B_27_address0; -reg local_B_27_ce0; -reg local_B_27_we0; -wire [31:0] local_B_27_q0; -reg [9:0] local_B_27_address1; -reg local_B_27_ce1; -reg local_B_27_we1; -wire [31:0] local_B_27_q1; -reg [9:0] local_B_28_address0; -reg local_B_28_ce0; -reg local_B_28_we0; -wire [31:0] local_B_28_q0; -reg [9:0] local_B_28_address1; -reg local_B_28_ce1; -reg local_B_28_we1; -wire [31:0] local_B_28_q1; -reg [9:0] local_B_29_address0; -reg local_B_29_ce0; -reg local_B_29_we0; -wire [31:0] local_B_29_q0; -reg [9:0] local_B_29_address1; -reg local_B_29_ce1; -reg local_B_29_we1; -wire [31:0] local_B_29_q1; -reg [9:0] local_B_30_address0; -reg local_B_30_ce0; -reg local_B_30_we0; -wire [31:0] local_B_30_q0; -reg [9:0] local_B_30_address1; -reg local_B_30_ce1; -reg local_B_30_we1; -wire [31:0] local_B_30_q1; -reg [9:0] local_B_31_address0; -reg local_B_31_ce0; -reg local_B_31_we0; -wire [31:0] local_B_31_q0; -reg [9:0] local_B_31_address1; -reg local_B_31_ce1; -reg local_B_31_we1; -wire [31:0] local_B_31_q1; -reg [9:0] local_B_32_address0; -reg local_B_32_ce0; -reg local_B_32_we0; -wire [31:0] local_B_32_q0; -reg [9:0] local_B_32_address1; -reg local_B_32_ce1; -reg local_B_32_we1; -wire [31:0] local_B_32_q1; -reg [9:0] local_B_33_address0; -reg local_B_33_ce0; -reg local_B_33_we0; -wire [31:0] local_B_33_q0; -reg [9:0] local_B_33_address1; -reg local_B_33_ce1; -reg local_B_33_we1; -wire [31:0] local_B_33_q1; -reg [9:0] local_B_34_address0; -reg local_B_34_ce0; -reg local_B_34_we0; -wire [31:0] local_B_34_q0; -reg [9:0] local_B_34_address1; -reg local_B_34_ce1; -reg local_B_34_we1; -wire [31:0] local_B_34_q1; -reg [9:0] local_B_35_address0; -reg local_B_35_ce0; -reg local_B_35_we0; -wire [31:0] local_B_35_q0; -reg [9:0] local_B_35_address1; -reg local_B_35_ce1; -reg local_B_35_we1; -wire [31:0] local_B_35_q1; -reg [9:0] local_B_36_address0; -reg local_B_36_ce0; -reg local_B_36_we0; -wire [31:0] local_B_36_q0; -reg [9:0] local_B_36_address1; -reg local_B_36_ce1; -reg local_B_36_we1; -wire [31:0] local_B_36_q1; -reg [9:0] local_B_37_address0; -reg local_B_37_ce0; -reg local_B_37_we0; -wire [31:0] local_B_37_q0; -reg [9:0] local_B_37_address1; -reg local_B_37_ce1; -reg local_B_37_we1; -wire [31:0] local_B_37_q1; -reg [9:0] local_B_38_address0; -reg local_B_38_ce0; -reg local_B_38_we0; -wire [31:0] local_B_38_q0; -reg [9:0] local_B_38_address1; -reg local_B_38_ce1; -reg local_B_38_we1; -wire [31:0] local_B_38_q1; -reg [9:0] local_B_39_address0; -reg local_B_39_ce0; -reg local_B_39_we0; -wire [31:0] local_B_39_q0; -reg [9:0] local_B_39_address1; -reg local_B_39_ce1; -reg local_B_39_we1; -wire [31:0] local_B_39_q1; -reg [9:0] local_B_40_address0; -reg local_B_40_ce0; -reg local_B_40_we0; -wire [31:0] local_B_40_q0; -reg [9:0] local_B_40_address1; -reg local_B_40_ce1; -reg local_B_40_we1; -wire [31:0] local_B_40_q1; -reg [9:0] local_B_41_address0; -reg local_B_41_ce0; -reg local_B_41_we0; -wire [31:0] local_B_41_q0; -reg [9:0] local_B_41_address1; -reg local_B_41_ce1; -reg local_B_41_we1; -wire [31:0] local_B_41_q1; -reg [9:0] local_B_42_address0; -reg local_B_42_ce0; -reg local_B_42_we0; -wire [31:0] local_B_42_q0; -reg [9:0] local_B_42_address1; -reg local_B_42_ce1; -reg local_B_42_we1; -wire [31:0] local_B_42_q1; -reg [9:0] local_B_43_address0; -reg local_B_43_ce0; -reg local_B_43_we0; -wire [31:0] local_B_43_q0; -reg [9:0] local_B_43_address1; -reg local_B_43_ce1; -reg local_B_43_we1; -wire [31:0] local_B_43_q1; -reg [9:0] local_B_44_address0; -reg local_B_44_ce0; -reg local_B_44_we0; -wire [31:0] local_B_44_q0; -reg [9:0] local_B_44_address1; -reg local_B_44_ce1; -reg local_B_44_we1; -wire [31:0] local_B_44_q1; -reg [9:0] local_B_45_address0; -reg local_B_45_ce0; -reg local_B_45_we0; -wire [31:0] local_B_45_q0; -reg [9:0] local_B_45_address1; -reg local_B_45_ce1; -reg local_B_45_we1; -wire [31:0] local_B_45_q1; -reg [9:0] local_B_46_address0; -reg local_B_46_ce0; -reg local_B_46_we0; -wire [31:0] local_B_46_q0; -reg [9:0] local_B_46_address1; -reg local_B_46_ce1; -reg local_B_46_we1; -wire [31:0] local_B_46_q1; -reg [9:0] local_B_47_address0; -reg local_B_47_ce0; -reg local_B_47_we0; -wire [31:0] local_B_47_q0; -reg [9:0] local_B_47_address1; -reg local_B_47_ce1; -reg local_B_47_we1; -wire [31:0] local_B_47_q1; -reg [9:0] local_B_48_address0; -reg local_B_48_ce0; -reg local_B_48_we0; -wire [31:0] local_B_48_q0; -reg [9:0] local_B_48_address1; -reg local_B_48_ce1; -reg local_B_48_we1; -wire [31:0] local_B_48_q1; -reg [9:0] local_B_49_address0; -reg local_B_49_ce0; -reg local_B_49_we0; -wire [31:0] local_B_49_q0; -reg [9:0] local_B_49_address1; -reg local_B_49_ce1; -reg local_B_49_we1; -wire [31:0] local_B_49_q1; -reg [9:0] local_B_50_address0; -reg local_B_50_ce0; -reg local_B_50_we0; -wire [31:0] local_B_50_q0; -reg [9:0] local_B_50_address1; -reg local_B_50_ce1; -reg local_B_50_we1; -wire [31:0] local_B_50_q1; -reg [9:0] local_B_51_address0; -reg local_B_51_ce0; -reg local_B_51_we0; -wire [31:0] local_B_51_q0; -reg [9:0] local_B_51_address1; -reg local_B_51_ce1; -reg local_B_51_we1; -wire [31:0] local_B_51_q1; -reg [9:0] local_B_52_address0; -reg local_B_52_ce0; -reg local_B_52_we0; -wire [31:0] local_B_52_q0; -reg [9:0] local_B_52_address1; -reg local_B_52_ce1; -reg local_B_52_we1; -wire [31:0] local_B_52_q1; -reg [9:0] local_B_53_address0; -reg local_B_53_ce0; -reg local_B_53_we0; -wire [31:0] local_B_53_q0; -reg [9:0] local_B_53_address1; -reg local_B_53_ce1; -reg local_B_53_we1; -wire [31:0] local_B_53_q1; -reg [9:0] local_B_54_address0; -reg local_B_54_ce0; -reg local_B_54_we0; -wire [31:0] local_B_54_q0; -reg [9:0] local_B_54_address1; -reg local_B_54_ce1; -reg local_B_54_we1; -wire [31:0] local_B_54_q1; -reg [9:0] local_B_55_address0; -reg local_B_55_ce0; -reg local_B_55_we0; -wire [31:0] local_B_55_q0; -reg [9:0] local_B_55_address1; -reg local_B_55_ce1; -reg local_B_55_we1; -wire [31:0] local_B_55_q1; -reg [9:0] local_B_56_address0; -reg local_B_56_ce0; -reg local_B_56_we0; -wire [31:0] local_B_56_q0; -reg [9:0] local_B_56_address1; -reg local_B_56_ce1; -reg local_B_56_we1; -wire [31:0] local_B_56_q1; -reg [9:0] local_B_57_address0; -reg local_B_57_ce0; -reg local_B_57_we0; -wire [31:0] local_B_57_q0; -reg [9:0] local_B_57_address1; -reg local_B_57_ce1; -reg local_B_57_we1; -wire [31:0] local_B_57_q1; -reg [9:0] local_B_58_address0; -reg local_B_58_ce0; -reg local_B_58_we0; -wire [31:0] local_B_58_q0; -reg [9:0] local_B_58_address1; -reg local_B_58_ce1; -reg local_B_58_we1; -wire [31:0] local_B_58_q1; -reg [9:0] local_B_59_address0; -reg local_B_59_ce0; -reg local_B_59_we0; -wire [31:0] local_B_59_q0; -reg [9:0] local_B_59_address1; -reg local_B_59_ce1; -reg local_B_59_we1; -wire [31:0] local_B_59_q1; -reg [9:0] local_B_60_address0; -reg local_B_60_ce0; -reg local_B_60_we0; -wire [31:0] local_B_60_q0; -reg [9:0] local_B_60_address1; -reg local_B_60_ce1; -reg local_B_60_we1; -wire [31:0] local_B_60_q1; -reg [9:0] local_B_61_address0; -reg local_B_61_ce0; -reg local_B_61_we0; -wire [31:0] local_B_61_q0; -reg [9:0] local_B_61_address1; -reg local_B_61_ce1; -reg local_B_61_we1; -wire [31:0] local_B_61_q1; -reg [9:0] local_B_62_address0; -reg local_B_62_ce0; -reg local_B_62_we0; -wire [31:0] local_B_62_q0; -reg [9:0] local_B_62_address1; -reg local_B_62_ce1; -reg local_B_62_we1; -wire [31:0] local_B_62_q1; -reg [9:0] local_B_63_address0; -reg local_B_63_ce0; -reg local_B_63_we0; -wire [31:0] local_B_63_q0; -reg [9:0] local_B_63_address1; -reg local_B_63_ce1; -reg local_B_63_we1; -wire [31:0] local_B_63_q1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_start; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_done; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_idle; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_ready; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_d1; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_address0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_ce0; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_we0; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_d0; -wire [9:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_address1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_ce1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_we1; -wire [31:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_d1; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_in_0_read; -wire [512:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_0_din; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_0_write; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_in_1_read; -wire [512:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_1_din; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_1_write; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_in_2_read; -wire [512:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_2_din; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_2_write; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_in_3_read; -wire [512:0] grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_3_din; -wire grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_3_write; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_start; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_done; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_idle; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_ready; -wire [274:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_0_din; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_0_write; -wire [274:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_1_din; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_1_write; -wire [274:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_2_din; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_2_write; -wire [274:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_3_din; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_3_write; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_A_s_read; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_1_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_1_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_1_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_1_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_2_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_2_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_2_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_2_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_3_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_3_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_3_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_3_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_4_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_4_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_4_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_4_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_5_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_5_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_5_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_5_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_6_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_6_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_6_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_6_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_7_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_7_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_7_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_7_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_8_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_8_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_8_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_8_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_9_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_9_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_9_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_9_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_10_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_10_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_10_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_10_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_11_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_11_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_11_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_11_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_12_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_12_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_12_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_12_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_13_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_13_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_13_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_13_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_14_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_14_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_14_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_14_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_15_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_15_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_15_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_15_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_16_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_16_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_16_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_16_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_17_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_17_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_17_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_17_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_18_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_18_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_18_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_18_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_19_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_19_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_19_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_19_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_20_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_20_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_20_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_20_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_21_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_21_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_21_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_21_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_22_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_22_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_22_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_22_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_23_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_23_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_23_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_23_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_24_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_24_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_24_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_24_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_25_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_25_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_25_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_25_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_26_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_26_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_26_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_26_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_27_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_27_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_27_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_27_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_28_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_28_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_28_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_28_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_29_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_29_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_29_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_29_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_30_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_30_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_30_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_30_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_31_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_31_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_31_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_31_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_32_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_32_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_32_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_32_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_33_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_33_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_33_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_33_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_34_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_34_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_34_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_34_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_35_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_35_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_35_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_35_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_36_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_36_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_36_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_36_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_37_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_37_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_37_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_37_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_38_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_38_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_38_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_38_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_39_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_39_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_39_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_39_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_40_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_40_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_40_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_40_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_41_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_41_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_41_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_41_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_42_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_42_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_42_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_42_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_43_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_43_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_43_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_43_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_44_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_44_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_44_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_44_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_45_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_45_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_45_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_45_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_46_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_46_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_46_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_46_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_47_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_47_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_47_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_47_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_48_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_48_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_48_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_48_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_49_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_49_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_49_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_49_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_50_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_50_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_50_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_50_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_51_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_51_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_51_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_51_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_52_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_52_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_52_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_52_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_53_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_53_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_53_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_53_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_54_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_54_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_54_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_54_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_55_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_55_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_55_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_55_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_56_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_56_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_56_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_56_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_57_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_57_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_57_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_57_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_58_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_58_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_58_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_58_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_59_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_59_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_59_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_59_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_60_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_60_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_60_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_60_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_61_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_61_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_61_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_61_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_62_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_62_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_62_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_62_ce1; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_63_address0; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_63_ce0; -wire [9:0] grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_63_address1; -wire grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_63_ce1; -reg [30:0] i_reg_654; -reg ap_block_state9; -wire ap_CS_fsm_state15; -reg [31:0] start_32_3_reg_665; -reg grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_start_reg; -wire ap_CS_fsm_state11; -wire ap_CS_fsm_state12; -reg grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_start_reg; -wire ap_CS_fsm_state14; -reg [27:0] rp_fu_146; -reg ap_block_state1; -reg ap_block_state2; -reg ap_block_state3; -reg ap_block_state7; -wire [32:0] p_s_fu_845_p3; -wire [32:0] p_10_fu_864_p3; -wire [32:0] p_0_fu_882_p3; -wire [32:0] p_11_fu_945_p3; -reg ap_block_state13; -wire [32:0] tmp_9_fu_996_p3; -wire [32:0] tmp_11_fu_1046_p3; -wire [31:0] trunc_ln85_fu_860_p1; -wire [31:0] P_N_fu_874_p1; -wire [15:0] N_fu_878_p1; -wire [16:0] zext_ln256_fu_902_p1; -wire [16:0] add_ln257_fu_906_p2; -wire [0:0] icmp_ln255_fu_922_p2; -wire signed [15:0] rp_time_fu_927_p3; -wire [31:0] K_fu_941_p1; -wire [31:0] add78_fu_954_p2; -wire [28:0] p_cast_fu_960_p4; -wire [29:0] zext_ln259_fu_977_p1; -wire [31:0] zext_ln276_fu_1006_p1; -wire [22:0] empty_155_fu_1021_p1; -wire [31:0] mul_fu_1025_p3; -wire [13:0] grp_fu_1056_p1; -wire [0:0] icmp_ln259_fu_981_p2; -reg grp_fu_1056_ce; -wire ap_CS_fsm_state5; -wire ap_CS_fsm_state6; -reg [14:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -reg ap_ST_fsm_state2_blk; -reg ap_ST_fsm_state3_blk; -wire ap_ST_fsm_state4_blk; -wire ap_ST_fsm_state5_blk; -wire ap_ST_fsm_state6_blk; -reg ap_ST_fsm_state7_blk; -wire ap_ST_fsm_state8_blk; -reg ap_ST_fsm_state9_blk; -wire ap_ST_fsm_state10_blk; -wire ap_ST_fsm_state11_blk; -reg ap_ST_fsm_state12_blk; -reg ap_ST_fsm_state13_blk; -wire ap_ST_fsm_state14_blk; -reg ap_ST_fsm_state15_blk; -wire [29:0] grp_fu_1056_p10; -reg ap_condition_2077; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 15'd1; -#0 grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_start_reg = 1'b0; -#0 grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_start_reg = 1'b0; -end - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_address0), - .ce0(local_B_ce0), - .we0(local_B_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_d0), - .q0(local_B_q0), - .address1(local_B_address1), - .ce1(local_B_ce1), - .we1(local_B_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_d1), - .q1(local_B_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_1_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_1_address0), - .ce0(local_B_1_ce0), - .we0(local_B_1_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_d0), - .q0(local_B_1_q0), - .address1(local_B_1_address1), - .ce1(local_B_1_ce1), - .we1(local_B_1_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_d1), - .q1(local_B_1_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_2_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_2_address0), - .ce0(local_B_2_ce0), - .we0(local_B_2_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_d0), - .q0(local_B_2_q0), - .address1(local_B_2_address1), - .ce1(local_B_2_ce1), - .we1(local_B_2_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_d1), - .q1(local_B_2_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_3_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_3_address0), - .ce0(local_B_3_ce0), - .we0(local_B_3_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_d0), - .q0(local_B_3_q0), - .address1(local_B_3_address1), - .ce1(local_B_3_ce1), - .we1(local_B_3_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_d1), - .q1(local_B_3_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_4_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_4_address0), - .ce0(local_B_4_ce0), - .we0(local_B_4_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_d0), - .q0(local_B_4_q0), - .address1(local_B_4_address1), - .ce1(local_B_4_ce1), - .we1(local_B_4_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_d1), - .q1(local_B_4_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_5_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_5_address0), - .ce0(local_B_5_ce0), - .we0(local_B_5_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_d0), - .q0(local_B_5_q0), - .address1(local_B_5_address1), - .ce1(local_B_5_ce1), - .we1(local_B_5_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_d1), - .q1(local_B_5_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_6_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_6_address0), - .ce0(local_B_6_ce0), - .we0(local_B_6_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_d0), - .q0(local_B_6_q0), - .address1(local_B_6_address1), - .ce1(local_B_6_ce1), - .we1(local_B_6_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_d1), - .q1(local_B_6_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_7_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_7_address0), - .ce0(local_B_7_ce0), - .we0(local_B_7_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_d0), - .q0(local_B_7_q0), - .address1(local_B_7_address1), - .ce1(local_B_7_ce1), - .we1(local_B_7_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_d1), - .q1(local_B_7_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_8_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_8_address0), - .ce0(local_B_8_ce0), - .we0(local_B_8_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_d0), - .q0(local_B_8_q0), - .address1(local_B_8_address1), - .ce1(local_B_8_ce1), - .we1(local_B_8_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_d1), - .q1(local_B_8_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_9_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_9_address0), - .ce0(local_B_9_ce0), - .we0(local_B_9_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_d0), - .q0(local_B_9_q0), - .address1(local_B_9_address1), - .ce1(local_B_9_ce1), - .we1(local_B_9_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_d1), - .q1(local_B_9_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_10_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_10_address0), - .ce0(local_B_10_ce0), - .we0(local_B_10_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_d0), - .q0(local_B_10_q0), - .address1(local_B_10_address1), - .ce1(local_B_10_ce1), - .we1(local_B_10_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_d1), - .q1(local_B_10_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_11_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_11_address0), - .ce0(local_B_11_ce0), - .we0(local_B_11_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_d0), - .q0(local_B_11_q0), - .address1(local_B_11_address1), - .ce1(local_B_11_ce1), - .we1(local_B_11_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_d1), - .q1(local_B_11_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_12_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_12_address0), - .ce0(local_B_12_ce0), - .we0(local_B_12_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_d0), - .q0(local_B_12_q0), - .address1(local_B_12_address1), - .ce1(local_B_12_ce1), - .we1(local_B_12_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_d1), - .q1(local_B_12_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_13_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_13_address0), - .ce0(local_B_13_ce0), - .we0(local_B_13_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_d0), - .q0(local_B_13_q0), - .address1(local_B_13_address1), - .ce1(local_B_13_ce1), - .we1(local_B_13_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_d1), - .q1(local_B_13_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_14_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_14_address0), - .ce0(local_B_14_ce0), - .we0(local_B_14_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_d0), - .q0(local_B_14_q0), - .address1(local_B_14_address1), - .ce1(local_B_14_ce1), - .we1(local_B_14_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_d1), - .q1(local_B_14_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_15_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_15_address0), - .ce0(local_B_15_ce0), - .we0(local_B_15_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_d0), - .q0(local_B_15_q0), - .address1(local_B_15_address1), - .ce1(local_B_15_ce1), - .we1(local_B_15_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_d1), - .q1(local_B_15_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_16_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_16_address0), - .ce0(local_B_16_ce0), - .we0(local_B_16_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_d0), - .q0(local_B_16_q0), - .address1(local_B_16_address1), - .ce1(local_B_16_ce1), - .we1(local_B_16_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_d1), - .q1(local_B_16_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_17_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_17_address0), - .ce0(local_B_17_ce0), - .we0(local_B_17_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_d0), - .q0(local_B_17_q0), - .address1(local_B_17_address1), - .ce1(local_B_17_ce1), - .we1(local_B_17_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_d1), - .q1(local_B_17_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_18_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_18_address0), - .ce0(local_B_18_ce0), - .we0(local_B_18_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_d0), - .q0(local_B_18_q0), - .address1(local_B_18_address1), - .ce1(local_B_18_ce1), - .we1(local_B_18_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_d1), - .q1(local_B_18_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_19_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_19_address0), - .ce0(local_B_19_ce0), - .we0(local_B_19_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_d0), - .q0(local_B_19_q0), - .address1(local_B_19_address1), - .ce1(local_B_19_ce1), - .we1(local_B_19_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_d1), - .q1(local_B_19_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_20_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_20_address0), - .ce0(local_B_20_ce0), - .we0(local_B_20_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_d0), - .q0(local_B_20_q0), - .address1(local_B_20_address1), - .ce1(local_B_20_ce1), - .we1(local_B_20_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_d1), - .q1(local_B_20_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_21_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_21_address0), - .ce0(local_B_21_ce0), - .we0(local_B_21_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_d0), - .q0(local_B_21_q0), - .address1(local_B_21_address1), - .ce1(local_B_21_ce1), - .we1(local_B_21_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_d1), - .q1(local_B_21_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_22_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_22_address0), - .ce0(local_B_22_ce0), - .we0(local_B_22_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_d0), - .q0(local_B_22_q0), - .address1(local_B_22_address1), - .ce1(local_B_22_ce1), - .we1(local_B_22_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_d1), - .q1(local_B_22_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_23_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_23_address0), - .ce0(local_B_23_ce0), - .we0(local_B_23_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_d0), - .q0(local_B_23_q0), - .address1(local_B_23_address1), - .ce1(local_B_23_ce1), - .we1(local_B_23_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_d1), - .q1(local_B_23_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_24_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_24_address0), - .ce0(local_B_24_ce0), - .we0(local_B_24_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_d0), - .q0(local_B_24_q0), - .address1(local_B_24_address1), - .ce1(local_B_24_ce1), - .we1(local_B_24_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_d1), - .q1(local_B_24_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_25_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_25_address0), - .ce0(local_B_25_ce0), - .we0(local_B_25_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_d0), - .q0(local_B_25_q0), - .address1(local_B_25_address1), - .ce1(local_B_25_ce1), - .we1(local_B_25_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_d1), - .q1(local_B_25_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_26_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_26_address0), - .ce0(local_B_26_ce0), - .we0(local_B_26_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_d0), - .q0(local_B_26_q0), - .address1(local_B_26_address1), - .ce1(local_B_26_ce1), - .we1(local_B_26_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_d1), - .q1(local_B_26_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_27_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_27_address0), - .ce0(local_B_27_ce0), - .we0(local_B_27_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_d0), - .q0(local_B_27_q0), - .address1(local_B_27_address1), - .ce1(local_B_27_ce1), - .we1(local_B_27_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_d1), - .q1(local_B_27_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_28_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_28_address0), - .ce0(local_B_28_ce0), - .we0(local_B_28_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_d0), - .q0(local_B_28_q0), - .address1(local_B_28_address1), - .ce1(local_B_28_ce1), - .we1(local_B_28_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_d1), - .q1(local_B_28_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_29_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_29_address0), - .ce0(local_B_29_ce0), - .we0(local_B_29_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_d0), - .q0(local_B_29_q0), - .address1(local_B_29_address1), - .ce1(local_B_29_ce1), - .we1(local_B_29_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_d1), - .q1(local_B_29_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_30_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_30_address0), - .ce0(local_B_30_ce0), - .we0(local_B_30_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_d0), - .q0(local_B_30_q0), - .address1(local_B_30_address1), - .ce1(local_B_30_ce1), - .we1(local_B_30_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_d1), - .q1(local_B_30_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_31_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_31_address0), - .ce0(local_B_31_ce0), - .we0(local_B_31_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_d0), - .q0(local_B_31_q0), - .address1(local_B_31_address1), - .ce1(local_B_31_ce1), - .we1(local_B_31_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_d1), - .q1(local_B_31_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_32_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_32_address0), - .ce0(local_B_32_ce0), - .we0(local_B_32_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_d0), - .q0(local_B_32_q0), - .address1(local_B_32_address1), - .ce1(local_B_32_ce1), - .we1(local_B_32_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_d1), - .q1(local_B_32_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_33_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_33_address0), - .ce0(local_B_33_ce0), - .we0(local_B_33_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_d0), - .q0(local_B_33_q0), - .address1(local_B_33_address1), - .ce1(local_B_33_ce1), - .we1(local_B_33_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_d1), - .q1(local_B_33_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_34_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_34_address0), - .ce0(local_B_34_ce0), - .we0(local_B_34_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_d0), - .q0(local_B_34_q0), - .address1(local_B_34_address1), - .ce1(local_B_34_ce1), - .we1(local_B_34_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_d1), - .q1(local_B_34_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_35_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_35_address0), - .ce0(local_B_35_ce0), - .we0(local_B_35_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_d0), - .q0(local_B_35_q0), - .address1(local_B_35_address1), - .ce1(local_B_35_ce1), - .we1(local_B_35_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_d1), - .q1(local_B_35_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_36_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_36_address0), - .ce0(local_B_36_ce0), - .we0(local_B_36_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_d0), - .q0(local_B_36_q0), - .address1(local_B_36_address1), - .ce1(local_B_36_ce1), - .we1(local_B_36_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_d1), - .q1(local_B_36_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_37_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_37_address0), - .ce0(local_B_37_ce0), - .we0(local_B_37_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_d0), - .q0(local_B_37_q0), - .address1(local_B_37_address1), - .ce1(local_B_37_ce1), - .we1(local_B_37_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_d1), - .q1(local_B_37_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_38_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_38_address0), - .ce0(local_B_38_ce0), - .we0(local_B_38_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_d0), - .q0(local_B_38_q0), - .address1(local_B_38_address1), - .ce1(local_B_38_ce1), - .we1(local_B_38_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_d1), - .q1(local_B_38_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_39_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_39_address0), - .ce0(local_B_39_ce0), - .we0(local_B_39_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_d0), - .q0(local_B_39_q0), - .address1(local_B_39_address1), - .ce1(local_B_39_ce1), - .we1(local_B_39_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_d1), - .q1(local_B_39_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_40_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_40_address0), - .ce0(local_B_40_ce0), - .we0(local_B_40_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_d0), - .q0(local_B_40_q0), - .address1(local_B_40_address1), - .ce1(local_B_40_ce1), - .we1(local_B_40_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_d1), - .q1(local_B_40_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_41_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_41_address0), - .ce0(local_B_41_ce0), - .we0(local_B_41_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_d0), - .q0(local_B_41_q0), - .address1(local_B_41_address1), - .ce1(local_B_41_ce1), - .we1(local_B_41_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_d1), - .q1(local_B_41_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_42_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_42_address0), - .ce0(local_B_42_ce0), - .we0(local_B_42_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_d0), - .q0(local_B_42_q0), - .address1(local_B_42_address1), - .ce1(local_B_42_ce1), - .we1(local_B_42_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_d1), - .q1(local_B_42_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_43_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_43_address0), - .ce0(local_B_43_ce0), - .we0(local_B_43_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_d0), - .q0(local_B_43_q0), - .address1(local_B_43_address1), - .ce1(local_B_43_ce1), - .we1(local_B_43_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_d1), - .q1(local_B_43_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_44_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_44_address0), - .ce0(local_B_44_ce0), - .we0(local_B_44_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_d0), - .q0(local_B_44_q0), - .address1(local_B_44_address1), - .ce1(local_B_44_ce1), - .we1(local_B_44_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_d1), - .q1(local_B_44_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_45_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_45_address0), - .ce0(local_B_45_ce0), - .we0(local_B_45_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_d0), - .q0(local_B_45_q0), - .address1(local_B_45_address1), - .ce1(local_B_45_ce1), - .we1(local_B_45_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_d1), - .q1(local_B_45_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_46_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_46_address0), - .ce0(local_B_46_ce0), - .we0(local_B_46_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_d0), - .q0(local_B_46_q0), - .address1(local_B_46_address1), - .ce1(local_B_46_ce1), - .we1(local_B_46_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_d1), - .q1(local_B_46_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_47_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_47_address0), - .ce0(local_B_47_ce0), - .we0(local_B_47_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_d0), - .q0(local_B_47_q0), - .address1(local_B_47_address1), - .ce1(local_B_47_ce1), - .we1(local_B_47_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_d1), - .q1(local_B_47_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_48_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_48_address0), - .ce0(local_B_48_ce0), - .we0(local_B_48_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_d0), - .q0(local_B_48_q0), - .address1(local_B_48_address1), - .ce1(local_B_48_ce1), - .we1(local_B_48_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_d1), - .q1(local_B_48_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_49_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_49_address0), - .ce0(local_B_49_ce0), - .we0(local_B_49_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_d0), - .q0(local_B_49_q0), - .address1(local_B_49_address1), - .ce1(local_B_49_ce1), - .we1(local_B_49_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_d1), - .q1(local_B_49_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_50_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_50_address0), - .ce0(local_B_50_ce0), - .we0(local_B_50_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_d0), - .q0(local_B_50_q0), - .address1(local_B_50_address1), - .ce1(local_B_50_ce1), - .we1(local_B_50_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_d1), - .q1(local_B_50_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_51_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_51_address0), - .ce0(local_B_51_ce0), - .we0(local_B_51_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_d0), - .q0(local_B_51_q0), - .address1(local_B_51_address1), - .ce1(local_B_51_ce1), - .we1(local_B_51_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_d1), - .q1(local_B_51_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_52_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_52_address0), - .ce0(local_B_52_ce0), - .we0(local_B_52_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_d0), - .q0(local_B_52_q0), - .address1(local_B_52_address1), - .ce1(local_B_52_ce1), - .we1(local_B_52_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_d1), - .q1(local_B_52_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_53_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_53_address0), - .ce0(local_B_53_ce0), - .we0(local_B_53_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_d0), - .q0(local_B_53_q0), - .address1(local_B_53_address1), - .ce1(local_B_53_ce1), - .we1(local_B_53_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_d1), - .q1(local_B_53_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_54_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_54_address0), - .ce0(local_B_54_ce0), - .we0(local_B_54_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_d0), - .q0(local_B_54_q0), - .address1(local_B_54_address1), - .ce1(local_B_54_ce1), - .we1(local_B_54_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_d1), - .q1(local_B_54_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_55_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_55_address0), - .ce0(local_B_55_ce0), - .we0(local_B_55_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_d0), - .q0(local_B_55_q0), - .address1(local_B_55_address1), - .ce1(local_B_55_ce1), - .we1(local_B_55_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_d1), - .q1(local_B_55_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_56_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_56_address0), - .ce0(local_B_56_ce0), - .we0(local_B_56_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_d0), - .q0(local_B_56_q0), - .address1(local_B_56_address1), - .ce1(local_B_56_ce1), - .we1(local_B_56_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_d1), - .q1(local_B_56_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_57_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_57_address0), - .ce0(local_B_57_ce0), - .we0(local_B_57_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_d0), - .q0(local_B_57_q0), - .address1(local_B_57_address1), - .ce1(local_B_57_ce1), - .we1(local_B_57_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_d1), - .q1(local_B_57_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_58_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_58_address0), - .ce0(local_B_58_ce0), - .we0(local_B_58_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_d0), - .q0(local_B_58_q0), - .address1(local_B_58_address1), - .ce1(local_B_58_ce1), - .we1(local_B_58_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_d1), - .q1(local_B_58_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_59_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_59_address0), - .ce0(local_B_59_ce0), - .we0(local_B_59_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_d0), - .q0(local_B_59_q0), - .address1(local_B_59_address1), - .ce1(local_B_59_ce1), - .we1(local_B_59_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_d1), - .q1(local_B_59_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_60_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_60_address0), - .ce0(local_B_60_ce0), - .we0(local_B_60_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_d0), - .q0(local_B_60_q0), - .address1(local_B_60_address1), - .ce1(local_B_60_ce1), - .we1(local_B_60_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_d1), - .q1(local_B_60_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_61_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_61_address0), - .ce0(local_B_61_ce0), - .we0(local_B_61_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_d0), - .q0(local_B_61_q0), - .address1(local_B_61_address1), - .ce1(local_B_61_ce1), - .we1(local_B_61_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_d1), - .q1(local_B_61_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_62_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_62_address0), - .ce0(local_B_62_ce0), - .we0(local_B_62_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_d0), - .q0(local_B_62_q0), - .address1(local_B_62_address1), - .ce1(local_B_62_ce1), - .we1(local_B_62_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_d1), - .q1(local_B_62_q1) -); - -PEG_Bmtx_local_B_RAM_AUTO_1R1W #( - .DataWidth( 32 ), - .AddressRange( 1024 ), - .AddressWidth( 10 )) -local_B_63_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_B_63_address0), - .ce0(local_B_63_ce0), - .we0(local_B_63_we0), - .d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_d0), - .q0(local_B_63_q0), - .address1(local_B_63_address1), - .ce1(local_B_63_ce1), - .we1(local_B_63_we1), - .d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_d1), - .q1(local_B_63_q1) -); - -PEG_Bmtx_PEG_Bmtx_Pipeline_read_B grp_PEG_Bmtx_Pipeline_read_B_fu_675( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_start), - .ap_done(grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_done), - .ap_idle(grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_idle), - .ap_ready(grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_ready), - .local_B_63_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_address0), - .local_B_63_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_ce0), - .local_B_63_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_we0), - .local_B_63_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_d0), - .local_B_63_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_address1), - .local_B_63_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_ce1), - .local_B_63_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_we1), - .local_B_63_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_d1), - .local_B_62_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_address0), - .local_B_62_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_ce0), - .local_B_62_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_we0), - .local_B_62_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_d0), - .local_B_62_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_address1), - .local_B_62_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_ce1), - .local_B_62_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_we1), - .local_B_62_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_d1), - .local_B_61_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_address0), - .local_B_61_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_ce0), - .local_B_61_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_we0), - .local_B_61_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_d0), - .local_B_61_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_address1), - .local_B_61_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_ce1), - .local_B_61_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_we1), - .local_B_61_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_d1), - .local_B_60_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_address0), - .local_B_60_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_ce0), - .local_B_60_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_we0), - .local_B_60_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_d0), - .local_B_60_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_address1), - .local_B_60_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_ce1), - .local_B_60_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_we1), - .local_B_60_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_d1), - .local_B_59_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_address0), - .local_B_59_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_ce0), - .local_B_59_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_we0), - .local_B_59_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_d0), - .local_B_59_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_address1), - .local_B_59_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_ce1), - .local_B_59_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_we1), - .local_B_59_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_d1), - .local_B_58_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_address0), - .local_B_58_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_ce0), - .local_B_58_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_we0), - .local_B_58_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_d0), - .local_B_58_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_address1), - .local_B_58_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_ce1), - .local_B_58_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_we1), - .local_B_58_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_d1), - .local_B_57_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_address0), - .local_B_57_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_ce0), - .local_B_57_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_we0), - .local_B_57_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_d0), - .local_B_57_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_address1), - .local_B_57_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_ce1), - .local_B_57_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_we1), - .local_B_57_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_d1), - .local_B_56_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_address0), - .local_B_56_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_ce0), - .local_B_56_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_we0), - .local_B_56_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_d0), - .local_B_56_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_address1), - .local_B_56_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_ce1), - .local_B_56_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_we1), - .local_B_56_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_d1), - .local_B_55_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_address0), - .local_B_55_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_ce0), - .local_B_55_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_we0), - .local_B_55_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_d0), - .local_B_55_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_address1), - .local_B_55_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_ce1), - .local_B_55_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_we1), - .local_B_55_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_d1), - .local_B_54_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_address0), - .local_B_54_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_ce0), - .local_B_54_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_we0), - .local_B_54_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_d0), - .local_B_54_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_address1), - .local_B_54_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_ce1), - .local_B_54_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_we1), - .local_B_54_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_d1), - .local_B_53_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_address0), - .local_B_53_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_ce0), - .local_B_53_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_we0), - .local_B_53_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_d0), - .local_B_53_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_address1), - .local_B_53_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_ce1), - .local_B_53_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_we1), - .local_B_53_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_d1), - .local_B_52_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_address0), - .local_B_52_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_ce0), - .local_B_52_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_we0), - .local_B_52_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_d0), - .local_B_52_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_address1), - .local_B_52_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_ce1), - .local_B_52_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_we1), - .local_B_52_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_d1), - .local_B_51_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_address0), - .local_B_51_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_ce0), - .local_B_51_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_we0), - .local_B_51_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_d0), - .local_B_51_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_address1), - .local_B_51_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_ce1), - .local_B_51_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_we1), - .local_B_51_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_d1), - .local_B_50_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_address0), - .local_B_50_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_ce0), - .local_B_50_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_we0), - .local_B_50_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_d0), - .local_B_50_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_address1), - .local_B_50_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_ce1), - .local_B_50_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_we1), - .local_B_50_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_d1), - .local_B_49_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_address0), - .local_B_49_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_ce0), - .local_B_49_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_we0), - .local_B_49_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_d0), - .local_B_49_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_address1), - .local_B_49_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_ce1), - .local_B_49_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_we1), - .local_B_49_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_d1), - .local_B_48_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_address0), - .local_B_48_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_ce0), - .local_B_48_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_we0), - .local_B_48_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_d0), - .local_B_48_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_address1), - .local_B_48_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_ce1), - .local_B_48_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_we1), - .local_B_48_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_d1), - .local_B_47_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_address0), - .local_B_47_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_ce0), - .local_B_47_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_we0), - .local_B_47_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_d0), - .local_B_47_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_address1), - .local_B_47_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_ce1), - .local_B_47_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_we1), - .local_B_47_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_d1), - .local_B_46_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_address0), - .local_B_46_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_ce0), - .local_B_46_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_we0), - .local_B_46_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_d0), - .local_B_46_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_address1), - .local_B_46_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_ce1), - .local_B_46_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_we1), - .local_B_46_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_d1), - .local_B_45_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_address0), - .local_B_45_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_ce0), - .local_B_45_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_we0), - .local_B_45_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_d0), - .local_B_45_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_address1), - .local_B_45_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_ce1), - .local_B_45_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_we1), - .local_B_45_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_d1), - .local_B_44_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_address0), - .local_B_44_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_ce0), - .local_B_44_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_we0), - .local_B_44_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_d0), - .local_B_44_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_address1), - .local_B_44_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_ce1), - .local_B_44_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_we1), - .local_B_44_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_d1), - .local_B_43_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_address0), - .local_B_43_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_ce0), - .local_B_43_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_we0), - .local_B_43_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_d0), - .local_B_43_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_address1), - .local_B_43_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_ce1), - .local_B_43_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_we1), - .local_B_43_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_d1), - .local_B_42_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_address0), - .local_B_42_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_ce0), - .local_B_42_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_we0), - .local_B_42_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_d0), - .local_B_42_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_address1), - .local_B_42_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_ce1), - .local_B_42_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_we1), - .local_B_42_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_d1), - .local_B_41_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_address0), - .local_B_41_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_ce0), - .local_B_41_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_we0), - .local_B_41_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_d0), - .local_B_41_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_address1), - .local_B_41_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_ce1), - .local_B_41_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_we1), - .local_B_41_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_d1), - .local_B_40_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_address0), - .local_B_40_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_ce0), - .local_B_40_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_we0), - .local_B_40_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_d0), - .local_B_40_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_address1), - .local_B_40_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_ce1), - .local_B_40_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_we1), - .local_B_40_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_d1), - .local_B_39_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_address0), - .local_B_39_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_ce0), - .local_B_39_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_we0), - .local_B_39_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_d0), - .local_B_39_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_address1), - .local_B_39_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_ce1), - .local_B_39_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_we1), - .local_B_39_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_d1), - .local_B_38_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_address0), - .local_B_38_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_ce0), - .local_B_38_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_we0), - .local_B_38_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_d0), - .local_B_38_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_address1), - .local_B_38_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_ce1), - .local_B_38_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_we1), - .local_B_38_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_d1), - .local_B_37_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_address0), - .local_B_37_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_ce0), - .local_B_37_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_we0), - .local_B_37_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_d0), - .local_B_37_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_address1), - .local_B_37_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_ce1), - .local_B_37_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_we1), - .local_B_37_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_d1), - .local_B_36_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_address0), - .local_B_36_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_ce0), - .local_B_36_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_we0), - .local_B_36_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_d0), - .local_B_36_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_address1), - .local_B_36_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_ce1), - .local_B_36_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_we1), - .local_B_36_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_d1), - .local_B_35_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_address0), - .local_B_35_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_ce0), - .local_B_35_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_we0), - .local_B_35_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_d0), - .local_B_35_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_address1), - .local_B_35_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_ce1), - .local_B_35_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_we1), - .local_B_35_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_d1), - .local_B_34_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_address0), - .local_B_34_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_ce0), - .local_B_34_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_we0), - .local_B_34_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_d0), - .local_B_34_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_address1), - .local_B_34_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_ce1), - .local_B_34_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_we1), - .local_B_34_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_d1), - .local_B_33_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_address0), - .local_B_33_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_ce0), - .local_B_33_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_we0), - .local_B_33_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_d0), - .local_B_33_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_address1), - .local_B_33_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_ce1), - .local_B_33_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_we1), - .local_B_33_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_d1), - .local_B_32_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_address0), - .local_B_32_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_ce0), - .local_B_32_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_we0), - .local_B_32_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_d0), - .local_B_32_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_address1), - .local_B_32_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_ce1), - .local_B_32_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_we1), - .local_B_32_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_d1), - .local_B_31_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_address0), - .local_B_31_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_ce0), - .local_B_31_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_we0), - .local_B_31_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_d0), - .local_B_31_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_address1), - .local_B_31_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_ce1), - .local_B_31_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_we1), - .local_B_31_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_d1), - .local_B_30_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_address0), - .local_B_30_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_ce0), - .local_B_30_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_we0), - .local_B_30_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_d0), - .local_B_30_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_address1), - .local_B_30_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_ce1), - .local_B_30_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_we1), - .local_B_30_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_d1), - .local_B_29_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_address0), - .local_B_29_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_ce0), - .local_B_29_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_we0), - .local_B_29_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_d0), - .local_B_29_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_address1), - .local_B_29_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_ce1), - .local_B_29_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_we1), - .local_B_29_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_d1), - .local_B_28_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_address0), - .local_B_28_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_ce0), - .local_B_28_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_we0), - .local_B_28_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_d0), - .local_B_28_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_address1), - .local_B_28_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_ce1), - .local_B_28_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_we1), - .local_B_28_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_d1), - .local_B_27_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_address0), - .local_B_27_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_ce0), - .local_B_27_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_we0), - .local_B_27_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_d0), - .local_B_27_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_address1), - .local_B_27_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_ce1), - .local_B_27_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_we1), - .local_B_27_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_d1), - .local_B_26_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_address0), - .local_B_26_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_ce0), - .local_B_26_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_we0), - .local_B_26_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_d0), - .local_B_26_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_address1), - .local_B_26_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_ce1), - .local_B_26_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_we1), - .local_B_26_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_d1), - .local_B_25_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_address0), - .local_B_25_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_ce0), - .local_B_25_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_we0), - .local_B_25_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_d0), - .local_B_25_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_address1), - .local_B_25_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_ce1), - .local_B_25_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_we1), - .local_B_25_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_d1), - .local_B_24_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_address0), - .local_B_24_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_ce0), - .local_B_24_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_we0), - .local_B_24_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_d0), - .local_B_24_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_address1), - .local_B_24_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_ce1), - .local_B_24_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_we1), - .local_B_24_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_d1), - .local_B_23_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_address0), - .local_B_23_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_ce0), - .local_B_23_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_we0), - .local_B_23_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_d0), - .local_B_23_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_address1), - .local_B_23_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_ce1), - .local_B_23_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_we1), - .local_B_23_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_d1), - .local_B_22_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_address0), - .local_B_22_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_ce0), - .local_B_22_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_we0), - .local_B_22_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_d0), - .local_B_22_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_address1), - .local_B_22_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_ce1), - .local_B_22_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_we1), - .local_B_22_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_d1), - .local_B_21_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_address0), - .local_B_21_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_ce0), - .local_B_21_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_we0), - .local_B_21_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_d0), - .local_B_21_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_address1), - .local_B_21_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_ce1), - .local_B_21_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_we1), - .local_B_21_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_d1), - .local_B_20_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_address0), - .local_B_20_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_ce0), - .local_B_20_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_we0), - .local_B_20_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_d0), - .local_B_20_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_address1), - .local_B_20_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_ce1), - .local_B_20_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_we1), - .local_B_20_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_d1), - .local_B_19_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_address0), - .local_B_19_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_ce0), - .local_B_19_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_we0), - .local_B_19_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_d0), - .local_B_19_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_address1), - .local_B_19_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_ce1), - .local_B_19_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_we1), - .local_B_19_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_d1), - .local_B_18_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_address0), - .local_B_18_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_ce0), - .local_B_18_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_we0), - .local_B_18_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_d0), - .local_B_18_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_address1), - .local_B_18_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_ce1), - .local_B_18_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_we1), - .local_B_18_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_d1), - .local_B_17_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_address0), - .local_B_17_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_ce0), - .local_B_17_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_we0), - .local_B_17_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_d0), - .local_B_17_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_address1), - .local_B_17_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_ce1), - .local_B_17_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_we1), - .local_B_17_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_d1), - .local_B_16_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_address0), - .local_B_16_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_ce0), - .local_B_16_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_we0), - .local_B_16_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_d0), - .local_B_16_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_address1), - .local_B_16_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_ce1), - .local_B_16_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_we1), - .local_B_16_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_d1), - .local_B_15_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_address0), - .local_B_15_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_ce0), - .local_B_15_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_we0), - .local_B_15_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_d0), - .local_B_15_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_address1), - .local_B_15_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_ce1), - .local_B_15_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_we1), - .local_B_15_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_d1), - .local_B_14_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_address0), - .local_B_14_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_ce0), - .local_B_14_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_we0), - .local_B_14_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_d0), - .local_B_14_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_address1), - .local_B_14_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_ce1), - .local_B_14_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_we1), - .local_B_14_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_d1), - .local_B_13_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_address0), - .local_B_13_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_ce0), - .local_B_13_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_we0), - .local_B_13_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_d0), - .local_B_13_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_address1), - .local_B_13_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_ce1), - .local_B_13_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_we1), - .local_B_13_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_d1), - .local_B_12_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_address0), - .local_B_12_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_ce0), - .local_B_12_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_we0), - .local_B_12_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_d0), - .local_B_12_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_address1), - .local_B_12_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_ce1), - .local_B_12_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_we1), - .local_B_12_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_d1), - .local_B_11_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_address0), - .local_B_11_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_ce0), - .local_B_11_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_we0), - .local_B_11_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_d0), - .local_B_11_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_address1), - .local_B_11_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_ce1), - .local_B_11_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_we1), - .local_B_11_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_d1), - .local_B_10_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_address0), - .local_B_10_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_ce0), - .local_B_10_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_we0), - .local_B_10_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_d0), - .local_B_10_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_address1), - .local_B_10_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_ce1), - .local_B_10_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_we1), - .local_B_10_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_d1), - .local_B_9_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_address0), - .local_B_9_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_ce0), - .local_B_9_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_we0), - .local_B_9_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_d0), - .local_B_9_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_address1), - .local_B_9_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_ce1), - .local_B_9_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_we1), - .local_B_9_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_d1), - .local_B_8_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_address0), - .local_B_8_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_ce0), - .local_B_8_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_we0), - .local_B_8_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_d0), - .local_B_8_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_address1), - .local_B_8_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_ce1), - .local_B_8_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_we1), - .local_B_8_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_d1), - .local_B_7_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_address0), - .local_B_7_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_ce0), - .local_B_7_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_we0), - .local_B_7_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_d0), - .local_B_7_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_address1), - .local_B_7_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_ce1), - .local_B_7_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_we1), - .local_B_7_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_d1), - .local_B_6_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_address0), - .local_B_6_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_ce0), - .local_B_6_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_we0), - .local_B_6_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_d0), - .local_B_6_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_address1), - .local_B_6_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_ce1), - .local_B_6_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_we1), - .local_B_6_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_d1), - .local_B_5_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_address0), - .local_B_5_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_ce0), - .local_B_5_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_we0), - .local_B_5_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_d0), - .local_B_5_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_address1), - .local_B_5_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_ce1), - .local_B_5_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_we1), - .local_B_5_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_d1), - .local_B_4_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_address0), - .local_B_4_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_ce0), - .local_B_4_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_we0), - .local_B_4_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_d0), - .local_B_4_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_address1), - .local_B_4_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_ce1), - .local_B_4_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_we1), - .local_B_4_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_d1), - .local_B_3_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_address0), - .local_B_3_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_ce0), - .local_B_3_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_we0), - .local_B_3_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_d0), - .local_B_3_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_address1), - .local_B_3_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_ce1), - .local_B_3_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_we1), - .local_B_3_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_d1), - .local_B_2_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_address0), - .local_B_2_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_ce0), - .local_B_2_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_we0), - .local_B_2_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_d0), - .local_B_2_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_address1), - .local_B_2_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_ce1), - .local_B_2_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_we1), - .local_B_2_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_d1), - .local_B_1_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_address0), - .local_B_1_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_ce0), - .local_B_1_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_we0), - .local_B_1_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_d0), - .local_B_1_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_address1), - .local_B_1_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_ce1), - .local_B_1_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_we1), - .local_B_1_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_d1), - .local_B_address0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_address0), - .local_B_ce0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_ce0), - .local_B_we0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_we0), - .local_B_d0(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_d0), - .local_B_address1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_address1), - .local_B_ce1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_ce1), - .local_B_we1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_we1), - .local_B_d1(grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_d1), - .sub(sub_reg_1126), - .fifo_B_in_0_dout(fifo_B_in_0_dout), - .fifo_B_in_0_empty_n(fifo_B_in_0_empty_n), - .fifo_B_in_0_read(grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_in_0_read), - .fifo_B_out_0_din(grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_0_din), - .fifo_B_out_0_full_n(fifo_B_out_0_full_n), - .fifo_B_out_0_write(grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_0_write), - .fifo_B_in_1_dout(fifo_B_in_1_dout), - .fifo_B_in_1_empty_n(fifo_B_in_1_empty_n), - .fifo_B_in_1_read(grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_in_1_read), - .fifo_B_out_1_din(grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_1_din), - .fifo_B_out_1_full_n(fifo_B_out_1_full_n), - .fifo_B_out_1_write(grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_1_write), - .fifo_B_in_2_dout(fifo_B_in_2_dout), - .fifo_B_in_2_empty_n(fifo_B_in_2_empty_n), - .fifo_B_in_2_read(grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_in_2_read), - .fifo_B_out_2_din(grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_2_din), - .fifo_B_out_2_full_n(fifo_B_out_2_full_n), - .fifo_B_out_2_write(grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_2_write), - .fifo_B_in_3_dout(fifo_B_in_3_dout), - .fifo_B_in_3_empty_n(fifo_B_in_3_empty_n), - .fifo_B_in_3_read(grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_in_3_read), - .fifo_B_out_3_din(grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_3_din), - .fifo_B_out_3_full_n(fifo_B_out_3_full_n), - .fifo_B_out_3_write(grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_3_write) -); - -PEG_Bmtx_PEG_Bmtx_Pipeline_computation grp_PEG_Bmtx_Pipeline_computation_fu_760( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_start), - .ap_done(grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_done), - .ap_idle(grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_idle), - .ap_ready(grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_ready), - .fifo_aBvec_0_din(grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_0_din), - .fifo_aBvec_0_full_n(fifo_aBvec_0_full_n), - .fifo_aBvec_0_write(grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_0_write), - .fifo_aBvec_1_din(grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_1_din), - .fifo_aBvec_1_full_n(fifo_aBvec_1_full_n), - .fifo_aBvec_1_write(grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_1_write), - .fifo_aBvec_2_din(grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_2_din), - .fifo_aBvec_2_full_n(fifo_aBvec_2_full_n), - .fifo_aBvec_2_write(grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_2_write), - .fifo_aBvec_3_din(grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_3_din), - .fifo_aBvec_3_full_n(fifo_aBvec_3_full_n), - .fifo_aBvec_3_write(grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_3_write), - .start_32_3(start_32_3_reg_665), - .end_32(end_32_reg_1131), - .fifo_A_s_dout(fifo_A_s_dout), - .fifo_A_s_empty_n(fifo_A_s_empty_n), - .fifo_A_s_read(grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_A_s_read), - .local_B_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_address0), - .local_B_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_ce0), - .local_B_q0(local_B_q0), - .local_B_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_address1), - .local_B_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_ce1), - .local_B_q1(local_B_q1), - .local_B_1_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_1_address0), - .local_B_1_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_1_ce0), - .local_B_1_q0(local_B_1_q0), - .local_B_1_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_1_address1), - .local_B_1_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_1_ce1), - .local_B_1_q1(local_B_1_q1), - .local_B_2_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_2_address0), - .local_B_2_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_2_ce0), - .local_B_2_q0(local_B_2_q0), - .local_B_2_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_2_address1), - .local_B_2_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_2_ce1), - .local_B_2_q1(local_B_2_q1), - .local_B_3_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_3_address0), - .local_B_3_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_3_ce0), - .local_B_3_q0(local_B_3_q0), - .local_B_3_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_3_address1), - .local_B_3_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_3_ce1), - .local_B_3_q1(local_B_3_q1), - .local_B_4_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_4_address0), - .local_B_4_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_4_ce0), - .local_B_4_q0(local_B_4_q0), - .local_B_4_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_4_address1), - .local_B_4_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_4_ce1), - .local_B_4_q1(local_B_4_q1), - .local_B_5_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_5_address0), - .local_B_5_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_5_ce0), - .local_B_5_q0(local_B_5_q0), - .local_B_5_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_5_address1), - .local_B_5_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_5_ce1), - .local_B_5_q1(local_B_5_q1), - .local_B_6_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_6_address0), - .local_B_6_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_6_ce0), - .local_B_6_q0(local_B_6_q0), - .local_B_6_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_6_address1), - .local_B_6_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_6_ce1), - .local_B_6_q1(local_B_6_q1), - .local_B_7_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_7_address0), - .local_B_7_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_7_ce0), - .local_B_7_q0(local_B_7_q0), - .local_B_7_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_7_address1), - .local_B_7_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_7_ce1), - .local_B_7_q1(local_B_7_q1), - .local_B_8_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_8_address0), - .local_B_8_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_8_ce0), - .local_B_8_q0(local_B_8_q0), - .local_B_8_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_8_address1), - .local_B_8_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_8_ce1), - .local_B_8_q1(local_B_8_q1), - .local_B_9_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_9_address0), - .local_B_9_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_9_ce0), - .local_B_9_q0(local_B_9_q0), - .local_B_9_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_9_address1), - .local_B_9_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_9_ce1), - .local_B_9_q1(local_B_9_q1), - .local_B_10_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_10_address0), - .local_B_10_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_10_ce0), - .local_B_10_q0(local_B_10_q0), - .local_B_10_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_10_address1), - .local_B_10_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_10_ce1), - .local_B_10_q1(local_B_10_q1), - .local_B_11_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_11_address0), - .local_B_11_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_11_ce0), - .local_B_11_q0(local_B_11_q0), - .local_B_11_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_11_address1), - .local_B_11_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_11_ce1), - .local_B_11_q1(local_B_11_q1), - .local_B_12_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_12_address0), - .local_B_12_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_12_ce0), - .local_B_12_q0(local_B_12_q0), - .local_B_12_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_12_address1), - .local_B_12_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_12_ce1), - .local_B_12_q1(local_B_12_q1), - .local_B_13_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_13_address0), - .local_B_13_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_13_ce0), - .local_B_13_q0(local_B_13_q0), - .local_B_13_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_13_address1), - .local_B_13_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_13_ce1), - .local_B_13_q1(local_B_13_q1), - .local_B_14_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_14_address0), - .local_B_14_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_14_ce0), - .local_B_14_q0(local_B_14_q0), - .local_B_14_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_14_address1), - .local_B_14_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_14_ce1), - .local_B_14_q1(local_B_14_q1), - .local_B_15_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_15_address0), - .local_B_15_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_15_ce0), - .local_B_15_q0(local_B_15_q0), - .local_B_15_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_15_address1), - .local_B_15_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_15_ce1), - .local_B_15_q1(local_B_15_q1), - .local_B_16_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_16_address0), - .local_B_16_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_16_ce0), - .local_B_16_q0(local_B_16_q0), - .local_B_16_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_16_address1), - .local_B_16_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_16_ce1), - .local_B_16_q1(local_B_16_q1), - .local_B_17_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_17_address0), - .local_B_17_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_17_ce0), - .local_B_17_q0(local_B_17_q0), - .local_B_17_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_17_address1), - .local_B_17_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_17_ce1), - .local_B_17_q1(local_B_17_q1), - .local_B_18_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_18_address0), - .local_B_18_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_18_ce0), - .local_B_18_q0(local_B_18_q0), - .local_B_18_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_18_address1), - .local_B_18_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_18_ce1), - .local_B_18_q1(local_B_18_q1), - .local_B_19_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_19_address0), - .local_B_19_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_19_ce0), - .local_B_19_q0(local_B_19_q0), - .local_B_19_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_19_address1), - .local_B_19_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_19_ce1), - .local_B_19_q1(local_B_19_q1), - .local_B_20_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_20_address0), - .local_B_20_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_20_ce0), - .local_B_20_q0(local_B_20_q0), - .local_B_20_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_20_address1), - .local_B_20_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_20_ce1), - .local_B_20_q1(local_B_20_q1), - .local_B_21_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_21_address0), - .local_B_21_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_21_ce0), - .local_B_21_q0(local_B_21_q0), - .local_B_21_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_21_address1), - .local_B_21_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_21_ce1), - .local_B_21_q1(local_B_21_q1), - .local_B_22_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_22_address0), - .local_B_22_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_22_ce0), - .local_B_22_q0(local_B_22_q0), - .local_B_22_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_22_address1), - .local_B_22_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_22_ce1), - .local_B_22_q1(local_B_22_q1), - .local_B_23_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_23_address0), - .local_B_23_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_23_ce0), - .local_B_23_q0(local_B_23_q0), - .local_B_23_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_23_address1), - .local_B_23_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_23_ce1), - .local_B_23_q1(local_B_23_q1), - .local_B_24_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_24_address0), - .local_B_24_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_24_ce0), - .local_B_24_q0(local_B_24_q0), - .local_B_24_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_24_address1), - .local_B_24_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_24_ce1), - .local_B_24_q1(local_B_24_q1), - .local_B_25_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_25_address0), - .local_B_25_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_25_ce0), - .local_B_25_q0(local_B_25_q0), - .local_B_25_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_25_address1), - .local_B_25_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_25_ce1), - .local_B_25_q1(local_B_25_q1), - .local_B_26_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_26_address0), - .local_B_26_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_26_ce0), - .local_B_26_q0(local_B_26_q0), - .local_B_26_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_26_address1), - .local_B_26_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_26_ce1), - .local_B_26_q1(local_B_26_q1), - .local_B_27_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_27_address0), - .local_B_27_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_27_ce0), - .local_B_27_q0(local_B_27_q0), - .local_B_27_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_27_address1), - .local_B_27_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_27_ce1), - .local_B_27_q1(local_B_27_q1), - .local_B_28_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_28_address0), - .local_B_28_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_28_ce0), - .local_B_28_q0(local_B_28_q0), - .local_B_28_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_28_address1), - .local_B_28_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_28_ce1), - .local_B_28_q1(local_B_28_q1), - .local_B_29_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_29_address0), - .local_B_29_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_29_ce0), - .local_B_29_q0(local_B_29_q0), - .local_B_29_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_29_address1), - .local_B_29_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_29_ce1), - .local_B_29_q1(local_B_29_q1), - .local_B_30_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_30_address0), - .local_B_30_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_30_ce0), - .local_B_30_q0(local_B_30_q0), - .local_B_30_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_30_address1), - .local_B_30_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_30_ce1), - .local_B_30_q1(local_B_30_q1), - .local_B_31_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_31_address0), - .local_B_31_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_31_ce0), - .local_B_31_q0(local_B_31_q0), - .local_B_31_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_31_address1), - .local_B_31_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_31_ce1), - .local_B_31_q1(local_B_31_q1), - .local_B_32_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_32_address0), - .local_B_32_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_32_ce0), - .local_B_32_q0(local_B_32_q0), - .local_B_32_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_32_address1), - .local_B_32_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_32_ce1), - .local_B_32_q1(local_B_32_q1), - .local_B_33_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_33_address0), - .local_B_33_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_33_ce0), - .local_B_33_q0(local_B_33_q0), - .local_B_33_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_33_address1), - .local_B_33_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_33_ce1), - .local_B_33_q1(local_B_33_q1), - .local_B_34_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_34_address0), - .local_B_34_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_34_ce0), - .local_B_34_q0(local_B_34_q0), - .local_B_34_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_34_address1), - .local_B_34_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_34_ce1), - .local_B_34_q1(local_B_34_q1), - .local_B_35_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_35_address0), - .local_B_35_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_35_ce0), - .local_B_35_q0(local_B_35_q0), - .local_B_35_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_35_address1), - .local_B_35_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_35_ce1), - .local_B_35_q1(local_B_35_q1), - .local_B_36_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_36_address0), - .local_B_36_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_36_ce0), - .local_B_36_q0(local_B_36_q0), - .local_B_36_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_36_address1), - .local_B_36_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_36_ce1), - .local_B_36_q1(local_B_36_q1), - .local_B_37_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_37_address0), - .local_B_37_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_37_ce0), - .local_B_37_q0(local_B_37_q0), - .local_B_37_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_37_address1), - .local_B_37_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_37_ce1), - .local_B_37_q1(local_B_37_q1), - .local_B_38_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_38_address0), - .local_B_38_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_38_ce0), - .local_B_38_q0(local_B_38_q0), - .local_B_38_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_38_address1), - .local_B_38_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_38_ce1), - .local_B_38_q1(local_B_38_q1), - .local_B_39_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_39_address0), - .local_B_39_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_39_ce0), - .local_B_39_q0(local_B_39_q0), - .local_B_39_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_39_address1), - .local_B_39_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_39_ce1), - .local_B_39_q1(local_B_39_q1), - .local_B_40_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_40_address0), - .local_B_40_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_40_ce0), - .local_B_40_q0(local_B_40_q0), - .local_B_40_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_40_address1), - .local_B_40_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_40_ce1), - .local_B_40_q1(local_B_40_q1), - .local_B_41_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_41_address0), - .local_B_41_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_41_ce0), - .local_B_41_q0(local_B_41_q0), - .local_B_41_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_41_address1), - .local_B_41_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_41_ce1), - .local_B_41_q1(local_B_41_q1), - .local_B_42_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_42_address0), - .local_B_42_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_42_ce0), - .local_B_42_q0(local_B_42_q0), - .local_B_42_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_42_address1), - .local_B_42_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_42_ce1), - .local_B_42_q1(local_B_42_q1), - .local_B_43_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_43_address0), - .local_B_43_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_43_ce0), - .local_B_43_q0(local_B_43_q0), - .local_B_43_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_43_address1), - .local_B_43_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_43_ce1), - .local_B_43_q1(local_B_43_q1), - .local_B_44_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_44_address0), - .local_B_44_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_44_ce0), - .local_B_44_q0(local_B_44_q0), - .local_B_44_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_44_address1), - .local_B_44_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_44_ce1), - .local_B_44_q1(local_B_44_q1), - .local_B_45_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_45_address0), - .local_B_45_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_45_ce0), - .local_B_45_q0(local_B_45_q0), - .local_B_45_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_45_address1), - .local_B_45_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_45_ce1), - .local_B_45_q1(local_B_45_q1), - .local_B_46_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_46_address0), - .local_B_46_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_46_ce0), - .local_B_46_q0(local_B_46_q0), - .local_B_46_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_46_address1), - .local_B_46_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_46_ce1), - .local_B_46_q1(local_B_46_q1), - .local_B_47_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_47_address0), - .local_B_47_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_47_ce0), - .local_B_47_q0(local_B_47_q0), - .local_B_47_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_47_address1), - .local_B_47_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_47_ce1), - .local_B_47_q1(local_B_47_q1), - .local_B_48_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_48_address0), - .local_B_48_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_48_ce0), - .local_B_48_q0(local_B_48_q0), - .local_B_48_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_48_address1), - .local_B_48_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_48_ce1), - .local_B_48_q1(local_B_48_q1), - .local_B_49_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_49_address0), - .local_B_49_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_49_ce0), - .local_B_49_q0(local_B_49_q0), - .local_B_49_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_49_address1), - .local_B_49_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_49_ce1), - .local_B_49_q1(local_B_49_q1), - .local_B_50_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_50_address0), - .local_B_50_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_50_ce0), - .local_B_50_q0(local_B_50_q0), - .local_B_50_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_50_address1), - .local_B_50_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_50_ce1), - .local_B_50_q1(local_B_50_q1), - .local_B_51_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_51_address0), - .local_B_51_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_51_ce0), - .local_B_51_q0(local_B_51_q0), - .local_B_51_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_51_address1), - .local_B_51_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_51_ce1), - .local_B_51_q1(local_B_51_q1), - .local_B_52_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_52_address0), - .local_B_52_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_52_ce0), - .local_B_52_q0(local_B_52_q0), - .local_B_52_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_52_address1), - .local_B_52_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_52_ce1), - .local_B_52_q1(local_B_52_q1), - .local_B_53_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_53_address0), - .local_B_53_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_53_ce0), - .local_B_53_q0(local_B_53_q0), - .local_B_53_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_53_address1), - .local_B_53_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_53_ce1), - .local_B_53_q1(local_B_53_q1), - .local_B_54_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_54_address0), - .local_B_54_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_54_ce0), - .local_B_54_q0(local_B_54_q0), - .local_B_54_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_54_address1), - .local_B_54_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_54_ce1), - .local_B_54_q1(local_B_54_q1), - .local_B_55_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_55_address0), - .local_B_55_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_55_ce0), - .local_B_55_q0(local_B_55_q0), - .local_B_55_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_55_address1), - .local_B_55_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_55_ce1), - .local_B_55_q1(local_B_55_q1), - .local_B_56_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_56_address0), - .local_B_56_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_56_ce0), - .local_B_56_q0(local_B_56_q0), - .local_B_56_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_56_address1), - .local_B_56_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_56_ce1), - .local_B_56_q1(local_B_56_q1), - .local_B_57_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_57_address0), - .local_B_57_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_57_ce0), - .local_B_57_q0(local_B_57_q0), - .local_B_57_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_57_address1), - .local_B_57_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_57_ce1), - .local_B_57_q1(local_B_57_q1), - .local_B_58_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_58_address0), - .local_B_58_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_58_ce0), - .local_B_58_q0(local_B_58_q0), - .local_B_58_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_58_address1), - .local_B_58_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_58_ce1), - .local_B_58_q1(local_B_58_q1), - .local_B_59_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_59_address0), - .local_B_59_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_59_ce0), - .local_B_59_q0(local_B_59_q0), - .local_B_59_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_59_address1), - .local_B_59_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_59_ce1), - .local_B_59_q1(local_B_59_q1), - .local_B_60_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_60_address0), - .local_B_60_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_60_ce0), - .local_B_60_q0(local_B_60_q0), - .local_B_60_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_60_address1), - .local_B_60_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_60_ce1), - .local_B_60_q1(local_B_60_q1), - .local_B_61_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_61_address0), - .local_B_61_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_61_ce0), - .local_B_61_q0(local_B_61_q0), - .local_B_61_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_61_address1), - .local_B_61_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_61_ce1), - .local_B_61_q1(local_B_61_q1), - .local_B_62_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_62_address0), - .local_B_62_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_62_ce0), - .local_B_62_q0(local_B_62_q0), - .local_B_62_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_62_address1), - .local_B_62_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_62_ce1), - .local_B_62_q1(local_B_62_q1), - .local_B_63_address0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_63_address0), - .local_B_63_ce0(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_63_ce0), - .local_B_63_q0(local_B_63_q0), - .local_B_63_address1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_63_address1), - .local_B_63_ce1(grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_63_ce1), - .local_B_63_q1(local_B_63_q1) -); - -PEG_Bmtx_mul_mul_16s_14ns_30_4_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 16 ), - .din1_WIDTH( 14 ), - .dout_WIDTH( 30 )) -mul_mul_16s_14ns_30_4_1_U211( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .din0(rp_time_fu_927_p3), - .din1(grp_fu_1056_p1), - .ce(grp_fu_1056_ce), - .dout(grp_fu_1056_p2) -); - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_start_reg <= 1'b0; - end else begin - if ((1'b1 == ap_CS_fsm_state14)) begin - grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_start_reg <= 1'b1; - end else if ((grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_ready == 1'b1)) begin - grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_start_reg <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_start_reg <= 1'b0; - end else begin - if ((1'b1 == ap_CS_fsm_state11)) begin - grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_start_reg <= 1'b1; - end else if ((grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_ready == 1'b1)) begin - grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_start_reg <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b1 == ap_CS_fsm_state15) & (grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_done == 1'b1))) begin - i_reg_654 <= i_1_reg_1121; - end else if ((~((fifo_inst_out_full_n == 1'b0) | (fifo_inst_in_s_empty_n == 1'b0) | (fifo_inst_out_to_Cmtx_full_n == 1'b0)) & (1'b1 == ap_CS_fsm_state9))) begin - i_reg_654 <= 31'd0; - end -end - -always @ (posedge ap_clk) begin - if ((~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1))) begin - rp_fu_146 <= 28'd0; - end else if (((icmp_ln276_fu_1010_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state10))) begin - rp_fu_146 <= rp_2_reg_1108; - end -end - -always @ (posedge ap_clk) begin - if (((1'b1 == ap_CS_fsm_state15) & (grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_done == 1'b1))) begin - start_32_3_reg_665 <= end_32_reg_1131; - end else if ((~((fifo_inst_out_full_n == 1'b0) | (fifo_inst_in_s_empty_n == 1'b0) | (fifo_inst_out_to_Cmtx_full_n == 1'b0)) & (1'b1 == ap_CS_fsm_state9))) begin - start_32_3_reg_665 <= start_32_fu_992_p1; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state3)) begin - N16_reg_1074 <= {{PE_inst_in_s_dout[31:16]}}; - lshr_ln_reg_1080 <= {{add_ln257_fu_906_p2[16:3]}}; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state1)) begin - NUM_ITE_reg_1069 <= NUM_ITE_fu_841_p1; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state13)) begin - end_32_reg_1131 <= end_32_fu_1042_p1; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state10)) begin - i_1_reg_1121 <= i_1_fu_1015_p2; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state8)) begin - rp_2_reg_1108 <= rp_2_fu_986_p2; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state7)) begin - rp_time_N_reg_1095 <= grp_fu_1056_p2; - shr79_reg_1100 <= shr79_fu_970_p1; - end -end - -always @ (posedge ap_clk) begin - if (((icmp_ln276_fu_1010_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state10))) begin - sub_reg_1126 <= sub_fu_1033_p2; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state7) | (1'b1 == ap_CS_fsm_state3) | (1'b1 == ap_CS_fsm_state2) | ((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1)))) begin - PE_inst_in_s_blk_n = PE_inst_in_s_empty_n; - end else begin - PE_inst_in_s_blk_n = 1'b1; - end -end - -always @ (*) begin - if (((~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n)) & (1'b1 == ap_CS_fsm_state7)) | (~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n)) & (1'b1 == ap_CS_fsm_state3)) | (~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n)) & (1'b1 == ap_CS_fsm_state2)) | (~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1)))) begin - PE_inst_in_s_read = 1'b1; - end else begin - PE_inst_in_s_read = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state7) | (1'b1 == ap_CS_fsm_state3) | (1'b1 == ap_CS_fsm_state2) | ((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1)))) begin - PE_inst_out_blk_n = PE_inst_out_full_n; - end else begin - PE_inst_out_blk_n = 1'b1; - end -end - -always @ (*) begin - if ((~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n)) & (1'b1 == ap_CS_fsm_state7))) begin - PE_inst_out_din = p_11_fu_945_p3; - end else if ((~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n)) & (1'b1 == ap_CS_fsm_state3))) begin - PE_inst_out_din = p_0_fu_882_p3; - end else if ((~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n)) & (1'b1 == ap_CS_fsm_state2))) begin - PE_inst_out_din = p_10_fu_864_p3; - end else if ((~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1))) begin - PE_inst_out_din = p_s_fu_845_p3; - end else begin - PE_inst_out_din = 'bx; - end -end - -always @ (*) begin - if (((~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n)) & (1'b1 == ap_CS_fsm_state7)) | (~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n)) & (1'b1 == ap_CS_fsm_state3)) | (~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n)) & (1'b1 == ap_CS_fsm_state2)) | (~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1)))) begin - PE_inst_out_write = 1'b1; - end else begin - PE_inst_out_write = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state3) | (1'b1 == ap_CS_fsm_state2) | ((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1)))) begin - PE_inst_to_Cmtx_blk_n = PE_inst_to_Cmtx_full_n; - end else begin - PE_inst_to_Cmtx_blk_n = 1'b1; - end -end - -always @ (*) begin - if ((~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n)) & (1'b1 == ap_CS_fsm_state3))) begin - PE_inst_to_Cmtx_din = p_0_fu_882_p3; - end else if ((~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n)) & (1'b1 == ap_CS_fsm_state2))) begin - PE_inst_to_Cmtx_din = p_10_fu_864_p3; - end else if ((~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1))) begin - PE_inst_to_Cmtx_din = p_s_fu_845_p3; - end else begin - PE_inst_to_Cmtx_din = 'bx; - end -end - -always @ (*) begin - if (((~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n)) & (1'b1 == ap_CS_fsm_state3)) | (~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n)) & (1'b1 == ap_CS_fsm_state2)) | (~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1)))) begin - PE_inst_to_Cmtx_write = 1'b1; - end else begin - PE_inst_to_Cmtx_write = 1'b0; - end -end - -assign ap_ST_fsm_state10_blk = 1'b0; - -assign ap_ST_fsm_state11_blk = 1'b0; - -always @ (*) begin - if ((grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_done == 1'b0)) begin - ap_ST_fsm_state12_blk = 1'b1; - end else begin - ap_ST_fsm_state12_blk = 1'b0; - end -end - -always @ (*) begin - if (((fifo_inst_out_full_n == 1'b0) | (fifo_inst_in_s_empty_n == 1'b0) | (fifo_inst_out_to_Cmtx_full_n == 1'b0))) begin - ap_ST_fsm_state13_blk = 1'b1; - end else begin - ap_ST_fsm_state13_blk = 1'b0; - end -end - -assign ap_ST_fsm_state14_blk = 1'b0; - -always @ (*) begin - if ((grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_done == 1'b0)) begin - ap_ST_fsm_state15_blk = 1'b1; - end else begin - ap_ST_fsm_state15_blk = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n) | (ap_start == 1'b0))) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n))) begin - ap_ST_fsm_state2_blk = 1'b1; - end else begin - ap_ST_fsm_state2_blk = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n))) begin - ap_ST_fsm_state3_blk = 1'b1; - end else begin - ap_ST_fsm_state3_blk = 1'b0; - end -end - -assign ap_ST_fsm_state4_blk = 1'b0; - -assign ap_ST_fsm_state5_blk = 1'b0; - -assign ap_ST_fsm_state6_blk = 1'b0; - -always @ (*) begin - if (((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n))) begin - ap_ST_fsm_state7_blk = 1'b1; - end else begin - ap_ST_fsm_state7_blk = 1'b0; - end -end - -assign ap_ST_fsm_state8_blk = 1'b0; - -always @ (*) begin - if (((fifo_inst_out_full_n == 1'b0) | (fifo_inst_in_s_empty_n == 1'b0) | (fifo_inst_out_to_Cmtx_full_n == 1'b0))) begin - ap_ST_fsm_state9_blk = 1'b1; - end else begin - ap_ST_fsm_state9_blk = 1'b0; - end -end - -always @ (*) begin - if (((icmp_ln259_fu_981_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state8))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((ap_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((icmp_ln259_fu_981_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state8))) begin - ap_ready = 1'b1; - end else begin - ap_ready = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - fifo_A_s_read = grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_A_s_read; - end else begin - fifo_A_s_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - fifo_B_in_0_read = grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_in_0_read; - end else begin - fifo_B_in_0_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - fifo_B_in_1_read = grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_in_1_read; - end else begin - fifo_B_in_1_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - fifo_B_in_2_read = grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_in_2_read; - end else begin - fifo_B_in_2_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - fifo_B_in_3_read = grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_in_3_read; - end else begin - fifo_B_in_3_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - fifo_B_out_0_write = grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_0_write; - end else begin - fifo_B_out_0_write = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - fifo_B_out_1_write = grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_1_write; - end else begin - fifo_B_out_1_write = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - fifo_B_out_2_write = grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_2_write; - end else begin - fifo_B_out_2_write = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - fifo_B_out_3_write = grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_3_write; - end else begin - fifo_B_out_3_write = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - fifo_aBvec_0_write = grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_0_write; - end else begin - fifo_aBvec_0_write = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - fifo_aBvec_1_write = grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_1_write; - end else begin - fifo_aBvec_1_write = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - fifo_aBvec_2_write = grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_2_write; - end else begin - fifo_aBvec_2_write = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - fifo_aBvec_3_write = grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_3_write; - end else begin - fifo_aBvec_3_write = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state13) | (1'b1 == ap_CS_fsm_state9))) begin - fifo_inst_in_s_blk_n = fifo_inst_in_s_empty_n; - end else begin - fifo_inst_in_s_blk_n = 1'b1; - end -end - -always @ (*) begin - if (((~((fifo_inst_out_full_n == 1'b0) | (fifo_inst_in_s_empty_n == 1'b0) | (fifo_inst_out_to_Cmtx_full_n == 1'b0)) & (1'b1 == ap_CS_fsm_state13)) | (~((fifo_inst_out_full_n == 1'b0) | (fifo_inst_in_s_empty_n == 1'b0) | (fifo_inst_out_to_Cmtx_full_n == 1'b0)) & (1'b1 == ap_CS_fsm_state9)))) begin - fifo_inst_in_s_read = 1'b1; - end else begin - fifo_inst_in_s_read = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state13) | (1'b1 == ap_CS_fsm_state9))) begin - fifo_inst_out_blk_n = fifo_inst_out_full_n; - end else begin - fifo_inst_out_blk_n = 1'b1; - end -end - -always @ (*) begin - if ((1'b1 == ap_condition_2077)) begin - if ((1'b1 == ap_CS_fsm_state13)) begin - fifo_inst_out_din = tmp_11_fu_1046_p3; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - fifo_inst_out_din = tmp_9_fu_996_p3; - end else begin - fifo_inst_out_din = 'bx; - end - end else begin - fifo_inst_out_din = 'bx; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state13) | (1'b1 == ap_CS_fsm_state9))) begin - fifo_inst_out_to_Cmtx_blk_n = fifo_inst_out_to_Cmtx_full_n; - end else begin - fifo_inst_out_to_Cmtx_blk_n = 1'b1; - end -end - -always @ (*) begin - if ((1'b1 == ap_condition_2077)) begin - if ((1'b1 == ap_CS_fsm_state13)) begin - fifo_inst_out_to_Cmtx_din = tmp_11_fu_1046_p3; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - fifo_inst_out_to_Cmtx_din = tmp_9_fu_996_p3; - end else begin - fifo_inst_out_to_Cmtx_din = 'bx; - end - end else begin - fifo_inst_out_to_Cmtx_din = 'bx; - end -end - -always @ (*) begin - if (((~((fifo_inst_out_full_n == 1'b0) | (fifo_inst_in_s_empty_n == 1'b0) | (fifo_inst_out_to_Cmtx_full_n == 1'b0)) & (1'b1 == ap_CS_fsm_state13)) | (~((fifo_inst_out_full_n == 1'b0) | (fifo_inst_in_s_empty_n == 1'b0) | (fifo_inst_out_to_Cmtx_full_n == 1'b0)) & (1'b1 == ap_CS_fsm_state9)))) begin - fifo_inst_out_to_Cmtx_write = 1'b1; - end else begin - fifo_inst_out_to_Cmtx_write = 1'b0; - end -end - -always @ (*) begin - if (((~((fifo_inst_out_full_n == 1'b0) | (fifo_inst_in_s_empty_n == 1'b0) | (fifo_inst_out_to_Cmtx_full_n == 1'b0)) & (1'b1 == ap_CS_fsm_state13)) | (~((fifo_inst_out_full_n == 1'b0) | (fifo_inst_in_s_empty_n == 1'b0) | (fifo_inst_out_to_Cmtx_full_n == 1'b0)) & (1'b1 == ap_CS_fsm_state9)))) begin - fifo_inst_out_write = 1'b1; - end else begin - fifo_inst_out_write = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state6) | (1'b1 == ap_CS_fsm_state5) | (1'b1 == ap_CS_fsm_state4) | (~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n)) & (1'b1 == ap_CS_fsm_state7)))) begin - grp_fu_1056_ce = 1'b1; - end else begin - grp_fu_1056_ce = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_10_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_10_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_10_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_address0; - end else begin - local_B_10_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_10_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_10_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_10_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_address1; - end else begin - local_B_10_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_10_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_10_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_10_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_ce0; - end else begin - local_B_10_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_10_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_10_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_10_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_ce1; - end else begin - local_B_10_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_10_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_we0; - end else begin - local_B_10_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_10_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_10_we1; - end else begin - local_B_10_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_11_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_11_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_11_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_address0; - end else begin - local_B_11_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_11_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_11_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_11_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_address1; - end else begin - local_B_11_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_11_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_11_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_11_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_ce0; - end else begin - local_B_11_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_11_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_11_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_11_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_ce1; - end else begin - local_B_11_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_11_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_we0; - end else begin - local_B_11_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_11_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_11_we1; - end else begin - local_B_11_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_12_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_12_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_12_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_address0; - end else begin - local_B_12_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_12_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_12_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_12_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_address1; - end else begin - local_B_12_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_12_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_12_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_12_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_ce0; - end else begin - local_B_12_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_12_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_12_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_12_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_ce1; - end else begin - local_B_12_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_12_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_we0; - end else begin - local_B_12_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_12_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_12_we1; - end else begin - local_B_12_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_13_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_13_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_13_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_address0; - end else begin - local_B_13_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_13_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_13_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_13_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_address1; - end else begin - local_B_13_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_13_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_13_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_13_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_ce0; - end else begin - local_B_13_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_13_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_13_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_13_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_ce1; - end else begin - local_B_13_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_13_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_we0; - end else begin - local_B_13_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_13_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_13_we1; - end else begin - local_B_13_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_14_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_14_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_14_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_address0; - end else begin - local_B_14_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_14_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_14_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_14_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_address1; - end else begin - local_B_14_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_14_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_14_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_14_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_ce0; - end else begin - local_B_14_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_14_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_14_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_14_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_ce1; - end else begin - local_B_14_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_14_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_we0; - end else begin - local_B_14_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_14_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_14_we1; - end else begin - local_B_14_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_15_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_15_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_15_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_address0; - end else begin - local_B_15_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_15_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_15_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_15_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_address1; - end else begin - local_B_15_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_15_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_15_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_15_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_ce0; - end else begin - local_B_15_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_15_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_15_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_15_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_ce1; - end else begin - local_B_15_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_15_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_we0; - end else begin - local_B_15_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_15_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_15_we1; - end else begin - local_B_15_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_16_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_16_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_16_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_address0; - end else begin - local_B_16_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_16_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_16_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_16_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_address1; - end else begin - local_B_16_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_16_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_16_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_16_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_ce0; - end else begin - local_B_16_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_16_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_16_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_16_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_ce1; - end else begin - local_B_16_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_16_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_we0; - end else begin - local_B_16_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_16_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_16_we1; - end else begin - local_B_16_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_17_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_17_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_17_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_address0; - end else begin - local_B_17_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_17_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_17_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_17_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_address1; - end else begin - local_B_17_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_17_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_17_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_17_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_ce0; - end else begin - local_B_17_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_17_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_17_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_17_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_ce1; - end else begin - local_B_17_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_17_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_we0; - end else begin - local_B_17_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_17_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_17_we1; - end else begin - local_B_17_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_18_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_18_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_18_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_address0; - end else begin - local_B_18_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_18_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_18_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_18_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_address1; - end else begin - local_B_18_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_18_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_18_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_18_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_ce0; - end else begin - local_B_18_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_18_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_18_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_18_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_ce1; - end else begin - local_B_18_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_18_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_we0; - end else begin - local_B_18_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_18_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_18_we1; - end else begin - local_B_18_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_19_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_19_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_19_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_address0; - end else begin - local_B_19_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_19_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_19_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_19_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_address1; - end else begin - local_B_19_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_19_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_19_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_19_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_ce0; - end else begin - local_B_19_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_19_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_19_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_19_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_ce1; - end else begin - local_B_19_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_19_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_we0; - end else begin - local_B_19_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_19_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_19_we1; - end else begin - local_B_19_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_1_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_1_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_1_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_address0; - end else begin - local_B_1_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_1_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_1_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_1_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_address1; - end else begin - local_B_1_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_1_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_1_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_1_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_ce0; - end else begin - local_B_1_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_1_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_1_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_1_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_ce1; - end else begin - local_B_1_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_1_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_we0; - end else begin - local_B_1_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_1_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_1_we1; - end else begin - local_B_1_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_20_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_20_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_20_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_address0; - end else begin - local_B_20_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_20_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_20_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_20_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_address1; - end else begin - local_B_20_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_20_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_20_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_20_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_ce0; - end else begin - local_B_20_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_20_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_20_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_20_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_ce1; - end else begin - local_B_20_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_20_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_we0; - end else begin - local_B_20_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_20_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_20_we1; - end else begin - local_B_20_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_21_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_21_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_21_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_address0; - end else begin - local_B_21_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_21_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_21_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_21_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_address1; - end else begin - local_B_21_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_21_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_21_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_21_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_ce0; - end else begin - local_B_21_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_21_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_21_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_21_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_ce1; - end else begin - local_B_21_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_21_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_we0; - end else begin - local_B_21_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_21_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_21_we1; - end else begin - local_B_21_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_22_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_22_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_22_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_address0; - end else begin - local_B_22_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_22_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_22_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_22_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_address1; - end else begin - local_B_22_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_22_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_22_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_22_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_ce0; - end else begin - local_B_22_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_22_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_22_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_22_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_ce1; - end else begin - local_B_22_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_22_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_we0; - end else begin - local_B_22_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_22_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_22_we1; - end else begin - local_B_22_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_23_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_23_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_23_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_address0; - end else begin - local_B_23_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_23_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_23_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_23_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_address1; - end else begin - local_B_23_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_23_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_23_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_23_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_ce0; - end else begin - local_B_23_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_23_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_23_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_23_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_ce1; - end else begin - local_B_23_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_23_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_we0; - end else begin - local_B_23_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_23_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_23_we1; - end else begin - local_B_23_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_24_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_24_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_24_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_address0; - end else begin - local_B_24_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_24_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_24_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_24_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_address1; - end else begin - local_B_24_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_24_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_24_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_24_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_ce0; - end else begin - local_B_24_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_24_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_24_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_24_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_ce1; - end else begin - local_B_24_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_24_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_we0; - end else begin - local_B_24_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_24_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_24_we1; - end else begin - local_B_24_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_25_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_25_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_25_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_address0; - end else begin - local_B_25_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_25_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_25_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_25_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_address1; - end else begin - local_B_25_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_25_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_25_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_25_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_ce0; - end else begin - local_B_25_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_25_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_25_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_25_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_ce1; - end else begin - local_B_25_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_25_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_we0; - end else begin - local_B_25_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_25_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_25_we1; - end else begin - local_B_25_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_26_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_26_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_26_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_address0; - end else begin - local_B_26_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_26_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_26_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_26_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_address1; - end else begin - local_B_26_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_26_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_26_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_26_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_ce0; - end else begin - local_B_26_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_26_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_26_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_26_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_ce1; - end else begin - local_B_26_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_26_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_we0; - end else begin - local_B_26_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_26_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_26_we1; - end else begin - local_B_26_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_27_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_27_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_27_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_address0; - end else begin - local_B_27_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_27_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_27_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_27_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_address1; - end else begin - local_B_27_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_27_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_27_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_27_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_ce0; - end else begin - local_B_27_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_27_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_27_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_27_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_ce1; - end else begin - local_B_27_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_27_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_we0; - end else begin - local_B_27_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_27_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_27_we1; - end else begin - local_B_27_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_28_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_28_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_28_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_address0; - end else begin - local_B_28_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_28_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_28_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_28_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_address1; - end else begin - local_B_28_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_28_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_28_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_28_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_ce0; - end else begin - local_B_28_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_28_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_28_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_28_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_ce1; - end else begin - local_B_28_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_28_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_we0; - end else begin - local_B_28_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_28_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_28_we1; - end else begin - local_B_28_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_29_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_29_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_29_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_address0; - end else begin - local_B_29_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_29_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_29_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_29_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_address1; - end else begin - local_B_29_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_29_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_29_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_29_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_ce0; - end else begin - local_B_29_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_29_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_29_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_29_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_ce1; - end else begin - local_B_29_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_29_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_we0; - end else begin - local_B_29_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_29_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_29_we1; - end else begin - local_B_29_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_2_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_2_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_2_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_address0; - end else begin - local_B_2_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_2_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_2_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_2_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_address1; - end else begin - local_B_2_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_2_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_2_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_2_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_ce0; - end else begin - local_B_2_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_2_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_2_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_2_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_ce1; - end else begin - local_B_2_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_2_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_we0; - end else begin - local_B_2_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_2_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_2_we1; - end else begin - local_B_2_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_30_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_30_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_30_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_address0; - end else begin - local_B_30_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_30_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_30_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_30_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_address1; - end else begin - local_B_30_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_30_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_30_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_30_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_ce0; - end else begin - local_B_30_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_30_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_30_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_30_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_ce1; - end else begin - local_B_30_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_30_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_we0; - end else begin - local_B_30_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_30_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_30_we1; - end else begin - local_B_30_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_31_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_31_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_31_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_address0; - end else begin - local_B_31_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_31_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_31_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_31_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_address1; - end else begin - local_B_31_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_31_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_31_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_31_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_ce0; - end else begin - local_B_31_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_31_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_31_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_31_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_ce1; - end else begin - local_B_31_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_31_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_we0; - end else begin - local_B_31_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_31_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_31_we1; - end else begin - local_B_31_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_32_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_32_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_32_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_address0; - end else begin - local_B_32_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_32_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_32_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_32_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_address1; - end else begin - local_B_32_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_32_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_32_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_32_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_ce0; - end else begin - local_B_32_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_32_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_32_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_32_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_ce1; - end else begin - local_B_32_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_32_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_we0; - end else begin - local_B_32_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_32_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_32_we1; - end else begin - local_B_32_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_33_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_33_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_33_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_address0; - end else begin - local_B_33_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_33_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_33_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_33_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_address1; - end else begin - local_B_33_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_33_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_33_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_33_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_ce0; - end else begin - local_B_33_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_33_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_33_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_33_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_ce1; - end else begin - local_B_33_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_33_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_we0; - end else begin - local_B_33_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_33_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_33_we1; - end else begin - local_B_33_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_34_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_34_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_34_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_address0; - end else begin - local_B_34_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_34_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_34_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_34_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_address1; - end else begin - local_B_34_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_34_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_34_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_34_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_ce0; - end else begin - local_B_34_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_34_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_34_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_34_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_ce1; - end else begin - local_B_34_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_34_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_we0; - end else begin - local_B_34_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_34_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_34_we1; - end else begin - local_B_34_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_35_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_35_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_35_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_address0; - end else begin - local_B_35_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_35_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_35_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_35_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_address1; - end else begin - local_B_35_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_35_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_35_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_35_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_ce0; - end else begin - local_B_35_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_35_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_35_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_35_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_ce1; - end else begin - local_B_35_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_35_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_we0; - end else begin - local_B_35_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_35_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_35_we1; - end else begin - local_B_35_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_36_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_36_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_36_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_address0; - end else begin - local_B_36_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_36_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_36_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_36_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_address1; - end else begin - local_B_36_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_36_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_36_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_36_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_ce0; - end else begin - local_B_36_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_36_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_36_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_36_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_ce1; - end else begin - local_B_36_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_36_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_we0; - end else begin - local_B_36_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_36_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_36_we1; - end else begin - local_B_36_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_37_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_37_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_37_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_address0; - end else begin - local_B_37_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_37_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_37_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_37_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_address1; - end else begin - local_B_37_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_37_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_37_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_37_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_ce0; - end else begin - local_B_37_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_37_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_37_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_37_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_ce1; - end else begin - local_B_37_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_37_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_we0; - end else begin - local_B_37_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_37_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_37_we1; - end else begin - local_B_37_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_38_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_38_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_38_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_address0; - end else begin - local_B_38_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_38_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_38_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_38_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_address1; - end else begin - local_B_38_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_38_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_38_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_38_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_ce0; - end else begin - local_B_38_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_38_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_38_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_38_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_ce1; - end else begin - local_B_38_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_38_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_we0; - end else begin - local_B_38_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_38_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_38_we1; - end else begin - local_B_38_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_39_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_39_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_39_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_address0; - end else begin - local_B_39_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_39_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_39_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_39_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_address1; - end else begin - local_B_39_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_39_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_39_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_39_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_ce0; - end else begin - local_B_39_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_39_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_39_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_39_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_ce1; - end else begin - local_B_39_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_39_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_we0; - end else begin - local_B_39_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_39_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_39_we1; - end else begin - local_B_39_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_3_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_3_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_3_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_address0; - end else begin - local_B_3_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_3_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_3_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_3_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_address1; - end else begin - local_B_3_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_3_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_3_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_3_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_ce0; - end else begin - local_B_3_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_3_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_3_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_3_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_ce1; - end else begin - local_B_3_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_3_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_we0; - end else begin - local_B_3_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_3_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_3_we1; - end else begin - local_B_3_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_40_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_40_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_40_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_address0; - end else begin - local_B_40_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_40_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_40_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_40_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_address1; - end else begin - local_B_40_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_40_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_40_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_40_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_ce0; - end else begin - local_B_40_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_40_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_40_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_40_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_ce1; - end else begin - local_B_40_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_40_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_we0; - end else begin - local_B_40_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_40_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_40_we1; - end else begin - local_B_40_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_41_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_41_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_41_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_address0; - end else begin - local_B_41_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_41_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_41_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_41_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_address1; - end else begin - local_B_41_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_41_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_41_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_41_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_ce0; - end else begin - local_B_41_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_41_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_41_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_41_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_ce1; - end else begin - local_B_41_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_41_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_we0; - end else begin - local_B_41_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_41_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_41_we1; - end else begin - local_B_41_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_42_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_42_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_42_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_address0; - end else begin - local_B_42_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_42_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_42_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_42_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_address1; - end else begin - local_B_42_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_42_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_42_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_42_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_ce0; - end else begin - local_B_42_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_42_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_42_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_42_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_ce1; - end else begin - local_B_42_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_42_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_we0; - end else begin - local_B_42_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_42_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_42_we1; - end else begin - local_B_42_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_43_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_43_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_43_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_address0; - end else begin - local_B_43_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_43_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_43_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_43_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_address1; - end else begin - local_B_43_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_43_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_43_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_43_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_ce0; - end else begin - local_B_43_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_43_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_43_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_43_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_ce1; - end else begin - local_B_43_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_43_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_we0; - end else begin - local_B_43_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_43_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_43_we1; - end else begin - local_B_43_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_44_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_44_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_44_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_address0; - end else begin - local_B_44_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_44_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_44_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_44_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_address1; - end else begin - local_B_44_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_44_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_44_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_44_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_ce0; - end else begin - local_B_44_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_44_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_44_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_44_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_ce1; - end else begin - local_B_44_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_44_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_we0; - end else begin - local_B_44_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_44_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_44_we1; - end else begin - local_B_44_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_45_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_45_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_45_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_address0; - end else begin - local_B_45_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_45_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_45_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_45_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_address1; - end else begin - local_B_45_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_45_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_45_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_45_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_ce0; - end else begin - local_B_45_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_45_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_45_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_45_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_ce1; - end else begin - local_B_45_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_45_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_we0; - end else begin - local_B_45_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_45_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_45_we1; - end else begin - local_B_45_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_46_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_46_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_46_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_address0; - end else begin - local_B_46_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_46_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_46_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_46_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_address1; - end else begin - local_B_46_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_46_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_46_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_46_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_ce0; - end else begin - local_B_46_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_46_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_46_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_46_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_ce1; - end else begin - local_B_46_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_46_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_we0; - end else begin - local_B_46_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_46_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_46_we1; - end else begin - local_B_46_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_47_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_47_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_47_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_address0; - end else begin - local_B_47_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_47_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_47_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_47_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_address1; - end else begin - local_B_47_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_47_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_47_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_47_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_ce0; - end else begin - local_B_47_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_47_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_47_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_47_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_ce1; - end else begin - local_B_47_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_47_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_we0; - end else begin - local_B_47_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_47_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_47_we1; - end else begin - local_B_47_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_48_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_48_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_48_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_address0; - end else begin - local_B_48_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_48_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_48_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_48_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_address1; - end else begin - local_B_48_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_48_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_48_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_48_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_ce0; - end else begin - local_B_48_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_48_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_48_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_48_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_ce1; - end else begin - local_B_48_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_48_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_we0; - end else begin - local_B_48_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_48_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_48_we1; - end else begin - local_B_48_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_49_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_49_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_49_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_address0; - end else begin - local_B_49_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_49_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_49_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_49_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_address1; - end else begin - local_B_49_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_49_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_49_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_49_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_ce0; - end else begin - local_B_49_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_49_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_49_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_49_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_ce1; - end else begin - local_B_49_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_49_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_we0; - end else begin - local_B_49_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_49_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_49_we1; - end else begin - local_B_49_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_4_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_4_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_4_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_address0; - end else begin - local_B_4_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_4_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_4_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_4_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_address1; - end else begin - local_B_4_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_4_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_4_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_4_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_ce0; - end else begin - local_B_4_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_4_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_4_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_4_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_ce1; - end else begin - local_B_4_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_4_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_we0; - end else begin - local_B_4_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_4_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_4_we1; - end else begin - local_B_4_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_50_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_50_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_50_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_address0; - end else begin - local_B_50_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_50_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_50_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_50_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_address1; - end else begin - local_B_50_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_50_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_50_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_50_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_ce0; - end else begin - local_B_50_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_50_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_50_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_50_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_ce1; - end else begin - local_B_50_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_50_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_we0; - end else begin - local_B_50_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_50_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_50_we1; - end else begin - local_B_50_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_51_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_51_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_51_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_address0; - end else begin - local_B_51_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_51_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_51_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_51_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_address1; - end else begin - local_B_51_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_51_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_51_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_51_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_ce0; - end else begin - local_B_51_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_51_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_51_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_51_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_ce1; - end else begin - local_B_51_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_51_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_we0; - end else begin - local_B_51_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_51_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_51_we1; - end else begin - local_B_51_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_52_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_52_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_52_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_address0; - end else begin - local_B_52_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_52_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_52_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_52_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_address1; - end else begin - local_B_52_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_52_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_52_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_52_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_ce0; - end else begin - local_B_52_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_52_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_52_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_52_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_ce1; - end else begin - local_B_52_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_52_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_we0; - end else begin - local_B_52_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_52_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_52_we1; - end else begin - local_B_52_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_53_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_53_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_53_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_address0; - end else begin - local_B_53_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_53_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_53_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_53_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_address1; - end else begin - local_B_53_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_53_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_53_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_53_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_ce0; - end else begin - local_B_53_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_53_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_53_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_53_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_ce1; - end else begin - local_B_53_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_53_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_we0; - end else begin - local_B_53_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_53_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_53_we1; - end else begin - local_B_53_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_54_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_54_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_54_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_address0; - end else begin - local_B_54_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_54_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_54_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_54_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_address1; - end else begin - local_B_54_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_54_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_54_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_54_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_ce0; - end else begin - local_B_54_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_54_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_54_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_54_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_ce1; - end else begin - local_B_54_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_54_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_we0; - end else begin - local_B_54_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_54_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_54_we1; - end else begin - local_B_54_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_55_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_55_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_55_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_address0; - end else begin - local_B_55_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_55_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_55_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_55_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_address1; - end else begin - local_B_55_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_55_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_55_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_55_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_ce0; - end else begin - local_B_55_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_55_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_55_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_55_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_ce1; - end else begin - local_B_55_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_55_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_we0; - end else begin - local_B_55_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_55_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_55_we1; - end else begin - local_B_55_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_56_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_56_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_56_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_address0; - end else begin - local_B_56_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_56_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_56_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_56_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_address1; - end else begin - local_B_56_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_56_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_56_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_56_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_ce0; - end else begin - local_B_56_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_56_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_56_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_56_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_ce1; - end else begin - local_B_56_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_56_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_we0; - end else begin - local_B_56_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_56_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_56_we1; - end else begin - local_B_56_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_57_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_57_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_57_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_address0; - end else begin - local_B_57_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_57_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_57_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_57_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_address1; - end else begin - local_B_57_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_57_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_57_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_57_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_ce0; - end else begin - local_B_57_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_57_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_57_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_57_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_ce1; - end else begin - local_B_57_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_57_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_we0; - end else begin - local_B_57_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_57_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_57_we1; - end else begin - local_B_57_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_58_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_58_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_58_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_address0; - end else begin - local_B_58_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_58_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_58_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_58_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_address1; - end else begin - local_B_58_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_58_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_58_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_58_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_ce0; - end else begin - local_B_58_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_58_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_58_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_58_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_ce1; - end else begin - local_B_58_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_58_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_we0; - end else begin - local_B_58_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_58_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_58_we1; - end else begin - local_B_58_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_59_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_59_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_59_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_address0; - end else begin - local_B_59_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_59_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_59_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_59_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_address1; - end else begin - local_B_59_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_59_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_59_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_59_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_ce0; - end else begin - local_B_59_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_59_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_59_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_59_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_ce1; - end else begin - local_B_59_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_59_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_we0; - end else begin - local_B_59_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_59_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_59_we1; - end else begin - local_B_59_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_5_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_5_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_5_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_address0; - end else begin - local_B_5_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_5_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_5_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_5_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_address1; - end else begin - local_B_5_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_5_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_5_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_5_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_ce0; - end else begin - local_B_5_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_5_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_5_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_5_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_ce1; - end else begin - local_B_5_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_5_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_we0; - end else begin - local_B_5_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_5_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_5_we1; - end else begin - local_B_5_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_60_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_60_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_60_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_address0; - end else begin - local_B_60_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_60_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_60_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_60_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_address1; - end else begin - local_B_60_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_60_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_60_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_60_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_ce0; - end else begin - local_B_60_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_60_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_60_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_60_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_ce1; - end else begin - local_B_60_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_60_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_we0; - end else begin - local_B_60_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_60_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_60_we1; - end else begin - local_B_60_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_61_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_61_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_61_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_address0; - end else begin - local_B_61_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_61_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_61_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_61_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_address1; - end else begin - local_B_61_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_61_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_61_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_61_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_ce0; - end else begin - local_B_61_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_61_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_61_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_61_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_ce1; - end else begin - local_B_61_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_61_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_we0; - end else begin - local_B_61_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_61_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_61_we1; - end else begin - local_B_61_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_62_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_62_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_62_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_address0; - end else begin - local_B_62_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_62_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_62_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_62_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_address1; - end else begin - local_B_62_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_62_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_62_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_62_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_ce0; - end else begin - local_B_62_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_62_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_62_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_62_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_ce1; - end else begin - local_B_62_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_62_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_we0; - end else begin - local_B_62_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_62_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_62_we1; - end else begin - local_B_62_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_63_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_63_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_63_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_address0; - end else begin - local_B_63_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_63_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_63_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_63_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_address1; - end else begin - local_B_63_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_63_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_63_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_63_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_ce0; - end else begin - local_B_63_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_63_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_63_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_63_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_ce1; - end else begin - local_B_63_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_63_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_we0; - end else begin - local_B_63_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_63_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_63_we1; - end else begin - local_B_63_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_6_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_6_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_6_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_address0; - end else begin - local_B_6_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_6_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_6_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_6_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_address1; - end else begin - local_B_6_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_6_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_6_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_6_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_ce0; - end else begin - local_B_6_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_6_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_6_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_6_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_ce1; - end else begin - local_B_6_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_6_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_we0; - end else begin - local_B_6_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_6_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_6_we1; - end else begin - local_B_6_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_7_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_7_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_7_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_address0; - end else begin - local_B_7_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_7_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_7_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_7_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_address1; - end else begin - local_B_7_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_7_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_7_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_7_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_ce0; - end else begin - local_B_7_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_7_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_7_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_7_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_ce1; - end else begin - local_B_7_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_7_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_we0; - end else begin - local_B_7_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_7_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_7_we1; - end else begin - local_B_7_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_8_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_8_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_8_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_address0; - end else begin - local_B_8_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_8_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_8_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_8_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_address1; - end else begin - local_B_8_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_8_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_8_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_8_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_ce0; - end else begin - local_B_8_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_8_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_8_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_8_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_ce1; - end else begin - local_B_8_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_8_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_we0; - end else begin - local_B_8_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_8_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_8_we1; - end else begin - local_B_8_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_9_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_9_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_9_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_address0; - end else begin - local_B_9_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_9_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_9_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_9_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_address1; - end else begin - local_B_9_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_9_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_9_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_9_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_ce0; - end else begin - local_B_9_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_9_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_9_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_9_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_ce1; - end else begin - local_B_9_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_9_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_we0; - end else begin - local_B_9_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_9_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_9_we1; - end else begin - local_B_9_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_address0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_address0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_address0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_address0; - end else begin - local_B_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_address1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_address1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_address1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_address1; - end else begin - local_B_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_ce0 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_ce0; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_ce0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_ce0; - end else begin - local_B_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state15)) begin - local_B_ce1 = grp_PEG_Bmtx_Pipeline_computation_fu_760_local_B_ce1; - end else if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_ce1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_ce1; - end else begin - local_B_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_we0 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_we0; - end else begin - local_B_we0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_B_we1 = grp_PEG_Bmtx_Pipeline_read_B_fu_675_local_B_we1; - end else begin - local_B_we1 = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if ((~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - if ((~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n)) & (1'b1 == ap_CS_fsm_state2))) begin - ap_NS_fsm = ap_ST_fsm_state3; - end else begin - ap_NS_fsm = ap_ST_fsm_state2; - end - end - ap_ST_fsm_state3 : begin - if ((~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n)) & (1'b1 == ap_CS_fsm_state3))) begin - ap_NS_fsm = ap_ST_fsm_state4; - end else begin - ap_NS_fsm = ap_ST_fsm_state3; - end - end - ap_ST_fsm_state4 : begin - ap_NS_fsm = ap_ST_fsm_state5; - end - ap_ST_fsm_state5 : begin - ap_NS_fsm = ap_ST_fsm_state6; - end - ap_ST_fsm_state6 : begin - ap_NS_fsm = ap_ST_fsm_state7; - end - ap_ST_fsm_state7 : begin - if ((~((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n)) & (1'b1 == ap_CS_fsm_state7))) begin - ap_NS_fsm = ap_ST_fsm_state8; - end else begin - ap_NS_fsm = ap_ST_fsm_state7; - end - end - ap_ST_fsm_state8 : begin - if (((icmp_ln259_fu_981_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state8))) begin - ap_NS_fsm = ap_ST_fsm_state1; - end else begin - ap_NS_fsm = ap_ST_fsm_state9; - end - end - ap_ST_fsm_state9 : begin - if ((~((fifo_inst_out_full_n == 1'b0) | (fifo_inst_in_s_empty_n == 1'b0) | (fifo_inst_out_to_Cmtx_full_n == 1'b0)) & (1'b1 == ap_CS_fsm_state9))) begin - ap_NS_fsm = ap_ST_fsm_state10; - end else begin - ap_NS_fsm = ap_ST_fsm_state9; - end - end - ap_ST_fsm_state10 : begin - if (((icmp_ln276_fu_1010_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state10))) begin - ap_NS_fsm = ap_ST_fsm_state8; - end else begin - ap_NS_fsm = ap_ST_fsm_state11; - end - end - ap_ST_fsm_state11 : begin - ap_NS_fsm = ap_ST_fsm_state12; - end - ap_ST_fsm_state12 : begin - if (((1'b1 == ap_CS_fsm_state12) & (grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_done == 1'b1))) begin - ap_NS_fsm = ap_ST_fsm_state13; - end else begin - ap_NS_fsm = ap_ST_fsm_state12; - end - end - ap_ST_fsm_state13 : begin - if ((~((fifo_inst_out_full_n == 1'b0) | (fifo_inst_in_s_empty_n == 1'b0) | (fifo_inst_out_to_Cmtx_full_n == 1'b0)) & (1'b1 == ap_CS_fsm_state13))) begin - ap_NS_fsm = ap_ST_fsm_state14; - end else begin - ap_NS_fsm = ap_ST_fsm_state13; - end - end - ap_ST_fsm_state14 : begin - ap_NS_fsm = ap_ST_fsm_state15; - end - ap_ST_fsm_state15 : begin - if (((1'b1 == ap_CS_fsm_state15) & (grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_done == 1'b1))) begin - ap_NS_fsm = ap_ST_fsm_state10; - end else begin - ap_NS_fsm = ap_ST_fsm_state15; - end - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign K_fu_941_p1 = PE_inst_in_s_dout[31:0]; - -assign NUM_ITE_fu_841_p1 = PE_inst_in_s_dout[31:0]; - -assign N_fu_878_p1 = PE_inst_in_s_dout[15:0]; - -assign PE_inst_in_peek_read = 1'b0; - -assign P_N_fu_874_p1 = PE_inst_in_s_dout[31:0]; - -assign add78_fu_954_p2 = (K_fu_941_p1 + 32'd7); - -assign add_ln257_fu_906_p2 = (zext_ln256_fu_902_p1 + 17'd7); - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state10 = ap_CS_fsm[32'd9]; - -assign ap_CS_fsm_state11 = ap_CS_fsm[32'd10]; - -assign ap_CS_fsm_state12 = ap_CS_fsm[32'd11]; - -assign ap_CS_fsm_state13 = ap_CS_fsm[32'd12]; - -assign ap_CS_fsm_state14 = ap_CS_fsm[32'd13]; - -assign ap_CS_fsm_state15 = ap_CS_fsm[32'd14]; - -assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; - -assign ap_CS_fsm_state3 = ap_CS_fsm[32'd2]; - -assign ap_CS_fsm_state4 = ap_CS_fsm[32'd3]; - -assign ap_CS_fsm_state5 = ap_CS_fsm[32'd4]; - -assign ap_CS_fsm_state6 = ap_CS_fsm[32'd5]; - -assign ap_CS_fsm_state7 = ap_CS_fsm[32'd6]; - -assign ap_CS_fsm_state8 = ap_CS_fsm[32'd7]; - -assign ap_CS_fsm_state9 = ap_CS_fsm[32'd8]; - -always @ (*) begin - ap_block_state1 = ((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n) | (ap_start == 1'b0)); -end - -always @ (*) begin - ap_block_state13 = ((fifo_inst_out_full_n == 1'b0) | (fifo_inst_in_s_empty_n == 1'b0) | (fifo_inst_out_to_Cmtx_full_n == 1'b0)); -end - -always @ (*) begin - ap_block_state2 = ((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n)); -end - -always @ (*) begin - ap_block_state3 = ((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n) | (1'b0 == PE_inst_to_Cmtx_full_n)); -end - -always @ (*) begin - ap_block_state7 = ((1'b0 == PE_inst_out_full_n) | (1'b0 == PE_inst_in_s_empty_n)); -end - -always @ (*) begin - ap_block_state9 = ((fifo_inst_out_full_n == 1'b0) | (fifo_inst_in_s_empty_n == 1'b0) | (fifo_inst_out_to_Cmtx_full_n == 1'b0)); -end - -always @ (*) begin - ap_condition_2077 = ~((fifo_inst_out_full_n == 1'b0) | (fifo_inst_in_s_empty_n == 1'b0) | (fifo_inst_out_to_Cmtx_full_n == 1'b0)); -end - -always @ (*) begin - ap_rst_n_inv = ~ap_rst_n; -end - -assign empty_155_fu_1021_p1 = i_reg_654[22:0]; - -assign end_32_fu_1042_p1 = fifo_inst_in_s_dout[31:0]; - -assign fifo_A_peek_read = 1'b0; - -assign fifo_B_in_peek_0_read = 1'b0; - -assign fifo_B_in_peek_1_read = 1'b0; - -assign fifo_B_in_peek_2_read = 1'b0; - -assign fifo_B_in_peek_3_read = 1'b0; - -assign fifo_B_out_0_din = grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_0_din; - -assign fifo_B_out_1_din = grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_1_din; - -assign fifo_B_out_2_din = grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_2_din; - -assign fifo_B_out_3_din = grp_PEG_Bmtx_Pipeline_read_B_fu_675_fifo_B_out_3_din; - -assign fifo_aBvec_0_din = grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_0_din; - -assign fifo_aBvec_1_din = grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_1_din; - -assign fifo_aBvec_2_din = grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_2_din; - -assign fifo_aBvec_3_din = grp_PEG_Bmtx_Pipeline_computation_fu_760_fifo_aBvec_3_din; - -assign fifo_inst_in_peek_read = 1'b0; - -assign grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_start = grp_PEG_Bmtx_Pipeline_computation_fu_760_ap_start_reg; - -assign grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_start = grp_PEG_Bmtx_Pipeline_read_B_fu_675_ap_start_reg; - -assign grp_fu_1056_p1 = grp_fu_1056_p10; - -assign grp_fu_1056_p10 = lshr_ln_reg_1080; - -assign i_1_fu_1015_p2 = (i_reg_654 + 31'd1); - -assign icmp_ln255_fu_922_p2 = ((N16_reg_1074 == 16'd0) ? 1'b1 : 1'b0); - -assign icmp_ln259_fu_981_p2 = (($signed(zext_ln259_fu_977_p1) < $signed(rp_time_N_reg_1095)) ? 1'b1 : 1'b0); - -assign icmp_ln276_fu_1010_p2 = (($signed(zext_ln276_fu_1006_p1) < $signed(NUM_ITE_reg_1069)) ? 1'b1 : 1'b0); - -assign mul_fu_1025_p3 = {{empty_155_fu_1021_p1}, {9'd0}}; - -assign p_0_fu_882_p3 = {{1'd0}, {P_N_fu_874_p1}}; - -assign p_10_fu_864_p3 = {{1'd0}, {trunc_ln85_fu_860_p1}}; - -assign p_11_fu_945_p3 = {{1'd0}, {K_fu_941_p1}}; - -assign p_cast_fu_960_p4 = {{add78_fu_954_p2[31:3]}}; - -assign p_s_fu_845_p3 = {{1'd0}, {NUM_ITE_fu_841_p1}}; - -assign rp_2_fu_986_p2 = (rp_fu_146 + 28'd1); - -assign rp_time_fu_927_p3 = ((icmp_ln255_fu_922_p2[0:0] == 1'b1) ? 16'd1 : N16_reg_1074); - -assign shr79_fu_970_p1 = $signed(p_cast_fu_960_p4); - -assign start_32_fu_992_p1 = fifo_inst_in_s_dout[31:0]; - -assign sub_fu_1033_p2 = ($signed(shr79_reg_1100) - $signed(mul_fu_1025_p3)); - -assign tmp_11_fu_1046_p3 = {{1'd0}, {end_32_fu_1042_p1}}; - -assign tmp_9_fu_996_p3 = {{1'd0}, {start_32_fu_992_p1}}; - -assign trunc_ln85_fu_860_p1 = PE_inst_in_s_dout[31:0]; - -assign zext_ln256_fu_902_p1 = N_fu_878_p1; - -assign zext_ln259_fu_977_p1 = rp_fu_146; - -assign zext_ln276_fu_1006_p1 = i_reg_654; - -endmodule //PEG_Bmtx diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_PEG_Bmtx_Pipeline_computation.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_PEG_Bmtx_Pipeline_computation.v deleted file mode 100644 index fe98f90e..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_PEG_Bmtx_Pipeline_computation.v +++ /dev/null @@ -1,4524 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module PEG_Bmtx_PEG_Bmtx_Pipeline_computation ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - fifo_aBvec_0_din, - fifo_aBvec_0_full_n, - fifo_aBvec_0_write, - fifo_aBvec_1_din, - fifo_aBvec_1_full_n, - fifo_aBvec_1_write, - fifo_aBvec_2_din, - fifo_aBvec_2_full_n, - fifo_aBvec_2_write, - fifo_aBvec_3_din, - fifo_aBvec_3_full_n, - fifo_aBvec_3_write, - start_32_3, - end_32, - fifo_A_s_dout, - fifo_A_s_empty_n, - fifo_A_s_read, - local_B_address0, - local_B_ce0, - local_B_q0, - local_B_address1, - local_B_ce1, - local_B_q1, - local_B_1_address0, - local_B_1_ce0, - local_B_1_q0, - local_B_1_address1, - local_B_1_ce1, - local_B_1_q1, - local_B_2_address0, - local_B_2_ce0, - local_B_2_q0, - local_B_2_address1, - local_B_2_ce1, - local_B_2_q1, - local_B_3_address0, - local_B_3_ce0, - local_B_3_q0, - local_B_3_address1, - local_B_3_ce1, - local_B_3_q1, - local_B_4_address0, - local_B_4_ce0, - local_B_4_q0, - local_B_4_address1, - local_B_4_ce1, - local_B_4_q1, - local_B_5_address0, - local_B_5_ce0, - local_B_5_q0, - local_B_5_address1, - local_B_5_ce1, - local_B_5_q1, - local_B_6_address0, - local_B_6_ce0, - local_B_6_q0, - local_B_6_address1, - local_B_6_ce1, - local_B_6_q1, - local_B_7_address0, - local_B_7_ce0, - local_B_7_q0, - local_B_7_address1, - local_B_7_ce1, - local_B_7_q1, - local_B_8_address0, - local_B_8_ce0, - local_B_8_q0, - local_B_8_address1, - local_B_8_ce1, - local_B_8_q1, - local_B_9_address0, - local_B_9_ce0, - local_B_9_q0, - local_B_9_address1, - local_B_9_ce1, - local_B_9_q1, - local_B_10_address0, - local_B_10_ce0, - local_B_10_q0, - local_B_10_address1, - local_B_10_ce1, - local_B_10_q1, - local_B_11_address0, - local_B_11_ce0, - local_B_11_q0, - local_B_11_address1, - local_B_11_ce1, - local_B_11_q1, - local_B_12_address0, - local_B_12_ce0, - local_B_12_q0, - local_B_12_address1, - local_B_12_ce1, - local_B_12_q1, - local_B_13_address0, - local_B_13_ce0, - local_B_13_q0, - local_B_13_address1, - local_B_13_ce1, - local_B_13_q1, - local_B_14_address0, - local_B_14_ce0, - local_B_14_q0, - local_B_14_address1, - local_B_14_ce1, - local_B_14_q1, - local_B_15_address0, - local_B_15_ce0, - local_B_15_q0, - local_B_15_address1, - local_B_15_ce1, - local_B_15_q1, - local_B_16_address0, - local_B_16_ce0, - local_B_16_q0, - local_B_16_address1, - local_B_16_ce1, - local_B_16_q1, - local_B_17_address0, - local_B_17_ce0, - local_B_17_q0, - local_B_17_address1, - local_B_17_ce1, - local_B_17_q1, - local_B_18_address0, - local_B_18_ce0, - local_B_18_q0, - local_B_18_address1, - local_B_18_ce1, - local_B_18_q1, - local_B_19_address0, - local_B_19_ce0, - local_B_19_q0, - local_B_19_address1, - local_B_19_ce1, - local_B_19_q1, - local_B_20_address0, - local_B_20_ce0, - local_B_20_q0, - local_B_20_address1, - local_B_20_ce1, - local_B_20_q1, - local_B_21_address0, - local_B_21_ce0, - local_B_21_q0, - local_B_21_address1, - local_B_21_ce1, - local_B_21_q1, - local_B_22_address0, - local_B_22_ce0, - local_B_22_q0, - local_B_22_address1, - local_B_22_ce1, - local_B_22_q1, - local_B_23_address0, - local_B_23_ce0, - local_B_23_q0, - local_B_23_address1, - local_B_23_ce1, - local_B_23_q1, - local_B_24_address0, - local_B_24_ce0, - local_B_24_q0, - local_B_24_address1, - local_B_24_ce1, - local_B_24_q1, - local_B_25_address0, - local_B_25_ce0, - local_B_25_q0, - local_B_25_address1, - local_B_25_ce1, - local_B_25_q1, - local_B_26_address0, - local_B_26_ce0, - local_B_26_q0, - local_B_26_address1, - local_B_26_ce1, - local_B_26_q1, - local_B_27_address0, - local_B_27_ce0, - local_B_27_q0, - local_B_27_address1, - local_B_27_ce1, - local_B_27_q1, - local_B_28_address0, - local_B_28_ce0, - local_B_28_q0, - local_B_28_address1, - local_B_28_ce1, - local_B_28_q1, - local_B_29_address0, - local_B_29_ce0, - local_B_29_q0, - local_B_29_address1, - local_B_29_ce1, - local_B_29_q1, - local_B_30_address0, - local_B_30_ce0, - local_B_30_q0, - local_B_30_address1, - local_B_30_ce1, - local_B_30_q1, - local_B_31_address0, - local_B_31_ce0, - local_B_31_q0, - local_B_31_address1, - local_B_31_ce1, - local_B_31_q1, - local_B_32_address0, - local_B_32_ce0, - local_B_32_q0, - local_B_32_address1, - local_B_32_ce1, - local_B_32_q1, - local_B_33_address0, - local_B_33_ce0, - local_B_33_q0, - local_B_33_address1, - local_B_33_ce1, - local_B_33_q1, - local_B_34_address0, - local_B_34_ce0, - local_B_34_q0, - local_B_34_address1, - local_B_34_ce1, - local_B_34_q1, - local_B_35_address0, - local_B_35_ce0, - local_B_35_q0, - local_B_35_address1, - local_B_35_ce1, - local_B_35_q1, - local_B_36_address0, - local_B_36_ce0, - local_B_36_q0, - local_B_36_address1, - local_B_36_ce1, - local_B_36_q1, - local_B_37_address0, - local_B_37_ce0, - local_B_37_q0, - local_B_37_address1, - local_B_37_ce1, - local_B_37_q1, - local_B_38_address0, - local_B_38_ce0, - local_B_38_q0, - local_B_38_address1, - local_B_38_ce1, - local_B_38_q1, - local_B_39_address0, - local_B_39_ce0, - local_B_39_q0, - local_B_39_address1, - local_B_39_ce1, - local_B_39_q1, - local_B_40_address0, - local_B_40_ce0, - local_B_40_q0, - local_B_40_address1, - local_B_40_ce1, - local_B_40_q1, - local_B_41_address0, - local_B_41_ce0, - local_B_41_q0, - local_B_41_address1, - local_B_41_ce1, - local_B_41_q1, - local_B_42_address0, - local_B_42_ce0, - local_B_42_q0, - local_B_42_address1, - local_B_42_ce1, - local_B_42_q1, - local_B_43_address0, - local_B_43_ce0, - local_B_43_q0, - local_B_43_address1, - local_B_43_ce1, - local_B_43_q1, - local_B_44_address0, - local_B_44_ce0, - local_B_44_q0, - local_B_44_address1, - local_B_44_ce1, - local_B_44_q1, - local_B_45_address0, - local_B_45_ce0, - local_B_45_q0, - local_B_45_address1, - local_B_45_ce1, - local_B_45_q1, - local_B_46_address0, - local_B_46_ce0, - local_B_46_q0, - local_B_46_address1, - local_B_46_ce1, - local_B_46_q1, - local_B_47_address0, - local_B_47_ce0, - local_B_47_q0, - local_B_47_address1, - local_B_47_ce1, - local_B_47_q1, - local_B_48_address0, - local_B_48_ce0, - local_B_48_q0, - local_B_48_address1, - local_B_48_ce1, - local_B_48_q1, - local_B_49_address0, - local_B_49_ce0, - local_B_49_q0, - local_B_49_address1, - local_B_49_ce1, - local_B_49_q1, - local_B_50_address0, - local_B_50_ce0, - local_B_50_q0, - local_B_50_address1, - local_B_50_ce1, - local_B_50_q1, - local_B_51_address0, - local_B_51_ce0, - local_B_51_q0, - local_B_51_address1, - local_B_51_ce1, - local_B_51_q1, - local_B_52_address0, - local_B_52_ce0, - local_B_52_q0, - local_B_52_address1, - local_B_52_ce1, - local_B_52_q1, - local_B_53_address0, - local_B_53_ce0, - local_B_53_q0, - local_B_53_address1, - local_B_53_ce1, - local_B_53_q1, - local_B_54_address0, - local_B_54_ce0, - local_B_54_q0, - local_B_54_address1, - local_B_54_ce1, - local_B_54_q1, - local_B_55_address0, - local_B_55_ce0, - local_B_55_q0, - local_B_55_address1, - local_B_55_ce1, - local_B_55_q1, - local_B_56_address0, - local_B_56_ce0, - local_B_56_q0, - local_B_56_address1, - local_B_56_ce1, - local_B_56_q1, - local_B_57_address0, - local_B_57_ce0, - local_B_57_q0, - local_B_57_address1, - local_B_57_ce1, - local_B_57_q1, - local_B_58_address0, - local_B_58_ce0, - local_B_58_q0, - local_B_58_address1, - local_B_58_ce1, - local_B_58_q1, - local_B_59_address0, - local_B_59_ce0, - local_B_59_q0, - local_B_59_address1, - local_B_59_ce1, - local_B_59_q1, - local_B_60_address0, - local_B_60_ce0, - local_B_60_q0, - local_B_60_address1, - local_B_60_ce1, - local_B_60_q1, - local_B_61_address0, - local_B_61_ce0, - local_B_61_q0, - local_B_61_address1, - local_B_61_ce1, - local_B_61_q1, - local_B_62_address0, - local_B_62_ce0, - local_B_62_q0, - local_B_62_address1, - local_B_62_ce1, - local_B_62_q1, - local_B_63_address0, - local_B_63_ce0, - local_B_63_q0, - local_B_63_address1, - local_B_63_ce1, - local_B_63_q1 -); - -parameter ap_ST_fsm_pp0_stage0 = 1'd1; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -output [274:0] fifo_aBvec_0_din; -input fifo_aBvec_0_full_n; -output fifo_aBvec_0_write; -output [274:0] fifo_aBvec_1_din; -input fifo_aBvec_1_full_n; -output fifo_aBvec_1_write; -output [274:0] fifo_aBvec_2_din; -input fifo_aBvec_2_full_n; -output fifo_aBvec_2_write; -output [274:0] fifo_aBvec_3_din; -input fifo_aBvec_3_full_n; -output fifo_aBvec_3_write; -input [31:0] start_32_3; -input [31:0] end_32; -input [256:0] fifo_A_s_dout; -input fifo_A_s_empty_n; -output fifo_A_s_read; -output [9:0] local_B_address0; -output local_B_ce0; -input [31:0] local_B_q0; -output [9:0] local_B_address1; -output local_B_ce1; -input [31:0] local_B_q1; -output [9:0] local_B_1_address0; -output local_B_1_ce0; -input [31:0] local_B_1_q0; -output [9:0] local_B_1_address1; -output local_B_1_ce1; -input [31:0] local_B_1_q1; -output [9:0] local_B_2_address0; -output local_B_2_ce0; -input [31:0] local_B_2_q0; -output [9:0] local_B_2_address1; -output local_B_2_ce1; -input [31:0] local_B_2_q1; -output [9:0] local_B_3_address0; -output local_B_3_ce0; -input [31:0] local_B_3_q0; -output [9:0] local_B_3_address1; -output local_B_3_ce1; -input [31:0] local_B_3_q1; -output [9:0] local_B_4_address0; -output local_B_4_ce0; -input [31:0] local_B_4_q0; -output [9:0] local_B_4_address1; -output local_B_4_ce1; -input [31:0] local_B_4_q1; -output [9:0] local_B_5_address0; -output local_B_5_ce0; -input [31:0] local_B_5_q0; -output [9:0] local_B_5_address1; -output local_B_5_ce1; -input [31:0] local_B_5_q1; -output [9:0] local_B_6_address0; -output local_B_6_ce0; -input [31:0] local_B_6_q0; -output [9:0] local_B_6_address1; -output local_B_6_ce1; -input [31:0] local_B_6_q1; -output [9:0] local_B_7_address0; -output local_B_7_ce0; -input [31:0] local_B_7_q0; -output [9:0] local_B_7_address1; -output local_B_7_ce1; -input [31:0] local_B_7_q1; -output [9:0] local_B_8_address0; -output local_B_8_ce0; -input [31:0] local_B_8_q0; -output [9:0] local_B_8_address1; -output local_B_8_ce1; -input [31:0] local_B_8_q1; -output [9:0] local_B_9_address0; -output local_B_9_ce0; -input [31:0] local_B_9_q0; -output [9:0] local_B_9_address1; -output local_B_9_ce1; -input [31:0] local_B_9_q1; -output [9:0] local_B_10_address0; -output local_B_10_ce0; -input [31:0] local_B_10_q0; -output [9:0] local_B_10_address1; -output local_B_10_ce1; -input [31:0] local_B_10_q1; -output [9:0] local_B_11_address0; -output local_B_11_ce0; -input [31:0] local_B_11_q0; -output [9:0] local_B_11_address1; -output local_B_11_ce1; -input [31:0] local_B_11_q1; -output [9:0] local_B_12_address0; -output local_B_12_ce0; -input [31:0] local_B_12_q0; -output [9:0] local_B_12_address1; -output local_B_12_ce1; -input [31:0] local_B_12_q1; -output [9:0] local_B_13_address0; -output local_B_13_ce0; -input [31:0] local_B_13_q0; -output [9:0] local_B_13_address1; -output local_B_13_ce1; -input [31:0] local_B_13_q1; -output [9:0] local_B_14_address0; -output local_B_14_ce0; -input [31:0] local_B_14_q0; -output [9:0] local_B_14_address1; -output local_B_14_ce1; -input [31:0] local_B_14_q1; -output [9:0] local_B_15_address0; -output local_B_15_ce0; -input [31:0] local_B_15_q0; -output [9:0] local_B_15_address1; -output local_B_15_ce1; -input [31:0] local_B_15_q1; -output [9:0] local_B_16_address0; -output local_B_16_ce0; -input [31:0] local_B_16_q0; -output [9:0] local_B_16_address1; -output local_B_16_ce1; -input [31:0] local_B_16_q1; -output [9:0] local_B_17_address0; -output local_B_17_ce0; -input [31:0] local_B_17_q0; -output [9:0] local_B_17_address1; -output local_B_17_ce1; -input [31:0] local_B_17_q1; -output [9:0] local_B_18_address0; -output local_B_18_ce0; -input [31:0] local_B_18_q0; -output [9:0] local_B_18_address1; -output local_B_18_ce1; -input [31:0] local_B_18_q1; -output [9:0] local_B_19_address0; -output local_B_19_ce0; -input [31:0] local_B_19_q0; -output [9:0] local_B_19_address1; -output local_B_19_ce1; -input [31:0] local_B_19_q1; -output [9:0] local_B_20_address0; -output local_B_20_ce0; -input [31:0] local_B_20_q0; -output [9:0] local_B_20_address1; -output local_B_20_ce1; -input [31:0] local_B_20_q1; -output [9:0] local_B_21_address0; -output local_B_21_ce0; -input [31:0] local_B_21_q0; -output [9:0] local_B_21_address1; -output local_B_21_ce1; -input [31:0] local_B_21_q1; -output [9:0] local_B_22_address0; -output local_B_22_ce0; -input [31:0] local_B_22_q0; -output [9:0] local_B_22_address1; -output local_B_22_ce1; -input [31:0] local_B_22_q1; -output [9:0] local_B_23_address0; -output local_B_23_ce0; -input [31:0] local_B_23_q0; -output [9:0] local_B_23_address1; -output local_B_23_ce1; -input [31:0] local_B_23_q1; -output [9:0] local_B_24_address0; -output local_B_24_ce0; -input [31:0] local_B_24_q0; -output [9:0] local_B_24_address1; -output local_B_24_ce1; -input [31:0] local_B_24_q1; -output [9:0] local_B_25_address0; -output local_B_25_ce0; -input [31:0] local_B_25_q0; -output [9:0] local_B_25_address1; -output local_B_25_ce1; -input [31:0] local_B_25_q1; -output [9:0] local_B_26_address0; -output local_B_26_ce0; -input [31:0] local_B_26_q0; -output [9:0] local_B_26_address1; -output local_B_26_ce1; -input [31:0] local_B_26_q1; -output [9:0] local_B_27_address0; -output local_B_27_ce0; -input [31:0] local_B_27_q0; -output [9:0] local_B_27_address1; -output local_B_27_ce1; -input [31:0] local_B_27_q1; -output [9:0] local_B_28_address0; -output local_B_28_ce0; -input [31:0] local_B_28_q0; -output [9:0] local_B_28_address1; -output local_B_28_ce1; -input [31:0] local_B_28_q1; -output [9:0] local_B_29_address0; -output local_B_29_ce0; -input [31:0] local_B_29_q0; -output [9:0] local_B_29_address1; -output local_B_29_ce1; -input [31:0] local_B_29_q1; -output [9:0] local_B_30_address0; -output local_B_30_ce0; -input [31:0] local_B_30_q0; -output [9:0] local_B_30_address1; -output local_B_30_ce1; -input [31:0] local_B_30_q1; -output [9:0] local_B_31_address0; -output local_B_31_ce0; -input [31:0] local_B_31_q0; -output [9:0] local_B_31_address1; -output local_B_31_ce1; -input [31:0] local_B_31_q1; -output [9:0] local_B_32_address0; -output local_B_32_ce0; -input [31:0] local_B_32_q0; -output [9:0] local_B_32_address1; -output local_B_32_ce1; -input [31:0] local_B_32_q1; -output [9:0] local_B_33_address0; -output local_B_33_ce0; -input [31:0] local_B_33_q0; -output [9:0] local_B_33_address1; -output local_B_33_ce1; -input [31:0] local_B_33_q1; -output [9:0] local_B_34_address0; -output local_B_34_ce0; -input [31:0] local_B_34_q0; -output [9:0] local_B_34_address1; -output local_B_34_ce1; -input [31:0] local_B_34_q1; -output [9:0] local_B_35_address0; -output local_B_35_ce0; -input [31:0] local_B_35_q0; -output [9:0] local_B_35_address1; -output local_B_35_ce1; -input [31:0] local_B_35_q1; -output [9:0] local_B_36_address0; -output local_B_36_ce0; -input [31:0] local_B_36_q0; -output [9:0] local_B_36_address1; -output local_B_36_ce1; -input [31:0] local_B_36_q1; -output [9:0] local_B_37_address0; -output local_B_37_ce0; -input [31:0] local_B_37_q0; -output [9:0] local_B_37_address1; -output local_B_37_ce1; -input [31:0] local_B_37_q1; -output [9:0] local_B_38_address0; -output local_B_38_ce0; -input [31:0] local_B_38_q0; -output [9:0] local_B_38_address1; -output local_B_38_ce1; -input [31:0] local_B_38_q1; -output [9:0] local_B_39_address0; -output local_B_39_ce0; -input [31:0] local_B_39_q0; -output [9:0] local_B_39_address1; -output local_B_39_ce1; -input [31:0] local_B_39_q1; -output [9:0] local_B_40_address0; -output local_B_40_ce0; -input [31:0] local_B_40_q0; -output [9:0] local_B_40_address1; -output local_B_40_ce1; -input [31:0] local_B_40_q1; -output [9:0] local_B_41_address0; -output local_B_41_ce0; -input [31:0] local_B_41_q0; -output [9:0] local_B_41_address1; -output local_B_41_ce1; -input [31:0] local_B_41_q1; -output [9:0] local_B_42_address0; -output local_B_42_ce0; -input [31:0] local_B_42_q0; -output [9:0] local_B_42_address1; -output local_B_42_ce1; -input [31:0] local_B_42_q1; -output [9:0] local_B_43_address0; -output local_B_43_ce0; -input [31:0] local_B_43_q0; -output [9:0] local_B_43_address1; -output local_B_43_ce1; -input [31:0] local_B_43_q1; -output [9:0] local_B_44_address0; -output local_B_44_ce0; -input [31:0] local_B_44_q0; -output [9:0] local_B_44_address1; -output local_B_44_ce1; -input [31:0] local_B_44_q1; -output [9:0] local_B_45_address0; -output local_B_45_ce0; -input [31:0] local_B_45_q0; -output [9:0] local_B_45_address1; -output local_B_45_ce1; -input [31:0] local_B_45_q1; -output [9:0] local_B_46_address0; -output local_B_46_ce0; -input [31:0] local_B_46_q0; -output [9:0] local_B_46_address1; -output local_B_46_ce1; -input [31:0] local_B_46_q1; -output [9:0] local_B_47_address0; -output local_B_47_ce0; -input [31:0] local_B_47_q0; -output [9:0] local_B_47_address1; -output local_B_47_ce1; -input [31:0] local_B_47_q1; -output [9:0] local_B_48_address0; -output local_B_48_ce0; -input [31:0] local_B_48_q0; -output [9:0] local_B_48_address1; -output local_B_48_ce1; -input [31:0] local_B_48_q1; -output [9:0] local_B_49_address0; -output local_B_49_ce0; -input [31:0] local_B_49_q0; -output [9:0] local_B_49_address1; -output local_B_49_ce1; -input [31:0] local_B_49_q1; -output [9:0] local_B_50_address0; -output local_B_50_ce0; -input [31:0] local_B_50_q0; -output [9:0] local_B_50_address1; -output local_B_50_ce1; -input [31:0] local_B_50_q1; -output [9:0] local_B_51_address0; -output local_B_51_ce0; -input [31:0] local_B_51_q0; -output [9:0] local_B_51_address1; -output local_B_51_ce1; -input [31:0] local_B_51_q1; -output [9:0] local_B_52_address0; -output local_B_52_ce0; -input [31:0] local_B_52_q0; -output [9:0] local_B_52_address1; -output local_B_52_ce1; -input [31:0] local_B_52_q1; -output [9:0] local_B_53_address0; -output local_B_53_ce0; -input [31:0] local_B_53_q0; -output [9:0] local_B_53_address1; -output local_B_53_ce1; -input [31:0] local_B_53_q1; -output [9:0] local_B_54_address0; -output local_B_54_ce0; -input [31:0] local_B_54_q0; -output [9:0] local_B_54_address1; -output local_B_54_ce1; -input [31:0] local_B_54_q1; -output [9:0] local_B_55_address0; -output local_B_55_ce0; -input [31:0] local_B_55_q0; -output [9:0] local_B_55_address1; -output local_B_55_ce1; -input [31:0] local_B_55_q1; -output [9:0] local_B_56_address0; -output local_B_56_ce0; -input [31:0] local_B_56_q0; -output [9:0] local_B_56_address1; -output local_B_56_ce1; -input [31:0] local_B_56_q1; -output [9:0] local_B_57_address0; -output local_B_57_ce0; -input [31:0] local_B_57_q0; -output [9:0] local_B_57_address1; -output local_B_57_ce1; -input [31:0] local_B_57_q1; -output [9:0] local_B_58_address0; -output local_B_58_ce0; -input [31:0] local_B_58_q0; -output [9:0] local_B_58_address1; -output local_B_58_ce1; -input [31:0] local_B_58_q1; -output [9:0] local_B_59_address0; -output local_B_59_ce0; -input [31:0] local_B_59_q0; -output [9:0] local_B_59_address1; -output local_B_59_ce1; -input [31:0] local_B_59_q1; -output [9:0] local_B_60_address0; -output local_B_60_ce0; -input [31:0] local_B_60_q0; -output [9:0] local_B_60_address1; -output local_B_60_ce1; -input [31:0] local_B_60_q1; -output [9:0] local_B_61_address0; -output local_B_61_ce0; -input [31:0] local_B_61_q0; -output [9:0] local_B_61_address1; -output local_B_61_ce1; -input [31:0] local_B_61_q1; -output [9:0] local_B_62_address0; -output local_B_62_ce0; -input [31:0] local_B_62_q0; -output [9:0] local_B_62_address1; -output local_B_62_ce1; -input [31:0] local_B_62_q1; -output [9:0] local_B_63_address0; -output local_B_63_ce0; -input [31:0] local_B_63_q0; -output [9:0] local_B_63_address1; -output local_B_63_ce1; -input [31:0] local_B_63_q1; - -reg ap_idle; -reg fifo_aBvec_0_write; -reg fifo_aBvec_1_write; -reg fifo_aBvec_2_write; -reg fifo_aBvec_3_write; -reg fifo_A_s_read; -reg local_B_ce0; -reg local_B_ce1; -reg local_B_1_ce0; -reg local_B_1_ce1; -reg local_B_2_ce0; -reg local_B_2_ce1; -reg local_B_3_ce0; -reg local_B_3_ce1; -reg local_B_4_ce0; -reg local_B_4_ce1; -reg local_B_5_ce0; -reg local_B_5_ce1; -reg local_B_6_ce0; -reg local_B_6_ce1; -reg local_B_7_ce0; -reg local_B_7_ce1; -reg local_B_8_ce0; -reg local_B_8_ce1; -reg local_B_9_ce0; -reg local_B_9_ce1; -reg local_B_10_ce0; -reg local_B_10_ce1; -reg local_B_11_ce0; -reg local_B_11_ce1; -reg local_B_12_ce0; -reg local_B_12_ce1; -reg local_B_13_ce0; -reg local_B_13_ce1; -reg local_B_14_ce0; -reg local_B_14_ce1; -reg local_B_15_ce0; -reg local_B_15_ce1; -reg local_B_16_ce0; -reg local_B_16_ce1; -reg local_B_17_ce0; -reg local_B_17_ce1; -reg local_B_18_ce0; -reg local_B_18_ce1; -reg local_B_19_ce0; -reg local_B_19_ce1; -reg local_B_20_ce0; -reg local_B_20_ce1; -reg local_B_21_ce0; -reg local_B_21_ce1; -reg local_B_22_ce0; -reg local_B_22_ce1; -reg local_B_23_ce0; -reg local_B_23_ce1; -reg local_B_24_ce0; -reg local_B_24_ce1; -reg local_B_25_ce0; -reg local_B_25_ce1; -reg local_B_26_ce0; -reg local_B_26_ce1; -reg local_B_27_ce0; -reg local_B_27_ce1; -reg local_B_28_ce0; -reg local_B_28_ce1; -reg local_B_29_ce0; -reg local_B_29_ce1; -reg local_B_30_ce0; -reg local_B_30_ce1; -reg local_B_31_ce0; -reg local_B_31_ce1; -reg local_B_32_ce0; -reg local_B_32_ce1; -reg local_B_33_ce0; -reg local_B_33_ce1; -reg local_B_34_ce0; -reg local_B_34_ce1; -reg local_B_35_ce0; -reg local_B_35_ce1; -reg local_B_36_ce0; -reg local_B_36_ce1; -reg local_B_37_ce0; -reg local_B_37_ce1; -reg local_B_38_ce0; -reg local_B_38_ce1; -reg local_B_39_ce0; -reg local_B_39_ce1; -reg local_B_40_ce0; -reg local_B_40_ce1; -reg local_B_41_ce0; -reg local_B_41_ce1; -reg local_B_42_ce0; -reg local_B_42_ce1; -reg local_B_43_ce0; -reg local_B_43_ce1; -reg local_B_44_ce0; -reg local_B_44_ce1; -reg local_B_45_ce0; -reg local_B_45_ce1; -reg local_B_46_ce0; -reg local_B_46_ce1; -reg local_B_47_ce0; -reg local_B_47_ce1; -reg local_B_48_ce0; -reg local_B_48_ce1; -reg local_B_49_ce0; -reg local_B_49_ce1; -reg local_B_50_ce0; -reg local_B_50_ce1; -reg local_B_51_ce0; -reg local_B_51_ce1; -reg local_B_52_ce0; -reg local_B_52_ce1; -reg local_B_53_ce0; -reg local_B_53_ce1; -reg local_B_54_ce0; -reg local_B_54_ce1; -reg local_B_55_ce0; -reg local_B_55_ce1; -reg local_B_56_ce0; -reg local_B_56_ce1; -reg local_B_57_ce0; -reg local_B_57_ce1; -reg local_B_58_ce0; -reg local_B_58_ce1; -reg local_B_59_ce0; -reg local_B_59_ce1; -reg local_B_60_ce0; -reg local_B_60_ce1; -reg local_B_61_ce0; -reg local_B_61_ce1; -reg local_B_62_ce0; -reg local_B_62_ce1; -reg local_B_63_ce0; -reg local_B_63_ce1; - -(* fsm_encoding = "none" *) reg [0:0] ap_CS_fsm; -wire ap_CS_fsm_pp0_stage0; -wire ap_enable_reg_pp0_iter0; -reg ap_enable_reg_pp0_iter1; -reg ap_enable_reg_pp0_iter2; -reg ap_enable_reg_pp0_iter3; -reg ap_enable_reg_pp0_iter4; -reg ap_enable_reg_pp0_iter5; -reg ap_enable_reg_pp0_iter6; -reg ap_enable_reg_pp0_iter7; -reg ap_idle_pp0; -wire ap_block_state1_pp0_stage0_iter0; -wire ap_block_state2_pp0_stage0_iter1; -wire ap_block_state3_pp0_stage0_iter2; -wire ap_block_state4_pp0_stage0_iter3; -wire ap_block_state5_pp0_stage0_iter4; -wire ap_block_state6_pp0_stage0_iter5; -wire ap_block_state7_pp0_stage0_iter6; -reg [0:0] is_success_reg_3105; -reg [0:0] is_success_reg_3105_pp0_iter6_reg; -reg ap_block_state8_pp0_stage0_iter7; -reg ap_block_pp0_stage0_subdone; -wire [0:0] icmp_ln311_fu_2042_p2; -reg ap_condition_exit_pp0_iter0_stage0; -wire ap_loop_exit_ready; -reg ap_ready_int; -reg fifo_aBvec_0_blk_n; -wire ap_block_pp0_stage0; -reg fifo_aBvec_1_blk_n; -reg fifo_aBvec_2_blk_n; -reg fifo_aBvec_3_blk_n; -reg ap_block_pp0_stage0_11001; -wire [0:0] is_success_fu_2048_p1; -reg [0:0] is_success_reg_3105_pp0_iter1_reg; -reg [0:0] is_success_reg_3105_pp0_iter2_reg; -reg [0:0] is_success_reg_3105_pp0_iter3_reg; -reg [0:0] is_success_reg_3105_pp0_iter4_reg; -reg [0:0] is_success_reg_3105_pp0_iter5_reg; -reg [17:0] a_row_V_reg_3109; -reg [17:0] a_row_V_reg_3109_pp0_iter1_reg; -reg [17:0] a_row_V_reg_3109_pp0_iter2_reg; -reg [17:0] a_row_V_reg_3109_pp0_iter3_reg; -reg [17:0] a_row_V_reg_3109_pp0_iter4_reg; -reg [17:0] a_row_V_reg_3109_pp0_iter5_reg; -reg [17:0] a_row_V_reg_3109_pp0_iter6_reg; -wire [31:0] a_val_V_fu_2066_p1; -reg [31:0] a_val_V_reg_3114; -reg [31:0] a_val_V_reg_3114_pp0_iter1_reg; -reg [31:0] a_val_V_reg_3114_pp0_iter2_reg; -reg [9:0] lshr_ln1_reg_3119; -reg [1:0] trunc_ln1_reg_3124; -reg [1:0] trunc_ln1_reg_3124_pp0_iter1_reg; -reg [17:0] a_row_V_1_reg_3136; -reg [17:0] a_row_V_1_reg_3136_pp0_iter1_reg; -reg [17:0] a_row_V_1_reg_3136_pp0_iter2_reg; -reg [17:0] a_row_V_1_reg_3136_pp0_iter3_reg; -reg [17:0] a_row_V_1_reg_3136_pp0_iter4_reg; -reg [17:0] a_row_V_1_reg_3136_pp0_iter5_reg; -reg [17:0] a_row_V_1_reg_3136_pp0_iter6_reg; -reg [31:0] a_val_V_1_reg_3141; -reg [31:0] a_val_V_1_reg_3141_pp0_iter1_reg; -reg [31:0] a_val_V_1_reg_3141_pp0_iter2_reg; -reg [0:0] p_Result_s_reg_3146; -reg [0:0] p_Result_s_reg_3146_pp0_iter1_reg; -reg [0:0] p_Result_s_reg_3146_pp0_iter2_reg; -reg [0:0] p_Result_s_reg_3146_pp0_iter3_reg; -reg [0:0] p_Result_s_reg_3146_pp0_iter4_reg; -reg [0:0] p_Result_s_reg_3146_pp0_iter5_reg; -reg [0:0] p_Result_s_reg_3146_pp0_iter6_reg; -reg [9:0] lshr_ln127_1_reg_3151; -reg [1:0] trunc_ln127_1_reg_3156; -reg [1:0] trunc_ln127_1_reg_3156_pp0_iter1_reg; -reg [17:0] a_row_V_2_reg_3168; -reg [17:0] a_row_V_2_reg_3168_pp0_iter1_reg; -reg [17:0] a_row_V_2_reg_3168_pp0_iter2_reg; -reg [17:0] a_row_V_2_reg_3168_pp0_iter3_reg; -reg [17:0] a_row_V_2_reg_3168_pp0_iter4_reg; -reg [17:0] a_row_V_2_reg_3168_pp0_iter5_reg; -reg [17:0] a_row_V_2_reg_3168_pp0_iter6_reg; -reg [31:0] a_val_V_2_reg_3173; -reg [31:0] a_val_V_2_reg_3173_pp0_iter1_reg; -reg [31:0] a_val_V_2_reg_3173_pp0_iter2_reg; -reg [0:0] p_Result_1_reg_3178; -reg [0:0] p_Result_1_reg_3178_pp0_iter1_reg; -reg [0:0] p_Result_1_reg_3178_pp0_iter2_reg; -reg [0:0] p_Result_1_reg_3178_pp0_iter3_reg; -reg [0:0] p_Result_1_reg_3178_pp0_iter4_reg; -reg [0:0] p_Result_1_reg_3178_pp0_iter5_reg; -reg [0:0] p_Result_1_reg_3178_pp0_iter6_reg; -reg [9:0] lshr_ln127_2_reg_3183; -reg [1:0] trunc_ln127_2_reg_3188; -reg [1:0] trunc_ln127_2_reg_3188_pp0_iter1_reg; -reg [17:0] a_row_V_3_reg_3200; -reg [17:0] a_row_V_3_reg_3200_pp0_iter1_reg; -reg [17:0] a_row_V_3_reg_3200_pp0_iter2_reg; -reg [17:0] a_row_V_3_reg_3200_pp0_iter3_reg; -reg [17:0] a_row_V_3_reg_3200_pp0_iter4_reg; -reg [17:0] a_row_V_3_reg_3200_pp0_iter5_reg; -reg [17:0] a_row_V_3_reg_3200_pp0_iter6_reg; -reg [31:0] a_val_V_3_reg_3205; -reg [31:0] a_val_V_3_reg_3205_pp0_iter1_reg; -reg [31:0] a_val_V_3_reg_3205_pp0_iter2_reg; -reg [0:0] p_Result_2_reg_3210; -reg [0:0] p_Result_2_reg_3210_pp0_iter1_reg; -reg [0:0] p_Result_2_reg_3210_pp0_iter2_reg; -reg [0:0] p_Result_2_reg_3210_pp0_iter3_reg; -reg [0:0] p_Result_2_reg_3210_pp0_iter4_reg; -reg [0:0] p_Result_2_reg_3210_pp0_iter5_reg; -reg [0:0] p_Result_2_reg_3210_pp0_iter6_reg; -reg [9:0] lshr_ln127_3_reg_3215; -reg [1:0] trunc_ln127_3_reg_3220; -reg [1:0] trunc_ln127_3_reg_3220_pp0_iter1_reg; -wire [31:0] tmp_s_fu_2385_p6; -reg [31:0] tmp_s_reg_3872; -wire [31:0] tmp_58_fu_2398_p6; -reg [31:0] tmp_58_reg_3877; -wire [31:0] tmp_59_fu_2411_p6; -reg [31:0] tmp_59_reg_3882; -wire [31:0] tmp_60_fu_2424_p6; -reg [31:0] tmp_60_reg_3887; -wire [31:0] tmp_61_fu_2437_p6; -reg [31:0] tmp_61_reg_3892; -wire [31:0] tmp_62_fu_2450_p6; -reg [31:0] tmp_62_reg_3897; -wire [31:0] tmp_63_fu_2463_p6; -reg [31:0] tmp_63_reg_3902; -wire [31:0] tmp_64_fu_2476_p6; -reg [31:0] tmp_64_reg_3907; -wire [31:0] tmp_65_fu_2489_p6; -reg [31:0] tmp_65_reg_3912; -wire [31:0] tmp_66_fu_2502_p6; -reg [31:0] tmp_66_reg_3917; -wire [31:0] tmp_67_fu_2515_p6; -reg [31:0] tmp_67_reg_3922; -wire [31:0] tmp_68_fu_2528_p6; -reg [31:0] tmp_68_reg_3927; -wire [31:0] tmp_69_fu_2541_p6; -reg [31:0] tmp_69_reg_3932; -wire [31:0] tmp_70_fu_2554_p6; -reg [31:0] tmp_70_reg_3937; -wire [31:0] tmp_71_fu_2567_p6; -reg [31:0] tmp_71_reg_3942; -wire [31:0] tmp_72_fu_2580_p6; -reg [31:0] tmp_72_reg_3947; -wire [31:0] tmp_73_fu_2593_p6; -reg [31:0] tmp_73_reg_3952; -wire [31:0] tmp_74_fu_2606_p6; -reg [31:0] tmp_74_reg_3957; -wire [31:0] tmp_75_fu_2619_p6; -reg [31:0] tmp_75_reg_3962; -wire [31:0] tmp_76_fu_2632_p6; -reg [31:0] tmp_76_reg_3967; -wire [31:0] tmp_77_fu_2645_p6; -reg [31:0] tmp_77_reg_3972; -wire [31:0] tmp_78_fu_2658_p6; -reg [31:0] tmp_78_reg_3977; -wire [31:0] tmp_79_fu_2671_p6; -reg [31:0] tmp_79_reg_3982; -wire [31:0] tmp_80_fu_2684_p6; -reg [31:0] tmp_80_reg_3987; -wire [31:0] tmp_81_fu_2697_p6; -reg [31:0] tmp_81_reg_3992; -wire [31:0] tmp_82_fu_2710_p6; -reg [31:0] tmp_82_reg_3997; -wire [31:0] tmp_83_fu_2723_p6; -reg [31:0] tmp_83_reg_4002; -wire [31:0] tmp_84_fu_2736_p6; -reg [31:0] tmp_84_reg_4007; -wire [31:0] tmp_85_fu_2749_p6; -reg [31:0] tmp_85_reg_4012; -wire [31:0] tmp_86_fu_2762_p6; -reg [31:0] tmp_86_reg_4017; -wire [31:0] tmp_87_fu_2775_p6; -reg [31:0] tmp_87_reg_4022; -wire [31:0] tmp_88_fu_2788_p6; -reg [31:0] tmp_88_reg_4027; -wire [31:0] empty_fu_2801_p1; -wire [31:0] empty_127_fu_2812_p1; -wire [31:0] empty_128_fu_2823_p1; -wire [31:0] empty_129_fu_2834_p1; -wire [31:0] grp_fu_1906_p2; -reg [31:0] mul_i_reg_4080; -wire [31:0] grp_fu_1910_p2; -reg [31:0] mul_i_s_reg_4085; -wire [31:0] grp_fu_1914_p2; -reg [31:0] mul_i_8_reg_4090; -wire [31:0] grp_fu_1918_p2; -reg [31:0] mul_i_9_reg_4095; -wire [31:0] grp_fu_1922_p2; -reg [31:0] mul_i_4_reg_4100; -wire [31:0] grp_fu_1926_p2; -reg [31:0] mul_i_5_reg_4105; -wire [31:0] grp_fu_1930_p2; -reg [31:0] mul_i_6_reg_4110; -wire [31:0] grp_fu_1934_p2; -reg [31:0] mul_i_7_reg_4115; -wire [31:0] grp_fu_1938_p2; -reg [31:0] mul_i_1_reg_4120; -wire [31:0] grp_fu_1942_p2; -reg [31:0] mul_i_1_1_reg_4125; -wire [31:0] grp_fu_1946_p2; -reg [31:0] mul_i_1_2_reg_4130; -wire [31:0] grp_fu_1950_p2; -reg [31:0] mul_i_1_3_reg_4135; -wire [31:0] grp_fu_1954_p2; -reg [31:0] mul_i_1_4_reg_4140; -wire [31:0] grp_fu_1958_p2; -reg [31:0] mul_i_1_5_reg_4145; -wire [31:0] grp_fu_1962_p2; -reg [31:0] mul_i_1_6_reg_4150; -wire [31:0] grp_fu_1966_p2; -reg [31:0] mul_i_1_7_reg_4155; -wire [31:0] grp_fu_1970_p2; -reg [31:0] mul_i_2_reg_4160; -wire [31:0] grp_fu_1974_p2; -reg [31:0] mul_i_2_1_reg_4165; -wire [31:0] grp_fu_1978_p2; -reg [31:0] mul_i_2_2_reg_4170; -wire [31:0] grp_fu_1982_p2; -reg [31:0] mul_i_2_3_reg_4175; -wire [31:0] grp_fu_1986_p2; -reg [31:0] mul_i_2_4_reg_4180; -wire [31:0] grp_fu_1990_p2; -reg [31:0] mul_i_2_5_reg_4185; -wire [31:0] grp_fu_1994_p2; -reg [31:0] mul_i_2_6_reg_4190; -wire [31:0] grp_fu_1998_p2; -reg [31:0] mul_i_2_7_reg_4195; -wire [31:0] grp_fu_2002_p2; -reg [31:0] mul_i_3_reg_4200; -wire [31:0] grp_fu_2006_p2; -reg [31:0] mul_i_3_1_reg_4205; -wire [31:0] grp_fu_2010_p2; -reg [31:0] mul_i_3_2_reg_4210; -wire [31:0] grp_fu_2014_p2; -reg [31:0] mul_i_3_3_reg_4215; -wire [31:0] grp_fu_2018_p2; -reg [31:0] mul_i_3_4_reg_4220; -wire [31:0] grp_fu_2022_p2; -reg [31:0] mul_i_3_5_reg_4225; -wire [31:0] grp_fu_2026_p2; -reg [31:0] mul_i_3_6_reg_4230; -wire [31:0] grp_fu_2030_p2; -reg [31:0] mul_i_3_7_reg_4235; -wire [63:0] zext_ln127_fu_2245_p1; -wire [63:0] zext_ln127_1_fu_2280_p1; -wire [63:0] zext_ln127_2_fu_2315_p1; -wire [63:0] zext_ln127_3_fu_2350_p1; -reg [31:0] j_fu_256; -wire [31:0] j_4_fu_2234_p2; -wire ap_loop_init; -reg [31:0] ap_sig_allocacmp_j_3; -wire [0:0] fifo_A_s_read_nbread_fu_272_p2_0; -reg ap_block_pp0_stage0_01001; -wire [31:0] bitcast_ln127_7_fu_2866_p1; -wire [31:0] bitcast_ln127_6_fu_2863_p1; -wire [31:0] bitcast_ln127_5_fu_2860_p1; -wire [31:0] bitcast_ln127_4_fu_2857_p1; -wire [31:0] bitcast_ln127_3_fu_2854_p1; -wire [31:0] bitcast_ln127_2_fu_2851_p1; -wire [31:0] bitcast_ln127_1_fu_2848_p1; -wire [31:0] bitcast_ln127_fu_2845_p1; -wire [31:0] bitcast_ln127_15_fu_2914_p1; -wire [31:0] bitcast_ln127_14_fu_2911_p1; -wire [31:0] bitcast_ln127_13_fu_2908_p1; -wire [31:0] bitcast_ln127_12_fu_2905_p1; -wire [31:0] bitcast_ln127_11_fu_2902_p1; -wire [31:0] bitcast_ln127_10_fu_2899_p1; -wire [31:0] bitcast_ln127_9_fu_2896_p1; -wire [223:0] tmp_fu_2917_p8; -wire [223:0] tmp_1_fu_2935_p8; -wire [223:0] select_ln779_fu_2953_p3; -wire [31:0] bitcast_ln127_8_fu_2893_p1; -wire [31:0] bitcast_ln127_23_fu_2993_p1; -wire [31:0] bitcast_ln127_22_fu_2990_p1; -wire [31:0] bitcast_ln127_21_fu_2987_p1; -wire [31:0] bitcast_ln127_20_fu_2984_p1; -wire [31:0] bitcast_ln127_19_fu_2981_p1; -wire [31:0] bitcast_ln127_18_fu_2978_p1; -wire [31:0] bitcast_ln127_17_fu_2975_p1; -wire [223:0] tmp_3_fu_2996_p8; -wire [223:0] select_ln779_1_fu_3014_p3; -wire [31:0] bitcast_ln127_16_fu_2972_p1; -wire [31:0] bitcast_ln127_31_fu_3054_p1; -wire [31:0] bitcast_ln127_30_fu_3051_p1; -wire [31:0] bitcast_ln127_29_fu_3048_p1; -wire [31:0] bitcast_ln127_28_fu_3045_p1; -wire [31:0] bitcast_ln127_27_fu_3042_p1; -wire [31:0] bitcast_ln127_26_fu_3039_p1; -wire [31:0] bitcast_ln127_25_fu_3036_p1; -wire [223:0] tmp_89_fu_3057_p8; -wire [223:0] select_ln779_2_fu_3075_p3; -wire [31:0] bitcast_ln127_24_fu_3033_p1; -reg grp_fu_1906_ce; -reg grp_fu_1910_ce; -reg grp_fu_1914_ce; -reg grp_fu_1918_ce; -reg grp_fu_1922_ce; -reg grp_fu_1926_ce; -reg grp_fu_1930_ce; -reg grp_fu_1934_ce; -reg grp_fu_1938_ce; -reg grp_fu_1942_ce; -reg grp_fu_1946_ce; -reg grp_fu_1950_ce; -reg grp_fu_1954_ce; -reg grp_fu_1958_ce; -reg grp_fu_1962_ce; -reg grp_fu_1966_ce; -reg grp_fu_1970_ce; -reg grp_fu_1974_ce; -reg grp_fu_1978_ce; -reg grp_fu_1982_ce; -reg grp_fu_1986_ce; -reg grp_fu_1990_ce; -reg grp_fu_1994_ce; -reg grp_fu_1998_ce; -reg grp_fu_2002_ce; -reg grp_fu_2006_ce; -reg grp_fu_2010_ce; -reg grp_fu_2014_ce; -reg grp_fu_2018_ce; -reg grp_fu_2022_ce; -reg grp_fu_2026_ce; -reg grp_fu_2030_ce; -reg ap_done_reg; -wire ap_continue_int; -reg ap_done_int; -reg ap_loop_exit_ready_pp0_iter1_reg; -reg ap_loop_exit_ready_pp0_iter2_reg; -reg ap_loop_exit_ready_pp0_iter3_reg; -reg ap_loop_exit_ready_pp0_iter4_reg; -reg ap_loop_exit_ready_pp0_iter5_reg; -reg ap_loop_exit_ready_pp0_iter6_reg; -reg [0:0] ap_NS_fsm; -wire ap_enable_pp0; -wire ap_start_int; -reg ap_condition_2402; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 1'd1; -#0 ap_enable_reg_pp0_iter1 = 1'b0; -#0 ap_enable_reg_pp0_iter2 = 1'b0; -#0 ap_enable_reg_pp0_iter3 = 1'b0; -#0 ap_enable_reg_pp0_iter4 = 1'b0; -#0 ap_enable_reg_pp0_iter5 = 1'b0; -#0 ap_enable_reg_pp0_iter6 = 1'b0; -#0 ap_enable_reg_pp0_iter7 = 1'b0; -#0 ap_done_reg = 1'b0; -end - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U74( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_fu_2801_p1), - .din1(tmp_s_reg_3872), - .ce(grp_fu_1906_ce), - .dout(grp_fu_1906_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U75( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_fu_2801_p1), - .din1(tmp_58_reg_3877), - .ce(grp_fu_1910_ce), - .dout(grp_fu_1910_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U76( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_fu_2801_p1), - .din1(tmp_59_reg_3882), - .ce(grp_fu_1914_ce), - .dout(grp_fu_1914_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U77( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_fu_2801_p1), - .din1(tmp_60_reg_3887), - .ce(grp_fu_1918_ce), - .dout(grp_fu_1918_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U78( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_fu_2801_p1), - .din1(tmp_61_reg_3892), - .ce(grp_fu_1922_ce), - .dout(grp_fu_1922_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U79( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_fu_2801_p1), - .din1(tmp_62_reg_3897), - .ce(grp_fu_1926_ce), - .dout(grp_fu_1926_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U80( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_fu_2801_p1), - .din1(tmp_63_reg_3902), - .ce(grp_fu_1930_ce), - .dout(grp_fu_1930_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U81( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_fu_2801_p1), - .din1(tmp_64_reg_3907), - .ce(grp_fu_1934_ce), - .dout(grp_fu_1934_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U82( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_127_fu_2812_p1), - .din1(tmp_65_reg_3912), - .ce(grp_fu_1938_ce), - .dout(grp_fu_1938_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U83( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_127_fu_2812_p1), - .din1(tmp_66_reg_3917), - .ce(grp_fu_1942_ce), - .dout(grp_fu_1942_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U84( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_127_fu_2812_p1), - .din1(tmp_67_reg_3922), - .ce(grp_fu_1946_ce), - .dout(grp_fu_1946_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U85( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_127_fu_2812_p1), - .din1(tmp_68_reg_3927), - .ce(grp_fu_1950_ce), - .dout(grp_fu_1950_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U86( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_127_fu_2812_p1), - .din1(tmp_69_reg_3932), - .ce(grp_fu_1954_ce), - .dout(grp_fu_1954_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U87( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_127_fu_2812_p1), - .din1(tmp_70_reg_3937), - .ce(grp_fu_1958_ce), - .dout(grp_fu_1958_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U88( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_127_fu_2812_p1), - .din1(tmp_71_reg_3942), - .ce(grp_fu_1962_ce), - .dout(grp_fu_1962_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U89( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_127_fu_2812_p1), - .din1(tmp_72_reg_3947), - .ce(grp_fu_1966_ce), - .dout(grp_fu_1966_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U90( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_128_fu_2823_p1), - .din1(tmp_73_reg_3952), - .ce(grp_fu_1970_ce), - .dout(grp_fu_1970_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U91( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_128_fu_2823_p1), - .din1(tmp_74_reg_3957), - .ce(grp_fu_1974_ce), - .dout(grp_fu_1974_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U92( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_128_fu_2823_p1), - .din1(tmp_75_reg_3962), - .ce(grp_fu_1978_ce), - .dout(grp_fu_1978_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U93( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_128_fu_2823_p1), - .din1(tmp_76_reg_3967), - .ce(grp_fu_1982_ce), - .dout(grp_fu_1982_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U94( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_128_fu_2823_p1), - .din1(tmp_77_reg_3972), - .ce(grp_fu_1986_ce), - .dout(grp_fu_1986_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U95( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_128_fu_2823_p1), - .din1(tmp_78_reg_3977), - .ce(grp_fu_1990_ce), - .dout(grp_fu_1990_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U96( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_128_fu_2823_p1), - .din1(tmp_79_reg_3982), - .ce(grp_fu_1994_ce), - .dout(grp_fu_1994_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U97( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_128_fu_2823_p1), - .din1(tmp_80_reg_3987), - .ce(grp_fu_1998_ce), - .dout(grp_fu_1998_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U98( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_129_fu_2834_p1), - .din1(tmp_81_reg_3992), - .ce(grp_fu_2002_ce), - .dout(grp_fu_2002_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U99( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_129_fu_2834_p1), - .din1(tmp_82_reg_3997), - .ce(grp_fu_2006_ce), - .dout(grp_fu_2006_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U100( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_129_fu_2834_p1), - .din1(tmp_83_reg_4002), - .ce(grp_fu_2010_ce), - .dout(grp_fu_2010_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U101( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_129_fu_2834_p1), - .din1(tmp_84_reg_4007), - .ce(grp_fu_2014_ce), - .dout(grp_fu_2014_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U102( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_129_fu_2834_p1), - .din1(tmp_85_reg_4012), - .ce(grp_fu_2018_ce), - .dout(grp_fu_2018_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U103( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_129_fu_2834_p1), - .din1(tmp_86_reg_4017), - .ce(grp_fu_2022_ce), - .dout(grp_fu_2022_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U104( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_129_fu_2834_p1), - .din1(tmp_87_reg_4022), - .ce(grp_fu_2026_ce), - .dout(grp_fu_2026_p2) -); - -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fmul_32ns_32ns_32_4_max_dsp_1_U105( - .clk(ap_clk), - .reset(ap_rst), - .din0(empty_129_fu_2834_p1), - .din1(tmp_88_reg_4027), - .ce(grp_fu_2030_ce), - .dout(grp_fu_2030_p2) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U106( - .din0(local_B_q1), - .din1(local_B_1_q1), - .din2(local_B_2_q1), - .din3(local_B_3_q1), - .din4(trunc_ln1_reg_3124_pp0_iter1_reg), - .dout(tmp_s_fu_2385_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U107( - .din0(local_B_4_q1), - .din1(local_B_5_q1), - .din2(local_B_6_q1), - .din3(local_B_7_q1), - .din4(trunc_ln1_reg_3124_pp0_iter1_reg), - .dout(tmp_58_fu_2398_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U108( - .din0(local_B_8_q1), - .din1(local_B_9_q1), - .din2(local_B_10_q1), - .din3(local_B_11_q1), - .din4(trunc_ln1_reg_3124_pp0_iter1_reg), - .dout(tmp_59_fu_2411_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U109( - .din0(local_B_12_q1), - .din1(local_B_13_q1), - .din2(local_B_14_q1), - .din3(local_B_15_q1), - .din4(trunc_ln1_reg_3124_pp0_iter1_reg), - .dout(tmp_60_fu_2424_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U110( - .din0(local_B_16_q1), - .din1(local_B_17_q1), - .din2(local_B_18_q1), - .din3(local_B_19_q1), - .din4(trunc_ln1_reg_3124_pp0_iter1_reg), - .dout(tmp_61_fu_2437_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U111( - .din0(local_B_20_q1), - .din1(local_B_21_q1), - .din2(local_B_22_q1), - .din3(local_B_23_q1), - .din4(trunc_ln1_reg_3124_pp0_iter1_reg), - .dout(tmp_62_fu_2450_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U112( - .din0(local_B_24_q1), - .din1(local_B_25_q1), - .din2(local_B_26_q1), - .din3(local_B_27_q1), - .din4(trunc_ln1_reg_3124_pp0_iter1_reg), - .dout(tmp_63_fu_2463_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U113( - .din0(local_B_28_q1), - .din1(local_B_29_q1), - .din2(local_B_30_q1), - .din3(local_B_31_q1), - .din4(trunc_ln1_reg_3124_pp0_iter1_reg), - .dout(tmp_64_fu_2476_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U114( - .din0(local_B_q0), - .din1(local_B_1_q0), - .din2(local_B_2_q0), - .din3(local_B_3_q0), - .din4(trunc_ln127_1_reg_3156_pp0_iter1_reg), - .dout(tmp_65_fu_2489_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U115( - .din0(local_B_4_q0), - .din1(local_B_5_q0), - .din2(local_B_6_q0), - .din3(local_B_7_q0), - .din4(trunc_ln127_1_reg_3156_pp0_iter1_reg), - .dout(tmp_66_fu_2502_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U116( - .din0(local_B_8_q0), - .din1(local_B_9_q0), - .din2(local_B_10_q0), - .din3(local_B_11_q0), - .din4(trunc_ln127_1_reg_3156_pp0_iter1_reg), - .dout(tmp_67_fu_2515_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U117( - .din0(local_B_12_q0), - .din1(local_B_13_q0), - .din2(local_B_14_q0), - .din3(local_B_15_q0), - .din4(trunc_ln127_1_reg_3156_pp0_iter1_reg), - .dout(tmp_68_fu_2528_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U118( - .din0(local_B_16_q0), - .din1(local_B_17_q0), - .din2(local_B_18_q0), - .din3(local_B_19_q0), - .din4(trunc_ln127_1_reg_3156_pp0_iter1_reg), - .dout(tmp_69_fu_2541_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U119( - .din0(local_B_20_q0), - .din1(local_B_21_q0), - .din2(local_B_22_q0), - .din3(local_B_23_q0), - .din4(trunc_ln127_1_reg_3156_pp0_iter1_reg), - .dout(tmp_70_fu_2554_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U120( - .din0(local_B_24_q0), - .din1(local_B_25_q0), - .din2(local_B_26_q0), - .din3(local_B_27_q0), - .din4(trunc_ln127_1_reg_3156_pp0_iter1_reg), - .dout(tmp_71_fu_2567_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U121( - .din0(local_B_28_q0), - .din1(local_B_29_q0), - .din2(local_B_30_q0), - .din3(local_B_31_q0), - .din4(trunc_ln127_1_reg_3156_pp0_iter1_reg), - .dout(tmp_72_fu_2580_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U122( - .din0(local_B_32_q1), - .din1(local_B_33_q1), - .din2(local_B_34_q1), - .din3(local_B_35_q1), - .din4(trunc_ln127_2_reg_3188_pp0_iter1_reg), - .dout(tmp_73_fu_2593_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U123( - .din0(local_B_36_q1), - .din1(local_B_37_q1), - .din2(local_B_38_q1), - .din3(local_B_39_q1), - .din4(trunc_ln127_2_reg_3188_pp0_iter1_reg), - .dout(tmp_74_fu_2606_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U124( - .din0(local_B_40_q1), - .din1(local_B_41_q1), - .din2(local_B_42_q1), - .din3(local_B_43_q1), - .din4(trunc_ln127_2_reg_3188_pp0_iter1_reg), - .dout(tmp_75_fu_2619_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U125( - .din0(local_B_44_q1), - .din1(local_B_45_q1), - .din2(local_B_46_q1), - .din3(local_B_47_q1), - .din4(trunc_ln127_2_reg_3188_pp0_iter1_reg), - .dout(tmp_76_fu_2632_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U126( - .din0(local_B_48_q1), - .din1(local_B_49_q1), - .din2(local_B_50_q1), - .din3(local_B_51_q1), - .din4(trunc_ln127_2_reg_3188_pp0_iter1_reg), - .dout(tmp_77_fu_2645_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U127( - .din0(local_B_52_q1), - .din1(local_B_53_q1), - .din2(local_B_54_q1), - .din3(local_B_55_q1), - .din4(trunc_ln127_2_reg_3188_pp0_iter1_reg), - .dout(tmp_78_fu_2658_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U128( - .din0(local_B_56_q1), - .din1(local_B_57_q1), - .din2(local_B_58_q1), - .din3(local_B_59_q1), - .din4(trunc_ln127_2_reg_3188_pp0_iter1_reg), - .dout(tmp_79_fu_2671_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U129( - .din0(local_B_60_q1), - .din1(local_B_61_q1), - .din2(local_B_62_q1), - .din3(local_B_63_q1), - .din4(trunc_ln127_2_reg_3188_pp0_iter1_reg), - .dout(tmp_80_fu_2684_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U130( - .din0(local_B_32_q0), - .din1(local_B_33_q0), - .din2(local_B_34_q0), - .din3(local_B_35_q0), - .din4(trunc_ln127_3_reg_3220_pp0_iter1_reg), - .dout(tmp_81_fu_2697_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U131( - .din0(local_B_36_q0), - .din1(local_B_37_q0), - .din2(local_B_38_q0), - .din3(local_B_39_q0), - .din4(trunc_ln127_3_reg_3220_pp0_iter1_reg), - .dout(tmp_82_fu_2710_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U132( - .din0(local_B_40_q0), - .din1(local_B_41_q0), - .din2(local_B_42_q0), - .din3(local_B_43_q0), - .din4(trunc_ln127_3_reg_3220_pp0_iter1_reg), - .dout(tmp_83_fu_2723_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U133( - .din0(local_B_44_q0), - .din1(local_B_45_q0), - .din2(local_B_46_q0), - .din3(local_B_47_q0), - .din4(trunc_ln127_3_reg_3220_pp0_iter1_reg), - .dout(tmp_84_fu_2736_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U134( - .din0(local_B_48_q0), - .din1(local_B_49_q0), - .din2(local_B_50_q0), - .din3(local_B_51_q0), - .din4(trunc_ln127_3_reg_3220_pp0_iter1_reg), - .dout(tmp_85_fu_2749_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U135( - .din0(local_B_52_q0), - .din1(local_B_53_q0), - .din2(local_B_54_q0), - .din3(local_B_55_q0), - .din4(trunc_ln127_3_reg_3220_pp0_iter1_reg), - .dout(tmp_86_fu_2762_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U136( - .din0(local_B_56_q0), - .din1(local_B_57_q0), - .din2(local_B_58_q0), - .din3(local_B_59_q0), - .din4(trunc_ln127_3_reg_3220_pp0_iter1_reg), - .dout(tmp_87_fu_2775_p6) -); - -PEG_Bmtx_mux_42_32_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .din2_WIDTH( 32 ), - .din3_WIDTH( 32 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 32 )) -mux_42_32_1_1_U137( - .din0(local_B_60_q0), - .din1(local_B_61_q0), - .din2(local_B_62_q0), - .din3(local_B_63_q0), - .din4(trunc_ln127_3_reg_3220_pp0_iter1_reg), - .dout(tmp_88_fu_2788_p6) -); - -PEG_Bmtx_flow_control_loop_pipe_sequential_init flow_control_loop_pipe_sequential_init_U( - .ap_clk(ap_clk), - .ap_rst(ap_rst), - .ap_start(ap_start), - .ap_ready(ap_ready), - .ap_done(ap_done), - .ap_start_int(ap_start_int), - .ap_loop_init(ap_loop_init), - .ap_ready_int(ap_ready_int), - .ap_loop_exit_ready(ap_condition_exit_pp0_iter0_stage0), - .ap_loop_exit_done(ap_done_int), - .ap_continue_int(ap_continue_int), - .ap_done_int(ap_done_int) -); - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_pp0_stage0; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_done_reg <= 1'b0; - end else begin - if ((ap_continue_int == 1'b1)) begin - ap_done_reg <= 1'b0; - end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_loop_exit_ready_pp0_iter6_reg == 1'b1))) begin - ap_done_reg <= 1'b1; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else begin - if ((1'b1 == ap_condition_exit_pp0_iter0_stage0)) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_enable_reg_pp0_iter1 <= ap_start_int; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter2 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter2 <= ap_enable_reg_pp0_iter1; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter3 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter3 <= ap_enable_reg_pp0_iter2; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter4 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter4 <= ap_enable_reg_pp0_iter3; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter5 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter5 <= ap_enable_reg_pp0_iter4; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter6 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter6 <= ap_enable_reg_pp0_iter5; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter7 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter7 <= ap_enable_reg_pp0_iter6; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if ((1'b1 == ap_condition_2402)) begin - j_fu_256 <= j_4_fu_2234_p2; - end else if ((ap_loop_init == 1'b1)) begin - j_fu_256 <= start_32_3; - end - end -end - -always @ (posedge ap_clk) begin - if (((icmp_ln311_fu_2042_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (is_success_fu_2048_p1 == 1'd1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - a_row_V_1_reg_3136 <= {{fifo_A_s_dout[113:96]}}; - a_row_V_2_reg_3168 <= {{fifo_A_s_dout[177:160]}}; - a_row_V_3_reg_3200 <= {{fifo_A_s_dout[241:224]}}; - a_row_V_reg_3109 <= {{fifo_A_s_dout[49:32]}}; - a_val_V_1_reg_3141 <= {{fifo_A_s_dout[95:64]}}; - a_val_V_2_reg_3173 <= {{fifo_A_s_dout[159:128]}}; - a_val_V_3_reg_3205 <= {{fifo_A_s_dout[223:192]}}; - a_val_V_reg_3114 <= a_val_V_fu_2066_p1; - lshr_ln127_1_reg_3151 <= {{fifo_A_s_dout[125:116]}}; - lshr_ln127_2_reg_3183 <= {{fifo_A_s_dout[189:180]}}; - lshr_ln127_3_reg_3215 <= {{fifo_A_s_dout[253:244]}}; - lshr_ln1_reg_3119 <= {{fifo_A_s_dout[61:52]}}; - p_Result_1_reg_3178 <= fifo_A_s_dout[32'd177]; - p_Result_2_reg_3210 <= fifo_A_s_dout[32'd241]; - p_Result_s_reg_3146 <= fifo_A_s_dout[32'd113]; - trunc_ln127_1_reg_3156 <= {{fifo_A_s_dout[115:114]}}; - trunc_ln127_2_reg_3188 <= {{fifo_A_s_dout[179:178]}}; - trunc_ln127_3_reg_3220 <= {{fifo_A_s_dout[243:242]}}; - trunc_ln1_reg_3124 <= {{fifo_A_s_dout[51:50]}}; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - a_row_V_1_reg_3136_pp0_iter1_reg <= a_row_V_1_reg_3136; - a_row_V_2_reg_3168_pp0_iter1_reg <= a_row_V_2_reg_3168; - a_row_V_3_reg_3200_pp0_iter1_reg <= a_row_V_3_reg_3200; - a_row_V_reg_3109_pp0_iter1_reg <= a_row_V_reg_3109; - a_val_V_1_reg_3141_pp0_iter1_reg <= a_val_V_1_reg_3141; - a_val_V_2_reg_3173_pp0_iter1_reg <= a_val_V_2_reg_3173; - a_val_V_3_reg_3205_pp0_iter1_reg <= a_val_V_3_reg_3205; - a_val_V_reg_3114_pp0_iter1_reg <= a_val_V_reg_3114; - ap_loop_exit_ready_pp0_iter1_reg <= ap_loop_exit_ready; - ap_loop_exit_ready_pp0_iter2_reg <= ap_loop_exit_ready_pp0_iter1_reg; - is_success_reg_3105_pp0_iter1_reg <= is_success_reg_3105; - p_Result_1_reg_3178_pp0_iter1_reg <= p_Result_1_reg_3178; - p_Result_2_reg_3210_pp0_iter1_reg <= p_Result_2_reg_3210; - p_Result_s_reg_3146_pp0_iter1_reg <= p_Result_s_reg_3146; - trunc_ln127_1_reg_3156_pp0_iter1_reg <= trunc_ln127_1_reg_3156; - trunc_ln127_2_reg_3188_pp0_iter1_reg <= trunc_ln127_2_reg_3188; - trunc_ln127_3_reg_3220_pp0_iter1_reg <= trunc_ln127_3_reg_3220; - trunc_ln1_reg_3124_pp0_iter1_reg <= trunc_ln1_reg_3124; - end -end - -always @ (posedge ap_clk) begin - if ((1'b0 == ap_block_pp0_stage0_11001)) begin - a_row_V_1_reg_3136_pp0_iter2_reg <= a_row_V_1_reg_3136_pp0_iter1_reg; - a_row_V_1_reg_3136_pp0_iter3_reg <= a_row_V_1_reg_3136_pp0_iter2_reg; - a_row_V_1_reg_3136_pp0_iter4_reg <= a_row_V_1_reg_3136_pp0_iter3_reg; - a_row_V_1_reg_3136_pp0_iter5_reg <= a_row_V_1_reg_3136_pp0_iter4_reg; - a_row_V_1_reg_3136_pp0_iter6_reg <= a_row_V_1_reg_3136_pp0_iter5_reg; - a_row_V_2_reg_3168_pp0_iter2_reg <= a_row_V_2_reg_3168_pp0_iter1_reg; - a_row_V_2_reg_3168_pp0_iter3_reg <= a_row_V_2_reg_3168_pp0_iter2_reg; - a_row_V_2_reg_3168_pp0_iter4_reg <= a_row_V_2_reg_3168_pp0_iter3_reg; - a_row_V_2_reg_3168_pp0_iter5_reg <= a_row_V_2_reg_3168_pp0_iter4_reg; - a_row_V_2_reg_3168_pp0_iter6_reg <= a_row_V_2_reg_3168_pp0_iter5_reg; - a_row_V_3_reg_3200_pp0_iter2_reg <= a_row_V_3_reg_3200_pp0_iter1_reg; - a_row_V_3_reg_3200_pp0_iter3_reg <= a_row_V_3_reg_3200_pp0_iter2_reg; - a_row_V_3_reg_3200_pp0_iter4_reg <= a_row_V_3_reg_3200_pp0_iter3_reg; - a_row_V_3_reg_3200_pp0_iter5_reg <= a_row_V_3_reg_3200_pp0_iter4_reg; - a_row_V_3_reg_3200_pp0_iter6_reg <= a_row_V_3_reg_3200_pp0_iter5_reg; - a_row_V_reg_3109_pp0_iter2_reg <= a_row_V_reg_3109_pp0_iter1_reg; - a_row_V_reg_3109_pp0_iter3_reg <= a_row_V_reg_3109_pp0_iter2_reg; - a_row_V_reg_3109_pp0_iter4_reg <= a_row_V_reg_3109_pp0_iter3_reg; - a_row_V_reg_3109_pp0_iter5_reg <= a_row_V_reg_3109_pp0_iter4_reg; - a_row_V_reg_3109_pp0_iter6_reg <= a_row_V_reg_3109_pp0_iter5_reg; - a_val_V_1_reg_3141_pp0_iter2_reg <= a_val_V_1_reg_3141_pp0_iter1_reg; - a_val_V_2_reg_3173_pp0_iter2_reg <= a_val_V_2_reg_3173_pp0_iter1_reg; - a_val_V_3_reg_3205_pp0_iter2_reg <= a_val_V_3_reg_3205_pp0_iter1_reg; - a_val_V_reg_3114_pp0_iter2_reg <= a_val_V_reg_3114_pp0_iter1_reg; - ap_loop_exit_ready_pp0_iter3_reg <= ap_loop_exit_ready_pp0_iter2_reg; - ap_loop_exit_ready_pp0_iter4_reg <= ap_loop_exit_ready_pp0_iter3_reg; - ap_loop_exit_ready_pp0_iter5_reg <= ap_loop_exit_ready_pp0_iter4_reg; - ap_loop_exit_ready_pp0_iter6_reg <= ap_loop_exit_ready_pp0_iter5_reg; - is_success_reg_3105_pp0_iter2_reg <= is_success_reg_3105_pp0_iter1_reg; - is_success_reg_3105_pp0_iter3_reg <= is_success_reg_3105_pp0_iter2_reg; - is_success_reg_3105_pp0_iter4_reg <= is_success_reg_3105_pp0_iter3_reg; - is_success_reg_3105_pp0_iter5_reg <= is_success_reg_3105_pp0_iter4_reg; - is_success_reg_3105_pp0_iter6_reg <= is_success_reg_3105_pp0_iter5_reg; - p_Result_1_reg_3178_pp0_iter2_reg <= p_Result_1_reg_3178_pp0_iter1_reg; - p_Result_1_reg_3178_pp0_iter3_reg <= p_Result_1_reg_3178_pp0_iter2_reg; - p_Result_1_reg_3178_pp0_iter4_reg <= p_Result_1_reg_3178_pp0_iter3_reg; - p_Result_1_reg_3178_pp0_iter5_reg <= p_Result_1_reg_3178_pp0_iter4_reg; - p_Result_1_reg_3178_pp0_iter6_reg <= p_Result_1_reg_3178_pp0_iter5_reg; - p_Result_2_reg_3210_pp0_iter2_reg <= p_Result_2_reg_3210_pp0_iter1_reg; - p_Result_2_reg_3210_pp0_iter3_reg <= p_Result_2_reg_3210_pp0_iter2_reg; - p_Result_2_reg_3210_pp0_iter4_reg <= p_Result_2_reg_3210_pp0_iter3_reg; - p_Result_2_reg_3210_pp0_iter5_reg <= p_Result_2_reg_3210_pp0_iter4_reg; - p_Result_2_reg_3210_pp0_iter6_reg <= p_Result_2_reg_3210_pp0_iter5_reg; - p_Result_s_reg_3146_pp0_iter2_reg <= p_Result_s_reg_3146_pp0_iter1_reg; - p_Result_s_reg_3146_pp0_iter3_reg <= p_Result_s_reg_3146_pp0_iter2_reg; - p_Result_s_reg_3146_pp0_iter4_reg <= p_Result_s_reg_3146_pp0_iter3_reg; - p_Result_s_reg_3146_pp0_iter5_reg <= p_Result_s_reg_3146_pp0_iter4_reg; - p_Result_s_reg_3146_pp0_iter6_reg <= p_Result_s_reg_3146_pp0_iter5_reg; - end -end - -always @ (posedge ap_clk) begin - if (((icmp_ln311_fu_2042_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - is_success_reg_3105 <= fifo_A_s_read_nbread_fu_272_p2_0; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_s_reg_3146_pp0_iter5_reg == 1'd0) & (is_success_reg_3105_pp0_iter5_reg == 1'd1))) begin - mul_i_1_1_reg_4125 <= grp_fu_1942_p2; - mul_i_1_2_reg_4130 <= grp_fu_1946_p2; - mul_i_1_3_reg_4135 <= grp_fu_1950_p2; - mul_i_1_4_reg_4140 <= grp_fu_1954_p2; - mul_i_1_5_reg_4145 <= grp_fu_1958_p2; - mul_i_1_6_reg_4150 <= grp_fu_1962_p2; - mul_i_1_7_reg_4155 <= grp_fu_1966_p2; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (is_success_reg_3105_pp0_iter5_reg == 1'd1))) begin - mul_i_1_reg_4120 <= grp_fu_1938_p2; - mul_i_2_reg_4160 <= grp_fu_1970_p2; - mul_i_3_reg_4200 <= grp_fu_2002_p2; - mul_i_4_reg_4100 <= grp_fu_1922_p2; - mul_i_5_reg_4105 <= grp_fu_1926_p2; - mul_i_6_reg_4110 <= grp_fu_1930_p2; - mul_i_7_reg_4115 <= grp_fu_1934_p2; - mul_i_8_reg_4090 <= grp_fu_1914_p2; - mul_i_9_reg_4095 <= grp_fu_1918_p2; - mul_i_reg_4080 <= grp_fu_1906_p2; - mul_i_s_reg_4085 <= grp_fu_1910_p2; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_1_reg_3178_pp0_iter5_reg == 1'd0) & (is_success_reg_3105_pp0_iter5_reg == 1'd1))) begin - mul_i_2_1_reg_4165 <= grp_fu_1974_p2; - mul_i_2_2_reg_4170 <= grp_fu_1978_p2; - mul_i_2_3_reg_4175 <= grp_fu_1982_p2; - mul_i_2_4_reg_4180 <= grp_fu_1986_p2; - mul_i_2_5_reg_4185 <= grp_fu_1990_p2; - mul_i_2_6_reg_4190 <= grp_fu_1994_p2; - mul_i_2_7_reg_4195 <= grp_fu_1998_p2; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_2_reg_3210_pp0_iter5_reg == 1'd0) & (is_success_reg_3105_pp0_iter5_reg == 1'd1))) begin - mul_i_3_1_reg_4205 <= grp_fu_2006_p2; - mul_i_3_2_reg_4210 <= grp_fu_2010_p2; - mul_i_3_3_reg_4215 <= grp_fu_2014_p2; - mul_i_3_4_reg_4220 <= grp_fu_2018_p2; - mul_i_3_5_reg_4225 <= grp_fu_2022_p2; - mul_i_3_6_reg_4230 <= grp_fu_2026_p2; - mul_i_3_7_reg_4235 <= grp_fu_2030_p2; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (is_success_reg_3105_pp0_iter1_reg == 1'd1))) begin - tmp_58_reg_3877 <= tmp_58_fu_2398_p6; - tmp_59_reg_3882 <= tmp_59_fu_2411_p6; - tmp_60_reg_3887 <= tmp_60_fu_2424_p6; - tmp_61_reg_3892 <= tmp_61_fu_2437_p6; - tmp_62_reg_3897 <= tmp_62_fu_2450_p6; - tmp_63_reg_3902 <= tmp_63_fu_2463_p6; - tmp_64_reg_3907 <= tmp_64_fu_2476_p6; - tmp_65_reg_3912 <= tmp_65_fu_2489_p6; - tmp_73_reg_3952 <= tmp_73_fu_2593_p6; - tmp_81_reg_3992 <= tmp_81_fu_2697_p6; - tmp_s_reg_3872 <= tmp_s_fu_2385_p6; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_s_reg_3146_pp0_iter1_reg == 1'd0) & (is_success_reg_3105_pp0_iter1_reg == 1'd1))) begin - tmp_66_reg_3917 <= tmp_66_fu_2502_p6; - tmp_67_reg_3922 <= tmp_67_fu_2515_p6; - tmp_68_reg_3927 <= tmp_68_fu_2528_p6; - tmp_69_reg_3932 <= tmp_69_fu_2541_p6; - tmp_70_reg_3937 <= tmp_70_fu_2554_p6; - tmp_71_reg_3942 <= tmp_71_fu_2567_p6; - tmp_72_reg_3947 <= tmp_72_fu_2580_p6; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_1_reg_3178_pp0_iter1_reg == 1'd0) & (is_success_reg_3105_pp0_iter1_reg == 1'd1))) begin - tmp_74_reg_3957 <= tmp_74_fu_2606_p6; - tmp_75_reg_3962 <= tmp_75_fu_2619_p6; - tmp_76_reg_3967 <= tmp_76_fu_2632_p6; - tmp_77_reg_3972 <= tmp_77_fu_2645_p6; - tmp_78_reg_3977 <= tmp_78_fu_2658_p6; - tmp_79_reg_3982 <= tmp_79_fu_2671_p6; - tmp_80_reg_3987 <= tmp_80_fu_2684_p6; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_2_reg_3210_pp0_iter1_reg == 1'd0) & (is_success_reg_3105_pp0_iter1_reg == 1'd1))) begin - tmp_82_reg_3997 <= tmp_82_fu_2710_p6; - tmp_83_reg_4002 <= tmp_83_fu_2723_p6; - tmp_84_reg_4007 <= tmp_84_fu_2736_p6; - tmp_85_reg_4012 <= tmp_85_fu_2749_p6; - tmp_86_reg_4017 <= tmp_86_fu_2762_p6; - tmp_87_reg_4022 <= tmp_87_fu_2775_p6; - tmp_88_reg_4027 <= tmp_88_fu_2788_p6; - end -end - -always @ (*) begin - if (((icmp_ln311_fu_2042_p2 == 1'd0) & (1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_condition_exit_pp0_iter0_stage0 = 1'b1; - end else begin - ap_condition_exit_pp0_iter0_stage0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_loop_exit_ready_pp0_iter6_reg == 1'b1))) begin - ap_done_int = 1'b1; - end else begin - ap_done_int = ap_done_reg; - end -end - -always @ (*) begin - if (((ap_idle_pp0 == 1'b1) & (ap_start_int == 1'b0) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((ap_enable_reg_pp0_iter7 == 1'b0) & (ap_enable_reg_pp0_iter6 == 1'b0) & (ap_enable_reg_pp0_iter5 == 1'b0) & (ap_enable_reg_pp0_iter4 == 1'b0) & (ap_enable_reg_pp0_iter3 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0))) begin - ap_idle_pp0 = 1'b1; - end else begin - ap_idle_pp0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_ready_int = 1'b1; - end else begin - ap_ready_int = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0) & (1'b1 == ap_CS_fsm_pp0_stage0) & (ap_loop_init == 1'b1))) begin - ap_sig_allocacmp_j_3 = start_32_3; - end else begin - ap_sig_allocacmp_j_3 = j_fu_256; - end -end - -always @ (*) begin - if (((icmp_ln311_fu_2042_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (fifo_A_s_empty_n == 1'b1))) begin - fifo_A_s_read = 1'b1; - end else begin - fifo_A_s_read = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1) & (ap_enable_reg_pp0_iter7 == 1'b1))) begin - fifo_aBvec_0_blk_n = fifo_aBvec_0_full_n; - end else begin - fifo_aBvec_0_blk_n = 1'b1; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (is_success_reg_3105_pp0_iter6_reg == 1'd1) & (ap_enable_reg_pp0_iter7 == 1'b1))) begin - fifo_aBvec_0_write = 1'b1; - end else begin - fifo_aBvec_0_write = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1) & (ap_enable_reg_pp0_iter7 == 1'b1))) begin - fifo_aBvec_1_blk_n = fifo_aBvec_1_full_n; - end else begin - fifo_aBvec_1_blk_n = 1'b1; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (is_success_reg_3105_pp0_iter6_reg == 1'd1) & (ap_enable_reg_pp0_iter7 == 1'b1))) begin - fifo_aBvec_1_write = 1'b1; - end else begin - fifo_aBvec_1_write = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1) & (ap_enable_reg_pp0_iter7 == 1'b1))) begin - fifo_aBvec_2_blk_n = fifo_aBvec_2_full_n; - end else begin - fifo_aBvec_2_blk_n = 1'b1; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (is_success_reg_3105_pp0_iter6_reg == 1'd1) & (ap_enable_reg_pp0_iter7 == 1'b1))) begin - fifo_aBvec_2_write = 1'b1; - end else begin - fifo_aBvec_2_write = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1) & (ap_enable_reg_pp0_iter7 == 1'b1))) begin - fifo_aBvec_3_blk_n = fifo_aBvec_3_full_n; - end else begin - fifo_aBvec_3_blk_n = 1'b1; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (is_success_reg_3105_pp0_iter6_reg == 1'd1) & (ap_enable_reg_pp0_iter7 == 1'b1))) begin - fifo_aBvec_3_write = 1'b1; - end else begin - fifo_aBvec_3_write = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1906_ce = 1'b1; - end else begin - grp_fu_1906_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1910_ce = 1'b1; - end else begin - grp_fu_1910_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1914_ce = 1'b1; - end else begin - grp_fu_1914_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1918_ce = 1'b1; - end else begin - grp_fu_1918_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1922_ce = 1'b1; - end else begin - grp_fu_1922_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1926_ce = 1'b1; - end else begin - grp_fu_1926_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1930_ce = 1'b1; - end else begin - grp_fu_1930_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1934_ce = 1'b1; - end else begin - grp_fu_1934_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1938_ce = 1'b1; - end else begin - grp_fu_1938_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1942_ce = 1'b1; - end else begin - grp_fu_1942_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1946_ce = 1'b1; - end else begin - grp_fu_1946_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1950_ce = 1'b1; - end else begin - grp_fu_1950_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1954_ce = 1'b1; - end else begin - grp_fu_1954_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1958_ce = 1'b1; - end else begin - grp_fu_1958_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1962_ce = 1'b1; - end else begin - grp_fu_1962_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1966_ce = 1'b1; - end else begin - grp_fu_1966_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1970_ce = 1'b1; - end else begin - grp_fu_1970_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1974_ce = 1'b1; - end else begin - grp_fu_1974_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1978_ce = 1'b1; - end else begin - grp_fu_1978_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1982_ce = 1'b1; - end else begin - grp_fu_1982_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1986_ce = 1'b1; - end else begin - grp_fu_1986_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1990_ce = 1'b1; - end else begin - grp_fu_1990_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1994_ce = 1'b1; - end else begin - grp_fu_1994_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_1998_ce = 1'b1; - end else begin - grp_fu_1998_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_2002_ce = 1'b1; - end else begin - grp_fu_2002_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_2006_ce = 1'b1; - end else begin - grp_fu_2006_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_2010_ce = 1'b1; - end else begin - grp_fu_2010_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_2014_ce = 1'b1; - end else begin - grp_fu_2014_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_2018_ce = 1'b1; - end else begin - grp_fu_2018_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_2022_ce = 1'b1; - end else begin - grp_fu_2022_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_2026_ce = 1'b1; - end else begin - grp_fu_2026_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - grp_fu_2030_ce = 1'b1; - end else begin - grp_fu_2030_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_10_ce0 = 1'b1; - end else begin - local_B_10_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_10_ce1 = 1'b1; - end else begin - local_B_10_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_11_ce0 = 1'b1; - end else begin - local_B_11_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_11_ce1 = 1'b1; - end else begin - local_B_11_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_12_ce0 = 1'b1; - end else begin - local_B_12_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_12_ce1 = 1'b1; - end else begin - local_B_12_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_13_ce0 = 1'b1; - end else begin - local_B_13_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_13_ce1 = 1'b1; - end else begin - local_B_13_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_14_ce0 = 1'b1; - end else begin - local_B_14_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_14_ce1 = 1'b1; - end else begin - local_B_14_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_15_ce0 = 1'b1; - end else begin - local_B_15_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_15_ce1 = 1'b1; - end else begin - local_B_15_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_16_ce0 = 1'b1; - end else begin - local_B_16_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_16_ce1 = 1'b1; - end else begin - local_B_16_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_17_ce0 = 1'b1; - end else begin - local_B_17_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_17_ce1 = 1'b1; - end else begin - local_B_17_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_18_ce0 = 1'b1; - end else begin - local_B_18_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_18_ce1 = 1'b1; - end else begin - local_B_18_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_19_ce0 = 1'b1; - end else begin - local_B_19_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_19_ce1 = 1'b1; - end else begin - local_B_19_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_1_ce0 = 1'b1; - end else begin - local_B_1_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_1_ce1 = 1'b1; - end else begin - local_B_1_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_20_ce0 = 1'b1; - end else begin - local_B_20_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_20_ce1 = 1'b1; - end else begin - local_B_20_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_21_ce0 = 1'b1; - end else begin - local_B_21_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_21_ce1 = 1'b1; - end else begin - local_B_21_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_22_ce0 = 1'b1; - end else begin - local_B_22_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_22_ce1 = 1'b1; - end else begin - local_B_22_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_23_ce0 = 1'b1; - end else begin - local_B_23_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_23_ce1 = 1'b1; - end else begin - local_B_23_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_24_ce0 = 1'b1; - end else begin - local_B_24_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_24_ce1 = 1'b1; - end else begin - local_B_24_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_25_ce0 = 1'b1; - end else begin - local_B_25_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_25_ce1 = 1'b1; - end else begin - local_B_25_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_26_ce0 = 1'b1; - end else begin - local_B_26_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_26_ce1 = 1'b1; - end else begin - local_B_26_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_27_ce0 = 1'b1; - end else begin - local_B_27_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_27_ce1 = 1'b1; - end else begin - local_B_27_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_28_ce0 = 1'b1; - end else begin - local_B_28_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_28_ce1 = 1'b1; - end else begin - local_B_28_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_29_ce0 = 1'b1; - end else begin - local_B_29_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_29_ce1 = 1'b1; - end else begin - local_B_29_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_2_ce0 = 1'b1; - end else begin - local_B_2_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_2_ce1 = 1'b1; - end else begin - local_B_2_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_30_ce0 = 1'b1; - end else begin - local_B_30_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_30_ce1 = 1'b1; - end else begin - local_B_30_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_31_ce0 = 1'b1; - end else begin - local_B_31_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_31_ce1 = 1'b1; - end else begin - local_B_31_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_32_ce0 = 1'b1; - end else begin - local_B_32_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_32_ce1 = 1'b1; - end else begin - local_B_32_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_33_ce0 = 1'b1; - end else begin - local_B_33_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_33_ce1 = 1'b1; - end else begin - local_B_33_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_34_ce0 = 1'b1; - end else begin - local_B_34_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_34_ce1 = 1'b1; - end else begin - local_B_34_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_35_ce0 = 1'b1; - end else begin - local_B_35_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_35_ce1 = 1'b1; - end else begin - local_B_35_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_36_ce0 = 1'b1; - end else begin - local_B_36_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_36_ce1 = 1'b1; - end else begin - local_B_36_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_37_ce0 = 1'b1; - end else begin - local_B_37_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_37_ce1 = 1'b1; - end else begin - local_B_37_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_38_ce0 = 1'b1; - end else begin - local_B_38_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_38_ce1 = 1'b1; - end else begin - local_B_38_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_39_ce0 = 1'b1; - end else begin - local_B_39_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_39_ce1 = 1'b1; - end else begin - local_B_39_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_3_ce0 = 1'b1; - end else begin - local_B_3_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_3_ce1 = 1'b1; - end else begin - local_B_3_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_40_ce0 = 1'b1; - end else begin - local_B_40_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_40_ce1 = 1'b1; - end else begin - local_B_40_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_41_ce0 = 1'b1; - end else begin - local_B_41_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_41_ce1 = 1'b1; - end else begin - local_B_41_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_42_ce0 = 1'b1; - end else begin - local_B_42_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_42_ce1 = 1'b1; - end else begin - local_B_42_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_43_ce0 = 1'b1; - end else begin - local_B_43_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_43_ce1 = 1'b1; - end else begin - local_B_43_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_44_ce0 = 1'b1; - end else begin - local_B_44_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_44_ce1 = 1'b1; - end else begin - local_B_44_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_45_ce0 = 1'b1; - end else begin - local_B_45_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_45_ce1 = 1'b1; - end else begin - local_B_45_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_46_ce0 = 1'b1; - end else begin - local_B_46_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_46_ce1 = 1'b1; - end else begin - local_B_46_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_47_ce0 = 1'b1; - end else begin - local_B_47_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_47_ce1 = 1'b1; - end else begin - local_B_47_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_48_ce0 = 1'b1; - end else begin - local_B_48_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_48_ce1 = 1'b1; - end else begin - local_B_48_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_49_ce0 = 1'b1; - end else begin - local_B_49_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_49_ce1 = 1'b1; - end else begin - local_B_49_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_4_ce0 = 1'b1; - end else begin - local_B_4_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_4_ce1 = 1'b1; - end else begin - local_B_4_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_50_ce0 = 1'b1; - end else begin - local_B_50_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_50_ce1 = 1'b1; - end else begin - local_B_50_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_51_ce0 = 1'b1; - end else begin - local_B_51_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_51_ce1 = 1'b1; - end else begin - local_B_51_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_52_ce0 = 1'b1; - end else begin - local_B_52_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_52_ce1 = 1'b1; - end else begin - local_B_52_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_53_ce0 = 1'b1; - end else begin - local_B_53_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_53_ce1 = 1'b1; - end else begin - local_B_53_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_54_ce0 = 1'b1; - end else begin - local_B_54_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_54_ce1 = 1'b1; - end else begin - local_B_54_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_55_ce0 = 1'b1; - end else begin - local_B_55_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_55_ce1 = 1'b1; - end else begin - local_B_55_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_56_ce0 = 1'b1; - end else begin - local_B_56_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_56_ce1 = 1'b1; - end else begin - local_B_56_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_57_ce0 = 1'b1; - end else begin - local_B_57_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_57_ce1 = 1'b1; - end else begin - local_B_57_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_58_ce0 = 1'b1; - end else begin - local_B_58_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_58_ce1 = 1'b1; - end else begin - local_B_58_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_59_ce0 = 1'b1; - end else begin - local_B_59_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_59_ce1 = 1'b1; - end else begin - local_B_59_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_5_ce0 = 1'b1; - end else begin - local_B_5_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_5_ce1 = 1'b1; - end else begin - local_B_5_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_60_ce0 = 1'b1; - end else begin - local_B_60_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_60_ce1 = 1'b1; - end else begin - local_B_60_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_61_ce0 = 1'b1; - end else begin - local_B_61_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_61_ce1 = 1'b1; - end else begin - local_B_61_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_62_ce0 = 1'b1; - end else begin - local_B_62_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_62_ce1 = 1'b1; - end else begin - local_B_62_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_63_ce0 = 1'b1; - end else begin - local_B_63_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_63_ce1 = 1'b1; - end else begin - local_B_63_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_6_ce0 = 1'b1; - end else begin - local_B_6_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_6_ce1 = 1'b1; - end else begin - local_B_6_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_7_ce0 = 1'b1; - end else begin - local_B_7_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_7_ce1 = 1'b1; - end else begin - local_B_7_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_8_ce0 = 1'b1; - end else begin - local_B_8_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_8_ce1 = 1'b1; - end else begin - local_B_8_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_9_ce0 = 1'b1; - end else begin - local_B_9_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_9_ce1 = 1'b1; - end else begin - local_B_9_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_ce0 = 1'b1; - end else begin - local_B_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_B_ce1 = 1'b1; - end else begin - local_B_ce1 = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_pp0_stage0 : begin - ap_NS_fsm = ap_ST_fsm_pp0_stage0; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign a_val_V_fu_2066_p1 = fifo_A_s_dout[31:0]; - -assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd0]; - -assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); - -always @ (*) begin - ap_block_pp0_stage0_01001 = ((ap_enable_reg_pp0_iter7 == 1'b1) & (((fifo_aBvec_3_full_n == 1'b0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1)) | ((fifo_aBvec_2_full_n == 1'b0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1)) | ((fifo_aBvec_1_full_n == 1'b0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1)) | ((is_success_reg_3105_pp0_iter6_reg == 1'd1) & (fifo_aBvec_0_full_n == 1'b0)))); -end - -always @ (*) begin - ap_block_pp0_stage0_11001 = ((ap_enable_reg_pp0_iter7 == 1'b1) & (((fifo_aBvec_3_full_n == 1'b0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1)) | ((fifo_aBvec_2_full_n == 1'b0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1)) | ((fifo_aBvec_1_full_n == 1'b0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1)) | ((is_success_reg_3105_pp0_iter6_reg == 1'd1) & (fifo_aBvec_0_full_n == 1'b0)))); -end - -always @ (*) begin - ap_block_pp0_stage0_subdone = ((ap_enable_reg_pp0_iter7 == 1'b1) & (((fifo_aBvec_3_full_n == 1'b0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1)) | ((fifo_aBvec_2_full_n == 1'b0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1)) | ((fifo_aBvec_1_full_n == 1'b0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1)) | ((is_success_reg_3105_pp0_iter6_reg == 1'd1) & (fifo_aBvec_0_full_n == 1'b0)))); -end - -assign ap_block_state1_pp0_stage0_iter0 = ~(1'b1 == 1'b1); - -assign ap_block_state2_pp0_stage0_iter1 = ~(1'b1 == 1'b1); - -assign ap_block_state3_pp0_stage0_iter2 = ~(1'b1 == 1'b1); - -assign ap_block_state4_pp0_stage0_iter3 = ~(1'b1 == 1'b1); - -assign ap_block_state5_pp0_stage0_iter4 = ~(1'b1 == 1'b1); - -assign ap_block_state6_pp0_stage0_iter5 = ~(1'b1 == 1'b1); - -assign ap_block_state7_pp0_stage0_iter6 = ~(1'b1 == 1'b1); - -always @ (*) begin - ap_block_state8_pp0_stage0_iter7 = (((fifo_aBvec_3_full_n == 1'b0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1)) | ((fifo_aBvec_2_full_n == 1'b0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1)) | ((fifo_aBvec_1_full_n == 1'b0) & (is_success_reg_3105_pp0_iter6_reg == 1'd1)) | ((is_success_reg_3105_pp0_iter6_reg == 1'd1) & (fifo_aBvec_0_full_n == 1'b0))); -end - -always @ (*) begin - ap_condition_2402 = ((icmp_ln311_fu_2042_p2 == 1'd1) & (is_success_fu_2048_p1 == 1'd1) & (ap_enable_reg_pp0_iter0 == 1'b1)); -end - -assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); - -assign ap_enable_reg_pp0_iter0 = ap_start_int; - -assign ap_loop_exit_ready = ap_condition_exit_pp0_iter0_stage0; - -assign bitcast_ln127_10_fu_2899_p1 = mul_i_1_2_reg_4130; - -assign bitcast_ln127_11_fu_2902_p1 = mul_i_1_3_reg_4135; - -assign bitcast_ln127_12_fu_2905_p1 = mul_i_1_4_reg_4140; - -assign bitcast_ln127_13_fu_2908_p1 = mul_i_1_5_reg_4145; - -assign bitcast_ln127_14_fu_2911_p1 = mul_i_1_6_reg_4150; - -assign bitcast_ln127_15_fu_2914_p1 = mul_i_1_7_reg_4155; - -assign bitcast_ln127_16_fu_2972_p1 = mul_i_2_reg_4160; - -assign bitcast_ln127_17_fu_2975_p1 = mul_i_2_1_reg_4165; - -assign bitcast_ln127_18_fu_2978_p1 = mul_i_2_2_reg_4170; - -assign bitcast_ln127_19_fu_2981_p1 = mul_i_2_3_reg_4175; - -assign bitcast_ln127_1_fu_2848_p1 = mul_i_s_reg_4085; - -assign bitcast_ln127_20_fu_2984_p1 = mul_i_2_4_reg_4180; - -assign bitcast_ln127_21_fu_2987_p1 = mul_i_2_5_reg_4185; - -assign bitcast_ln127_22_fu_2990_p1 = mul_i_2_6_reg_4190; - -assign bitcast_ln127_23_fu_2993_p1 = mul_i_2_7_reg_4195; - -assign bitcast_ln127_24_fu_3033_p1 = mul_i_3_reg_4200; - -assign bitcast_ln127_25_fu_3036_p1 = mul_i_3_1_reg_4205; - -assign bitcast_ln127_26_fu_3039_p1 = mul_i_3_2_reg_4210; - -assign bitcast_ln127_27_fu_3042_p1 = mul_i_3_3_reg_4215; - -assign bitcast_ln127_28_fu_3045_p1 = mul_i_3_4_reg_4220; - -assign bitcast_ln127_29_fu_3048_p1 = mul_i_3_5_reg_4225; - -assign bitcast_ln127_2_fu_2851_p1 = mul_i_8_reg_4090; - -assign bitcast_ln127_30_fu_3051_p1 = mul_i_3_6_reg_4230; - -assign bitcast_ln127_31_fu_3054_p1 = mul_i_3_7_reg_4235; - -assign bitcast_ln127_3_fu_2854_p1 = mul_i_9_reg_4095; - -assign bitcast_ln127_4_fu_2857_p1 = mul_i_4_reg_4100; - -assign bitcast_ln127_5_fu_2860_p1 = mul_i_5_reg_4105; - -assign bitcast_ln127_6_fu_2863_p1 = mul_i_6_reg_4110; - -assign bitcast_ln127_7_fu_2866_p1 = mul_i_7_reg_4115; - -assign bitcast_ln127_8_fu_2893_p1 = mul_i_1_reg_4120; - -assign bitcast_ln127_9_fu_2896_p1 = mul_i_1_1_reg_4125; - -assign bitcast_ln127_fu_2845_p1 = mul_i_reg_4080; - -assign empty_127_fu_2812_p1 = a_val_V_1_reg_3141_pp0_iter2_reg; - -assign empty_128_fu_2823_p1 = a_val_V_2_reg_3173_pp0_iter2_reg; - -assign empty_129_fu_2834_p1 = a_val_V_3_reg_3205_pp0_iter2_reg; - -assign empty_fu_2801_p1 = a_val_V_reg_3114_pp0_iter2_reg; - -assign fifo_A_s_read_nbread_fu_272_p2_0 = fifo_A_s_empty_n; - -assign fifo_aBvec_0_din = {{{{{{{{{{{{{{{{{{1'd0}, {bitcast_ln127_7_fu_2866_p1}}}, {bitcast_ln127_6_fu_2863_p1}}}, {bitcast_ln127_5_fu_2860_p1}}}, {bitcast_ln127_4_fu_2857_p1}}}, {bitcast_ln127_3_fu_2854_p1}}}, {bitcast_ln127_2_fu_2851_p1}}}, {bitcast_ln127_1_fu_2848_p1}}}, {bitcast_ln127_fu_2845_p1}}}, {a_row_V_reg_3109_pp0_iter6_reg}}; - -assign fifo_aBvec_1_din = {{{{{{1'd0}, {select_ln779_fu_2953_p3}}}, {bitcast_ln127_8_fu_2893_p1}}}, {a_row_V_1_reg_3136_pp0_iter6_reg}}; - -assign fifo_aBvec_2_din = {{{{{{1'd0}, {select_ln779_1_fu_3014_p3}}}, {bitcast_ln127_16_fu_2972_p1}}}, {a_row_V_2_reg_3168_pp0_iter6_reg}}; - -assign fifo_aBvec_3_din = {{{{{{1'd0}, {select_ln779_2_fu_3075_p3}}}, {bitcast_ln127_24_fu_3033_p1}}}, {a_row_V_3_reg_3200_pp0_iter6_reg}}; - -assign icmp_ln311_fu_2042_p2 = (($signed(ap_sig_allocacmp_j_3) < $signed(end_32)) ? 1'b1 : 1'b0); - -assign is_success_fu_2048_p1 = fifo_A_s_read_nbread_fu_272_p2_0; - -assign j_4_fu_2234_p2 = (ap_sig_allocacmp_j_3 + 32'd1); - -assign local_B_10_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_10_address1 = zext_ln127_fu_2245_p1; - -assign local_B_11_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_11_address1 = zext_ln127_fu_2245_p1; - -assign local_B_12_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_12_address1 = zext_ln127_fu_2245_p1; - -assign local_B_13_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_13_address1 = zext_ln127_fu_2245_p1; - -assign local_B_14_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_14_address1 = zext_ln127_fu_2245_p1; - -assign local_B_15_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_15_address1 = zext_ln127_fu_2245_p1; - -assign local_B_16_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_16_address1 = zext_ln127_fu_2245_p1; - -assign local_B_17_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_17_address1 = zext_ln127_fu_2245_p1; - -assign local_B_18_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_18_address1 = zext_ln127_fu_2245_p1; - -assign local_B_19_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_19_address1 = zext_ln127_fu_2245_p1; - -assign local_B_1_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_1_address1 = zext_ln127_fu_2245_p1; - -assign local_B_20_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_20_address1 = zext_ln127_fu_2245_p1; - -assign local_B_21_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_21_address1 = zext_ln127_fu_2245_p1; - -assign local_B_22_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_22_address1 = zext_ln127_fu_2245_p1; - -assign local_B_23_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_23_address1 = zext_ln127_fu_2245_p1; - -assign local_B_24_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_24_address1 = zext_ln127_fu_2245_p1; - -assign local_B_25_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_25_address1 = zext_ln127_fu_2245_p1; - -assign local_B_26_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_26_address1 = zext_ln127_fu_2245_p1; - -assign local_B_27_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_27_address1 = zext_ln127_fu_2245_p1; - -assign local_B_28_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_28_address1 = zext_ln127_fu_2245_p1; - -assign local_B_29_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_29_address1 = zext_ln127_fu_2245_p1; - -assign local_B_2_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_2_address1 = zext_ln127_fu_2245_p1; - -assign local_B_30_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_30_address1 = zext_ln127_fu_2245_p1; - -assign local_B_31_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_31_address1 = zext_ln127_fu_2245_p1; - -assign local_B_32_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_32_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_33_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_33_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_34_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_34_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_35_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_35_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_36_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_36_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_37_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_37_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_38_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_38_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_39_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_39_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_3_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_3_address1 = zext_ln127_fu_2245_p1; - -assign local_B_40_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_40_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_41_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_41_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_42_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_42_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_43_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_43_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_44_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_44_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_45_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_45_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_46_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_46_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_47_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_47_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_48_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_48_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_49_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_49_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_4_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_4_address1 = zext_ln127_fu_2245_p1; - -assign local_B_50_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_50_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_51_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_51_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_52_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_52_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_53_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_53_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_54_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_54_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_55_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_55_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_56_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_56_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_57_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_57_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_58_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_58_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_59_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_59_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_5_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_5_address1 = zext_ln127_fu_2245_p1; - -assign local_B_60_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_60_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_61_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_61_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_62_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_62_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_63_address0 = zext_ln127_3_fu_2350_p1; - -assign local_B_63_address1 = zext_ln127_2_fu_2315_p1; - -assign local_B_6_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_6_address1 = zext_ln127_fu_2245_p1; - -assign local_B_7_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_7_address1 = zext_ln127_fu_2245_p1; - -assign local_B_8_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_8_address1 = zext_ln127_fu_2245_p1; - -assign local_B_9_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_9_address1 = zext_ln127_fu_2245_p1; - -assign local_B_address0 = zext_ln127_1_fu_2280_p1; - -assign local_B_address1 = zext_ln127_fu_2245_p1; - -assign select_ln779_1_fu_3014_p3 = ((p_Result_1_reg_3178_pp0_iter6_reg[0:0] == 1'b1) ? select_ln779_fu_2953_p3 : tmp_3_fu_2996_p8); - -assign select_ln779_2_fu_3075_p3 = ((p_Result_2_reg_3210_pp0_iter6_reg[0:0] == 1'b1) ? select_ln779_1_fu_3014_p3 : tmp_89_fu_3057_p8); - -assign select_ln779_fu_2953_p3 = ((p_Result_s_reg_3146_pp0_iter6_reg[0:0] == 1'b1) ? tmp_fu_2917_p8 : tmp_1_fu_2935_p8); - -assign tmp_1_fu_2935_p8 = {{{{{{{bitcast_ln127_15_fu_2914_p1}, {bitcast_ln127_14_fu_2911_p1}}, {bitcast_ln127_13_fu_2908_p1}}, {bitcast_ln127_12_fu_2905_p1}}, {bitcast_ln127_11_fu_2902_p1}}, {bitcast_ln127_10_fu_2899_p1}}, {bitcast_ln127_9_fu_2896_p1}}; - -assign tmp_3_fu_2996_p8 = {{{{{{{bitcast_ln127_23_fu_2993_p1}, {bitcast_ln127_22_fu_2990_p1}}, {bitcast_ln127_21_fu_2987_p1}}, {bitcast_ln127_20_fu_2984_p1}}, {bitcast_ln127_19_fu_2981_p1}}, {bitcast_ln127_18_fu_2978_p1}}, {bitcast_ln127_17_fu_2975_p1}}; - -assign tmp_89_fu_3057_p8 = {{{{{{{bitcast_ln127_31_fu_3054_p1}, {bitcast_ln127_30_fu_3051_p1}}, {bitcast_ln127_29_fu_3048_p1}}, {bitcast_ln127_28_fu_3045_p1}}, {bitcast_ln127_27_fu_3042_p1}}, {bitcast_ln127_26_fu_3039_p1}}, {bitcast_ln127_25_fu_3036_p1}}; - -assign tmp_fu_2917_p8 = {{{{{{{bitcast_ln127_7_fu_2866_p1}, {bitcast_ln127_6_fu_2863_p1}}, {bitcast_ln127_5_fu_2860_p1}}, {bitcast_ln127_4_fu_2857_p1}}, {bitcast_ln127_3_fu_2854_p1}}, {bitcast_ln127_2_fu_2851_p1}}, {bitcast_ln127_1_fu_2848_p1}}; - -assign zext_ln127_1_fu_2280_p1 = lshr_ln127_1_reg_3151; - -assign zext_ln127_2_fu_2315_p1 = lshr_ln127_2_reg_3183; - -assign zext_ln127_3_fu_2350_p1 = lshr_ln127_3_reg_3215; - -assign zext_ln127_fu_2245_p1 = lshr_ln1_reg_3119; - -endmodule //PEG_Bmtx_PEG_Bmtx_Pipeline_computation diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_PEG_Bmtx_Pipeline_read_B.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_PEG_Bmtx_Pipeline_read_B.v deleted file mode 100644 index 9538f493..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_PEG_Bmtx_Pipeline_read_B.v +++ /dev/null @@ -1,4606 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module PEG_Bmtx_PEG_Bmtx_Pipeline_read_B ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - local_B_63_address0, - local_B_63_ce0, - local_B_63_we0, - local_B_63_d0, - local_B_63_address1, - local_B_63_ce1, - local_B_63_we1, - local_B_63_d1, - local_B_62_address0, - local_B_62_ce0, - local_B_62_we0, - local_B_62_d0, - local_B_62_address1, - local_B_62_ce1, - local_B_62_we1, - local_B_62_d1, - local_B_61_address0, - local_B_61_ce0, - local_B_61_we0, - local_B_61_d0, - local_B_61_address1, - local_B_61_ce1, - local_B_61_we1, - local_B_61_d1, - local_B_60_address0, - local_B_60_ce0, - local_B_60_we0, - local_B_60_d0, - local_B_60_address1, - local_B_60_ce1, - local_B_60_we1, - local_B_60_d1, - local_B_59_address0, - local_B_59_ce0, - local_B_59_we0, - local_B_59_d0, - local_B_59_address1, - local_B_59_ce1, - local_B_59_we1, - local_B_59_d1, - local_B_58_address0, - local_B_58_ce0, - local_B_58_we0, - local_B_58_d0, - local_B_58_address1, - local_B_58_ce1, - local_B_58_we1, - local_B_58_d1, - local_B_57_address0, - local_B_57_ce0, - local_B_57_we0, - local_B_57_d0, - local_B_57_address1, - local_B_57_ce1, - local_B_57_we1, - local_B_57_d1, - local_B_56_address0, - local_B_56_ce0, - local_B_56_we0, - local_B_56_d0, - local_B_56_address1, - local_B_56_ce1, - local_B_56_we1, - local_B_56_d1, - local_B_55_address0, - local_B_55_ce0, - local_B_55_we0, - local_B_55_d0, - local_B_55_address1, - local_B_55_ce1, - local_B_55_we1, - local_B_55_d1, - local_B_54_address0, - local_B_54_ce0, - local_B_54_we0, - local_B_54_d0, - local_B_54_address1, - local_B_54_ce1, - local_B_54_we1, - local_B_54_d1, - local_B_53_address0, - local_B_53_ce0, - local_B_53_we0, - local_B_53_d0, - local_B_53_address1, - local_B_53_ce1, - local_B_53_we1, - local_B_53_d1, - local_B_52_address0, - local_B_52_ce0, - local_B_52_we0, - local_B_52_d0, - local_B_52_address1, - local_B_52_ce1, - local_B_52_we1, - local_B_52_d1, - local_B_51_address0, - local_B_51_ce0, - local_B_51_we0, - local_B_51_d0, - local_B_51_address1, - local_B_51_ce1, - local_B_51_we1, - local_B_51_d1, - local_B_50_address0, - local_B_50_ce0, - local_B_50_we0, - local_B_50_d0, - local_B_50_address1, - local_B_50_ce1, - local_B_50_we1, - local_B_50_d1, - local_B_49_address0, - local_B_49_ce0, - local_B_49_we0, - local_B_49_d0, - local_B_49_address1, - local_B_49_ce1, - local_B_49_we1, - local_B_49_d1, - local_B_48_address0, - local_B_48_ce0, - local_B_48_we0, - local_B_48_d0, - local_B_48_address1, - local_B_48_ce1, - local_B_48_we1, - local_B_48_d1, - local_B_47_address0, - local_B_47_ce0, - local_B_47_we0, - local_B_47_d0, - local_B_47_address1, - local_B_47_ce1, - local_B_47_we1, - local_B_47_d1, - local_B_46_address0, - local_B_46_ce0, - local_B_46_we0, - local_B_46_d0, - local_B_46_address1, - local_B_46_ce1, - local_B_46_we1, - local_B_46_d1, - local_B_45_address0, - local_B_45_ce0, - local_B_45_we0, - local_B_45_d0, - local_B_45_address1, - local_B_45_ce1, - local_B_45_we1, - local_B_45_d1, - local_B_44_address0, - local_B_44_ce0, - local_B_44_we0, - local_B_44_d0, - local_B_44_address1, - local_B_44_ce1, - local_B_44_we1, - local_B_44_d1, - local_B_43_address0, - local_B_43_ce0, - local_B_43_we0, - local_B_43_d0, - local_B_43_address1, - local_B_43_ce1, - local_B_43_we1, - local_B_43_d1, - local_B_42_address0, - local_B_42_ce0, - local_B_42_we0, - local_B_42_d0, - local_B_42_address1, - local_B_42_ce1, - local_B_42_we1, - local_B_42_d1, - local_B_41_address0, - local_B_41_ce0, - local_B_41_we0, - local_B_41_d0, - local_B_41_address1, - local_B_41_ce1, - local_B_41_we1, - local_B_41_d1, - local_B_40_address0, - local_B_40_ce0, - local_B_40_we0, - local_B_40_d0, - local_B_40_address1, - local_B_40_ce1, - local_B_40_we1, - local_B_40_d1, - local_B_39_address0, - local_B_39_ce0, - local_B_39_we0, - local_B_39_d0, - local_B_39_address1, - local_B_39_ce1, - local_B_39_we1, - local_B_39_d1, - local_B_38_address0, - local_B_38_ce0, - local_B_38_we0, - local_B_38_d0, - local_B_38_address1, - local_B_38_ce1, - local_B_38_we1, - local_B_38_d1, - local_B_37_address0, - local_B_37_ce0, - local_B_37_we0, - local_B_37_d0, - local_B_37_address1, - local_B_37_ce1, - local_B_37_we1, - local_B_37_d1, - local_B_36_address0, - local_B_36_ce0, - local_B_36_we0, - local_B_36_d0, - local_B_36_address1, - local_B_36_ce1, - local_B_36_we1, - local_B_36_d1, - local_B_35_address0, - local_B_35_ce0, - local_B_35_we0, - local_B_35_d0, - local_B_35_address1, - local_B_35_ce1, - local_B_35_we1, - local_B_35_d1, - local_B_34_address0, - local_B_34_ce0, - local_B_34_we0, - local_B_34_d0, - local_B_34_address1, - local_B_34_ce1, - local_B_34_we1, - local_B_34_d1, - local_B_33_address0, - local_B_33_ce0, - local_B_33_we0, - local_B_33_d0, - local_B_33_address1, - local_B_33_ce1, - local_B_33_we1, - local_B_33_d1, - local_B_32_address0, - local_B_32_ce0, - local_B_32_we0, - local_B_32_d0, - local_B_32_address1, - local_B_32_ce1, - local_B_32_we1, - local_B_32_d1, - local_B_31_address0, - local_B_31_ce0, - local_B_31_we0, - local_B_31_d0, - local_B_31_address1, - local_B_31_ce1, - local_B_31_we1, - local_B_31_d1, - local_B_30_address0, - local_B_30_ce0, - local_B_30_we0, - local_B_30_d0, - local_B_30_address1, - local_B_30_ce1, - local_B_30_we1, - local_B_30_d1, - local_B_29_address0, - local_B_29_ce0, - local_B_29_we0, - local_B_29_d0, - local_B_29_address1, - local_B_29_ce1, - local_B_29_we1, - local_B_29_d1, - local_B_28_address0, - local_B_28_ce0, - local_B_28_we0, - local_B_28_d0, - local_B_28_address1, - local_B_28_ce1, - local_B_28_we1, - local_B_28_d1, - local_B_27_address0, - local_B_27_ce0, - local_B_27_we0, - local_B_27_d0, - local_B_27_address1, - local_B_27_ce1, - local_B_27_we1, - local_B_27_d1, - local_B_26_address0, - local_B_26_ce0, - local_B_26_we0, - local_B_26_d0, - local_B_26_address1, - local_B_26_ce1, - local_B_26_we1, - local_B_26_d1, - local_B_25_address0, - local_B_25_ce0, - local_B_25_we0, - local_B_25_d0, - local_B_25_address1, - local_B_25_ce1, - local_B_25_we1, - local_B_25_d1, - local_B_24_address0, - local_B_24_ce0, - local_B_24_we0, - local_B_24_d0, - local_B_24_address1, - local_B_24_ce1, - local_B_24_we1, - local_B_24_d1, - local_B_23_address0, - local_B_23_ce0, - local_B_23_we0, - local_B_23_d0, - local_B_23_address1, - local_B_23_ce1, - local_B_23_we1, - local_B_23_d1, - local_B_22_address0, - local_B_22_ce0, - local_B_22_we0, - local_B_22_d0, - local_B_22_address1, - local_B_22_ce1, - local_B_22_we1, - local_B_22_d1, - local_B_21_address0, - local_B_21_ce0, - local_B_21_we0, - local_B_21_d0, - local_B_21_address1, - local_B_21_ce1, - local_B_21_we1, - local_B_21_d1, - local_B_20_address0, - local_B_20_ce0, - local_B_20_we0, - local_B_20_d0, - local_B_20_address1, - local_B_20_ce1, - local_B_20_we1, - local_B_20_d1, - local_B_19_address0, - local_B_19_ce0, - local_B_19_we0, - local_B_19_d0, - local_B_19_address1, - local_B_19_ce1, - local_B_19_we1, - local_B_19_d1, - local_B_18_address0, - local_B_18_ce0, - local_B_18_we0, - local_B_18_d0, - local_B_18_address1, - local_B_18_ce1, - local_B_18_we1, - local_B_18_d1, - local_B_17_address0, - local_B_17_ce0, - local_B_17_we0, - local_B_17_d0, - local_B_17_address1, - local_B_17_ce1, - local_B_17_we1, - local_B_17_d1, - local_B_16_address0, - local_B_16_ce0, - local_B_16_we0, - local_B_16_d0, - local_B_16_address1, - local_B_16_ce1, - local_B_16_we1, - local_B_16_d1, - local_B_15_address0, - local_B_15_ce0, - local_B_15_we0, - local_B_15_d0, - local_B_15_address1, - local_B_15_ce1, - local_B_15_we1, - local_B_15_d1, - local_B_14_address0, - local_B_14_ce0, - local_B_14_we0, - local_B_14_d0, - local_B_14_address1, - local_B_14_ce1, - local_B_14_we1, - local_B_14_d1, - local_B_13_address0, - local_B_13_ce0, - local_B_13_we0, - local_B_13_d0, - local_B_13_address1, - local_B_13_ce1, - local_B_13_we1, - local_B_13_d1, - local_B_12_address0, - local_B_12_ce0, - local_B_12_we0, - local_B_12_d0, - local_B_12_address1, - local_B_12_ce1, - local_B_12_we1, - local_B_12_d1, - local_B_11_address0, - local_B_11_ce0, - local_B_11_we0, - local_B_11_d0, - local_B_11_address1, - local_B_11_ce1, - local_B_11_we1, - local_B_11_d1, - local_B_10_address0, - local_B_10_ce0, - local_B_10_we0, - local_B_10_d0, - local_B_10_address1, - local_B_10_ce1, - local_B_10_we1, - local_B_10_d1, - local_B_9_address0, - local_B_9_ce0, - local_B_9_we0, - local_B_9_d0, - local_B_9_address1, - local_B_9_ce1, - local_B_9_we1, - local_B_9_d1, - local_B_8_address0, - local_B_8_ce0, - local_B_8_we0, - local_B_8_d0, - local_B_8_address1, - local_B_8_ce1, - local_B_8_we1, - local_B_8_d1, - local_B_7_address0, - local_B_7_ce0, - local_B_7_we0, - local_B_7_d0, - local_B_7_address1, - local_B_7_ce1, - local_B_7_we1, - local_B_7_d1, - local_B_6_address0, - local_B_6_ce0, - local_B_6_we0, - local_B_6_d0, - local_B_6_address1, - local_B_6_ce1, - local_B_6_we1, - local_B_6_d1, - local_B_5_address0, - local_B_5_ce0, - local_B_5_we0, - local_B_5_d0, - local_B_5_address1, - local_B_5_ce1, - local_B_5_we1, - local_B_5_d1, - local_B_4_address0, - local_B_4_ce0, - local_B_4_we0, - local_B_4_d0, - local_B_4_address1, - local_B_4_ce1, - local_B_4_we1, - local_B_4_d1, - local_B_3_address0, - local_B_3_ce0, - local_B_3_we0, - local_B_3_d0, - local_B_3_address1, - local_B_3_ce1, - local_B_3_we1, - local_B_3_d1, - local_B_2_address0, - local_B_2_ce0, - local_B_2_we0, - local_B_2_d0, - local_B_2_address1, - local_B_2_ce1, - local_B_2_we1, - local_B_2_d1, - local_B_1_address0, - local_B_1_ce0, - local_B_1_we0, - local_B_1_d0, - local_B_1_address1, - local_B_1_ce1, - local_B_1_we1, - local_B_1_d1, - local_B_address0, - local_B_ce0, - local_B_we0, - local_B_d0, - local_B_address1, - local_B_ce1, - local_B_we1, - local_B_d1, - sub, - fifo_B_in_0_dout, - fifo_B_in_0_empty_n, - fifo_B_in_0_read, - fifo_B_out_0_din, - fifo_B_out_0_full_n, - fifo_B_out_0_write, - fifo_B_in_1_dout, - fifo_B_in_1_empty_n, - fifo_B_in_1_read, - fifo_B_out_1_din, - fifo_B_out_1_full_n, - fifo_B_out_1_write, - fifo_B_in_2_dout, - fifo_B_in_2_empty_n, - fifo_B_in_2_read, - fifo_B_out_2_din, - fifo_B_out_2_full_n, - fifo_B_out_2_write, - fifo_B_in_3_dout, - fifo_B_in_3_empty_n, - fifo_B_in_3_read, - fifo_B_out_3_din, - fifo_B_out_3_full_n, - fifo_B_out_3_write -); - -parameter ap_ST_fsm_state1 = 1'd1; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -output [9:0] local_B_63_address0; -output local_B_63_ce0; -output local_B_63_we0; -output [31:0] local_B_63_d0; -output [9:0] local_B_63_address1; -output local_B_63_ce1; -output local_B_63_we1; -output [31:0] local_B_63_d1; -output [9:0] local_B_62_address0; -output local_B_62_ce0; -output local_B_62_we0; -output [31:0] local_B_62_d0; -output [9:0] local_B_62_address1; -output local_B_62_ce1; -output local_B_62_we1; -output [31:0] local_B_62_d1; -output [9:0] local_B_61_address0; -output local_B_61_ce0; -output local_B_61_we0; -output [31:0] local_B_61_d0; -output [9:0] local_B_61_address1; -output local_B_61_ce1; -output local_B_61_we1; -output [31:0] local_B_61_d1; -output [9:0] local_B_60_address0; -output local_B_60_ce0; -output local_B_60_we0; -output [31:0] local_B_60_d0; -output [9:0] local_B_60_address1; -output local_B_60_ce1; -output local_B_60_we1; -output [31:0] local_B_60_d1; -output [9:0] local_B_59_address0; -output local_B_59_ce0; -output local_B_59_we0; -output [31:0] local_B_59_d0; -output [9:0] local_B_59_address1; -output local_B_59_ce1; -output local_B_59_we1; -output [31:0] local_B_59_d1; -output [9:0] local_B_58_address0; -output local_B_58_ce0; -output local_B_58_we0; -output [31:0] local_B_58_d0; -output [9:0] local_B_58_address1; -output local_B_58_ce1; -output local_B_58_we1; -output [31:0] local_B_58_d1; -output [9:0] local_B_57_address0; -output local_B_57_ce0; -output local_B_57_we0; -output [31:0] local_B_57_d0; -output [9:0] local_B_57_address1; -output local_B_57_ce1; -output local_B_57_we1; -output [31:0] local_B_57_d1; -output [9:0] local_B_56_address0; -output local_B_56_ce0; -output local_B_56_we0; -output [31:0] local_B_56_d0; -output [9:0] local_B_56_address1; -output local_B_56_ce1; -output local_B_56_we1; -output [31:0] local_B_56_d1; -output [9:0] local_B_55_address0; -output local_B_55_ce0; -output local_B_55_we0; -output [31:0] local_B_55_d0; -output [9:0] local_B_55_address1; -output local_B_55_ce1; -output local_B_55_we1; -output [31:0] local_B_55_d1; -output [9:0] local_B_54_address0; -output local_B_54_ce0; -output local_B_54_we0; -output [31:0] local_B_54_d0; -output [9:0] local_B_54_address1; -output local_B_54_ce1; -output local_B_54_we1; -output [31:0] local_B_54_d1; -output [9:0] local_B_53_address0; -output local_B_53_ce0; -output local_B_53_we0; -output [31:0] local_B_53_d0; -output [9:0] local_B_53_address1; -output local_B_53_ce1; -output local_B_53_we1; -output [31:0] local_B_53_d1; -output [9:0] local_B_52_address0; -output local_B_52_ce0; -output local_B_52_we0; -output [31:0] local_B_52_d0; -output [9:0] local_B_52_address1; -output local_B_52_ce1; -output local_B_52_we1; -output [31:0] local_B_52_d1; -output [9:0] local_B_51_address0; -output local_B_51_ce0; -output local_B_51_we0; -output [31:0] local_B_51_d0; -output [9:0] local_B_51_address1; -output local_B_51_ce1; -output local_B_51_we1; -output [31:0] local_B_51_d1; -output [9:0] local_B_50_address0; -output local_B_50_ce0; -output local_B_50_we0; -output [31:0] local_B_50_d0; -output [9:0] local_B_50_address1; -output local_B_50_ce1; -output local_B_50_we1; -output [31:0] local_B_50_d1; -output [9:0] local_B_49_address0; -output local_B_49_ce0; -output local_B_49_we0; -output [31:0] local_B_49_d0; -output [9:0] local_B_49_address1; -output local_B_49_ce1; -output local_B_49_we1; -output [31:0] local_B_49_d1; -output [9:0] local_B_48_address0; -output local_B_48_ce0; -output local_B_48_we0; -output [31:0] local_B_48_d0; -output [9:0] local_B_48_address1; -output local_B_48_ce1; -output local_B_48_we1; -output [31:0] local_B_48_d1; -output [9:0] local_B_47_address0; -output local_B_47_ce0; -output local_B_47_we0; -output [31:0] local_B_47_d0; -output [9:0] local_B_47_address1; -output local_B_47_ce1; -output local_B_47_we1; -output [31:0] local_B_47_d1; -output [9:0] local_B_46_address0; -output local_B_46_ce0; -output local_B_46_we0; -output [31:0] local_B_46_d0; -output [9:0] local_B_46_address1; -output local_B_46_ce1; -output local_B_46_we1; -output [31:0] local_B_46_d1; -output [9:0] local_B_45_address0; -output local_B_45_ce0; -output local_B_45_we0; -output [31:0] local_B_45_d0; -output [9:0] local_B_45_address1; -output local_B_45_ce1; -output local_B_45_we1; -output [31:0] local_B_45_d1; -output [9:0] local_B_44_address0; -output local_B_44_ce0; -output local_B_44_we0; -output [31:0] local_B_44_d0; -output [9:0] local_B_44_address1; -output local_B_44_ce1; -output local_B_44_we1; -output [31:0] local_B_44_d1; -output [9:0] local_B_43_address0; -output local_B_43_ce0; -output local_B_43_we0; -output [31:0] local_B_43_d0; -output [9:0] local_B_43_address1; -output local_B_43_ce1; -output local_B_43_we1; -output [31:0] local_B_43_d1; -output [9:0] local_B_42_address0; -output local_B_42_ce0; -output local_B_42_we0; -output [31:0] local_B_42_d0; -output [9:0] local_B_42_address1; -output local_B_42_ce1; -output local_B_42_we1; -output [31:0] local_B_42_d1; -output [9:0] local_B_41_address0; -output local_B_41_ce0; -output local_B_41_we0; -output [31:0] local_B_41_d0; -output [9:0] local_B_41_address1; -output local_B_41_ce1; -output local_B_41_we1; -output [31:0] local_B_41_d1; -output [9:0] local_B_40_address0; -output local_B_40_ce0; -output local_B_40_we0; -output [31:0] local_B_40_d0; -output [9:0] local_B_40_address1; -output local_B_40_ce1; -output local_B_40_we1; -output [31:0] local_B_40_d1; -output [9:0] local_B_39_address0; -output local_B_39_ce0; -output local_B_39_we0; -output [31:0] local_B_39_d0; -output [9:0] local_B_39_address1; -output local_B_39_ce1; -output local_B_39_we1; -output [31:0] local_B_39_d1; -output [9:0] local_B_38_address0; -output local_B_38_ce0; -output local_B_38_we0; -output [31:0] local_B_38_d0; -output [9:0] local_B_38_address1; -output local_B_38_ce1; -output local_B_38_we1; -output [31:0] local_B_38_d1; -output [9:0] local_B_37_address0; -output local_B_37_ce0; -output local_B_37_we0; -output [31:0] local_B_37_d0; -output [9:0] local_B_37_address1; -output local_B_37_ce1; -output local_B_37_we1; -output [31:0] local_B_37_d1; -output [9:0] local_B_36_address0; -output local_B_36_ce0; -output local_B_36_we0; -output [31:0] local_B_36_d0; -output [9:0] local_B_36_address1; -output local_B_36_ce1; -output local_B_36_we1; -output [31:0] local_B_36_d1; -output [9:0] local_B_35_address0; -output local_B_35_ce0; -output local_B_35_we0; -output [31:0] local_B_35_d0; -output [9:0] local_B_35_address1; -output local_B_35_ce1; -output local_B_35_we1; -output [31:0] local_B_35_d1; -output [9:0] local_B_34_address0; -output local_B_34_ce0; -output local_B_34_we0; -output [31:0] local_B_34_d0; -output [9:0] local_B_34_address1; -output local_B_34_ce1; -output local_B_34_we1; -output [31:0] local_B_34_d1; -output [9:0] local_B_33_address0; -output local_B_33_ce0; -output local_B_33_we0; -output [31:0] local_B_33_d0; -output [9:0] local_B_33_address1; -output local_B_33_ce1; -output local_B_33_we1; -output [31:0] local_B_33_d1; -output [9:0] local_B_32_address0; -output local_B_32_ce0; -output local_B_32_we0; -output [31:0] local_B_32_d0; -output [9:0] local_B_32_address1; -output local_B_32_ce1; -output local_B_32_we1; -output [31:0] local_B_32_d1; -output [9:0] local_B_31_address0; -output local_B_31_ce0; -output local_B_31_we0; -output [31:0] local_B_31_d0; -output [9:0] local_B_31_address1; -output local_B_31_ce1; -output local_B_31_we1; -output [31:0] local_B_31_d1; -output [9:0] local_B_30_address0; -output local_B_30_ce0; -output local_B_30_we0; -output [31:0] local_B_30_d0; -output [9:0] local_B_30_address1; -output local_B_30_ce1; -output local_B_30_we1; -output [31:0] local_B_30_d1; -output [9:0] local_B_29_address0; -output local_B_29_ce0; -output local_B_29_we0; -output [31:0] local_B_29_d0; -output [9:0] local_B_29_address1; -output local_B_29_ce1; -output local_B_29_we1; -output [31:0] local_B_29_d1; -output [9:0] local_B_28_address0; -output local_B_28_ce0; -output local_B_28_we0; -output [31:0] local_B_28_d0; -output [9:0] local_B_28_address1; -output local_B_28_ce1; -output local_B_28_we1; -output [31:0] local_B_28_d1; -output [9:0] local_B_27_address0; -output local_B_27_ce0; -output local_B_27_we0; -output [31:0] local_B_27_d0; -output [9:0] local_B_27_address1; -output local_B_27_ce1; -output local_B_27_we1; -output [31:0] local_B_27_d1; -output [9:0] local_B_26_address0; -output local_B_26_ce0; -output local_B_26_we0; -output [31:0] local_B_26_d0; -output [9:0] local_B_26_address1; -output local_B_26_ce1; -output local_B_26_we1; -output [31:0] local_B_26_d1; -output [9:0] local_B_25_address0; -output local_B_25_ce0; -output local_B_25_we0; -output [31:0] local_B_25_d0; -output [9:0] local_B_25_address1; -output local_B_25_ce1; -output local_B_25_we1; -output [31:0] local_B_25_d1; -output [9:0] local_B_24_address0; -output local_B_24_ce0; -output local_B_24_we0; -output [31:0] local_B_24_d0; -output [9:0] local_B_24_address1; -output local_B_24_ce1; -output local_B_24_we1; -output [31:0] local_B_24_d1; -output [9:0] local_B_23_address0; -output local_B_23_ce0; -output local_B_23_we0; -output [31:0] local_B_23_d0; -output [9:0] local_B_23_address1; -output local_B_23_ce1; -output local_B_23_we1; -output [31:0] local_B_23_d1; -output [9:0] local_B_22_address0; -output local_B_22_ce0; -output local_B_22_we0; -output [31:0] local_B_22_d0; -output [9:0] local_B_22_address1; -output local_B_22_ce1; -output local_B_22_we1; -output [31:0] local_B_22_d1; -output [9:0] local_B_21_address0; -output local_B_21_ce0; -output local_B_21_we0; -output [31:0] local_B_21_d0; -output [9:0] local_B_21_address1; -output local_B_21_ce1; -output local_B_21_we1; -output [31:0] local_B_21_d1; -output [9:0] local_B_20_address0; -output local_B_20_ce0; -output local_B_20_we0; -output [31:0] local_B_20_d0; -output [9:0] local_B_20_address1; -output local_B_20_ce1; -output local_B_20_we1; -output [31:0] local_B_20_d1; -output [9:0] local_B_19_address0; -output local_B_19_ce0; -output local_B_19_we0; -output [31:0] local_B_19_d0; -output [9:0] local_B_19_address1; -output local_B_19_ce1; -output local_B_19_we1; -output [31:0] local_B_19_d1; -output [9:0] local_B_18_address0; -output local_B_18_ce0; -output local_B_18_we0; -output [31:0] local_B_18_d0; -output [9:0] local_B_18_address1; -output local_B_18_ce1; -output local_B_18_we1; -output [31:0] local_B_18_d1; -output [9:0] local_B_17_address0; -output local_B_17_ce0; -output local_B_17_we0; -output [31:0] local_B_17_d0; -output [9:0] local_B_17_address1; -output local_B_17_ce1; -output local_B_17_we1; -output [31:0] local_B_17_d1; -output [9:0] local_B_16_address0; -output local_B_16_ce0; -output local_B_16_we0; -output [31:0] local_B_16_d0; -output [9:0] local_B_16_address1; -output local_B_16_ce1; -output local_B_16_we1; -output [31:0] local_B_16_d1; -output [9:0] local_B_15_address0; -output local_B_15_ce0; -output local_B_15_we0; -output [31:0] local_B_15_d0; -output [9:0] local_B_15_address1; -output local_B_15_ce1; -output local_B_15_we1; -output [31:0] local_B_15_d1; -output [9:0] local_B_14_address0; -output local_B_14_ce0; -output local_B_14_we0; -output [31:0] local_B_14_d0; -output [9:0] local_B_14_address1; -output local_B_14_ce1; -output local_B_14_we1; -output [31:0] local_B_14_d1; -output [9:0] local_B_13_address0; -output local_B_13_ce0; -output local_B_13_we0; -output [31:0] local_B_13_d0; -output [9:0] local_B_13_address1; -output local_B_13_ce1; -output local_B_13_we1; -output [31:0] local_B_13_d1; -output [9:0] local_B_12_address0; -output local_B_12_ce0; -output local_B_12_we0; -output [31:0] local_B_12_d0; -output [9:0] local_B_12_address1; -output local_B_12_ce1; -output local_B_12_we1; -output [31:0] local_B_12_d1; -output [9:0] local_B_11_address0; -output local_B_11_ce0; -output local_B_11_we0; -output [31:0] local_B_11_d0; -output [9:0] local_B_11_address1; -output local_B_11_ce1; -output local_B_11_we1; -output [31:0] local_B_11_d1; -output [9:0] local_B_10_address0; -output local_B_10_ce0; -output local_B_10_we0; -output [31:0] local_B_10_d0; -output [9:0] local_B_10_address1; -output local_B_10_ce1; -output local_B_10_we1; -output [31:0] local_B_10_d1; -output [9:0] local_B_9_address0; -output local_B_9_ce0; -output local_B_9_we0; -output [31:0] local_B_9_d0; -output [9:0] local_B_9_address1; -output local_B_9_ce1; -output local_B_9_we1; -output [31:0] local_B_9_d1; -output [9:0] local_B_8_address0; -output local_B_8_ce0; -output local_B_8_we0; -output [31:0] local_B_8_d0; -output [9:0] local_B_8_address1; -output local_B_8_ce1; -output local_B_8_we1; -output [31:0] local_B_8_d1; -output [9:0] local_B_7_address0; -output local_B_7_ce0; -output local_B_7_we0; -output [31:0] local_B_7_d0; -output [9:0] local_B_7_address1; -output local_B_7_ce1; -output local_B_7_we1; -output [31:0] local_B_7_d1; -output [9:0] local_B_6_address0; -output local_B_6_ce0; -output local_B_6_we0; -output [31:0] local_B_6_d0; -output [9:0] local_B_6_address1; -output local_B_6_ce1; -output local_B_6_we1; -output [31:0] local_B_6_d1; -output [9:0] local_B_5_address0; -output local_B_5_ce0; -output local_B_5_we0; -output [31:0] local_B_5_d0; -output [9:0] local_B_5_address1; -output local_B_5_ce1; -output local_B_5_we1; -output [31:0] local_B_5_d1; -output [9:0] local_B_4_address0; -output local_B_4_ce0; -output local_B_4_we0; -output [31:0] local_B_4_d0; -output [9:0] local_B_4_address1; -output local_B_4_ce1; -output local_B_4_we1; -output [31:0] local_B_4_d1; -output [9:0] local_B_3_address0; -output local_B_3_ce0; -output local_B_3_we0; -output [31:0] local_B_3_d0; -output [9:0] local_B_3_address1; -output local_B_3_ce1; -output local_B_3_we1; -output [31:0] local_B_3_d1; -output [9:0] local_B_2_address0; -output local_B_2_ce0; -output local_B_2_we0; -output [31:0] local_B_2_d0; -output [9:0] local_B_2_address1; -output local_B_2_ce1; -output local_B_2_we1; -output [31:0] local_B_2_d1; -output [9:0] local_B_1_address0; -output local_B_1_ce0; -output local_B_1_we0; -output [31:0] local_B_1_d0; -output [9:0] local_B_1_address1; -output local_B_1_ce1; -output local_B_1_we1; -output [31:0] local_B_1_d1; -output [9:0] local_B_address0; -output local_B_ce0; -output local_B_we0; -output [31:0] local_B_d0; -output [9:0] local_B_address1; -output local_B_ce1; -output local_B_we1; -output [31:0] local_B_d1; -input [31:0] sub; -input [512:0] fifo_B_in_0_dout; -input fifo_B_in_0_empty_n; -output fifo_B_in_0_read; -output [512:0] fifo_B_out_0_din; -input fifo_B_out_0_full_n; -output fifo_B_out_0_write; -input [512:0] fifo_B_in_1_dout; -input fifo_B_in_1_empty_n; -output fifo_B_in_1_read; -output [512:0] fifo_B_out_1_din; -input fifo_B_out_1_full_n; -output fifo_B_out_1_write; -input [512:0] fifo_B_in_2_dout; -input fifo_B_in_2_empty_n; -output fifo_B_in_2_read; -output [512:0] fifo_B_out_2_din; -input fifo_B_out_2_full_n; -output fifo_B_out_2_write; -input [512:0] fifo_B_in_3_dout; -input fifo_B_in_3_empty_n; -output fifo_B_in_3_read; -output [512:0] fifo_B_out_3_din; -input fifo_B_out_3_full_n; -output fifo_B_out_3_write; - -reg ap_idle; -reg local_B_63_ce0; -reg local_B_63_we0; -reg local_B_63_ce1; -reg local_B_63_we1; -reg local_B_62_ce0; -reg local_B_62_we0; -reg local_B_62_ce1; -reg local_B_62_we1; -reg local_B_61_ce0; -reg local_B_61_we0; -reg local_B_61_ce1; -reg local_B_61_we1; -reg local_B_60_ce0; -reg local_B_60_we0; -reg local_B_60_ce1; -reg local_B_60_we1; -reg local_B_59_ce0; -reg local_B_59_we0; -reg local_B_59_ce1; -reg local_B_59_we1; -reg local_B_58_ce0; -reg local_B_58_we0; -reg local_B_58_ce1; -reg local_B_58_we1; -reg local_B_57_ce0; -reg local_B_57_we0; -reg local_B_57_ce1; -reg local_B_57_we1; -reg local_B_56_ce0; -reg local_B_56_we0; -reg local_B_56_ce1; -reg local_B_56_we1; -reg local_B_55_ce0; -reg local_B_55_we0; -reg local_B_55_ce1; -reg local_B_55_we1; -reg local_B_54_ce0; -reg local_B_54_we0; -reg local_B_54_ce1; -reg local_B_54_we1; -reg local_B_53_ce0; -reg local_B_53_we0; -reg local_B_53_ce1; -reg local_B_53_we1; -reg local_B_52_ce0; -reg local_B_52_we0; -reg local_B_52_ce1; -reg local_B_52_we1; -reg local_B_51_ce0; -reg local_B_51_we0; -reg local_B_51_ce1; -reg local_B_51_we1; -reg local_B_50_ce0; -reg local_B_50_we0; -reg local_B_50_ce1; -reg local_B_50_we1; -reg local_B_49_ce0; -reg local_B_49_we0; -reg local_B_49_ce1; -reg local_B_49_we1; -reg local_B_48_ce0; -reg local_B_48_we0; -reg local_B_48_ce1; -reg local_B_48_we1; -reg local_B_47_ce0; -reg local_B_47_we0; -reg local_B_47_ce1; -reg local_B_47_we1; -reg local_B_46_ce0; -reg local_B_46_we0; -reg local_B_46_ce1; -reg local_B_46_we1; -reg local_B_45_ce0; -reg local_B_45_we0; -reg local_B_45_ce1; -reg local_B_45_we1; -reg local_B_44_ce0; -reg local_B_44_we0; -reg local_B_44_ce1; -reg local_B_44_we1; -reg local_B_43_ce0; -reg local_B_43_we0; -reg local_B_43_ce1; -reg local_B_43_we1; -reg local_B_42_ce0; -reg local_B_42_we0; -reg local_B_42_ce1; -reg local_B_42_we1; -reg local_B_41_ce0; -reg local_B_41_we0; -reg local_B_41_ce1; -reg local_B_41_we1; -reg local_B_40_ce0; -reg local_B_40_we0; -reg local_B_40_ce1; -reg local_B_40_we1; -reg local_B_39_ce0; -reg local_B_39_we0; -reg local_B_39_ce1; -reg local_B_39_we1; -reg local_B_38_ce0; -reg local_B_38_we0; -reg local_B_38_ce1; -reg local_B_38_we1; -reg local_B_37_ce0; -reg local_B_37_we0; -reg local_B_37_ce1; -reg local_B_37_we1; -reg local_B_36_ce0; -reg local_B_36_we0; -reg local_B_36_ce1; -reg local_B_36_we1; -reg local_B_35_ce0; -reg local_B_35_we0; -reg local_B_35_ce1; -reg local_B_35_we1; -reg local_B_34_ce0; -reg local_B_34_we0; -reg local_B_34_ce1; -reg local_B_34_we1; -reg local_B_33_ce0; -reg local_B_33_we0; -reg local_B_33_ce1; -reg local_B_33_we1; -reg local_B_32_ce0; -reg local_B_32_we0; -reg local_B_32_ce1; -reg local_B_32_we1; -reg local_B_31_ce0; -reg local_B_31_we0; -reg local_B_31_ce1; -reg local_B_31_we1; -reg local_B_30_ce0; -reg local_B_30_we0; -reg local_B_30_ce1; -reg local_B_30_we1; -reg local_B_29_ce0; -reg local_B_29_we0; -reg local_B_29_ce1; -reg local_B_29_we1; -reg local_B_28_ce0; -reg local_B_28_we0; -reg local_B_28_ce1; -reg local_B_28_we1; -reg local_B_27_ce0; -reg local_B_27_we0; -reg local_B_27_ce1; -reg local_B_27_we1; -reg local_B_26_ce0; -reg local_B_26_we0; -reg local_B_26_ce1; -reg local_B_26_we1; -reg local_B_25_ce0; -reg local_B_25_we0; -reg local_B_25_ce1; -reg local_B_25_we1; -reg local_B_24_ce0; -reg local_B_24_we0; -reg local_B_24_ce1; -reg local_B_24_we1; -reg local_B_23_ce0; -reg local_B_23_we0; -reg local_B_23_ce1; -reg local_B_23_we1; -reg local_B_22_ce0; -reg local_B_22_we0; -reg local_B_22_ce1; -reg local_B_22_we1; -reg local_B_21_ce0; -reg local_B_21_we0; -reg local_B_21_ce1; -reg local_B_21_we1; -reg local_B_20_ce0; -reg local_B_20_we0; -reg local_B_20_ce1; -reg local_B_20_we1; -reg local_B_19_ce0; -reg local_B_19_we0; -reg local_B_19_ce1; -reg local_B_19_we1; -reg local_B_18_ce0; -reg local_B_18_we0; -reg local_B_18_ce1; -reg local_B_18_we1; -reg local_B_17_ce0; -reg local_B_17_we0; -reg local_B_17_ce1; -reg local_B_17_we1; -reg local_B_16_ce0; -reg local_B_16_we0; -reg local_B_16_ce1; -reg local_B_16_we1; -reg local_B_15_ce0; -reg local_B_15_we0; -reg local_B_15_ce1; -reg local_B_15_we1; -reg local_B_14_ce0; -reg local_B_14_we0; -reg local_B_14_ce1; -reg local_B_14_we1; -reg local_B_13_ce0; -reg local_B_13_we0; -reg local_B_13_ce1; -reg local_B_13_we1; -reg local_B_12_ce0; -reg local_B_12_we0; -reg local_B_12_ce1; -reg local_B_12_we1; -reg local_B_11_ce0; -reg local_B_11_we0; -reg local_B_11_ce1; -reg local_B_11_we1; -reg local_B_10_ce0; -reg local_B_10_we0; -reg local_B_10_ce1; -reg local_B_10_we1; -reg local_B_9_ce0; -reg local_B_9_we0; -reg local_B_9_ce1; -reg local_B_9_we1; -reg local_B_8_ce0; -reg local_B_8_we0; -reg local_B_8_ce1; -reg local_B_8_we1; -reg local_B_7_ce0; -reg local_B_7_we0; -reg local_B_7_ce1; -reg local_B_7_we1; -reg local_B_6_ce0; -reg local_B_6_we0; -reg local_B_6_ce1; -reg local_B_6_we1; -reg local_B_5_ce0; -reg local_B_5_we0; -reg local_B_5_ce1; -reg local_B_5_we1; -reg local_B_4_ce0; -reg local_B_4_we0; -reg local_B_4_ce1; -reg local_B_4_we1; -reg local_B_3_ce0; -reg local_B_3_we0; -reg local_B_3_ce1; -reg local_B_3_we1; -reg local_B_2_ce0; -reg local_B_2_we0; -reg local_B_2_ce1; -reg local_B_2_we1; -reg local_B_1_ce0; -reg local_B_1_we0; -reg local_B_1_ce1; -reg local_B_1_we1; -reg local_B_ce0; -reg local_B_we0; -reg local_B_ce1; -reg local_B_we1; -reg fifo_B_in_0_read; -reg fifo_B_out_0_write; -reg fifo_B_in_1_read; -reg fifo_B_out_1_write; -reg fifo_B_in_2_read; -reg fifo_B_out_2_write; -reg fifo_B_in_3_read; -reg fifo_B_out_3_write; - -(* fsm_encoding = "none" *) reg [0:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -reg ap_block_state1_pp0_stage0_iter0; -wire [0:0] and_ln280_fu_2018_p2; -reg ap_condition_exit_pp0_iter0_stage0; -wire ap_loop_exit_ready; -reg ap_ready_int; -wire [63:0] zext_ln299_fu_3146_p1; -wire [0:0] and_ln290_fu_2060_p2; -wire [63:0] zext_ln299_1_fu_3220_p1; -reg [31:0] j_fu_262; -wire [31:0] j_2_fu_3288_p2; -wire ap_loop_init; -reg [31:0] ap_sig_allocacmp_j_1; -wire [0:0] b_2048_ready_nbreadreq_fu_272_p3; -wire [0:0] tmp_s_nbreadreq_fu_288_p3; -wire [0:0] tmp_4_nbreadreq_fu_304_p3; -wire [0:0] tmp_8_nbreadreq_fu_320_p3; -wire [31:0] elem_val_M_elems_fu_2134_p1; -wire [31:0] bitcast_ln78_2_fu_2178_p1; -wire [31:0] bitcast_ln78_6_fu_2232_p1; -wire [31:0] bitcast_ln78_10_fu_2296_p1; -wire [31:0] elem_val_M_elems_2_fu_2401_p1; -wire [31:0] bitcast_ln78_18_fu_2445_p1; -wire [31:0] bitcast_ln78_22_fu_2499_p1; -wire [31:0] bitcast_ln78_26_fu_2563_p1; -wire [31:0] elem_val_M_elems_4_fu_2668_p1; -wire [31:0] bitcast_ln78_34_fu_2712_p1; -wire [31:0] bitcast_ln78_38_fu_2766_p1; -wire [31:0] bitcast_ln78_42_fu_2830_p1; -wire [31:0] elem_val_M_elems_6_fu_2935_p1; -wire [31:0] bitcast_ln78_50_fu_2979_p1; -wire [31:0] bitcast_ln78_54_fu_3033_p1; -wire [31:0] bitcast_ln78_58_fu_3097_p1; -wire [31:0] elem_val_M_elems_1_fu_2150_p1; -wire [31:0] bitcast_ln78_3_fu_2184_p1; -wire [31:0] bitcast_ln78_7_fu_2248_p1; -wire [31:0] bitcast_ln78_11_fu_2302_p1; -wire [31:0] elem_val_M_elems_3_fu_2417_p1; -wire [31:0] bitcast_ln78_19_fu_2451_p1; -wire [31:0] bitcast_ln78_23_fu_2515_p1; -wire [31:0] bitcast_ln78_27_fu_2569_p1; -wire [31:0] elem_val_M_elems_5_fu_2684_p1; -wire [31:0] bitcast_ln78_35_fu_2718_p1; -wire [31:0] bitcast_ln78_39_fu_2782_p1; -wire [31:0] bitcast_ln78_43_fu_2836_p1; -wire [31:0] elem_val_M_elems_7_fu_2951_p1; -wire [31:0] bitcast_ln78_51_fu_2985_p1; -wire [31:0] bitcast_ln78_55_fu_3049_p1; -wire [31:0] bitcast_ln78_59_fu_3103_p1; -wire [31:0] bitcast_ln78_fu_2166_p1; -wire [31:0] bitcast_ln78_4_fu_2200_p1; -wire [31:0] bitcast_ln78_8_fu_2264_p1; -wire [31:0] bitcast_ln78_12_fu_2308_p1; -wire [31:0] bitcast_ln78_16_fu_2433_p1; -wire [31:0] bitcast_ln78_20_fu_2467_p1; -wire [31:0] bitcast_ln78_24_fu_2531_p1; -wire [31:0] bitcast_ln78_28_fu_2575_p1; -wire [31:0] bitcast_ln78_32_fu_2700_p1; -wire [31:0] bitcast_ln78_36_fu_2734_p1; -wire [31:0] bitcast_ln78_40_fu_2798_p1; -wire [31:0] bitcast_ln78_44_fu_2842_p1; -wire [31:0] bitcast_ln78_48_fu_2967_p1; -wire [31:0] bitcast_ln78_52_fu_3001_p1; -wire [31:0] bitcast_ln78_56_fu_3065_p1; -wire [31:0] bitcast_ln78_60_fu_3109_p1; -wire [31:0] bitcast_ln78_1_fu_2172_p1; -wire [31:0] bitcast_ln78_5_fu_2216_p1; -wire [31:0] bitcast_ln78_9_fu_2280_p1; -wire [31:0] bitcast_ln78_13_fu_2314_p1; -wire [31:0] bitcast_ln78_17_fu_2439_p1; -wire [31:0] bitcast_ln78_21_fu_2483_p1; -wire [31:0] bitcast_ln78_25_fu_2547_p1; -wire [31:0] bitcast_ln78_29_fu_2581_p1; -wire [31:0] bitcast_ln78_33_fu_2706_p1; -wire [31:0] bitcast_ln78_37_fu_2750_p1; -wire [31:0] bitcast_ln78_41_fu_2814_p1; -wire [31:0] bitcast_ln78_45_fu_2848_p1; -wire [31:0] bitcast_ln78_49_fu_2973_p1; -wire [31:0] bitcast_ln78_53_fu_3017_p1; -wire [31:0] bitcast_ln78_57_fu_3081_p1; -wire [31:0] bitcast_ln78_61_fu_3115_p1; -wire [22:0] tmp_fu_1996_p4; -wire [0:0] icmp_ln280_fu_2006_p2; -wire [0:0] icmp_ln281_fu_2012_p2; -wire [0:0] and_ln290_4_fu_2030_p0; -wire [0:0] and_ln290_4_fu_2030_p1; -wire [0:0] and_ln290_5_fu_2036_p0; -wire [0:0] and_ln290_5_fu_2036_p1; -wire [0:0] and_ln290_5_fu_2036_p2; -wire [0:0] and_ln290_4_fu_2030_p2; -wire [0:0] and_ln290_2_fu_2024_p2; -wire [0:0] and_ln290_1_fu_2048_p2; -wire [0:0] and_ln290_3_fu_2054_p2; -wire [0:0] and_ln290_6_fu_2042_p2; -wire [31:0] trunc_ln78_fu_2070_p1; -wire [31:0] tmp_10_fu_2140_p4; -wire [31:0] tmp_11_fu_2156_p4; -wire [31:0] tmp_3_fu_2074_p4; -wire [31:0] tmp_5_fu_2084_p4; -wire [31:0] tmp_7_fu_2094_p4; -wire [31:0] tmp_12_fu_2190_p4; -wire [31:0] tmp_13_fu_2206_p4; -wire [31:0] tmp_14_fu_2222_p4; -wire [31:0] tmp_15_fu_2238_p4; -wire [31:0] tmp_16_fu_2254_p4; -wire [31:0] tmp_17_fu_2270_p4; -wire [31:0] tmp_18_fu_2286_p4; -wire [31:0] tmp_9_fu_2104_p4; -wire [31:0] trunc_ln2_fu_2114_p4; -wire [31:0] trunc_ln78_2_fu_2124_p4; -wire [511:0] trunc_ln146_fu_2320_p1; -wire [31:0] trunc_ln78_1_fu_2337_p1; -wire [31:0] tmp_23_fu_2407_p4; -wire [31:0] tmp_24_fu_2423_p4; -wire [31:0] tmp_19_fu_2341_p4; -wire [31:0] tmp_20_fu_2351_p4; -wire [31:0] tmp_21_fu_2361_p4; -wire [31:0] tmp_25_fu_2457_p4; -wire [31:0] tmp_26_fu_2473_p4; -wire [31:0] tmp_27_fu_2489_p4; -wire [31:0] tmp_28_fu_2505_p4; -wire [31:0] tmp_29_fu_2521_p4; -wire [31:0] tmp_30_fu_2537_p4; -wire [31:0] tmp_31_fu_2553_p4; -wire [31:0] tmp_22_fu_2371_p4; -wire [31:0] trunc_ln78_4_fu_2381_p4; -wire [31:0] trunc_ln78_5_fu_2391_p4; -wire [511:0] trunc_ln146_1_fu_2587_p1; -wire [31:0] trunc_ln78_3_fu_2604_p1; -wire [31:0] tmp_36_fu_2674_p4; -wire [31:0] tmp_37_fu_2690_p4; -wire [31:0] tmp_32_fu_2608_p4; -wire [31:0] tmp_33_fu_2618_p4; -wire [31:0] tmp_34_fu_2628_p4; -wire [31:0] tmp_38_fu_2724_p4; -wire [31:0] tmp_39_fu_2740_p4; -wire [31:0] tmp_40_fu_2756_p4; -wire [31:0] tmp_41_fu_2772_p4; -wire [31:0] tmp_42_fu_2788_p4; -wire [31:0] tmp_43_fu_2804_p4; -wire [31:0] tmp_44_fu_2820_p4; -wire [31:0] tmp_35_fu_2638_p4; -wire [31:0] trunc_ln78_8_fu_2648_p4; -wire [31:0] trunc_ln78_9_fu_2658_p4; -wire [511:0] trunc_ln146_2_fu_2854_p1; -wire [31:0] trunc_ln78_7_fu_2871_p1; -wire [31:0] tmp_49_fu_2941_p4; -wire [31:0] tmp_50_fu_2957_p4; -wire [31:0] tmp_45_fu_2875_p4; -wire [31:0] tmp_46_fu_2885_p4; -wire [31:0] tmp_47_fu_2895_p4; -wire [31:0] tmp_51_fu_2991_p4; -wire [31:0] tmp_52_fu_3007_p4; -wire [31:0] tmp_53_fu_3023_p4; -wire [31:0] tmp_54_fu_3039_p4; -wire [31:0] tmp_55_fu_3055_p4; -wire [31:0] tmp_56_fu_3071_p4; -wire [31:0] tmp_57_fu_3087_p4; -wire [31:0] tmp_48_fu_2905_p4; -wire [31:0] trunc_ln78_6_fu_2915_p4; -wire [31:0] trunc_ln78_s_fu_2925_p4; -wire [511:0] trunc_ln146_3_fu_3121_p1; -wire [8:0] trunc_ln299_fu_3134_p1; -wire [9:0] shl_ln_fu_3138_p3; -wire [9:0] or_ln299_fu_3214_p2; -reg ap_done_reg; -wire ap_continue_int; -reg ap_done_int; -reg [0:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -wire ap_start_int; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 1'd1; -#0 ap_done_reg = 1'b0; -end - -PEG_Bmtx_flow_control_loop_pipe_sequential_init flow_control_loop_pipe_sequential_init_U( - .ap_clk(ap_clk), - .ap_rst(ap_rst), - .ap_start(ap_start), - .ap_ready(ap_ready), - .ap_done(ap_done), - .ap_start_int(ap_start_int), - .ap_loop_init(ap_loop_init), - .ap_ready_int(ap_ready_int), - .ap_loop_exit_ready(ap_condition_exit_pp0_iter0_stage0), - .ap_loop_exit_done(ap_done_int), - .ap_continue_int(ap_continue_int), - .ap_done_int(ap_done_int) -); - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_done_reg <= 1'b0; - end else begin - if ((ap_continue_int == 1'b1)) begin - ap_done_reg <= 1'b0; - end else if (((ap_loop_exit_ready == 1'b1) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - ap_done_reg <= 1'b1; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2))) begin - j_fu_262 <= j_2_fu_3288_p2; - end else if ((ap_loop_init == 1'b1)) begin - j_fu_262 <= 32'd0; - end - end -end - -always @ (*) begin - if ((ap_start_int == 1'b0)) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -always @ (*) begin - if (((1'd0 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - ap_condition_exit_pp0_iter0_stage0 = 1'b1; - end else begin - ap_condition_exit_pp0_iter0_stage0 = 1'b0; - end -end - -always @ (*) begin - if (((ap_loop_exit_ready == 1'b1) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - ap_done_int = 1'b1; - end else begin - ap_done_int = ap_done_reg; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - ap_ready_int = 1'b1; - end else begin - ap_ready_int = 1'b0; - end -end - -always @ (*) begin - if (((ap_loop_init == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin - ap_sig_allocacmp_j_1 = 32'd0; - end else begin - ap_sig_allocacmp_j_1 = j_fu_262; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (fifo_B_in_0_empty_n == 1'b1) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - fifo_B_in_0_read = 1'b1; - end else begin - fifo_B_in_0_read = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (fifo_B_in_1_empty_n == 1'b1) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - fifo_B_in_1_read = 1'b1; - end else begin - fifo_B_in_1_read = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (fifo_B_in_2_empty_n == 1'b1) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - fifo_B_in_2_read = 1'b1; - end else begin - fifo_B_in_2_read = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (fifo_B_in_3_empty_n == 1'b1) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - fifo_B_in_3_read = 1'b1; - end else begin - fifo_B_in_3_read = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (fifo_B_out_0_full_n == 1'b1) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - fifo_B_out_0_write = 1'b1; - end else begin - fifo_B_out_0_write = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (fifo_B_out_1_full_n == 1'b1) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - fifo_B_out_1_write = 1'b1; - end else begin - fifo_B_out_1_write = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (fifo_B_out_2_full_n == 1'b1) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - fifo_B_out_2_write = 1'b1; - end else begin - fifo_B_out_2_write = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (fifo_B_out_3_full_n == 1'b1) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - fifo_B_out_3_write = 1'b1; - end else begin - fifo_B_out_3_write = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_10_ce0 = 1'b1; - end else begin - local_B_10_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_10_ce1 = 1'b1; - end else begin - local_B_10_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_10_we0 = 1'b1; - end else begin - local_B_10_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_10_we1 = 1'b1; - end else begin - local_B_10_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_11_ce0 = 1'b1; - end else begin - local_B_11_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_11_ce1 = 1'b1; - end else begin - local_B_11_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_11_we0 = 1'b1; - end else begin - local_B_11_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_11_we1 = 1'b1; - end else begin - local_B_11_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_12_ce0 = 1'b1; - end else begin - local_B_12_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_12_ce1 = 1'b1; - end else begin - local_B_12_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_12_we0 = 1'b1; - end else begin - local_B_12_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_12_we1 = 1'b1; - end else begin - local_B_12_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_13_ce0 = 1'b1; - end else begin - local_B_13_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_13_ce1 = 1'b1; - end else begin - local_B_13_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_13_we0 = 1'b1; - end else begin - local_B_13_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_13_we1 = 1'b1; - end else begin - local_B_13_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_14_ce0 = 1'b1; - end else begin - local_B_14_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_14_ce1 = 1'b1; - end else begin - local_B_14_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_14_we0 = 1'b1; - end else begin - local_B_14_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_14_we1 = 1'b1; - end else begin - local_B_14_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_15_ce0 = 1'b1; - end else begin - local_B_15_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_15_ce1 = 1'b1; - end else begin - local_B_15_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_15_we0 = 1'b1; - end else begin - local_B_15_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_15_we1 = 1'b1; - end else begin - local_B_15_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_16_ce0 = 1'b1; - end else begin - local_B_16_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_16_ce1 = 1'b1; - end else begin - local_B_16_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_16_we0 = 1'b1; - end else begin - local_B_16_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_16_we1 = 1'b1; - end else begin - local_B_16_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_17_ce0 = 1'b1; - end else begin - local_B_17_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_17_ce1 = 1'b1; - end else begin - local_B_17_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_17_we0 = 1'b1; - end else begin - local_B_17_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_17_we1 = 1'b1; - end else begin - local_B_17_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_18_ce0 = 1'b1; - end else begin - local_B_18_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_18_ce1 = 1'b1; - end else begin - local_B_18_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_18_we0 = 1'b1; - end else begin - local_B_18_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_18_we1 = 1'b1; - end else begin - local_B_18_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_19_ce0 = 1'b1; - end else begin - local_B_19_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_19_ce1 = 1'b1; - end else begin - local_B_19_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_19_we0 = 1'b1; - end else begin - local_B_19_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_19_we1 = 1'b1; - end else begin - local_B_19_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_1_ce0 = 1'b1; - end else begin - local_B_1_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_1_ce1 = 1'b1; - end else begin - local_B_1_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_1_we0 = 1'b1; - end else begin - local_B_1_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_1_we1 = 1'b1; - end else begin - local_B_1_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_20_ce0 = 1'b1; - end else begin - local_B_20_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_20_ce1 = 1'b1; - end else begin - local_B_20_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_20_we0 = 1'b1; - end else begin - local_B_20_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_20_we1 = 1'b1; - end else begin - local_B_20_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_21_ce0 = 1'b1; - end else begin - local_B_21_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_21_ce1 = 1'b1; - end else begin - local_B_21_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_21_we0 = 1'b1; - end else begin - local_B_21_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_21_we1 = 1'b1; - end else begin - local_B_21_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_22_ce0 = 1'b1; - end else begin - local_B_22_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_22_ce1 = 1'b1; - end else begin - local_B_22_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_22_we0 = 1'b1; - end else begin - local_B_22_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_22_we1 = 1'b1; - end else begin - local_B_22_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_23_ce0 = 1'b1; - end else begin - local_B_23_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_23_ce1 = 1'b1; - end else begin - local_B_23_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_23_we0 = 1'b1; - end else begin - local_B_23_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_23_we1 = 1'b1; - end else begin - local_B_23_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_24_ce0 = 1'b1; - end else begin - local_B_24_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_24_ce1 = 1'b1; - end else begin - local_B_24_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_24_we0 = 1'b1; - end else begin - local_B_24_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_24_we1 = 1'b1; - end else begin - local_B_24_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_25_ce0 = 1'b1; - end else begin - local_B_25_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_25_ce1 = 1'b1; - end else begin - local_B_25_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_25_we0 = 1'b1; - end else begin - local_B_25_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_25_we1 = 1'b1; - end else begin - local_B_25_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_26_ce0 = 1'b1; - end else begin - local_B_26_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_26_ce1 = 1'b1; - end else begin - local_B_26_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_26_we0 = 1'b1; - end else begin - local_B_26_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_26_we1 = 1'b1; - end else begin - local_B_26_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_27_ce0 = 1'b1; - end else begin - local_B_27_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_27_ce1 = 1'b1; - end else begin - local_B_27_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_27_we0 = 1'b1; - end else begin - local_B_27_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_27_we1 = 1'b1; - end else begin - local_B_27_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_28_ce0 = 1'b1; - end else begin - local_B_28_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_28_ce1 = 1'b1; - end else begin - local_B_28_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_28_we0 = 1'b1; - end else begin - local_B_28_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_28_we1 = 1'b1; - end else begin - local_B_28_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_29_ce0 = 1'b1; - end else begin - local_B_29_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_29_ce1 = 1'b1; - end else begin - local_B_29_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_29_we0 = 1'b1; - end else begin - local_B_29_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_29_we1 = 1'b1; - end else begin - local_B_29_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_2_ce0 = 1'b1; - end else begin - local_B_2_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_2_ce1 = 1'b1; - end else begin - local_B_2_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_2_we0 = 1'b1; - end else begin - local_B_2_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_2_we1 = 1'b1; - end else begin - local_B_2_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_30_ce0 = 1'b1; - end else begin - local_B_30_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_30_ce1 = 1'b1; - end else begin - local_B_30_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_30_we0 = 1'b1; - end else begin - local_B_30_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_30_we1 = 1'b1; - end else begin - local_B_30_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_31_ce0 = 1'b1; - end else begin - local_B_31_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_31_ce1 = 1'b1; - end else begin - local_B_31_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_31_we0 = 1'b1; - end else begin - local_B_31_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_31_we1 = 1'b1; - end else begin - local_B_31_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_32_ce0 = 1'b1; - end else begin - local_B_32_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_32_ce1 = 1'b1; - end else begin - local_B_32_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_32_we0 = 1'b1; - end else begin - local_B_32_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_32_we1 = 1'b1; - end else begin - local_B_32_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_33_ce0 = 1'b1; - end else begin - local_B_33_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_33_ce1 = 1'b1; - end else begin - local_B_33_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_33_we0 = 1'b1; - end else begin - local_B_33_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_33_we1 = 1'b1; - end else begin - local_B_33_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_34_ce0 = 1'b1; - end else begin - local_B_34_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_34_ce1 = 1'b1; - end else begin - local_B_34_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_34_we0 = 1'b1; - end else begin - local_B_34_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_34_we1 = 1'b1; - end else begin - local_B_34_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_35_ce0 = 1'b1; - end else begin - local_B_35_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_35_ce1 = 1'b1; - end else begin - local_B_35_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_35_we0 = 1'b1; - end else begin - local_B_35_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_35_we1 = 1'b1; - end else begin - local_B_35_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_36_ce0 = 1'b1; - end else begin - local_B_36_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_36_ce1 = 1'b1; - end else begin - local_B_36_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_36_we0 = 1'b1; - end else begin - local_B_36_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_36_we1 = 1'b1; - end else begin - local_B_36_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_37_ce0 = 1'b1; - end else begin - local_B_37_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_37_ce1 = 1'b1; - end else begin - local_B_37_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_37_we0 = 1'b1; - end else begin - local_B_37_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_37_we1 = 1'b1; - end else begin - local_B_37_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_38_ce0 = 1'b1; - end else begin - local_B_38_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_38_ce1 = 1'b1; - end else begin - local_B_38_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_38_we0 = 1'b1; - end else begin - local_B_38_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_38_we1 = 1'b1; - end else begin - local_B_38_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_39_ce0 = 1'b1; - end else begin - local_B_39_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_39_ce1 = 1'b1; - end else begin - local_B_39_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_39_we0 = 1'b1; - end else begin - local_B_39_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_39_we1 = 1'b1; - end else begin - local_B_39_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_3_ce0 = 1'b1; - end else begin - local_B_3_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_3_ce1 = 1'b1; - end else begin - local_B_3_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_3_we0 = 1'b1; - end else begin - local_B_3_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_3_we1 = 1'b1; - end else begin - local_B_3_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_40_ce0 = 1'b1; - end else begin - local_B_40_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_40_ce1 = 1'b1; - end else begin - local_B_40_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_40_we0 = 1'b1; - end else begin - local_B_40_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_40_we1 = 1'b1; - end else begin - local_B_40_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_41_ce0 = 1'b1; - end else begin - local_B_41_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_41_ce1 = 1'b1; - end else begin - local_B_41_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_41_we0 = 1'b1; - end else begin - local_B_41_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_41_we1 = 1'b1; - end else begin - local_B_41_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_42_ce0 = 1'b1; - end else begin - local_B_42_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_42_ce1 = 1'b1; - end else begin - local_B_42_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_42_we0 = 1'b1; - end else begin - local_B_42_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_42_we1 = 1'b1; - end else begin - local_B_42_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_43_ce0 = 1'b1; - end else begin - local_B_43_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_43_ce1 = 1'b1; - end else begin - local_B_43_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_43_we0 = 1'b1; - end else begin - local_B_43_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_43_we1 = 1'b1; - end else begin - local_B_43_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_44_ce0 = 1'b1; - end else begin - local_B_44_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_44_ce1 = 1'b1; - end else begin - local_B_44_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_44_we0 = 1'b1; - end else begin - local_B_44_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_44_we1 = 1'b1; - end else begin - local_B_44_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_45_ce0 = 1'b1; - end else begin - local_B_45_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_45_ce1 = 1'b1; - end else begin - local_B_45_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_45_we0 = 1'b1; - end else begin - local_B_45_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_45_we1 = 1'b1; - end else begin - local_B_45_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_46_ce0 = 1'b1; - end else begin - local_B_46_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_46_ce1 = 1'b1; - end else begin - local_B_46_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_46_we0 = 1'b1; - end else begin - local_B_46_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_46_we1 = 1'b1; - end else begin - local_B_46_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_47_ce0 = 1'b1; - end else begin - local_B_47_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_47_ce1 = 1'b1; - end else begin - local_B_47_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_47_we0 = 1'b1; - end else begin - local_B_47_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_47_we1 = 1'b1; - end else begin - local_B_47_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_48_ce0 = 1'b1; - end else begin - local_B_48_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_48_ce1 = 1'b1; - end else begin - local_B_48_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_48_we0 = 1'b1; - end else begin - local_B_48_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_48_we1 = 1'b1; - end else begin - local_B_48_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_49_ce0 = 1'b1; - end else begin - local_B_49_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_49_ce1 = 1'b1; - end else begin - local_B_49_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_49_we0 = 1'b1; - end else begin - local_B_49_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_49_we1 = 1'b1; - end else begin - local_B_49_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_4_ce0 = 1'b1; - end else begin - local_B_4_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_4_ce1 = 1'b1; - end else begin - local_B_4_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_4_we0 = 1'b1; - end else begin - local_B_4_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_4_we1 = 1'b1; - end else begin - local_B_4_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_50_ce0 = 1'b1; - end else begin - local_B_50_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_50_ce1 = 1'b1; - end else begin - local_B_50_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_50_we0 = 1'b1; - end else begin - local_B_50_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_50_we1 = 1'b1; - end else begin - local_B_50_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_51_ce0 = 1'b1; - end else begin - local_B_51_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_51_ce1 = 1'b1; - end else begin - local_B_51_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_51_we0 = 1'b1; - end else begin - local_B_51_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_51_we1 = 1'b1; - end else begin - local_B_51_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_52_ce0 = 1'b1; - end else begin - local_B_52_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_52_ce1 = 1'b1; - end else begin - local_B_52_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_52_we0 = 1'b1; - end else begin - local_B_52_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_52_we1 = 1'b1; - end else begin - local_B_52_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_53_ce0 = 1'b1; - end else begin - local_B_53_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_53_ce1 = 1'b1; - end else begin - local_B_53_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_53_we0 = 1'b1; - end else begin - local_B_53_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_53_we1 = 1'b1; - end else begin - local_B_53_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_54_ce0 = 1'b1; - end else begin - local_B_54_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_54_ce1 = 1'b1; - end else begin - local_B_54_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_54_we0 = 1'b1; - end else begin - local_B_54_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_54_we1 = 1'b1; - end else begin - local_B_54_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_55_ce0 = 1'b1; - end else begin - local_B_55_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_55_ce1 = 1'b1; - end else begin - local_B_55_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_55_we0 = 1'b1; - end else begin - local_B_55_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_55_we1 = 1'b1; - end else begin - local_B_55_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_56_ce0 = 1'b1; - end else begin - local_B_56_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_56_ce1 = 1'b1; - end else begin - local_B_56_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_56_we0 = 1'b1; - end else begin - local_B_56_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_56_we1 = 1'b1; - end else begin - local_B_56_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_57_ce0 = 1'b1; - end else begin - local_B_57_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_57_ce1 = 1'b1; - end else begin - local_B_57_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_57_we0 = 1'b1; - end else begin - local_B_57_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_57_we1 = 1'b1; - end else begin - local_B_57_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_58_ce0 = 1'b1; - end else begin - local_B_58_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_58_ce1 = 1'b1; - end else begin - local_B_58_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_58_we0 = 1'b1; - end else begin - local_B_58_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_58_we1 = 1'b1; - end else begin - local_B_58_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_59_ce0 = 1'b1; - end else begin - local_B_59_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_59_ce1 = 1'b1; - end else begin - local_B_59_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_59_we0 = 1'b1; - end else begin - local_B_59_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_59_we1 = 1'b1; - end else begin - local_B_59_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_5_ce0 = 1'b1; - end else begin - local_B_5_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_5_ce1 = 1'b1; - end else begin - local_B_5_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_5_we0 = 1'b1; - end else begin - local_B_5_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_5_we1 = 1'b1; - end else begin - local_B_5_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_60_ce0 = 1'b1; - end else begin - local_B_60_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_60_ce1 = 1'b1; - end else begin - local_B_60_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_60_we0 = 1'b1; - end else begin - local_B_60_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_60_we1 = 1'b1; - end else begin - local_B_60_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_61_ce0 = 1'b1; - end else begin - local_B_61_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_61_ce1 = 1'b1; - end else begin - local_B_61_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_61_we0 = 1'b1; - end else begin - local_B_61_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_61_we1 = 1'b1; - end else begin - local_B_61_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_62_ce0 = 1'b1; - end else begin - local_B_62_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_62_ce1 = 1'b1; - end else begin - local_B_62_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_62_we0 = 1'b1; - end else begin - local_B_62_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_62_we1 = 1'b1; - end else begin - local_B_62_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_63_ce0 = 1'b1; - end else begin - local_B_63_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_63_ce1 = 1'b1; - end else begin - local_B_63_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_63_we0 = 1'b1; - end else begin - local_B_63_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_63_we1 = 1'b1; - end else begin - local_B_63_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_6_ce0 = 1'b1; - end else begin - local_B_6_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_6_ce1 = 1'b1; - end else begin - local_B_6_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_6_we0 = 1'b1; - end else begin - local_B_6_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_6_we1 = 1'b1; - end else begin - local_B_6_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_7_ce0 = 1'b1; - end else begin - local_B_7_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_7_ce1 = 1'b1; - end else begin - local_B_7_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_7_we0 = 1'b1; - end else begin - local_B_7_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_7_we1 = 1'b1; - end else begin - local_B_7_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_8_ce0 = 1'b1; - end else begin - local_B_8_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_8_ce1 = 1'b1; - end else begin - local_B_8_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_8_we0 = 1'b1; - end else begin - local_B_8_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_8_we1 = 1'b1; - end else begin - local_B_8_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_9_ce0 = 1'b1; - end else begin - local_B_9_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_9_ce1 = 1'b1; - end else begin - local_B_9_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_9_we0 = 1'b1; - end else begin - local_B_9_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_9_we1 = 1'b1; - end else begin - local_B_9_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_ce0 = 1'b1; - end else begin - local_B_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_ce1 = 1'b1; - end else begin - local_B_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_we0 = 1'b1; - end else begin - local_B_we0 = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln290_fu_2060_p2) & (1'd1 == and_ln280_fu_2018_p2) & (1'b1 == ap_CS_fsm_state1) & (ap_start_int == 1'b1))) begin - local_B_we1 = 1'b1; - end else begin - local_B_we1 = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - ap_NS_fsm = ap_ST_fsm_state1; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign and_ln280_fu_2018_p2 = (icmp_ln281_fu_2012_p2 & icmp_ln280_fu_2006_p2); - -assign and_ln290_1_fu_2048_p2 = (tmp_4_nbreadreq_fu_304_p3 & and_ln290_2_fu_2024_p2); - -assign and_ln290_2_fu_2024_p2 = (tmp_s_nbreadreq_fu_288_p3 & tmp_8_nbreadreq_fu_320_p3); - -assign and_ln290_3_fu_2054_p2 = (b_2048_ready_nbreadreq_fu_272_p3 & and_ln290_1_fu_2048_p2); - -assign and_ln290_4_fu_2030_p0 = fifo_B_out_3_full_n; - -assign and_ln290_4_fu_2030_p1 = fifo_B_out_2_full_n; - -assign and_ln290_4_fu_2030_p2 = (and_ln290_4_fu_2030_p1 & and_ln290_4_fu_2030_p0); - -assign and_ln290_5_fu_2036_p0 = fifo_B_out_1_full_n; - -assign and_ln290_5_fu_2036_p1 = fifo_B_out_0_full_n; - -assign and_ln290_5_fu_2036_p2 = (and_ln290_5_fu_2036_p1 & and_ln290_5_fu_2036_p0); - -assign and_ln290_6_fu_2042_p2 = (and_ln290_5_fu_2036_p2 & and_ln290_4_fu_2030_p2); - -assign and_ln290_fu_2060_p2 = (and_ln290_6_fu_2042_p2 & and_ln290_3_fu_2054_p2); - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -always @ (*) begin - ap_block_state1_pp0_stage0_iter0 = (ap_start_int == 1'b0); -end - -assign ap_loop_exit_ready = ap_condition_exit_pp0_iter0_stage0; - -assign b_2048_ready_nbreadreq_fu_272_p3 = fifo_B_in_0_empty_n; - -assign bitcast_ln78_10_fu_2296_p1 = tmp_18_fu_2286_p4; - -assign bitcast_ln78_11_fu_2302_p1 = tmp_9_fu_2104_p4; - -assign bitcast_ln78_12_fu_2308_p1 = trunc_ln2_fu_2114_p4; - -assign bitcast_ln78_13_fu_2314_p1 = trunc_ln78_2_fu_2124_p4; - -assign bitcast_ln78_16_fu_2433_p1 = tmp_24_fu_2423_p4; - -assign bitcast_ln78_17_fu_2439_p1 = tmp_19_fu_2341_p4; - -assign bitcast_ln78_18_fu_2445_p1 = tmp_20_fu_2351_p4; - -assign bitcast_ln78_19_fu_2451_p1 = tmp_21_fu_2361_p4; - -assign bitcast_ln78_1_fu_2172_p1 = tmp_3_fu_2074_p4; - -assign bitcast_ln78_20_fu_2467_p1 = tmp_25_fu_2457_p4; - -assign bitcast_ln78_21_fu_2483_p1 = tmp_26_fu_2473_p4; - -assign bitcast_ln78_22_fu_2499_p1 = tmp_27_fu_2489_p4; - -assign bitcast_ln78_23_fu_2515_p1 = tmp_28_fu_2505_p4; - -assign bitcast_ln78_24_fu_2531_p1 = tmp_29_fu_2521_p4; - -assign bitcast_ln78_25_fu_2547_p1 = tmp_30_fu_2537_p4; - -assign bitcast_ln78_26_fu_2563_p1 = tmp_31_fu_2553_p4; - -assign bitcast_ln78_27_fu_2569_p1 = tmp_22_fu_2371_p4; - -assign bitcast_ln78_28_fu_2575_p1 = trunc_ln78_4_fu_2381_p4; - -assign bitcast_ln78_29_fu_2581_p1 = trunc_ln78_5_fu_2391_p4; - -assign bitcast_ln78_2_fu_2178_p1 = tmp_5_fu_2084_p4; - -assign bitcast_ln78_32_fu_2700_p1 = tmp_37_fu_2690_p4; - -assign bitcast_ln78_33_fu_2706_p1 = tmp_32_fu_2608_p4; - -assign bitcast_ln78_34_fu_2712_p1 = tmp_33_fu_2618_p4; - -assign bitcast_ln78_35_fu_2718_p1 = tmp_34_fu_2628_p4; - -assign bitcast_ln78_36_fu_2734_p1 = tmp_38_fu_2724_p4; - -assign bitcast_ln78_37_fu_2750_p1 = tmp_39_fu_2740_p4; - -assign bitcast_ln78_38_fu_2766_p1 = tmp_40_fu_2756_p4; - -assign bitcast_ln78_39_fu_2782_p1 = tmp_41_fu_2772_p4; - -assign bitcast_ln78_3_fu_2184_p1 = tmp_7_fu_2094_p4; - -assign bitcast_ln78_40_fu_2798_p1 = tmp_42_fu_2788_p4; - -assign bitcast_ln78_41_fu_2814_p1 = tmp_43_fu_2804_p4; - -assign bitcast_ln78_42_fu_2830_p1 = tmp_44_fu_2820_p4; - -assign bitcast_ln78_43_fu_2836_p1 = tmp_35_fu_2638_p4; - -assign bitcast_ln78_44_fu_2842_p1 = trunc_ln78_8_fu_2648_p4; - -assign bitcast_ln78_45_fu_2848_p1 = trunc_ln78_9_fu_2658_p4; - -assign bitcast_ln78_48_fu_2967_p1 = tmp_50_fu_2957_p4; - -assign bitcast_ln78_49_fu_2973_p1 = tmp_45_fu_2875_p4; - -assign bitcast_ln78_4_fu_2200_p1 = tmp_12_fu_2190_p4; - -assign bitcast_ln78_50_fu_2979_p1 = tmp_46_fu_2885_p4; - -assign bitcast_ln78_51_fu_2985_p1 = tmp_47_fu_2895_p4; - -assign bitcast_ln78_52_fu_3001_p1 = tmp_51_fu_2991_p4; - -assign bitcast_ln78_53_fu_3017_p1 = tmp_52_fu_3007_p4; - -assign bitcast_ln78_54_fu_3033_p1 = tmp_53_fu_3023_p4; - -assign bitcast_ln78_55_fu_3049_p1 = tmp_54_fu_3039_p4; - -assign bitcast_ln78_56_fu_3065_p1 = tmp_55_fu_3055_p4; - -assign bitcast_ln78_57_fu_3081_p1 = tmp_56_fu_3071_p4; - -assign bitcast_ln78_58_fu_3097_p1 = tmp_57_fu_3087_p4; - -assign bitcast_ln78_59_fu_3103_p1 = tmp_48_fu_2905_p4; - -assign bitcast_ln78_5_fu_2216_p1 = tmp_13_fu_2206_p4; - -assign bitcast_ln78_60_fu_3109_p1 = trunc_ln78_6_fu_2915_p4; - -assign bitcast_ln78_61_fu_3115_p1 = trunc_ln78_s_fu_2925_p4; - -assign bitcast_ln78_6_fu_2232_p1 = tmp_14_fu_2222_p4; - -assign bitcast_ln78_7_fu_2248_p1 = tmp_15_fu_2238_p4; - -assign bitcast_ln78_8_fu_2264_p1 = tmp_16_fu_2254_p4; - -assign bitcast_ln78_9_fu_2280_p1 = tmp_17_fu_2270_p4; - -assign bitcast_ln78_fu_2166_p1 = tmp_11_fu_2156_p4; - -assign elem_val_M_elems_1_fu_2150_p1 = tmp_10_fu_2140_p4; - -assign elem_val_M_elems_2_fu_2401_p1 = trunc_ln78_1_fu_2337_p1; - -assign elem_val_M_elems_3_fu_2417_p1 = tmp_23_fu_2407_p4; - -assign elem_val_M_elems_4_fu_2668_p1 = trunc_ln78_3_fu_2604_p1; - -assign elem_val_M_elems_5_fu_2684_p1 = tmp_36_fu_2674_p4; - -assign elem_val_M_elems_6_fu_2935_p1 = trunc_ln78_7_fu_2871_p1; - -assign elem_val_M_elems_7_fu_2951_p1 = tmp_49_fu_2941_p4; - -assign elem_val_M_elems_fu_2134_p1 = trunc_ln78_fu_2070_p1; - -assign fifo_B_out_0_din = {{1'd0}, {trunc_ln146_fu_2320_p1}}; - -assign fifo_B_out_1_din = {{1'd0}, {trunc_ln146_1_fu_2587_p1}}; - -assign fifo_B_out_2_din = {{1'd0}, {trunc_ln146_2_fu_2854_p1}}; - -assign fifo_B_out_3_din = {{1'd0}, {trunc_ln146_3_fu_3121_p1}}; - -assign icmp_ln280_fu_2006_p2 = (($signed(tmp_fu_1996_p4) < $signed(23'd1)) ? 1'b1 : 1'b0); - -assign icmp_ln281_fu_2012_p2 = (($signed(ap_sig_allocacmp_j_1) < $signed(sub)) ? 1'b1 : 1'b0); - -assign j_2_fu_3288_p2 = (ap_sig_allocacmp_j_1 + 32'd1); - -assign local_B_10_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_10_address1 = zext_ln299_fu_3146_p1; - -assign local_B_10_d0 = bitcast_ln78_20_fu_2467_p1; - -assign local_B_10_d1 = bitcast_ln78_16_fu_2433_p1; - -assign local_B_11_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_11_address1 = zext_ln299_fu_3146_p1; - -assign local_B_11_d0 = bitcast_ln78_21_fu_2483_p1; - -assign local_B_11_d1 = bitcast_ln78_17_fu_2439_p1; - -assign local_B_12_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_12_address1 = zext_ln299_fu_3146_p1; - -assign local_B_12_d0 = bitcast_ln78_26_fu_2563_p1; - -assign local_B_12_d1 = bitcast_ln78_22_fu_2499_p1; - -assign local_B_13_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_13_address1 = zext_ln299_fu_3146_p1; - -assign local_B_13_d0 = bitcast_ln78_27_fu_2569_p1; - -assign local_B_13_d1 = bitcast_ln78_23_fu_2515_p1; - -assign local_B_14_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_14_address1 = zext_ln299_fu_3146_p1; - -assign local_B_14_d0 = bitcast_ln78_28_fu_2575_p1; - -assign local_B_14_d1 = bitcast_ln78_24_fu_2531_p1; - -assign local_B_15_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_15_address1 = zext_ln299_fu_3146_p1; - -assign local_B_15_d0 = bitcast_ln78_29_fu_2581_p1; - -assign local_B_15_d1 = bitcast_ln78_25_fu_2547_p1; - -assign local_B_16_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_16_address1 = zext_ln299_fu_3146_p1; - -assign local_B_16_d0 = bitcast_ln78_34_fu_2712_p1; - -assign local_B_16_d1 = elem_val_M_elems_4_fu_2668_p1; - -assign local_B_17_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_17_address1 = zext_ln299_fu_3146_p1; - -assign local_B_17_d0 = bitcast_ln78_35_fu_2718_p1; - -assign local_B_17_d1 = elem_val_M_elems_5_fu_2684_p1; - -assign local_B_18_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_18_address1 = zext_ln299_fu_3146_p1; - -assign local_B_18_d0 = bitcast_ln78_36_fu_2734_p1; - -assign local_B_18_d1 = bitcast_ln78_32_fu_2700_p1; - -assign local_B_19_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_19_address1 = zext_ln299_fu_3146_p1; - -assign local_B_19_d0 = bitcast_ln78_37_fu_2750_p1; - -assign local_B_19_d1 = bitcast_ln78_33_fu_2706_p1; - -assign local_B_1_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_1_address1 = zext_ln299_fu_3146_p1; - -assign local_B_1_d0 = bitcast_ln78_3_fu_2184_p1; - -assign local_B_1_d1 = elem_val_M_elems_1_fu_2150_p1; - -assign local_B_20_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_20_address1 = zext_ln299_fu_3146_p1; - -assign local_B_20_d0 = bitcast_ln78_42_fu_2830_p1; - -assign local_B_20_d1 = bitcast_ln78_38_fu_2766_p1; - -assign local_B_21_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_21_address1 = zext_ln299_fu_3146_p1; - -assign local_B_21_d0 = bitcast_ln78_43_fu_2836_p1; - -assign local_B_21_d1 = bitcast_ln78_39_fu_2782_p1; - -assign local_B_22_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_22_address1 = zext_ln299_fu_3146_p1; - -assign local_B_22_d0 = bitcast_ln78_44_fu_2842_p1; - -assign local_B_22_d1 = bitcast_ln78_40_fu_2798_p1; - -assign local_B_23_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_23_address1 = zext_ln299_fu_3146_p1; - -assign local_B_23_d0 = bitcast_ln78_45_fu_2848_p1; - -assign local_B_23_d1 = bitcast_ln78_41_fu_2814_p1; - -assign local_B_24_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_24_address1 = zext_ln299_fu_3146_p1; - -assign local_B_24_d0 = bitcast_ln78_50_fu_2979_p1; - -assign local_B_24_d1 = elem_val_M_elems_6_fu_2935_p1; - -assign local_B_25_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_25_address1 = zext_ln299_fu_3146_p1; - -assign local_B_25_d0 = bitcast_ln78_51_fu_2985_p1; - -assign local_B_25_d1 = elem_val_M_elems_7_fu_2951_p1; - -assign local_B_26_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_26_address1 = zext_ln299_fu_3146_p1; - -assign local_B_26_d0 = bitcast_ln78_52_fu_3001_p1; - -assign local_B_26_d1 = bitcast_ln78_48_fu_2967_p1; - -assign local_B_27_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_27_address1 = zext_ln299_fu_3146_p1; - -assign local_B_27_d0 = bitcast_ln78_53_fu_3017_p1; - -assign local_B_27_d1 = bitcast_ln78_49_fu_2973_p1; - -assign local_B_28_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_28_address1 = zext_ln299_fu_3146_p1; - -assign local_B_28_d0 = bitcast_ln78_58_fu_3097_p1; - -assign local_B_28_d1 = bitcast_ln78_54_fu_3033_p1; - -assign local_B_29_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_29_address1 = zext_ln299_fu_3146_p1; - -assign local_B_29_d0 = bitcast_ln78_59_fu_3103_p1; - -assign local_B_29_d1 = bitcast_ln78_55_fu_3049_p1; - -assign local_B_2_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_2_address1 = zext_ln299_fu_3146_p1; - -assign local_B_2_d0 = bitcast_ln78_4_fu_2200_p1; - -assign local_B_2_d1 = bitcast_ln78_fu_2166_p1; - -assign local_B_30_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_30_address1 = zext_ln299_fu_3146_p1; - -assign local_B_30_d0 = bitcast_ln78_60_fu_3109_p1; - -assign local_B_30_d1 = bitcast_ln78_56_fu_3065_p1; - -assign local_B_31_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_31_address1 = zext_ln299_fu_3146_p1; - -assign local_B_31_d0 = bitcast_ln78_61_fu_3115_p1; - -assign local_B_31_d1 = bitcast_ln78_57_fu_3081_p1; - -assign local_B_32_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_32_address1 = zext_ln299_fu_3146_p1; - -assign local_B_32_d0 = bitcast_ln78_2_fu_2178_p1; - -assign local_B_32_d1 = elem_val_M_elems_fu_2134_p1; - -assign local_B_33_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_33_address1 = zext_ln299_fu_3146_p1; - -assign local_B_33_d0 = bitcast_ln78_3_fu_2184_p1; - -assign local_B_33_d1 = elem_val_M_elems_1_fu_2150_p1; - -assign local_B_34_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_34_address1 = zext_ln299_fu_3146_p1; - -assign local_B_34_d0 = bitcast_ln78_4_fu_2200_p1; - -assign local_B_34_d1 = bitcast_ln78_fu_2166_p1; - -assign local_B_35_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_35_address1 = zext_ln299_fu_3146_p1; - -assign local_B_35_d0 = bitcast_ln78_5_fu_2216_p1; - -assign local_B_35_d1 = bitcast_ln78_1_fu_2172_p1; - -assign local_B_36_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_36_address1 = zext_ln299_fu_3146_p1; - -assign local_B_36_d0 = bitcast_ln78_10_fu_2296_p1; - -assign local_B_36_d1 = bitcast_ln78_6_fu_2232_p1; - -assign local_B_37_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_37_address1 = zext_ln299_fu_3146_p1; - -assign local_B_37_d0 = bitcast_ln78_11_fu_2302_p1; - -assign local_B_37_d1 = bitcast_ln78_7_fu_2248_p1; - -assign local_B_38_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_38_address1 = zext_ln299_fu_3146_p1; - -assign local_B_38_d0 = bitcast_ln78_12_fu_2308_p1; - -assign local_B_38_d1 = bitcast_ln78_8_fu_2264_p1; - -assign local_B_39_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_39_address1 = zext_ln299_fu_3146_p1; - -assign local_B_39_d0 = bitcast_ln78_13_fu_2314_p1; - -assign local_B_39_d1 = bitcast_ln78_9_fu_2280_p1; - -assign local_B_3_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_3_address1 = zext_ln299_fu_3146_p1; - -assign local_B_3_d0 = bitcast_ln78_5_fu_2216_p1; - -assign local_B_3_d1 = bitcast_ln78_1_fu_2172_p1; - -assign local_B_40_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_40_address1 = zext_ln299_fu_3146_p1; - -assign local_B_40_d0 = bitcast_ln78_18_fu_2445_p1; - -assign local_B_40_d1 = elem_val_M_elems_2_fu_2401_p1; - -assign local_B_41_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_41_address1 = zext_ln299_fu_3146_p1; - -assign local_B_41_d0 = bitcast_ln78_19_fu_2451_p1; - -assign local_B_41_d1 = elem_val_M_elems_3_fu_2417_p1; - -assign local_B_42_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_42_address1 = zext_ln299_fu_3146_p1; - -assign local_B_42_d0 = bitcast_ln78_20_fu_2467_p1; - -assign local_B_42_d1 = bitcast_ln78_16_fu_2433_p1; - -assign local_B_43_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_43_address1 = zext_ln299_fu_3146_p1; - -assign local_B_43_d0 = bitcast_ln78_21_fu_2483_p1; - -assign local_B_43_d1 = bitcast_ln78_17_fu_2439_p1; - -assign local_B_44_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_44_address1 = zext_ln299_fu_3146_p1; - -assign local_B_44_d0 = bitcast_ln78_26_fu_2563_p1; - -assign local_B_44_d1 = bitcast_ln78_22_fu_2499_p1; - -assign local_B_45_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_45_address1 = zext_ln299_fu_3146_p1; - -assign local_B_45_d0 = bitcast_ln78_27_fu_2569_p1; - -assign local_B_45_d1 = bitcast_ln78_23_fu_2515_p1; - -assign local_B_46_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_46_address1 = zext_ln299_fu_3146_p1; - -assign local_B_46_d0 = bitcast_ln78_28_fu_2575_p1; - -assign local_B_46_d1 = bitcast_ln78_24_fu_2531_p1; - -assign local_B_47_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_47_address1 = zext_ln299_fu_3146_p1; - -assign local_B_47_d0 = bitcast_ln78_29_fu_2581_p1; - -assign local_B_47_d1 = bitcast_ln78_25_fu_2547_p1; - -assign local_B_48_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_48_address1 = zext_ln299_fu_3146_p1; - -assign local_B_48_d0 = bitcast_ln78_34_fu_2712_p1; - -assign local_B_48_d1 = elem_val_M_elems_4_fu_2668_p1; - -assign local_B_49_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_49_address1 = zext_ln299_fu_3146_p1; - -assign local_B_49_d0 = bitcast_ln78_35_fu_2718_p1; - -assign local_B_49_d1 = elem_val_M_elems_5_fu_2684_p1; - -assign local_B_4_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_4_address1 = zext_ln299_fu_3146_p1; - -assign local_B_4_d0 = bitcast_ln78_10_fu_2296_p1; - -assign local_B_4_d1 = bitcast_ln78_6_fu_2232_p1; - -assign local_B_50_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_50_address1 = zext_ln299_fu_3146_p1; - -assign local_B_50_d0 = bitcast_ln78_36_fu_2734_p1; - -assign local_B_50_d1 = bitcast_ln78_32_fu_2700_p1; - -assign local_B_51_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_51_address1 = zext_ln299_fu_3146_p1; - -assign local_B_51_d0 = bitcast_ln78_37_fu_2750_p1; - -assign local_B_51_d1 = bitcast_ln78_33_fu_2706_p1; - -assign local_B_52_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_52_address1 = zext_ln299_fu_3146_p1; - -assign local_B_52_d0 = bitcast_ln78_42_fu_2830_p1; - -assign local_B_52_d1 = bitcast_ln78_38_fu_2766_p1; - -assign local_B_53_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_53_address1 = zext_ln299_fu_3146_p1; - -assign local_B_53_d0 = bitcast_ln78_43_fu_2836_p1; - -assign local_B_53_d1 = bitcast_ln78_39_fu_2782_p1; - -assign local_B_54_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_54_address1 = zext_ln299_fu_3146_p1; - -assign local_B_54_d0 = bitcast_ln78_44_fu_2842_p1; - -assign local_B_54_d1 = bitcast_ln78_40_fu_2798_p1; - -assign local_B_55_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_55_address1 = zext_ln299_fu_3146_p1; - -assign local_B_55_d0 = bitcast_ln78_45_fu_2848_p1; - -assign local_B_55_d1 = bitcast_ln78_41_fu_2814_p1; - -assign local_B_56_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_56_address1 = zext_ln299_fu_3146_p1; - -assign local_B_56_d0 = bitcast_ln78_50_fu_2979_p1; - -assign local_B_56_d1 = elem_val_M_elems_6_fu_2935_p1; - -assign local_B_57_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_57_address1 = zext_ln299_fu_3146_p1; - -assign local_B_57_d0 = bitcast_ln78_51_fu_2985_p1; - -assign local_B_57_d1 = elem_val_M_elems_7_fu_2951_p1; - -assign local_B_58_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_58_address1 = zext_ln299_fu_3146_p1; - -assign local_B_58_d0 = bitcast_ln78_52_fu_3001_p1; - -assign local_B_58_d1 = bitcast_ln78_48_fu_2967_p1; - -assign local_B_59_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_59_address1 = zext_ln299_fu_3146_p1; - -assign local_B_59_d0 = bitcast_ln78_53_fu_3017_p1; - -assign local_B_59_d1 = bitcast_ln78_49_fu_2973_p1; - -assign local_B_5_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_5_address1 = zext_ln299_fu_3146_p1; - -assign local_B_5_d0 = bitcast_ln78_11_fu_2302_p1; - -assign local_B_5_d1 = bitcast_ln78_7_fu_2248_p1; - -assign local_B_60_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_60_address1 = zext_ln299_fu_3146_p1; - -assign local_B_60_d0 = bitcast_ln78_58_fu_3097_p1; - -assign local_B_60_d1 = bitcast_ln78_54_fu_3033_p1; - -assign local_B_61_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_61_address1 = zext_ln299_fu_3146_p1; - -assign local_B_61_d0 = bitcast_ln78_59_fu_3103_p1; - -assign local_B_61_d1 = bitcast_ln78_55_fu_3049_p1; - -assign local_B_62_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_62_address1 = zext_ln299_fu_3146_p1; - -assign local_B_62_d0 = bitcast_ln78_60_fu_3109_p1; - -assign local_B_62_d1 = bitcast_ln78_56_fu_3065_p1; - -assign local_B_63_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_63_address1 = zext_ln299_fu_3146_p1; - -assign local_B_63_d0 = bitcast_ln78_61_fu_3115_p1; - -assign local_B_63_d1 = bitcast_ln78_57_fu_3081_p1; - -assign local_B_6_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_6_address1 = zext_ln299_fu_3146_p1; - -assign local_B_6_d0 = bitcast_ln78_12_fu_2308_p1; - -assign local_B_6_d1 = bitcast_ln78_8_fu_2264_p1; - -assign local_B_7_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_7_address1 = zext_ln299_fu_3146_p1; - -assign local_B_7_d0 = bitcast_ln78_13_fu_2314_p1; - -assign local_B_7_d1 = bitcast_ln78_9_fu_2280_p1; - -assign local_B_8_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_8_address1 = zext_ln299_fu_3146_p1; - -assign local_B_8_d0 = bitcast_ln78_18_fu_2445_p1; - -assign local_B_8_d1 = elem_val_M_elems_2_fu_2401_p1; - -assign local_B_9_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_9_address1 = zext_ln299_fu_3146_p1; - -assign local_B_9_d0 = bitcast_ln78_19_fu_2451_p1; - -assign local_B_9_d1 = elem_val_M_elems_3_fu_2417_p1; - -assign local_B_address0 = zext_ln299_1_fu_3220_p1; - -assign local_B_address1 = zext_ln299_fu_3146_p1; - -assign local_B_d0 = bitcast_ln78_2_fu_2178_p1; - -assign local_B_d1 = elem_val_M_elems_fu_2134_p1; - -assign or_ln299_fu_3214_p2 = (shl_ln_fu_3138_p3 | 10'd1); - -assign shl_ln_fu_3138_p3 = {{trunc_ln299_fu_3134_p1}, {1'd0}}; - -assign tmp_10_fu_2140_p4 = {{fifo_B_in_0_dout[63:32]}}; - -assign tmp_11_fu_2156_p4 = {{fifo_B_in_0_dout[95:64]}}; - -assign tmp_12_fu_2190_p4 = {{fifo_B_in_0_dout[223:192]}}; - -assign tmp_13_fu_2206_p4 = {{fifo_B_in_0_dout[255:224]}}; - -assign tmp_14_fu_2222_p4 = {{fifo_B_in_0_dout[287:256]}}; - -assign tmp_15_fu_2238_p4 = {{fifo_B_in_0_dout[319:288]}}; - -assign tmp_16_fu_2254_p4 = {{fifo_B_in_0_dout[351:320]}}; - -assign tmp_17_fu_2270_p4 = {{fifo_B_in_0_dout[383:352]}}; - -assign tmp_18_fu_2286_p4 = {{fifo_B_in_0_dout[415:384]}}; - -assign tmp_19_fu_2341_p4 = {{fifo_B_in_1_dout[127:96]}}; - -assign tmp_20_fu_2351_p4 = {{fifo_B_in_1_dout[159:128]}}; - -assign tmp_21_fu_2361_p4 = {{fifo_B_in_1_dout[191:160]}}; - -assign tmp_22_fu_2371_p4 = {{fifo_B_in_1_dout[447:416]}}; - -assign tmp_23_fu_2407_p4 = {{fifo_B_in_1_dout[63:32]}}; - -assign tmp_24_fu_2423_p4 = {{fifo_B_in_1_dout[95:64]}}; - -assign tmp_25_fu_2457_p4 = {{fifo_B_in_1_dout[223:192]}}; - -assign tmp_26_fu_2473_p4 = {{fifo_B_in_1_dout[255:224]}}; - -assign tmp_27_fu_2489_p4 = {{fifo_B_in_1_dout[287:256]}}; - -assign tmp_28_fu_2505_p4 = {{fifo_B_in_1_dout[319:288]}}; - -assign tmp_29_fu_2521_p4 = {{fifo_B_in_1_dout[351:320]}}; - -assign tmp_30_fu_2537_p4 = {{fifo_B_in_1_dout[383:352]}}; - -assign tmp_31_fu_2553_p4 = {{fifo_B_in_1_dout[415:384]}}; - -assign tmp_32_fu_2608_p4 = {{fifo_B_in_2_dout[127:96]}}; - -assign tmp_33_fu_2618_p4 = {{fifo_B_in_2_dout[159:128]}}; - -assign tmp_34_fu_2628_p4 = {{fifo_B_in_2_dout[191:160]}}; - -assign tmp_35_fu_2638_p4 = {{fifo_B_in_2_dout[447:416]}}; - -assign tmp_36_fu_2674_p4 = {{fifo_B_in_2_dout[63:32]}}; - -assign tmp_37_fu_2690_p4 = {{fifo_B_in_2_dout[95:64]}}; - -assign tmp_38_fu_2724_p4 = {{fifo_B_in_2_dout[223:192]}}; - -assign tmp_39_fu_2740_p4 = {{fifo_B_in_2_dout[255:224]}}; - -assign tmp_3_fu_2074_p4 = {{fifo_B_in_0_dout[127:96]}}; - -assign tmp_40_fu_2756_p4 = {{fifo_B_in_2_dout[287:256]}}; - -assign tmp_41_fu_2772_p4 = {{fifo_B_in_2_dout[319:288]}}; - -assign tmp_42_fu_2788_p4 = {{fifo_B_in_2_dout[351:320]}}; - -assign tmp_43_fu_2804_p4 = {{fifo_B_in_2_dout[383:352]}}; - -assign tmp_44_fu_2820_p4 = {{fifo_B_in_2_dout[415:384]}}; - -assign tmp_45_fu_2875_p4 = {{fifo_B_in_3_dout[127:96]}}; - -assign tmp_46_fu_2885_p4 = {{fifo_B_in_3_dout[159:128]}}; - -assign tmp_47_fu_2895_p4 = {{fifo_B_in_3_dout[191:160]}}; - -assign tmp_48_fu_2905_p4 = {{fifo_B_in_3_dout[447:416]}}; - -assign tmp_49_fu_2941_p4 = {{fifo_B_in_3_dout[63:32]}}; - -assign tmp_4_nbreadreq_fu_304_p3 = fifo_B_in_2_empty_n; - -assign tmp_50_fu_2957_p4 = {{fifo_B_in_3_dout[95:64]}}; - -assign tmp_51_fu_2991_p4 = {{fifo_B_in_3_dout[223:192]}}; - -assign tmp_52_fu_3007_p4 = {{fifo_B_in_3_dout[255:224]}}; - -assign tmp_53_fu_3023_p4 = {{fifo_B_in_3_dout[287:256]}}; - -assign tmp_54_fu_3039_p4 = {{fifo_B_in_3_dout[319:288]}}; - -assign tmp_55_fu_3055_p4 = {{fifo_B_in_3_dout[351:320]}}; - -assign tmp_56_fu_3071_p4 = {{fifo_B_in_3_dout[383:352]}}; - -assign tmp_57_fu_3087_p4 = {{fifo_B_in_3_dout[415:384]}}; - -assign tmp_5_fu_2084_p4 = {{fifo_B_in_0_dout[159:128]}}; - -assign tmp_7_fu_2094_p4 = {{fifo_B_in_0_dout[191:160]}}; - -assign tmp_8_nbreadreq_fu_320_p3 = fifo_B_in_3_empty_n; - -assign tmp_9_fu_2104_p4 = {{fifo_B_in_0_dout[447:416]}}; - -assign tmp_fu_1996_p4 = {{ap_sig_allocacmp_j_1[31:9]}}; - -assign tmp_s_nbreadreq_fu_288_p3 = fifo_B_in_1_empty_n; - -assign trunc_ln146_1_fu_2587_p1 = fifo_B_in_1_dout[511:0]; - -assign trunc_ln146_2_fu_2854_p1 = fifo_B_in_2_dout[511:0]; - -assign trunc_ln146_3_fu_3121_p1 = fifo_B_in_3_dout[511:0]; - -assign trunc_ln146_fu_2320_p1 = fifo_B_in_0_dout[511:0]; - -assign trunc_ln299_fu_3134_p1 = ap_sig_allocacmp_j_1[8:0]; - -assign trunc_ln2_fu_2114_p4 = {{fifo_B_in_0_dout[479:448]}}; - -assign trunc_ln78_1_fu_2337_p1 = fifo_B_in_1_dout[31:0]; - -assign trunc_ln78_2_fu_2124_p4 = {{fifo_B_in_0_dout[511:480]}}; - -assign trunc_ln78_3_fu_2604_p1 = fifo_B_in_2_dout[31:0]; - -assign trunc_ln78_4_fu_2381_p4 = {{fifo_B_in_1_dout[479:448]}}; - -assign trunc_ln78_5_fu_2391_p4 = {{fifo_B_in_1_dout[511:480]}}; - -assign trunc_ln78_6_fu_2915_p4 = {{fifo_B_in_3_dout[479:448]}}; - -assign trunc_ln78_7_fu_2871_p1 = fifo_B_in_3_dout[31:0]; - -assign trunc_ln78_8_fu_2648_p4 = {{fifo_B_in_2_dout[479:448]}}; - -assign trunc_ln78_9_fu_2658_p4 = {{fifo_B_in_2_dout[511:480]}}; - -assign trunc_ln78_fu_2070_p1 = fifo_B_in_0_dout[31:0]; - -assign trunc_ln78_s_fu_2925_p4 = {{fifo_B_in_3_dout[511:480]}}; - -assign zext_ln299_1_fu_3220_p1 = or_ln299_fu_3214_p2; - -assign zext_ln299_fu_3146_p1 = shl_ln_fu_3138_p3; - -endmodule //PEG_Bmtx_PEG_Bmtx_Pipeline_read_B diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_flow_control_loop_pipe_sequential_init.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_flow_control_loop_pipe_sequential_init.v deleted file mode 100644 index ae17c999..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_flow_control_loop_pipe_sequential_init.v +++ /dev/null @@ -1,104 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Tool Version Limit: 2019.12 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1 ns / 1 ps - -module PEG_Bmtx_flow_control_loop_pipe_sequential_init( - ap_clk, - ap_rst, - ap_start, - ap_ready, - ap_done, - ap_start_int, - ap_ready_int, - ap_done_int, - ap_continue_int, - ap_loop_init, - ap_loop_exit_ready, - ap_loop_exit_done -); - -input ap_clk; -input ap_rst; - -//Block level handshake with outside loop -input ap_start; -output ap_ready; -output ap_done; - -//Block level handshake with loop body -output ap_start_int; -input ap_ready_int; -input ap_done_int; -output ap_continue_int; - -//Init live in variables -output ap_loop_init; -wire ap_loop_init; -reg ap_loop_init_int; -reg ap_done; -reg ap_done_cache; - -//Exit signal from loop body -input ap_loop_exit_ready; -input ap_loop_exit_done; - -// power-on initialization -initial begin -#0 ap_loop_init_int = 1'b1; -#0 ap_done_cache = 1'b0; -end - -assign ap_start_int = ap_start; - -assign ap_continue_int = 1'b1; - -assign ap_ready = ap_loop_exit_ready; - -//ap_loop_init is valid for the first II -//of the first loop run so as to enable -//the init block ops which are pushed into -//the first state of the pipeline region -always @ (posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_loop_exit_done == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_ready_int == 1'b1) begin - ap_loop_init_int <= 1'b0; - end -end - -assign ap_loop_init = ap_loop_init_int & ap_start; - -// if no ap_continue port and current module is not top module, -// ap_done handshakes with ap_start. Internally, flow control sends out -// ap_conintue_int = 1'b1 so the ap_done_int is asserted high for 1 clock cycle. -// ap_done_cache is used to record ap_done_int, and de-assert if ap_start_int -// is asserted, so DUT can start the next run -always @(posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_done_cache <= 1'b0; - end else if (ap_done_int == 1'b1) begin - ap_done_cache <= 1'b1; - end else if (ap_start_int == 1'b1) begin - ap_done_cache <= 1'b0; - end -end - -// if no ap_continue port and current module is not top module, ap_done handshakes with ap_start -always @(*) -begin - if ((ap_done_int == 1'b1) || ((ap_done_cache == 1'b1) && (ap_start_int == 1'b0))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1.v deleted file mode 100644 index 130001ef..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1.v +++ /dev/null @@ -1,76 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1ns/1ps - -module PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1 -#(parameter - ID = 1, - NUM_STAGE = 3, - din0_WIDTH = 32, - din1_WIDTH = 32, - dout_WIDTH = 32 -)( - input wire clk, - input wire reset, - input wire ce, - input wire [din0_WIDTH-1:0] din0, - input wire [din1_WIDTH-1:0] din1, - output wire [dout_WIDTH-1:0] dout -); -//------------------------Local signal------------------- -wire aclk; -wire aclken; -wire a_tvalid; -wire [31:0] a_tdata; -wire b_tvalid; -wire [31:0] b_tdata; -wire r_tvalid; -wire [31:0] r_tdata; -reg [din0_WIDTH-1:0] din0_buf1; -reg [din1_WIDTH-1:0] din1_buf1; -reg ce_r; -wire [dout_WIDTH-1:0] dout_i; -reg [dout_WIDTH-1:0] dout_r; -//------------------------Instantiation------------------ -PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1_ip PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1_ip_u ( - .aclk ( aclk ), - .aclken ( aclken ), - .s_axis_a_tvalid ( a_tvalid ), - .s_axis_a_tdata ( a_tdata ), - .s_axis_b_tvalid ( b_tvalid ), - .s_axis_b_tdata ( b_tdata ), - .m_axis_result_tvalid ( r_tvalid ), - .m_axis_result_tdata ( r_tdata ) -); -//------------------------Body--------------------------- -assign aclk = clk; -assign aclken = ce_r; -assign a_tvalid = 1'b1; -assign a_tdata = din0_buf1; -assign b_tvalid = 1'b1; -assign b_tdata = din1_buf1; -assign dout_i = r_tdata; - -always @(posedge clk) begin - if (ce) begin - din0_buf1 <= din0; - din1_buf1 <= din1; - end -end - -always @ (posedge clk) begin - ce_r <= ce; -end - -always @ (posedge clk) begin - if (ce_r) begin - dout_r <= dout_i; - end -end - -assign dout = ce_r?dout_i:dout_r; -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1_ip.tcl b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1_ip.tcl deleted file mode 100644 index e3567bba..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1_ip.tcl +++ /dev/null @@ -1,45 +0,0 @@ -# BEGIN Vivado Commands -set vivado_ver [version -short] -set fpo_ver 7.1 -if {[regexp -nocase {2015\.1.*} $vivado_ver match]} { - set fpo_ver 7.0 -} -create_ip -name floating_point -version $fpo_ver -vendor xilinx.com -library ip -module_name PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1_ip -# BEGIN Vivado Commands -# BEGIN Vivado Parameters -set_property -dict [list CONFIG.a_precision_type Single \ - CONFIG.a_tuser_width 1 \ - CONFIG.add_sub_value Both \ - CONFIG.b_tuser_width 1 \ - CONFIG.c_a_exponent_width 8 \ - CONFIG.c_a_fraction_width 24 \ - CONFIG.c_compare_operation Programmable \ - CONFIG.c_has_divide_by_zero false \ - CONFIG.c_has_invalid_op false \ - CONFIG.c_has_overflow false \ - CONFIG.c_has_underflow false \ - CONFIG.c_latency 2 \ - CONFIG.c_mult_usage Max_Usage \ - CONFIG.c_optimization Speed_Optimized \ - CONFIG.c_rate 1 \ - CONFIG.c_result_exponent_width 8 \ - CONFIG.c_result_fraction_width 24 \ - CONFIG.component_name PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1_ip \ - CONFIG.flow_control NonBlocking \ - CONFIG.has_a_tlast false \ - CONFIG.has_a_tuser false \ - CONFIG.has_aclken true \ - CONFIG.has_aresetn false \ - CONFIG.has_b_tlast false \ - CONFIG.has_b_tuser false \ - CONFIG.has_operation_tlast false \ - CONFIG.has_operation_tuser false \ - CONFIG.has_result_tready false \ - CONFIG.maximum_latency false \ - CONFIG.operation_tuser_width 1 \ - CONFIG.operation_type Multiply \ - CONFIG.result_precision_type Single \ - CONFIG.result_tlast_behv Null] -objects [get_ips PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1_ip] -quiet -# END Vivado Parameters -set_property generate_synth_checkpoint false [get_files PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1_ip.xci] -generate_target {synthesis simulation} [get_files PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1_ip.xci] diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_local_B_RAM_AUTO_1R1W.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_local_B_RAM_AUTO_1R1W.v deleted file mode 100644 index a8f4f09c..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_local_B_RAM_AUTO_1R1W.v +++ /dev/null @@ -1,77 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== -`timescale 1 ns / 1 ps -module PEG_Bmtx_local_B_RAM_AUTO_1R1W ( - - address0, ce0, - d0, we0, - q0, - - address1, ce1, - d1, we1, - q1, - - reset, clk); - -parameter DataWidth = 32; -parameter AddressWidth = 10; -parameter AddressRange = 1024; - -input[AddressWidth-1:0] address0; -input ce0; -input[DataWidth-1:0] d0; -input we0; -output reg[DataWidth-1:0] q0; - -input[AddressWidth-1:0] address1; -input ce1; -input[DataWidth-1:0] d1; -input we1; -output reg[DataWidth-1:0] q1; - -input reset; -input clk; - -(* ram_style = "auto" *)reg [DataWidth-1:0] ram[0:AddressRange-1]; - - - - - - - - -//read first -always @(posedge clk) -begin - if (ce0) begin - if (we0) - ram[address0] <= d0; - q0 <= ram[address0]; - - end -end - - - - - - - -//read first -always @(posedge clk) -begin - if (ce1) begin - if (we1) - ram[address1] <= d1; - q1 <= ram[address1]; - - end -end - - - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_mul_mul_16s_14ns_30_4_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_mul_mul_16s_14ns_30_4_1.v deleted file mode 100644 index 28f5282f..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_mul_mul_16s_14ns_30_4_1.v +++ /dev/null @@ -1,62 +0,0 @@ - -`timescale 1 ns / 1 ps - - module PEG_Bmtx_mul_mul_16s_14ns_30_4_1_DSP48_0(clk, rst, ce, a, b, p); -input clk; -input rst; -input ce; -input signed [16 - 1 : 0] a; -input [14 - 1 : 0] b; -output signed [30 - 1 : 0] p; - -reg signed [30 - 1 : 0] p_reg; - -reg signed [16 - 1 : 0] a_reg; -reg [14 - 1 : 0] b_reg; - -reg signed [30 - 1 : 0] p_reg_tmp; - -always @ (posedge clk) begin - if (ce) begin - a_reg <= a; - b_reg <= b; - p_reg_tmp <= a_reg * $signed({1'b0, b_reg}); - p_reg <= p_reg_tmp; - end -end - -assign p = p_reg; - -endmodule -`timescale 1 ns / 1 ps -module PEG_Bmtx_mul_mul_16s_14ns_30_4_1( - clk, - reset, - ce, - din0, - din1, - dout); - -parameter ID = 32'd1; -parameter NUM_STAGE = 32'd1; -parameter din0_WIDTH = 32'd1; -parameter din1_WIDTH = 32'd1; -parameter dout_WIDTH = 32'd1; -input clk; -input reset; -input ce; -input[din0_WIDTH - 1:0] din0; -input[din1_WIDTH - 1:0] din1; -output[dout_WIDTH - 1:0] dout; - - - -PEG_Bmtx_mul_mul_16s_14ns_30_4_1_DSP48_0 PEG_Bmtx_mul_mul_16s_14ns_30_4_1_DSP48_0_U( - .clk( clk ), - .rst( reset ), - .ce( ce ), - .a( din0 ), - .b( din1 ), - .p( dout )); - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_mux_42_32_1_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_mux_42_32_1_1.v deleted file mode 100644 index a69b5d70..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Bmtx_mux_42_32_1_1.v +++ /dev/null @@ -1,47 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Tool Version Limit: 2019.12 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1ns/1ps - -module PEG_Bmtx_mux_42_32_1_1 #( -parameter - ID = 0, - NUM_STAGE = 1, - din0_WIDTH = 32, - din1_WIDTH = 32, - din2_WIDTH = 32, - din3_WIDTH = 32, - din4_WIDTH = 32, - dout_WIDTH = 32 -)( - input [31 : 0] din0, - input [31 : 0] din1, - input [31 : 0] din2, - input [31 : 0] din3, - input [1 : 0] din4, - output [31 : 0] dout); - -// puts internal signals -wire [1 : 0] sel; -// level 1 signals -wire [31 : 0] mux_1_0; -wire [31 : 0] mux_1_1; -// level 2 signals -wire [31 : 0] mux_2_0; - -assign sel = din4; - -// Generate level 1 logic -assign mux_1_0 = (sel[0] == 0)? din0 : din1; -assign mux_1_1 = (sel[0] == 0)? din2 : din3; - -// Generate level 2 logic -assign mux_2_0 = (sel[1] == 0)? mux_1_0 : mux_1_1; - -// output logic -assign dout = mux_2_0; - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx.v deleted file mode 100644 index 21deaa48..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx.v +++ /dev/null @@ -1,2486 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -(* CORE_GENERATION_INFO="PEG_Cmtx_PEG_Cmtx,hls_ip_2022_2,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xcu280-fsvh2892-2L-e,HLS_INPUT_CLOCK=3.330000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=2.583450,HLS_SYN_LAT=33279,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=17721,HLS_SYN_LUT=11573,HLS_VERSION=2022_2}" *) - -module PEG_Cmtx ( - ap_clk, - ap_rst_n, - ap_start, - ap_done, - ap_idle, - ap_ready, - PE_inst_in_s_dout, - PE_inst_in_s_empty_n, - PE_inst_in_s_read, - PE_inst_in_peek_dout, - PE_inst_in_peek_empty_n, - PE_inst_in_peek_read, - fifo_inst_in_s_dout, - fifo_inst_in_s_empty_n, - fifo_inst_in_s_read, - fifo_inst_in_peek_dout, - fifo_inst_in_peek_empty_n, - fifo_inst_in_peek_read, - fifo_aBvec_0_dout, - fifo_aBvec_0_empty_n, - fifo_aBvec_0_read, - fifo_aBvec_1_dout, - fifo_aBvec_1_empty_n, - fifo_aBvec_1_read, - fifo_aBvec_2_dout, - fifo_aBvec_2_empty_n, - fifo_aBvec_2_read, - fifo_aBvec_3_dout, - fifo_aBvec_3_empty_n, - fifo_aBvec_3_read, - fifo_aBvec_peek_0_dout, - fifo_aBvec_peek_0_empty_n, - fifo_aBvec_peek_0_read, - fifo_aBvec_peek_1_dout, - fifo_aBvec_peek_1_empty_n, - fifo_aBvec_peek_1_read, - fifo_aBvec_peek_2_dout, - fifo_aBvec_peek_2_empty_n, - fifo_aBvec_peek_2_read, - fifo_aBvec_peek_3_dout, - fifo_aBvec_peek_3_empty_n, - fifo_aBvec_peek_3_read, - fifo_C_out_din, - fifo_C_out_full_n, - fifo_C_out_write -); - -parameter ap_ST_fsm_state1 = 13'd1; -parameter ap_ST_fsm_state2 = 13'd2; -parameter ap_ST_fsm_state3 = 13'd4; -parameter ap_ST_fsm_state4 = 13'd8; -parameter ap_ST_fsm_state5 = 13'd16; -parameter ap_ST_fsm_state6 = 13'd32; -parameter ap_ST_fsm_state7 = 13'd64; -parameter ap_ST_fsm_state8 = 13'd128; -parameter ap_ST_fsm_state9 = 13'd256; -parameter ap_ST_fsm_state10 = 13'd512; -parameter ap_ST_fsm_state11 = 13'd1024; -parameter ap_ST_fsm_state12 = 13'd2048; -parameter ap_ST_fsm_state13 = 13'd4096; - -input ap_clk; -input ap_rst_n; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [32:0] PE_inst_in_s_dout; -input PE_inst_in_s_empty_n; -output PE_inst_in_s_read; -input [32:0] PE_inst_in_peek_dout; -input PE_inst_in_peek_empty_n; -output PE_inst_in_peek_read; -input [32:0] fifo_inst_in_s_dout; -input fifo_inst_in_s_empty_n; -output fifo_inst_in_s_read; -input [32:0] fifo_inst_in_peek_dout; -input fifo_inst_in_peek_empty_n; -output fifo_inst_in_peek_read; -input [274:0] fifo_aBvec_0_dout; -input fifo_aBvec_0_empty_n; -output fifo_aBvec_0_read; -input [274:0] fifo_aBvec_1_dout; -input fifo_aBvec_1_empty_n; -output fifo_aBvec_1_read; -input [274:0] fifo_aBvec_2_dout; -input fifo_aBvec_2_empty_n; -output fifo_aBvec_2_read; -input [274:0] fifo_aBvec_3_dout; -input fifo_aBvec_3_empty_n; -output fifo_aBvec_3_read; -input [274:0] fifo_aBvec_peek_0_dout; -input fifo_aBvec_peek_0_empty_n; -output fifo_aBvec_peek_0_read; -input [274:0] fifo_aBvec_peek_1_dout; -input fifo_aBvec_peek_1_empty_n; -output fifo_aBvec_peek_1_read; -input [274:0] fifo_aBvec_peek_2_dout; -input fifo_aBvec_peek_2_empty_n; -output fifo_aBvec_peek_2_read; -input [274:0] fifo_aBvec_peek_3_dout; -input fifo_aBvec_peek_3_empty_n; -output fifo_aBvec_peek_3_read; -output [256:0] fifo_C_out_din; -input fifo_C_out_full_n; -output fifo_C_out_write; - -reg ap_done; -reg ap_idle; -reg ap_ready; -reg PE_inst_in_s_read; -reg fifo_inst_in_s_read; -reg fifo_aBvec_0_read; -reg fifo_aBvec_1_read; -reg fifo_aBvec_2_read; -reg fifo_aBvec_3_read; -reg fifo_C_out_write; - - reg ap_rst_n_inv; -(* fsm_encoding = "none" *) reg [12:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -reg PE_inst_in_s_blk_n; -wire ap_CS_fsm_state2; -wire ap_CS_fsm_state3; -reg fifo_inst_in_s_blk_n; -wire ap_CS_fsm_state9; -wire ap_CS_fsm_state10; -wire [0:0] icmp_ln249_fu_522_p2; -wire [31:0] NUM_ITE_fu_400_p1; -reg [31:0] NUM_ITE_reg_554; -wire [31:0] M_fu_409_p1; -reg [31:0] M_reg_559; -reg [15:0] N16_reg_565; -reg [13:0] lshr_ln_reg_571; -wire ap_CS_fsm_state4; -wire signed [29:0] grp_fu_541_p2; -reg signed [29:0] rp_time_N_reg_586; -wire ap_CS_fsm_state7; -reg [25:0] trunc_ln_reg_591; -reg [27:0] num_v_out_reg_596; -wire [27:0] rp_2_fu_508_p2; -reg [27:0] rp_2_reg_604; -wire ap_CS_fsm_state8; -wire [31:0] start_32_fu_514_p1; -wire [30:0] add_ln249_fu_527_p2; -reg [30:0] add_ln249_reg_617; -reg ap_block_state10; -wire [31:0] end_32_fu_533_p1; -reg [31:0] end_32_reg_622; -reg [12:0] local_C_V_address0; -reg local_C_V_ce0; -wire [63:0] local_C_V_q0; -reg [12:0] local_C_V_address1; -reg local_C_V_ce1; -reg local_C_V_we1; -reg [63:0] local_C_V_d1; -reg [12:0] local_C_V_1_address0; -reg local_C_V_1_ce0; -wire [63:0] local_C_V_1_q0; -reg [12:0] local_C_V_1_address1; -reg local_C_V_1_ce1; -reg local_C_V_1_we1; -reg [63:0] local_C_V_1_d1; -reg [12:0] local_C_V_2_address0; -reg local_C_V_2_ce0; -wire [63:0] local_C_V_2_q0; -reg [12:0] local_C_V_2_address1; -reg local_C_V_2_ce1; -reg local_C_V_2_we1; -reg [63:0] local_C_V_2_d1; -reg [12:0] local_C_V_3_address0; -reg local_C_V_3_ce0; -wire [63:0] local_C_V_3_q0; -reg [12:0] local_C_V_3_address1; -reg local_C_V_3_ce1; -reg local_C_V_3_we1; -reg [63:0] local_C_V_3_d1; -reg [12:0] local_C_V_4_address0; -reg local_C_V_4_ce0; -wire [63:0] local_C_V_4_q0; -reg [12:0] local_C_V_4_address1; -reg local_C_V_4_ce1; -reg local_C_V_4_we1; -reg [63:0] local_C_V_4_d1; -reg [12:0] local_C_V_5_address0; -reg local_C_V_5_ce0; -wire [63:0] local_C_V_5_q0; -reg [12:0] local_C_V_5_address1; -reg local_C_V_5_ce1; -reg local_C_V_5_we1; -reg [63:0] local_C_V_5_d1; -reg [12:0] local_C_V_6_address0; -reg local_C_V_6_ce0; -wire [63:0] local_C_V_6_q0; -reg [12:0] local_C_V_6_address1; -reg local_C_V_6_ce1; -reg local_C_V_6_we1; -reg [63:0] local_C_V_6_d1; -reg [12:0] local_C_V_7_address0; -reg local_C_V_7_ce0; -wire [63:0] local_C_V_7_q0; -reg [12:0] local_C_V_7_address1; -reg local_C_V_7_ce1; -reg local_C_V_7_we1; -reg [63:0] local_C_V_7_d1; -reg [12:0] local_C_V_8_address0; -reg local_C_V_8_ce0; -wire [63:0] local_C_V_8_q0; -reg [12:0] local_C_V_8_address1; -reg local_C_V_8_ce1; -reg local_C_V_8_we1; -reg [63:0] local_C_V_8_d1; -reg [12:0] local_C_V_9_address0; -reg local_C_V_9_ce0; -wire [63:0] local_C_V_9_q0; -reg [12:0] local_C_V_9_address1; -reg local_C_V_9_ce1; -reg local_C_V_9_we1; -reg [63:0] local_C_V_9_d1; -reg [12:0] local_C_V_10_address0; -reg local_C_V_10_ce0; -wire [63:0] local_C_V_10_q0; -reg [12:0] local_C_V_10_address1; -reg local_C_V_10_ce1; -reg local_C_V_10_we1; -reg [63:0] local_C_V_10_d1; -reg [12:0] local_C_V_11_address0; -reg local_C_V_11_ce0; -wire [63:0] local_C_V_11_q0; -reg [12:0] local_C_V_11_address1; -reg local_C_V_11_ce1; -reg local_C_V_11_we1; -reg [63:0] local_C_V_11_d1; -reg [12:0] local_C_V_12_address0; -reg local_C_V_12_ce0; -wire [63:0] local_C_V_12_q0; -reg [12:0] local_C_V_12_address1; -reg local_C_V_12_ce1; -reg local_C_V_12_we1; -reg [63:0] local_C_V_12_d1; -reg [12:0] local_C_V_13_address0; -reg local_C_V_13_ce0; -wire [63:0] local_C_V_13_q0; -reg [12:0] local_C_V_13_address1; -reg local_C_V_13_ce1; -reg local_C_V_13_we1; -reg [63:0] local_C_V_13_d1; -reg [12:0] local_C_V_14_address0; -reg local_C_V_14_ce0; -wire [63:0] local_C_V_14_q0; -reg [12:0] local_C_V_14_address1; -reg local_C_V_14_ce1; -reg local_C_V_14_we1; -reg [63:0] local_C_V_14_d1; -reg [12:0] local_C_V_15_address0; -reg local_C_V_15_ce0; -wire [63:0] local_C_V_15_q0; -reg [12:0] local_C_V_15_address1; -reg local_C_V_15_ce1; -reg local_C_V_15_we1; -reg [63:0] local_C_V_15_d1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_start; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_done; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_idle; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_ready; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_15_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_15_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_15_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_15_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_14_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_14_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_14_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_14_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_13_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_13_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_13_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_13_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_12_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_12_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_12_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_12_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_11_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_11_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_11_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_11_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_10_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_10_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_10_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_10_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_9_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_9_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_9_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_9_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_8_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_8_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_8_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_8_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_7_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_7_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_7_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_7_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_6_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_6_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_6_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_6_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_5_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_5_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_5_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_5_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_4_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_4_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_4_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_4_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_3_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_3_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_3_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_3_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_2_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_2_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_2_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_2_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_1_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_1_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_1_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_1_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_address1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_ce1; -wire grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_d1; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_start; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_done; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_idle; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_ready; -wire [256:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_fifo_C_out_din; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_fifo_C_out_write; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_4_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_4_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_8_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_8_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_12_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_12_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_1_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_1_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_5_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_5_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_9_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_9_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_13_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_13_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_2_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_2_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_6_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_6_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_10_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_10_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_14_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_14_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_3_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_3_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_7_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_7_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_11_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_11_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_15_address0; -wire grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_15_ce0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_start; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_done; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_idle; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_ready; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_d1; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_address0; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_ce0; -wire [12:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_address1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_ce1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_we1; -wire [63:0] grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_d1; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_fifo_aBvec_0_read; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_fifo_aBvec_1_read; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_fifo_aBvec_2_read; -wire grp_PEG_Cmtx_Pipeline_computation_fu_369_fifo_aBvec_3_read; -reg [30:0] i_1_reg_304; -wire ap_CS_fsm_state12; -reg [31:0] start_32_3_reg_315; -reg grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_start_reg; -wire [0:0] icmp_ln232_fu_503_p2; -reg grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_start_reg; -reg ap_block_state10_ignore_call1; -wire ap_CS_fsm_state13; -reg grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_start_reg; -wire ap_CS_fsm_state11; -reg [27:0] rp_fu_120; -reg ap_block_state1; -wire [15:0] N_fu_413_p1; -wire [16:0] zext_ln219_fu_427_p1; -wire [16:0] add_ln220_fu_431_p2; -wire [0:0] icmp_ln218_fu_447_p2; -wire signed [15:0] rp_time_fu_452_p3; -wire [31:0] add_ln221_fu_466_p2; -wire [31:0] add_ln223_fu_481_p2; -wire [29:0] zext_ln232_fu_499_p1; -wire [31:0] zext_ln249_fu_518_p1; -wire [13:0] grp_fu_541_p1; -reg [12:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -reg ap_ST_fsm_state2_blk; -reg ap_ST_fsm_state3_blk; -wire ap_ST_fsm_state4_blk; -wire ap_ST_fsm_state5_blk; -wire ap_ST_fsm_state6_blk; -wire ap_ST_fsm_state7_blk; -wire ap_ST_fsm_state8_blk; -reg ap_ST_fsm_state9_blk; -reg ap_ST_fsm_state10_blk; -wire ap_ST_fsm_state11_blk; -reg ap_ST_fsm_state12_blk; -reg ap_ST_fsm_state13_blk; -wire [29:0] grp_fu_541_p10; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 13'd1; -#0 grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_start_reg = 1'b0; -#0 grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_start_reg = 1'b0; -#0 grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_start_reg = 1'b0; -end - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_address0), - .ce0(local_C_V_ce0), - .q0(local_C_V_q0), - .address1(local_C_V_address1), - .ce1(local_C_V_ce1), - .we1(local_C_V_we1), - .d1(local_C_V_d1) -); - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_1_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_1_address0), - .ce0(local_C_V_1_ce0), - .q0(local_C_V_1_q0), - .address1(local_C_V_1_address1), - .ce1(local_C_V_1_ce1), - .we1(local_C_V_1_we1), - .d1(local_C_V_1_d1) -); - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_2_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_2_address0), - .ce0(local_C_V_2_ce0), - .q0(local_C_V_2_q0), - .address1(local_C_V_2_address1), - .ce1(local_C_V_2_ce1), - .we1(local_C_V_2_we1), - .d1(local_C_V_2_d1) -); - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_3_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_3_address0), - .ce0(local_C_V_3_ce0), - .q0(local_C_V_3_q0), - .address1(local_C_V_3_address1), - .ce1(local_C_V_3_ce1), - .we1(local_C_V_3_we1), - .d1(local_C_V_3_d1) -); - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_4_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_4_address0), - .ce0(local_C_V_4_ce0), - .q0(local_C_V_4_q0), - .address1(local_C_V_4_address1), - .ce1(local_C_V_4_ce1), - .we1(local_C_V_4_we1), - .d1(local_C_V_4_d1) -); - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_5_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_5_address0), - .ce0(local_C_V_5_ce0), - .q0(local_C_V_5_q0), - .address1(local_C_V_5_address1), - .ce1(local_C_V_5_ce1), - .we1(local_C_V_5_we1), - .d1(local_C_V_5_d1) -); - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_6_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_6_address0), - .ce0(local_C_V_6_ce0), - .q0(local_C_V_6_q0), - .address1(local_C_V_6_address1), - .ce1(local_C_V_6_ce1), - .we1(local_C_V_6_we1), - .d1(local_C_V_6_d1) -); - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_7_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_7_address0), - .ce0(local_C_V_7_ce0), - .q0(local_C_V_7_q0), - .address1(local_C_V_7_address1), - .ce1(local_C_V_7_ce1), - .we1(local_C_V_7_we1), - .d1(local_C_V_7_d1) -); - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_8_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_8_address0), - .ce0(local_C_V_8_ce0), - .q0(local_C_V_8_q0), - .address1(local_C_V_8_address1), - .ce1(local_C_V_8_ce1), - .we1(local_C_V_8_we1), - .d1(local_C_V_8_d1) -); - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_9_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_9_address0), - .ce0(local_C_V_9_ce0), - .q0(local_C_V_9_q0), - .address1(local_C_V_9_address1), - .ce1(local_C_V_9_ce1), - .we1(local_C_V_9_we1), - .d1(local_C_V_9_d1) -); - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_10_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_10_address0), - .ce0(local_C_V_10_ce0), - .q0(local_C_V_10_q0), - .address1(local_C_V_10_address1), - .ce1(local_C_V_10_ce1), - .we1(local_C_V_10_we1), - .d1(local_C_V_10_d1) -); - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_11_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_11_address0), - .ce0(local_C_V_11_ce0), - .q0(local_C_V_11_q0), - .address1(local_C_V_11_address1), - .ce1(local_C_V_11_ce1), - .we1(local_C_V_11_we1), - .d1(local_C_V_11_d1) -); - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_12_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_12_address0), - .ce0(local_C_V_12_ce0), - .q0(local_C_V_12_q0), - .address1(local_C_V_12_address1), - .ce1(local_C_V_12_ce1), - .we1(local_C_V_12_we1), - .d1(local_C_V_12_d1) -); - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_13_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_13_address0), - .ce0(local_C_V_13_ce0), - .q0(local_C_V_13_q0), - .address1(local_C_V_13_address1), - .ce1(local_C_V_13_ce1), - .we1(local_C_V_13_we1), - .d1(local_C_V_13_d1) -); - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_14_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_14_address0), - .ce0(local_C_V_14_ce0), - .q0(local_C_V_14_q0), - .address1(local_C_V_14_address1), - .ce1(local_C_V_14_ce1), - .we1(local_C_V_14_we1), - .d1(local_C_V_14_d1) -); - -PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W #( - .DataWidth( 64 ), - .AddressRange( 8192 ), - .AddressWidth( 13 )) -local_C_V_15_U( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .address0(local_C_V_15_address0), - .ce0(local_C_V_15_ce0), - .q0(local_C_V_15_q0), - .address1(local_C_V_15_address1), - .ce1(local_C_V_15_ce1), - .we1(local_C_V_15_we1), - .d1(local_C_V_15_d1) -); - -PEG_Cmtx_PEG_Cmtx_Pipeline_init_C grp_PEG_Cmtx_Pipeline_init_C_fu_325( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_start), - .ap_done(grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_done), - .ap_idle(grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_idle), - .ap_ready(grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_ready), - .trunc_ln(trunc_ln_reg_591), - .local_C_V_15_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_15_address1), - .local_C_V_15_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_15_ce1), - .local_C_V_15_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_15_we1), - .local_C_V_15_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_15_d1), - .local_C_V_14_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_14_address1), - .local_C_V_14_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_14_ce1), - .local_C_V_14_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_14_we1), - .local_C_V_14_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_14_d1), - .local_C_V_13_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_13_address1), - .local_C_V_13_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_13_ce1), - .local_C_V_13_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_13_we1), - .local_C_V_13_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_13_d1), - .local_C_V_12_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_12_address1), - .local_C_V_12_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_12_ce1), - .local_C_V_12_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_12_we1), - .local_C_V_12_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_12_d1), - .local_C_V_11_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_11_address1), - .local_C_V_11_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_11_ce1), - .local_C_V_11_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_11_we1), - .local_C_V_11_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_11_d1), - .local_C_V_10_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_10_address1), - .local_C_V_10_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_10_ce1), - .local_C_V_10_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_10_we1), - .local_C_V_10_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_10_d1), - .local_C_V_9_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_9_address1), - .local_C_V_9_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_9_ce1), - .local_C_V_9_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_9_we1), - .local_C_V_9_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_9_d1), - .local_C_V_8_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_8_address1), - .local_C_V_8_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_8_ce1), - .local_C_V_8_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_8_we1), - .local_C_V_8_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_8_d1), - .local_C_V_7_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_7_address1), - .local_C_V_7_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_7_ce1), - .local_C_V_7_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_7_we1), - .local_C_V_7_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_7_d1), - .local_C_V_6_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_6_address1), - .local_C_V_6_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_6_ce1), - .local_C_V_6_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_6_we1), - .local_C_V_6_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_6_d1), - .local_C_V_5_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_5_address1), - .local_C_V_5_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_5_ce1), - .local_C_V_5_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_5_we1), - .local_C_V_5_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_5_d1), - .local_C_V_4_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_4_address1), - .local_C_V_4_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_4_ce1), - .local_C_V_4_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_4_we1), - .local_C_V_4_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_4_d1), - .local_C_V_3_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_3_address1), - .local_C_V_3_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_3_ce1), - .local_C_V_3_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_3_we1), - .local_C_V_3_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_3_d1), - .local_C_V_2_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_2_address1), - .local_C_V_2_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_2_ce1), - .local_C_V_2_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_2_we1), - .local_C_V_2_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_2_d1), - .local_C_V_1_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_1_address1), - .local_C_V_1_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_1_ce1), - .local_C_V_1_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_1_we1), - .local_C_V_1_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_1_d1), - .local_C_V_address1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_address1), - .local_C_V_ce1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_ce1), - .local_C_V_we1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_we1), - .local_C_V_d1(grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_d1) -); - -PEG_Cmtx_PEG_Cmtx_Pipeline_write_C_outer grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_start), - .ap_done(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_done), - .ap_idle(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_idle), - .ap_ready(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_ready), - .fifo_C_out_din(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_fifo_C_out_din), - .fifo_C_out_full_n(fifo_C_out_full_n), - .fifo_C_out_write(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_fifo_C_out_write), - .num_v_out(num_v_out_reg_596), - .local_C_V_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_address0), - .local_C_V_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_ce0), - .local_C_V_q0(local_C_V_q0), - .local_C_V_4_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_4_address0), - .local_C_V_4_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_4_ce0), - .local_C_V_4_q0(local_C_V_4_q0), - .local_C_V_8_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_8_address0), - .local_C_V_8_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_8_ce0), - .local_C_V_8_q0(local_C_V_8_q0), - .local_C_V_12_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_12_address0), - .local_C_V_12_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_12_ce0), - .local_C_V_12_q0(local_C_V_12_q0), - .local_C_V_1_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_1_address0), - .local_C_V_1_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_1_ce0), - .local_C_V_1_q0(local_C_V_1_q0), - .local_C_V_5_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_5_address0), - .local_C_V_5_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_5_ce0), - .local_C_V_5_q0(local_C_V_5_q0), - .local_C_V_9_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_9_address0), - .local_C_V_9_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_9_ce0), - .local_C_V_9_q0(local_C_V_9_q0), - .local_C_V_13_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_13_address0), - .local_C_V_13_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_13_ce0), - .local_C_V_13_q0(local_C_V_13_q0), - .local_C_V_2_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_2_address0), - .local_C_V_2_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_2_ce0), - .local_C_V_2_q0(local_C_V_2_q0), - .local_C_V_6_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_6_address0), - .local_C_V_6_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_6_ce0), - .local_C_V_6_q0(local_C_V_6_q0), - .local_C_V_10_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_10_address0), - .local_C_V_10_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_10_ce0), - .local_C_V_10_q0(local_C_V_10_q0), - .local_C_V_14_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_14_address0), - .local_C_V_14_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_14_ce0), - .local_C_V_14_q0(local_C_V_14_q0), - .local_C_V_3_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_3_address0), - .local_C_V_3_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_3_ce0), - .local_C_V_3_q0(local_C_V_3_q0), - .local_C_V_7_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_7_address0), - .local_C_V_7_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_7_ce0), - .local_C_V_7_q0(local_C_V_7_q0), - .local_C_V_11_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_11_address0), - .local_C_V_11_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_11_ce0), - .local_C_V_11_q0(local_C_V_11_q0), - .local_C_V_15_address0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_15_address0), - .local_C_V_15_ce0(grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_15_ce0), - .local_C_V_15_q0(local_C_V_15_q0) -); - -PEG_Cmtx_PEG_Cmtx_Pipeline_computation grp_PEG_Cmtx_Pipeline_computation_fu_369( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_start), - .ap_done(grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_done), - .ap_idle(grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_idle), - .ap_ready(grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_ready), - .start_32_3(start_32_3_reg_315), - .end_32(end_32_reg_622), - .local_C_V_15_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_address0), - .local_C_V_15_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_ce0), - .local_C_V_15_q0(local_C_V_15_q0), - .local_C_V_15_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_address1), - .local_C_V_15_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_ce1), - .local_C_V_15_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_we1), - .local_C_V_15_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_d1), - .local_C_V_14_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_address0), - .local_C_V_14_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_ce0), - .local_C_V_14_q0(local_C_V_14_q0), - .local_C_V_14_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_address1), - .local_C_V_14_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_ce1), - .local_C_V_14_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_we1), - .local_C_V_14_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_d1), - .local_C_V_13_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_address0), - .local_C_V_13_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_ce0), - .local_C_V_13_q0(local_C_V_13_q0), - .local_C_V_13_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_address1), - .local_C_V_13_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_ce1), - .local_C_V_13_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_we1), - .local_C_V_13_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_d1), - .local_C_V_12_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_address0), - .local_C_V_12_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_ce0), - .local_C_V_12_q0(local_C_V_12_q0), - .local_C_V_12_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_address1), - .local_C_V_12_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_ce1), - .local_C_V_12_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_we1), - .local_C_V_12_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_d1), - .local_C_V_11_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_address0), - .local_C_V_11_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_ce0), - .local_C_V_11_q0(local_C_V_11_q0), - .local_C_V_11_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_address1), - .local_C_V_11_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_ce1), - .local_C_V_11_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_we1), - .local_C_V_11_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_d1), - .local_C_V_10_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_address0), - .local_C_V_10_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_ce0), - .local_C_V_10_q0(local_C_V_10_q0), - .local_C_V_10_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_address1), - .local_C_V_10_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_ce1), - .local_C_V_10_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_we1), - .local_C_V_10_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_d1), - .local_C_V_9_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_address0), - .local_C_V_9_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_ce0), - .local_C_V_9_q0(local_C_V_9_q0), - .local_C_V_9_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_address1), - .local_C_V_9_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_ce1), - .local_C_V_9_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_we1), - .local_C_V_9_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_d1), - .local_C_V_8_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_address0), - .local_C_V_8_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_ce0), - .local_C_V_8_q0(local_C_V_8_q0), - .local_C_V_8_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_address1), - .local_C_V_8_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_ce1), - .local_C_V_8_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_we1), - .local_C_V_8_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_d1), - .local_C_V_7_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_address0), - .local_C_V_7_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_ce0), - .local_C_V_7_q0(local_C_V_7_q0), - .local_C_V_7_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_address1), - .local_C_V_7_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_ce1), - .local_C_V_7_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_we1), - .local_C_V_7_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_d1), - .local_C_V_6_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_address0), - .local_C_V_6_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_ce0), - .local_C_V_6_q0(local_C_V_6_q0), - .local_C_V_6_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_address1), - .local_C_V_6_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_ce1), - .local_C_V_6_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_we1), - .local_C_V_6_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_d1), - .local_C_V_5_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_address0), - .local_C_V_5_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_ce0), - .local_C_V_5_q0(local_C_V_5_q0), - .local_C_V_5_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_address1), - .local_C_V_5_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_ce1), - .local_C_V_5_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_we1), - .local_C_V_5_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_d1), - .local_C_V_4_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_address0), - .local_C_V_4_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_ce0), - .local_C_V_4_q0(local_C_V_4_q0), - .local_C_V_4_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_address1), - .local_C_V_4_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_ce1), - .local_C_V_4_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_we1), - .local_C_V_4_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_d1), - .local_C_V_3_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_address0), - .local_C_V_3_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_ce0), - .local_C_V_3_q0(local_C_V_3_q0), - .local_C_V_3_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_address1), - .local_C_V_3_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_ce1), - .local_C_V_3_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_we1), - .local_C_V_3_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_d1), - .local_C_V_2_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_address0), - .local_C_V_2_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_ce0), - .local_C_V_2_q0(local_C_V_2_q0), - .local_C_V_2_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_address1), - .local_C_V_2_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_ce1), - .local_C_V_2_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_we1), - .local_C_V_2_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_d1), - .local_C_V_1_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_address0), - .local_C_V_1_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_ce0), - .local_C_V_1_q0(local_C_V_1_q0), - .local_C_V_1_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_address1), - .local_C_V_1_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_ce1), - .local_C_V_1_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_we1), - .local_C_V_1_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_d1), - .local_C_V_address0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_address0), - .local_C_V_ce0(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_ce0), - .local_C_V_q0(local_C_V_q0), - .local_C_V_address1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_address1), - .local_C_V_ce1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_ce1), - .local_C_V_we1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_we1), - .local_C_V_d1(grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_d1), - .fifo_aBvec_0_dout(fifo_aBvec_0_dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_0_empty_n), - .fifo_aBvec_0_read(grp_PEG_Cmtx_Pipeline_computation_fu_369_fifo_aBvec_0_read), - .fifo_aBvec_1_dout(fifo_aBvec_1_dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_1_empty_n), - .fifo_aBvec_1_read(grp_PEG_Cmtx_Pipeline_computation_fu_369_fifo_aBvec_1_read), - .fifo_aBvec_2_dout(fifo_aBvec_2_dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_2_empty_n), - .fifo_aBvec_2_read(grp_PEG_Cmtx_Pipeline_computation_fu_369_fifo_aBvec_2_read), - .fifo_aBvec_3_dout(fifo_aBvec_3_dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_3_empty_n), - .fifo_aBvec_3_read(grp_PEG_Cmtx_Pipeline_computation_fu_369_fifo_aBvec_3_read) -); - -PEG_Cmtx_mul_mul_16s_14ns_30_4_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 16 ), - .din1_WIDTH( 14 ), - .dout_WIDTH( 30 )) -mul_mul_16s_14ns_30_4_1_U96( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .din0(rp_time_fu_452_p3), - .din1(grp_fu_541_p1), - .ce(1'b1), - .dout(grp_fu_541_p2) -); - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_start_reg <= 1'b0; - end else begin - if ((1'b1 == ap_CS_fsm_state11)) begin - grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_start_reg <= 1'b1; - end else if ((grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_ready == 1'b1)) begin - grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_start_reg <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_start_reg <= 1'b0; - end else begin - if (((icmp_ln232_fu_503_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state8))) begin - grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_start_reg <= 1'b1; - end else if ((grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_ready == 1'b1)) begin - grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_start_reg <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_start_reg <= 1'b0; - end else begin - if ((~((fifo_inst_in_s_empty_n == 1'b0) & (icmp_ln249_fu_522_p2 == 1'd1)) & (1'b1 == ap_CS_fsm_state10) & (icmp_ln249_fu_522_p2 == 1'd0))) begin - grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_start_reg <= 1'b1; - end else if ((grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_ready == 1'b1)) begin - grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_start_reg <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if (((grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state12))) begin - i_1_reg_304 <= add_ln249_reg_617; - end else if ((~((fifo_inst_in_s_empty_n == 1'b0) | (grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_done == 1'b0)) & (1'b1 == ap_CS_fsm_state9))) begin - i_1_reg_304 <= 31'd0; - end -end - -always @ (posedge ap_clk) begin - if ((~((1'b0 == PE_inst_in_s_empty_n) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1))) begin - rp_fu_120 <= 28'd0; - end else if ((~((fifo_inst_in_s_empty_n == 1'b0) & (icmp_ln249_fu_522_p2 == 1'd1)) & (1'b1 == ap_CS_fsm_state10) & (icmp_ln249_fu_522_p2 == 1'd0))) begin - rp_fu_120 <= rp_2_reg_604; - end -end - -always @ (posedge ap_clk) begin - if (((grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state12))) begin - start_32_3_reg_315 <= end_32_reg_622; - end else if ((~((fifo_inst_in_s_empty_n == 1'b0) | (grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_done == 1'b0)) & (1'b1 == ap_CS_fsm_state9))) begin - start_32_3_reg_315 <= start_32_fu_514_p1; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state2)) begin - M_reg_559 <= M_fu_409_p1; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state3)) begin - N16_reg_565 <= {{PE_inst_in_s_dout[31:16]}}; - lshr_ln_reg_571 <= {{add_ln220_fu_431_p2[16:3]}}; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state1)) begin - NUM_ITE_reg_554 <= NUM_ITE_fu_400_p1; - end -end - -always @ (posedge ap_clk) begin - if ((~((fifo_inst_in_s_empty_n == 1'b0) & (icmp_ln249_fu_522_p2 == 1'd1)) & (1'b1 == ap_CS_fsm_state10))) begin - add_ln249_reg_617 <= add_ln249_fu_527_p2; - end -end - -always @ (posedge ap_clk) begin - if ((~((fifo_inst_in_s_empty_n == 1'b0) & (icmp_ln249_fu_522_p2 == 1'd1)) & (1'b1 == ap_CS_fsm_state10) & (icmp_ln249_fu_522_p2 == 1'd1))) begin - end_32_reg_622 <= end_32_fu_533_p1; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state7)) begin - num_v_out_reg_596 <= {{add_ln223_fu_481_p2[31:4]}}; - rp_time_N_reg_586 <= grp_fu_541_p2; - trunc_ln_reg_591 <= {{add_ln221_fu_466_p2[31:6]}}; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state8)) begin - rp_2_reg_604 <= rp_2_fu_508_p2; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state3) | (1'b1 == ap_CS_fsm_state2) | ((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1)))) begin - PE_inst_in_s_blk_n = PE_inst_in_s_empty_n; - end else begin - PE_inst_in_s_blk_n = 1'b1; - end -end - -always @ (*) begin - if ((((1'b1 == ap_CS_fsm_state2) & (1'b1 == PE_inst_in_s_empty_n)) | (~((1'b0 == PE_inst_in_s_empty_n) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1)) | ((1'b1 == ap_CS_fsm_state3) & (1'b1 == PE_inst_in_s_empty_n)))) begin - PE_inst_in_s_read = 1'b1; - end else begin - PE_inst_in_s_read = 1'b0; - end -end - -always @ (*) begin - if (((fifo_inst_in_s_empty_n == 1'b0) & (icmp_ln249_fu_522_p2 == 1'd1))) begin - ap_ST_fsm_state10_blk = 1'b1; - end else begin - ap_ST_fsm_state10_blk = 1'b0; - end -end - -assign ap_ST_fsm_state11_blk = 1'b0; - -always @ (*) begin - if ((grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_done == 1'b0)) begin - ap_ST_fsm_state12_blk = 1'b1; - end else begin - ap_ST_fsm_state12_blk = 1'b0; - end -end - -always @ (*) begin - if ((grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_done == 1'b0)) begin - ap_ST_fsm_state13_blk = 1'b1; - end else begin - ap_ST_fsm_state13_blk = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == PE_inst_in_s_empty_n) | (ap_start == 1'b0))) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -always @ (*) begin - if ((1'b0 == PE_inst_in_s_empty_n)) begin - ap_ST_fsm_state2_blk = 1'b1; - end else begin - ap_ST_fsm_state2_blk = 1'b0; - end -end - -always @ (*) begin - if ((1'b0 == PE_inst_in_s_empty_n)) begin - ap_ST_fsm_state3_blk = 1'b1; - end else begin - ap_ST_fsm_state3_blk = 1'b0; - end -end - -assign ap_ST_fsm_state4_blk = 1'b0; - -assign ap_ST_fsm_state5_blk = 1'b0; - -assign ap_ST_fsm_state6_blk = 1'b0; - -assign ap_ST_fsm_state7_blk = 1'b0; - -assign ap_ST_fsm_state8_blk = 1'b0; - -always @ (*) begin - if (((fifo_inst_in_s_empty_n == 1'b0) | (grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_done == 1'b0))) begin - ap_ST_fsm_state9_blk = 1'b1; - end else begin - ap_ST_fsm_state9_blk = 1'b0; - end -end - -always @ (*) begin - if (((icmp_ln232_fu_503_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state8))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((ap_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((icmp_ln232_fu_503_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state8))) begin - ap_ready = 1'b1; - end else begin - ap_ready = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state13)) begin - fifo_C_out_write = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_fifo_C_out_write; - end else begin - fifo_C_out_write = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - fifo_aBvec_0_read = grp_PEG_Cmtx_Pipeline_computation_fu_369_fifo_aBvec_0_read; - end else begin - fifo_aBvec_0_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - fifo_aBvec_1_read = grp_PEG_Cmtx_Pipeline_computation_fu_369_fifo_aBvec_1_read; - end else begin - fifo_aBvec_1_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - fifo_aBvec_2_read = grp_PEG_Cmtx_Pipeline_computation_fu_369_fifo_aBvec_2_read; - end else begin - fifo_aBvec_2_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - fifo_aBvec_3_read = grp_PEG_Cmtx_Pipeline_computation_fu_369_fifo_aBvec_3_read; - end else begin - fifo_aBvec_3_read = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state9) | ((1'b1 == ap_CS_fsm_state10) & (icmp_ln249_fu_522_p2 == 1'd1)))) begin - fifo_inst_in_s_blk_n = fifo_inst_in_s_empty_n; - end else begin - fifo_inst_in_s_blk_n = 1'b1; - end -end - -always @ (*) begin - if (((~((fifo_inst_in_s_empty_n == 1'b0) | (grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_done == 1'b0)) & (1'b1 == ap_CS_fsm_state9)) | (~((fifo_inst_in_s_empty_n == 1'b0) & (icmp_ln249_fu_522_p2 == 1'd1)) & (1'b1 == ap_CS_fsm_state10) & (icmp_ln249_fu_522_p2 == 1'd1)))) begin - fifo_inst_in_s_read = 1'b1; - end else begin - fifo_inst_in_s_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_10_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_10_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_10_address0; - end else begin - local_C_V_10_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_10_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_10_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_10_address1; - end else begin - local_C_V_10_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_10_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_10_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_10_ce0; - end else begin - local_C_V_10_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_10_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_10_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_10_ce1; - end else begin - local_C_V_10_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_10_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_10_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_10_d1; - end else begin - local_C_V_10_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_10_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_10_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_10_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_10_we1; - end else begin - local_C_V_10_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_11_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_11_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_11_address0; - end else begin - local_C_V_11_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_11_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_11_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_11_address1; - end else begin - local_C_V_11_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_11_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_11_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_11_ce0; - end else begin - local_C_V_11_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_11_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_11_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_11_ce1; - end else begin - local_C_V_11_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_11_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_11_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_11_d1; - end else begin - local_C_V_11_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_11_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_11_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_11_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_11_we1; - end else begin - local_C_V_11_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_12_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_12_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_12_address0; - end else begin - local_C_V_12_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_12_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_12_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_12_address1; - end else begin - local_C_V_12_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_12_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_12_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_12_ce0; - end else begin - local_C_V_12_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_12_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_12_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_12_ce1; - end else begin - local_C_V_12_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_12_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_12_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_12_d1; - end else begin - local_C_V_12_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_12_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_12_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_12_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_12_we1; - end else begin - local_C_V_12_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_13_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_13_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_13_address0; - end else begin - local_C_V_13_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_13_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_13_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_13_address1; - end else begin - local_C_V_13_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_13_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_13_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_13_ce0; - end else begin - local_C_V_13_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_13_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_13_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_13_ce1; - end else begin - local_C_V_13_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_13_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_13_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_13_d1; - end else begin - local_C_V_13_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_13_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_13_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_13_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_13_we1; - end else begin - local_C_V_13_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_14_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_14_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_14_address0; - end else begin - local_C_V_14_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_14_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_14_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_14_address1; - end else begin - local_C_V_14_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_14_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_14_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_14_ce0; - end else begin - local_C_V_14_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_14_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_14_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_14_ce1; - end else begin - local_C_V_14_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_14_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_14_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_14_d1; - end else begin - local_C_V_14_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_14_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_14_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_14_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_14_we1; - end else begin - local_C_V_14_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_15_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_15_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_15_address0; - end else begin - local_C_V_15_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_15_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_15_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_15_address1; - end else begin - local_C_V_15_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_15_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_15_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_15_ce0; - end else begin - local_C_V_15_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_15_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_15_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_15_ce1; - end else begin - local_C_V_15_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_15_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_15_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_15_d1; - end else begin - local_C_V_15_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_15_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_15_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_15_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_15_we1; - end else begin - local_C_V_15_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_1_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_1_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_1_address0; - end else begin - local_C_V_1_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_1_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_1_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_1_address1; - end else begin - local_C_V_1_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_1_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_1_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_1_ce0; - end else begin - local_C_V_1_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_1_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_1_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_1_ce1; - end else begin - local_C_V_1_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_1_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_1_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_1_d1; - end else begin - local_C_V_1_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_1_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_1_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_1_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_1_we1; - end else begin - local_C_V_1_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_2_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_2_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_2_address0; - end else begin - local_C_V_2_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_2_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_2_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_2_address1; - end else begin - local_C_V_2_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_2_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_2_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_2_ce0; - end else begin - local_C_V_2_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_2_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_2_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_2_ce1; - end else begin - local_C_V_2_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_2_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_2_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_2_d1; - end else begin - local_C_V_2_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_2_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_2_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_2_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_2_we1; - end else begin - local_C_V_2_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_3_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_3_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_3_address0; - end else begin - local_C_V_3_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_3_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_3_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_3_address1; - end else begin - local_C_V_3_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_3_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_3_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_3_ce0; - end else begin - local_C_V_3_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_3_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_3_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_3_ce1; - end else begin - local_C_V_3_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_3_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_3_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_3_d1; - end else begin - local_C_V_3_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_3_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_3_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_3_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_3_we1; - end else begin - local_C_V_3_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_4_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_4_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_4_address0; - end else begin - local_C_V_4_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_4_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_4_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_4_address1; - end else begin - local_C_V_4_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_4_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_4_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_4_ce0; - end else begin - local_C_V_4_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_4_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_4_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_4_ce1; - end else begin - local_C_V_4_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_4_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_4_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_4_d1; - end else begin - local_C_V_4_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_4_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_4_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_4_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_4_we1; - end else begin - local_C_V_4_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_5_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_5_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_5_address0; - end else begin - local_C_V_5_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_5_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_5_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_5_address1; - end else begin - local_C_V_5_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_5_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_5_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_5_ce0; - end else begin - local_C_V_5_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_5_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_5_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_5_ce1; - end else begin - local_C_V_5_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_5_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_5_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_5_d1; - end else begin - local_C_V_5_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_5_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_5_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_5_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_5_we1; - end else begin - local_C_V_5_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_6_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_6_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_6_address0; - end else begin - local_C_V_6_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_6_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_6_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_6_address1; - end else begin - local_C_V_6_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_6_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_6_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_6_ce0; - end else begin - local_C_V_6_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_6_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_6_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_6_ce1; - end else begin - local_C_V_6_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_6_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_6_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_6_d1; - end else begin - local_C_V_6_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_6_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_6_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_6_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_6_we1; - end else begin - local_C_V_6_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_7_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_7_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_7_address0; - end else begin - local_C_V_7_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_7_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_7_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_7_address1; - end else begin - local_C_V_7_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_7_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_7_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_7_ce0; - end else begin - local_C_V_7_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_7_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_7_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_7_ce1; - end else begin - local_C_V_7_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_7_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_7_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_7_d1; - end else begin - local_C_V_7_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_7_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_7_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_7_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_7_we1; - end else begin - local_C_V_7_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_8_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_8_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_8_address0; - end else begin - local_C_V_8_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_8_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_8_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_8_address1; - end else begin - local_C_V_8_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_8_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_8_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_8_ce0; - end else begin - local_C_V_8_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_8_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_8_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_8_ce1; - end else begin - local_C_V_8_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_8_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_8_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_8_d1; - end else begin - local_C_V_8_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_8_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_8_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_8_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_8_we1; - end else begin - local_C_V_8_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_9_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_9_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_9_address0; - end else begin - local_C_V_9_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_9_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_9_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_9_address1; - end else begin - local_C_V_9_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_9_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_9_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_9_ce0; - end else begin - local_C_V_9_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_9_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_9_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_9_ce1; - end else begin - local_C_V_9_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_9_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_9_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_9_d1; - end else begin - local_C_V_9_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_9_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_9_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_9_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_9_we1; - end else begin - local_C_V_9_we1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_address0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_address0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_address0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_address0; - end else begin - local_C_V_address0 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_address1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_address1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_address1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_address1; - end else begin - local_C_V_address1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_ce0 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_ce0; - end else if ((1'b1 == ap_CS_fsm_state13)) begin - local_C_V_ce0 = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_local_C_V_ce0; - end else begin - local_C_V_ce0 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_ce1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_ce1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_ce1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_ce1; - end else begin - local_C_V_ce1 = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_d1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_d1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_d1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_d1; - end else begin - local_C_V_d1 = 'bx; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state12)) begin - local_C_V_we1 = grp_PEG_Cmtx_Pipeline_computation_fu_369_local_C_V_we1; - end else if ((1'b1 == ap_CS_fsm_state9)) begin - local_C_V_we1 = grp_PEG_Cmtx_Pipeline_init_C_fu_325_local_C_V_we1; - end else begin - local_C_V_we1 = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if ((~((1'b0 == PE_inst_in_s_empty_n) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - if (((1'b1 == ap_CS_fsm_state2) & (1'b1 == PE_inst_in_s_empty_n))) begin - ap_NS_fsm = ap_ST_fsm_state3; - end else begin - ap_NS_fsm = ap_ST_fsm_state2; - end - end - ap_ST_fsm_state3 : begin - if (((1'b1 == ap_CS_fsm_state3) & (1'b1 == PE_inst_in_s_empty_n))) begin - ap_NS_fsm = ap_ST_fsm_state4; - end else begin - ap_NS_fsm = ap_ST_fsm_state3; - end - end - ap_ST_fsm_state4 : begin - ap_NS_fsm = ap_ST_fsm_state5; - end - ap_ST_fsm_state5 : begin - ap_NS_fsm = ap_ST_fsm_state6; - end - ap_ST_fsm_state6 : begin - ap_NS_fsm = ap_ST_fsm_state7; - end - ap_ST_fsm_state7 : begin - ap_NS_fsm = ap_ST_fsm_state8; - end - ap_ST_fsm_state8 : begin - if (((icmp_ln232_fu_503_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state8))) begin - ap_NS_fsm = ap_ST_fsm_state1; - end else begin - ap_NS_fsm = ap_ST_fsm_state9; - end - end - ap_ST_fsm_state9 : begin - if ((~((fifo_inst_in_s_empty_n == 1'b0) | (grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_done == 1'b0)) & (1'b1 == ap_CS_fsm_state9))) begin - ap_NS_fsm = ap_ST_fsm_state10; - end else begin - ap_NS_fsm = ap_ST_fsm_state9; - end - end - ap_ST_fsm_state10 : begin - if ((~((fifo_inst_in_s_empty_n == 1'b0) & (icmp_ln249_fu_522_p2 == 1'd1)) & (1'b1 == ap_CS_fsm_state10) & (icmp_ln249_fu_522_p2 == 1'd0))) begin - ap_NS_fsm = ap_ST_fsm_state13; - end else if ((~((fifo_inst_in_s_empty_n == 1'b0) & (icmp_ln249_fu_522_p2 == 1'd1)) & (1'b1 == ap_CS_fsm_state10) & (icmp_ln249_fu_522_p2 == 1'd1))) begin - ap_NS_fsm = ap_ST_fsm_state11; - end else begin - ap_NS_fsm = ap_ST_fsm_state10; - end - end - ap_ST_fsm_state11 : begin - ap_NS_fsm = ap_ST_fsm_state12; - end - ap_ST_fsm_state12 : begin - if (((grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state12))) begin - ap_NS_fsm = ap_ST_fsm_state10; - end else begin - ap_NS_fsm = ap_ST_fsm_state12; - end - end - ap_ST_fsm_state13 : begin - if (((grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state13))) begin - ap_NS_fsm = ap_ST_fsm_state8; - end else begin - ap_NS_fsm = ap_ST_fsm_state13; - end - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign M_fu_409_p1 = PE_inst_in_s_dout[31:0]; - -assign NUM_ITE_fu_400_p1 = PE_inst_in_s_dout[31:0]; - -assign N_fu_413_p1 = PE_inst_in_s_dout[15:0]; - -assign PE_inst_in_peek_read = 1'b0; - -assign add_ln220_fu_431_p2 = (zext_ln219_fu_427_p1 + 17'd7); - -assign add_ln221_fu_466_p2 = (M_reg_559 + 32'd63); - -assign add_ln223_fu_481_p2 = (M_reg_559 + 32'd15); - -assign add_ln249_fu_527_p2 = (i_1_reg_304 + 31'd1); - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state10 = ap_CS_fsm[32'd9]; - -assign ap_CS_fsm_state11 = ap_CS_fsm[32'd10]; - -assign ap_CS_fsm_state12 = ap_CS_fsm[32'd11]; - -assign ap_CS_fsm_state13 = ap_CS_fsm[32'd12]; - -assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; - -assign ap_CS_fsm_state3 = ap_CS_fsm[32'd2]; - -assign ap_CS_fsm_state4 = ap_CS_fsm[32'd3]; - -assign ap_CS_fsm_state7 = ap_CS_fsm[32'd6]; - -assign ap_CS_fsm_state8 = ap_CS_fsm[32'd7]; - -assign ap_CS_fsm_state9 = ap_CS_fsm[32'd8]; - -always @ (*) begin - ap_block_state1 = ((1'b0 == PE_inst_in_s_empty_n) | (ap_start == 1'b0)); -end - -always @ (*) begin - ap_block_state10 = ((fifo_inst_in_s_empty_n == 1'b0) & (icmp_ln249_fu_522_p2 == 1'd1)); -end - -always @ (*) begin - ap_block_state10_ignore_call1 = ((fifo_inst_in_s_empty_n == 1'b0) & (icmp_ln249_fu_522_p2 == 1'd1)); -end - -always @ (*) begin - ap_rst_n_inv = ~ap_rst_n; -end - -assign end_32_fu_533_p1 = fifo_inst_in_s_dout[31:0]; - -assign fifo_C_out_din = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_fifo_C_out_din; - -assign fifo_aBvec_peek_0_read = 1'b0; - -assign fifo_aBvec_peek_1_read = 1'b0; - -assign fifo_aBvec_peek_2_read = 1'b0; - -assign fifo_aBvec_peek_3_read = 1'b0; - -assign fifo_inst_in_peek_read = 1'b0; - -assign grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_start = grp_PEG_Cmtx_Pipeline_computation_fu_369_ap_start_reg; - -assign grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_start = grp_PEG_Cmtx_Pipeline_init_C_fu_325_ap_start_reg; - -assign grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_start = grp_PEG_Cmtx_Pipeline_write_C_outer_fu_346_ap_start_reg; - -assign grp_fu_541_p1 = grp_fu_541_p10; - -assign grp_fu_541_p10 = lshr_ln_reg_571; - -assign icmp_ln218_fu_447_p2 = ((N16_reg_565 == 16'd0) ? 1'b1 : 1'b0); - -assign icmp_ln232_fu_503_p2 = (($signed(zext_ln232_fu_499_p1) < $signed(rp_time_N_reg_586)) ? 1'b1 : 1'b0); - -assign icmp_ln249_fu_522_p2 = (($signed(zext_ln249_fu_518_p1) < $signed(NUM_ITE_reg_554)) ? 1'b1 : 1'b0); - -assign rp_2_fu_508_p2 = (rp_fu_120 + 28'd1); - -assign rp_time_fu_452_p3 = ((icmp_ln218_fu_447_p2[0:0] == 1'b1) ? 16'd1 : N16_reg_565); - -assign start_32_fu_514_p1 = fifo_inst_in_s_dout[31:0]; - -assign zext_ln219_fu_427_p1 = N_fu_413_p1; - -assign zext_ln232_fu_499_p1 = rp_fu_120; - -assign zext_ln249_fu_518_p1 = i_1_reg_304; - -endmodule //PEG_Cmtx diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_PEG_Cmtx_Pipeline_computation.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_PEG_Cmtx_Pipeline_computation.v deleted file mode 100644 index bc9f8616..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_PEG_Cmtx_Pipeline_computation.v +++ /dev/null @@ -1,3460 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module PEG_Cmtx_PEG_Cmtx_Pipeline_computation ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - start_32_3, - end_32, - local_C_V_15_address0, - local_C_V_15_ce0, - local_C_V_15_q0, - local_C_V_15_address1, - local_C_V_15_ce1, - local_C_V_15_we1, - local_C_V_15_d1, - local_C_V_14_address0, - local_C_V_14_ce0, - local_C_V_14_q0, - local_C_V_14_address1, - local_C_V_14_ce1, - local_C_V_14_we1, - local_C_V_14_d1, - local_C_V_13_address0, - local_C_V_13_ce0, - local_C_V_13_q0, - local_C_V_13_address1, - local_C_V_13_ce1, - local_C_V_13_we1, - local_C_V_13_d1, - local_C_V_12_address0, - local_C_V_12_ce0, - local_C_V_12_q0, - local_C_V_12_address1, - local_C_V_12_ce1, - local_C_V_12_we1, - local_C_V_12_d1, - local_C_V_11_address0, - local_C_V_11_ce0, - local_C_V_11_q0, - local_C_V_11_address1, - local_C_V_11_ce1, - local_C_V_11_we1, - local_C_V_11_d1, - local_C_V_10_address0, - local_C_V_10_ce0, - local_C_V_10_q0, - local_C_V_10_address1, - local_C_V_10_ce1, - local_C_V_10_we1, - local_C_V_10_d1, - local_C_V_9_address0, - local_C_V_9_ce0, - local_C_V_9_q0, - local_C_V_9_address1, - local_C_V_9_ce1, - local_C_V_9_we1, - local_C_V_9_d1, - local_C_V_8_address0, - local_C_V_8_ce0, - local_C_V_8_q0, - local_C_V_8_address1, - local_C_V_8_ce1, - local_C_V_8_we1, - local_C_V_8_d1, - local_C_V_7_address0, - local_C_V_7_ce0, - local_C_V_7_q0, - local_C_V_7_address1, - local_C_V_7_ce1, - local_C_V_7_we1, - local_C_V_7_d1, - local_C_V_6_address0, - local_C_V_6_ce0, - local_C_V_6_q0, - local_C_V_6_address1, - local_C_V_6_ce1, - local_C_V_6_we1, - local_C_V_6_d1, - local_C_V_5_address0, - local_C_V_5_ce0, - local_C_V_5_q0, - local_C_V_5_address1, - local_C_V_5_ce1, - local_C_V_5_we1, - local_C_V_5_d1, - local_C_V_4_address0, - local_C_V_4_ce0, - local_C_V_4_q0, - local_C_V_4_address1, - local_C_V_4_ce1, - local_C_V_4_we1, - local_C_V_4_d1, - local_C_V_3_address0, - local_C_V_3_ce0, - local_C_V_3_q0, - local_C_V_3_address1, - local_C_V_3_ce1, - local_C_V_3_we1, - local_C_V_3_d1, - local_C_V_2_address0, - local_C_V_2_ce0, - local_C_V_2_q0, - local_C_V_2_address1, - local_C_V_2_ce1, - local_C_V_2_we1, - local_C_V_2_d1, - local_C_V_1_address0, - local_C_V_1_ce0, - local_C_V_1_q0, - local_C_V_1_address1, - local_C_V_1_ce1, - local_C_V_1_we1, - local_C_V_1_d1, - local_C_V_address0, - local_C_V_ce0, - local_C_V_q0, - local_C_V_address1, - local_C_V_ce1, - local_C_V_we1, - local_C_V_d1, - fifo_aBvec_0_dout, - fifo_aBvec_0_empty_n, - fifo_aBvec_0_read, - fifo_aBvec_1_dout, - fifo_aBvec_1_empty_n, - fifo_aBvec_1_read, - fifo_aBvec_2_dout, - fifo_aBvec_2_empty_n, - fifo_aBvec_2_read, - fifo_aBvec_3_dout, - fifo_aBvec_3_empty_n, - fifo_aBvec_3_read -); - -parameter ap_ST_fsm_pp0_stage0 = 1'd1; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [31:0] start_32_3; -input [31:0] end_32; -output [12:0] local_C_V_15_address0; -output local_C_V_15_ce0; -input [63:0] local_C_V_15_q0; -output [12:0] local_C_V_15_address1; -output local_C_V_15_ce1; -output local_C_V_15_we1; -output [63:0] local_C_V_15_d1; -output [12:0] local_C_V_14_address0; -output local_C_V_14_ce0; -input [63:0] local_C_V_14_q0; -output [12:0] local_C_V_14_address1; -output local_C_V_14_ce1; -output local_C_V_14_we1; -output [63:0] local_C_V_14_d1; -output [12:0] local_C_V_13_address0; -output local_C_V_13_ce0; -input [63:0] local_C_V_13_q0; -output [12:0] local_C_V_13_address1; -output local_C_V_13_ce1; -output local_C_V_13_we1; -output [63:0] local_C_V_13_d1; -output [12:0] local_C_V_12_address0; -output local_C_V_12_ce0; -input [63:0] local_C_V_12_q0; -output [12:0] local_C_V_12_address1; -output local_C_V_12_ce1; -output local_C_V_12_we1; -output [63:0] local_C_V_12_d1; -output [12:0] local_C_V_11_address0; -output local_C_V_11_ce0; -input [63:0] local_C_V_11_q0; -output [12:0] local_C_V_11_address1; -output local_C_V_11_ce1; -output local_C_V_11_we1; -output [63:0] local_C_V_11_d1; -output [12:0] local_C_V_10_address0; -output local_C_V_10_ce0; -input [63:0] local_C_V_10_q0; -output [12:0] local_C_V_10_address1; -output local_C_V_10_ce1; -output local_C_V_10_we1; -output [63:0] local_C_V_10_d1; -output [12:0] local_C_V_9_address0; -output local_C_V_9_ce0; -input [63:0] local_C_V_9_q0; -output [12:0] local_C_V_9_address1; -output local_C_V_9_ce1; -output local_C_V_9_we1; -output [63:0] local_C_V_9_d1; -output [12:0] local_C_V_8_address0; -output local_C_V_8_ce0; -input [63:0] local_C_V_8_q0; -output [12:0] local_C_V_8_address1; -output local_C_V_8_ce1; -output local_C_V_8_we1; -output [63:0] local_C_V_8_d1; -output [12:0] local_C_V_7_address0; -output local_C_V_7_ce0; -input [63:0] local_C_V_7_q0; -output [12:0] local_C_V_7_address1; -output local_C_V_7_ce1; -output local_C_V_7_we1; -output [63:0] local_C_V_7_d1; -output [12:0] local_C_V_6_address0; -output local_C_V_6_ce0; -input [63:0] local_C_V_6_q0; -output [12:0] local_C_V_6_address1; -output local_C_V_6_ce1; -output local_C_V_6_we1; -output [63:0] local_C_V_6_d1; -output [12:0] local_C_V_5_address0; -output local_C_V_5_ce0; -input [63:0] local_C_V_5_q0; -output [12:0] local_C_V_5_address1; -output local_C_V_5_ce1; -output local_C_V_5_we1; -output [63:0] local_C_V_5_d1; -output [12:0] local_C_V_4_address0; -output local_C_V_4_ce0; -input [63:0] local_C_V_4_q0; -output [12:0] local_C_V_4_address1; -output local_C_V_4_ce1; -output local_C_V_4_we1; -output [63:0] local_C_V_4_d1; -output [12:0] local_C_V_3_address0; -output local_C_V_3_ce0; -input [63:0] local_C_V_3_q0; -output [12:0] local_C_V_3_address1; -output local_C_V_3_ce1; -output local_C_V_3_we1; -output [63:0] local_C_V_3_d1; -output [12:0] local_C_V_2_address0; -output local_C_V_2_ce0; -input [63:0] local_C_V_2_q0; -output [12:0] local_C_V_2_address1; -output local_C_V_2_ce1; -output local_C_V_2_we1; -output [63:0] local_C_V_2_d1; -output [12:0] local_C_V_1_address0; -output local_C_V_1_ce0; -input [63:0] local_C_V_1_q0; -output [12:0] local_C_V_1_address1; -output local_C_V_1_ce1; -output local_C_V_1_we1; -output [63:0] local_C_V_1_d1; -output [12:0] local_C_V_address0; -output local_C_V_ce0; -input [63:0] local_C_V_q0; -output [12:0] local_C_V_address1; -output local_C_V_ce1; -output local_C_V_we1; -output [63:0] local_C_V_d1; -input [274:0] fifo_aBvec_0_dout; -input fifo_aBvec_0_empty_n; -output fifo_aBvec_0_read; -input [274:0] fifo_aBvec_1_dout; -input fifo_aBvec_1_empty_n; -output fifo_aBvec_1_read; -input [274:0] fifo_aBvec_2_dout; -input fifo_aBvec_2_empty_n; -output fifo_aBvec_2_read; -input [274:0] fifo_aBvec_3_dout; -input fifo_aBvec_3_empty_n; -output fifo_aBvec_3_read; - -reg ap_idle; -reg local_C_V_15_ce0; -reg local_C_V_15_ce1; -reg local_C_V_15_we1; -reg local_C_V_14_ce0; -reg local_C_V_14_ce1; -reg local_C_V_14_we1; -reg local_C_V_13_ce0; -reg local_C_V_13_ce1; -reg local_C_V_13_we1; -reg local_C_V_12_ce0; -reg local_C_V_12_ce1; -reg local_C_V_12_we1; -reg local_C_V_11_ce0; -reg local_C_V_11_ce1; -reg local_C_V_11_we1; -reg local_C_V_10_ce0; -reg local_C_V_10_ce1; -reg local_C_V_10_we1; -reg local_C_V_9_ce0; -reg local_C_V_9_ce1; -reg local_C_V_9_we1; -reg local_C_V_8_ce0; -reg local_C_V_8_ce1; -reg local_C_V_8_we1; -reg local_C_V_7_ce0; -reg local_C_V_7_ce1; -reg local_C_V_7_we1; -reg local_C_V_6_ce0; -reg local_C_V_6_ce1; -reg local_C_V_6_we1; -reg local_C_V_5_ce0; -reg local_C_V_5_ce1; -reg local_C_V_5_we1; -reg local_C_V_4_ce0; -reg local_C_V_4_ce1; -reg local_C_V_4_we1; -reg local_C_V_3_ce0; -reg local_C_V_3_ce1; -reg local_C_V_3_we1; -reg local_C_V_2_ce0; -reg local_C_V_2_ce1; -reg local_C_V_2_we1; -reg local_C_V_1_ce0; -reg local_C_V_1_ce1; -reg local_C_V_1_we1; -reg local_C_V_ce0; -reg local_C_V_ce1; -reg local_C_V_we1; -reg fifo_aBvec_0_read; -reg fifo_aBvec_1_read; -reg fifo_aBvec_2_read; -reg fifo_aBvec_3_read; - -(* fsm_encoding = "none" *) reg [0:0] ap_CS_fsm; -wire ap_CS_fsm_pp0_stage0; -wire ap_enable_reg_pp0_iter0; -reg ap_enable_reg_pp0_iter1; -reg ap_enable_reg_pp0_iter2; -reg ap_enable_reg_pp0_iter3; -reg ap_enable_reg_pp0_iter4; -reg ap_enable_reg_pp0_iter5; -reg ap_enable_reg_pp0_iter6; -reg ap_enable_reg_pp0_iter7; -reg ap_enable_reg_pp0_iter8; -reg ap_enable_reg_pp0_iter9; -reg ap_enable_reg_pp0_iter10; -reg ap_idle_pp0; -wire ap_block_state1_pp0_stage0_iter0; -wire ap_block_state2_pp0_stage0_iter1; -wire ap_block_state3_pp0_stage0_iter2; -wire ap_block_state4_pp0_stage0_iter3; -wire ap_block_state5_pp0_stage0_iter4; -wire ap_block_state6_pp0_stage0_iter5; -wire ap_block_state7_pp0_stage0_iter6; -wire ap_block_state8_pp0_stage0_iter7; -wire ap_block_state9_pp0_stage0_iter8; -wire ap_block_state10_pp0_stage0_iter9; -wire ap_block_state11_pp0_stage0_iter10; -wire ap_block_pp0_stage0_subdone; -wire [0:0] icmp_ln254_fu_610_p2; -reg ap_condition_exit_pp0_iter0_stage0; -wire ap_loop_exit_ready; -reg ap_ready_int; -wire ap_block_pp0_stage0_11001; -wire [0:0] and_ln260_2_fu_628_p2; -reg [0:0] and_ln260_2_reg_1788; -reg [0:0] and_ln260_2_reg_1788_pp0_iter1_reg; -reg [0:0] and_ln260_2_reg_1788_pp0_iter2_reg; -reg [0:0] and_ln260_2_reg_1788_pp0_iter3_reg; -reg [0:0] and_ln260_2_reg_1788_pp0_iter4_reg; -reg [0:0] and_ln260_2_reg_1788_pp0_iter5_reg; -reg [0:0] and_ln260_2_reg_1788_pp0_iter6_reg; -reg [0:0] and_ln260_2_reg_1788_pp0_iter7_reg; -reg [0:0] and_ln260_2_reg_1788_pp0_iter8_reg; -reg [0:0] and_ln260_2_reg_1788_pp0_iter9_reg; -wire [17:0] elem_val_row_V_3_fu_638_p1; -reg [17:0] elem_val_row_V_3_reg_1792; -wire [31:0] elem_val_abvec_M_elems_fu_722_p1; -reg [31:0] elem_val_abvec_M_elems_reg_1797; -reg [31:0] elem_val_abvec_M_elems_reg_1797_pp0_iter1_reg; -reg [31:0] elem_val_abvec_M_elems_reg_1797_pp0_iter2_reg; -wire [31:0] elem_val_abvec_M_elems_1_fu_726_p1; -reg [31:0] elem_val_abvec_M_elems_1_reg_1802; -reg [31:0] elem_val_abvec_M_elems_1_reg_1802_pp0_iter1_reg; -reg [31:0] elem_val_abvec_M_elems_1_reg_1802_pp0_iter2_reg; -wire [31:0] bitcast_ln78_fu_730_p1; -reg [31:0] bitcast_ln78_reg_1807; -reg [31:0] bitcast_ln78_reg_1807_pp0_iter1_reg; -reg [31:0] bitcast_ln78_reg_1807_pp0_iter2_reg; -wire [31:0] bitcast_ln78_1_fu_734_p1; -reg [31:0] bitcast_ln78_1_reg_1812; -reg [31:0] bitcast_ln78_1_reg_1812_pp0_iter1_reg; -reg [31:0] bitcast_ln78_1_reg_1812_pp0_iter2_reg; -wire [31:0] bitcast_ln78_2_fu_738_p1; -reg [31:0] bitcast_ln78_2_reg_1817; -reg [31:0] bitcast_ln78_2_reg_1817_pp0_iter1_reg; -reg [31:0] bitcast_ln78_2_reg_1817_pp0_iter2_reg; -wire [31:0] bitcast_ln78_3_fu_742_p1; -reg [31:0] bitcast_ln78_3_reg_1822; -reg [31:0] bitcast_ln78_3_reg_1822_pp0_iter1_reg; -reg [31:0] bitcast_ln78_3_reg_1822_pp0_iter2_reg; -wire [31:0] bitcast_ln78_4_fu_746_p1; -reg [31:0] bitcast_ln78_4_reg_1827; -reg [31:0] bitcast_ln78_4_reg_1827_pp0_iter1_reg; -reg [31:0] bitcast_ln78_4_reg_1827_pp0_iter2_reg; -wire [31:0] bitcast_ln78_5_fu_750_p1; -reg [31:0] bitcast_ln78_5_reg_1832; -reg [31:0] bitcast_ln78_5_reg_1832_pp0_iter1_reg; -reg [31:0] bitcast_ln78_5_reg_1832_pp0_iter2_reg; -reg [0:0] p_Result_s_reg_1837; -reg [0:0] p_Result_s_reg_1837_pp0_iter1_reg; -reg [0:0] p_Result_s_reg_1837_pp0_iter2_reg; -reg [0:0] p_Result_s_reg_1837_pp0_iter3_reg; -reg [0:0] p_Result_s_reg_1837_pp0_iter4_reg; -reg [0:0] p_Result_s_reg_1837_pp0_iter5_reg; -reg [0:0] p_Result_s_reg_1837_pp0_iter6_reg; -reg [0:0] p_Result_s_reg_1837_pp0_iter7_reg; -reg [0:0] p_Result_s_reg_1837_pp0_iter8_reg; -reg [0:0] p_Result_s_reg_1837_pp0_iter9_reg; -wire [17:0] elem_val_row_V_2_fu_766_p1; -reg [17:0] elem_val_row_V_2_reg_1841; -wire [31:0] elem_val_abvec_M_elems_2_fu_850_p1; -reg [31:0] elem_val_abvec_M_elems_2_reg_1846; -reg [31:0] elem_val_abvec_M_elems_2_reg_1846_pp0_iter1_reg; -reg [31:0] elem_val_abvec_M_elems_2_reg_1846_pp0_iter2_reg; -wire [31:0] elem_val_abvec_M_elems_3_fu_854_p1; -reg [31:0] elem_val_abvec_M_elems_3_reg_1851; -reg [31:0] elem_val_abvec_M_elems_3_reg_1851_pp0_iter1_reg; -reg [31:0] elem_val_abvec_M_elems_3_reg_1851_pp0_iter2_reg; -wire [31:0] bitcast_ln78_8_fu_858_p1; -reg [31:0] bitcast_ln78_8_reg_1856; -reg [31:0] bitcast_ln78_8_reg_1856_pp0_iter1_reg; -reg [31:0] bitcast_ln78_8_reg_1856_pp0_iter2_reg; -wire [31:0] bitcast_ln78_9_fu_862_p1; -reg [31:0] bitcast_ln78_9_reg_1861; -reg [31:0] bitcast_ln78_9_reg_1861_pp0_iter1_reg; -reg [31:0] bitcast_ln78_9_reg_1861_pp0_iter2_reg; -wire [31:0] bitcast_ln78_10_fu_866_p1; -reg [31:0] bitcast_ln78_10_reg_1866; -reg [31:0] bitcast_ln78_10_reg_1866_pp0_iter1_reg; -reg [31:0] bitcast_ln78_10_reg_1866_pp0_iter2_reg; -wire [31:0] bitcast_ln78_11_fu_870_p1; -reg [31:0] bitcast_ln78_11_reg_1871; -reg [31:0] bitcast_ln78_11_reg_1871_pp0_iter1_reg; -reg [31:0] bitcast_ln78_11_reg_1871_pp0_iter2_reg; -wire [31:0] bitcast_ln78_12_fu_874_p1; -reg [31:0] bitcast_ln78_12_reg_1876; -reg [31:0] bitcast_ln78_12_reg_1876_pp0_iter1_reg; -reg [31:0] bitcast_ln78_12_reg_1876_pp0_iter2_reg; -wire [31:0] bitcast_ln78_13_fu_878_p1; -reg [31:0] bitcast_ln78_13_reg_1881; -reg [31:0] bitcast_ln78_13_reg_1881_pp0_iter1_reg; -reg [31:0] bitcast_ln78_13_reg_1881_pp0_iter2_reg; -reg [0:0] p_Result_5_reg_1886; -reg [0:0] p_Result_5_reg_1886_pp0_iter1_reg; -reg [0:0] p_Result_5_reg_1886_pp0_iter2_reg; -reg [0:0] p_Result_5_reg_1886_pp0_iter3_reg; -reg [0:0] p_Result_5_reg_1886_pp0_iter4_reg; -reg [0:0] p_Result_5_reg_1886_pp0_iter5_reg; -reg [0:0] p_Result_5_reg_1886_pp0_iter6_reg; -reg [0:0] p_Result_5_reg_1886_pp0_iter7_reg; -reg [0:0] p_Result_5_reg_1886_pp0_iter8_reg; -reg [0:0] p_Result_5_reg_1886_pp0_iter9_reg; -wire [17:0] elem_val_row_V_1_fu_894_p1; -reg [17:0] elem_val_row_V_1_reg_1890; -wire [31:0] elem_val_abvec_M_elems_4_fu_978_p1; -reg [31:0] elem_val_abvec_M_elems_4_reg_1895; -reg [31:0] elem_val_abvec_M_elems_4_reg_1895_pp0_iter1_reg; -reg [31:0] elem_val_abvec_M_elems_4_reg_1895_pp0_iter2_reg; -wire [31:0] elem_val_abvec_M_elems_5_fu_982_p1; -reg [31:0] elem_val_abvec_M_elems_5_reg_1900; -reg [31:0] elem_val_abvec_M_elems_5_reg_1900_pp0_iter1_reg; -reg [31:0] elem_val_abvec_M_elems_5_reg_1900_pp0_iter2_reg; -wire [31:0] bitcast_ln78_16_fu_986_p1; -reg [31:0] bitcast_ln78_16_reg_1905; -reg [31:0] bitcast_ln78_16_reg_1905_pp0_iter1_reg; -reg [31:0] bitcast_ln78_16_reg_1905_pp0_iter2_reg; -wire [31:0] bitcast_ln78_17_fu_990_p1; -reg [31:0] bitcast_ln78_17_reg_1910; -reg [31:0] bitcast_ln78_17_reg_1910_pp0_iter1_reg; -reg [31:0] bitcast_ln78_17_reg_1910_pp0_iter2_reg; -wire [31:0] bitcast_ln78_18_fu_994_p1; -reg [31:0] bitcast_ln78_18_reg_1915; -reg [31:0] bitcast_ln78_18_reg_1915_pp0_iter1_reg; -reg [31:0] bitcast_ln78_18_reg_1915_pp0_iter2_reg; -wire [31:0] bitcast_ln78_19_fu_998_p1; -reg [31:0] bitcast_ln78_19_reg_1920; -reg [31:0] bitcast_ln78_19_reg_1920_pp0_iter1_reg; -reg [31:0] bitcast_ln78_19_reg_1920_pp0_iter2_reg; -wire [31:0] bitcast_ln78_20_fu_1002_p1; -reg [31:0] bitcast_ln78_20_reg_1925; -reg [31:0] bitcast_ln78_20_reg_1925_pp0_iter1_reg; -reg [31:0] bitcast_ln78_20_reg_1925_pp0_iter2_reg; -wire [31:0] bitcast_ln78_21_fu_1006_p1; -reg [31:0] bitcast_ln78_21_reg_1930; -reg [31:0] bitcast_ln78_21_reg_1930_pp0_iter1_reg; -reg [31:0] bitcast_ln78_21_reg_1930_pp0_iter2_reg; -reg [0:0] p_Result_10_reg_1935; -reg [0:0] p_Result_10_reg_1935_pp0_iter1_reg; -reg [0:0] p_Result_10_reg_1935_pp0_iter2_reg; -reg [0:0] p_Result_10_reg_1935_pp0_iter3_reg; -reg [0:0] p_Result_10_reg_1935_pp0_iter4_reg; -reg [0:0] p_Result_10_reg_1935_pp0_iter5_reg; -reg [0:0] p_Result_10_reg_1935_pp0_iter6_reg; -reg [0:0] p_Result_10_reg_1935_pp0_iter7_reg; -reg [0:0] p_Result_10_reg_1935_pp0_iter8_reg; -reg [0:0] p_Result_10_reg_1935_pp0_iter9_reg; -wire [17:0] elem_val_row_V_fu_1022_p1; -reg [17:0] elem_val_row_V_reg_1939; -wire [31:0] elem_val_abvec_M_elems_6_fu_1106_p1; -reg [31:0] elem_val_abvec_M_elems_6_reg_1944; -reg [31:0] elem_val_abvec_M_elems_6_reg_1944_pp0_iter1_reg; -reg [31:0] elem_val_abvec_M_elems_6_reg_1944_pp0_iter2_reg; -wire [31:0] elem_val_abvec_M_elems_7_fu_1110_p1; -reg [31:0] elem_val_abvec_M_elems_7_reg_1949; -reg [31:0] elem_val_abvec_M_elems_7_reg_1949_pp0_iter1_reg; -reg [31:0] elem_val_abvec_M_elems_7_reg_1949_pp0_iter2_reg; -wire [31:0] bitcast_ln78_24_fu_1114_p1; -reg [31:0] bitcast_ln78_24_reg_1954; -reg [31:0] bitcast_ln78_24_reg_1954_pp0_iter1_reg; -reg [31:0] bitcast_ln78_24_reg_1954_pp0_iter2_reg; -wire [31:0] bitcast_ln78_25_fu_1118_p1; -reg [31:0] bitcast_ln78_25_reg_1959; -reg [31:0] bitcast_ln78_25_reg_1959_pp0_iter1_reg; -reg [31:0] bitcast_ln78_25_reg_1959_pp0_iter2_reg; -wire [31:0] bitcast_ln78_26_fu_1122_p1; -reg [31:0] bitcast_ln78_26_reg_1964; -reg [31:0] bitcast_ln78_26_reg_1964_pp0_iter1_reg; -reg [31:0] bitcast_ln78_26_reg_1964_pp0_iter2_reg; -wire [31:0] bitcast_ln78_27_fu_1126_p1; -reg [31:0] bitcast_ln78_27_reg_1969; -reg [31:0] bitcast_ln78_27_reg_1969_pp0_iter1_reg; -reg [31:0] bitcast_ln78_27_reg_1969_pp0_iter2_reg; -wire [31:0] bitcast_ln78_28_fu_1130_p1; -reg [31:0] bitcast_ln78_28_reg_1974; -reg [31:0] bitcast_ln78_28_reg_1974_pp0_iter1_reg; -reg [31:0] bitcast_ln78_28_reg_1974_pp0_iter2_reg; -wire [31:0] bitcast_ln78_29_fu_1134_p1; -reg [31:0] bitcast_ln78_29_reg_1979; -reg [31:0] bitcast_ln78_29_reg_1979_pp0_iter1_reg; -reg [31:0] bitcast_ln78_29_reg_1979_pp0_iter2_reg; -reg [0:0] p_Result_15_reg_1984; -reg [0:0] p_Result_15_reg_1984_pp0_iter1_reg; -reg [0:0] p_Result_15_reg_1984_pp0_iter2_reg; -reg [0:0] p_Result_15_reg_1984_pp0_iter3_reg; -reg [0:0] p_Result_15_reg_1984_pp0_iter4_reg; -reg [0:0] p_Result_15_reg_1984_pp0_iter5_reg; -reg [0:0] p_Result_15_reg_1984_pp0_iter6_reg; -reg [0:0] p_Result_15_reg_1984_pp0_iter7_reg; -reg [0:0] p_Result_15_reg_1984_pp0_iter8_reg; -reg [0:0] p_Result_15_reg_1984_pp0_iter9_reg; -reg [12:0] local_C_V_addr_reg_1988; -reg [12:0] local_C_V_addr_reg_1988_pp0_iter2_reg; -reg [12:0] local_C_V_addr_reg_1988_pp0_iter3_reg; -reg [12:0] local_C_V_addr_reg_1988_pp0_iter4_reg; -reg [12:0] local_C_V_addr_reg_1988_pp0_iter5_reg; -reg [12:0] local_C_V_addr_reg_1988_pp0_iter6_reg; -reg [12:0] local_C_V_addr_reg_1988_pp0_iter7_reg; -reg [12:0] local_C_V_addr_reg_1988_pp0_iter8_reg; -reg [12:0] local_C_V_addr_reg_1988_pp0_iter9_reg; -reg [12:0] local_C_V_1_addr_reg_1994; -reg [12:0] local_C_V_1_addr_reg_1994_pp0_iter2_reg; -reg [12:0] local_C_V_1_addr_reg_1994_pp0_iter3_reg; -reg [12:0] local_C_V_1_addr_reg_1994_pp0_iter4_reg; -reg [12:0] local_C_V_1_addr_reg_1994_pp0_iter5_reg; -reg [12:0] local_C_V_1_addr_reg_1994_pp0_iter6_reg; -reg [12:0] local_C_V_1_addr_reg_1994_pp0_iter7_reg; -reg [12:0] local_C_V_1_addr_reg_1994_pp0_iter8_reg; -reg [12:0] local_C_V_1_addr_reg_1994_pp0_iter9_reg; -reg [12:0] local_C_V_2_addr_reg_2000; -reg [12:0] local_C_V_2_addr_reg_2000_pp0_iter2_reg; -reg [12:0] local_C_V_2_addr_reg_2000_pp0_iter3_reg; -reg [12:0] local_C_V_2_addr_reg_2000_pp0_iter4_reg; -reg [12:0] local_C_V_2_addr_reg_2000_pp0_iter5_reg; -reg [12:0] local_C_V_2_addr_reg_2000_pp0_iter6_reg; -reg [12:0] local_C_V_2_addr_reg_2000_pp0_iter7_reg; -reg [12:0] local_C_V_2_addr_reg_2000_pp0_iter8_reg; -reg [12:0] local_C_V_2_addr_reg_2000_pp0_iter9_reg; -reg [12:0] local_C_V_3_addr_reg_2006; -reg [12:0] local_C_V_3_addr_reg_2006_pp0_iter2_reg; -reg [12:0] local_C_V_3_addr_reg_2006_pp0_iter3_reg; -reg [12:0] local_C_V_3_addr_reg_2006_pp0_iter4_reg; -reg [12:0] local_C_V_3_addr_reg_2006_pp0_iter5_reg; -reg [12:0] local_C_V_3_addr_reg_2006_pp0_iter6_reg; -reg [12:0] local_C_V_3_addr_reg_2006_pp0_iter7_reg; -reg [12:0] local_C_V_3_addr_reg_2006_pp0_iter8_reg; -reg [12:0] local_C_V_3_addr_reg_2006_pp0_iter9_reg; -reg [12:0] local_C_V_4_addr_reg_2012; -reg [12:0] local_C_V_4_addr_reg_2012_pp0_iter2_reg; -reg [12:0] local_C_V_4_addr_reg_2012_pp0_iter3_reg; -reg [12:0] local_C_V_4_addr_reg_2012_pp0_iter4_reg; -reg [12:0] local_C_V_4_addr_reg_2012_pp0_iter5_reg; -reg [12:0] local_C_V_4_addr_reg_2012_pp0_iter6_reg; -reg [12:0] local_C_V_4_addr_reg_2012_pp0_iter7_reg; -reg [12:0] local_C_V_4_addr_reg_2012_pp0_iter8_reg; -reg [12:0] local_C_V_4_addr_reg_2012_pp0_iter9_reg; -reg [12:0] local_C_V_5_addr_reg_2018; -reg [12:0] local_C_V_5_addr_reg_2018_pp0_iter2_reg; -reg [12:0] local_C_V_5_addr_reg_2018_pp0_iter3_reg; -reg [12:0] local_C_V_5_addr_reg_2018_pp0_iter4_reg; -reg [12:0] local_C_V_5_addr_reg_2018_pp0_iter5_reg; -reg [12:0] local_C_V_5_addr_reg_2018_pp0_iter6_reg; -reg [12:0] local_C_V_5_addr_reg_2018_pp0_iter7_reg; -reg [12:0] local_C_V_5_addr_reg_2018_pp0_iter8_reg; -reg [12:0] local_C_V_5_addr_reg_2018_pp0_iter9_reg; -reg [12:0] local_C_V_6_addr_reg_2024; -reg [12:0] local_C_V_6_addr_reg_2024_pp0_iter2_reg; -reg [12:0] local_C_V_6_addr_reg_2024_pp0_iter3_reg; -reg [12:0] local_C_V_6_addr_reg_2024_pp0_iter4_reg; -reg [12:0] local_C_V_6_addr_reg_2024_pp0_iter5_reg; -reg [12:0] local_C_V_6_addr_reg_2024_pp0_iter6_reg; -reg [12:0] local_C_V_6_addr_reg_2024_pp0_iter7_reg; -reg [12:0] local_C_V_6_addr_reg_2024_pp0_iter8_reg; -reg [12:0] local_C_V_6_addr_reg_2024_pp0_iter9_reg; -reg [12:0] local_C_V_7_addr_reg_2030; -reg [12:0] local_C_V_7_addr_reg_2030_pp0_iter2_reg; -reg [12:0] local_C_V_7_addr_reg_2030_pp0_iter3_reg; -reg [12:0] local_C_V_7_addr_reg_2030_pp0_iter4_reg; -reg [12:0] local_C_V_7_addr_reg_2030_pp0_iter5_reg; -reg [12:0] local_C_V_7_addr_reg_2030_pp0_iter6_reg; -reg [12:0] local_C_V_7_addr_reg_2030_pp0_iter7_reg; -reg [12:0] local_C_V_7_addr_reg_2030_pp0_iter8_reg; -reg [12:0] local_C_V_7_addr_reg_2030_pp0_iter9_reg; -reg [12:0] local_C_V_8_addr_reg_2036; -reg [12:0] local_C_V_8_addr_reg_2036_pp0_iter2_reg; -reg [12:0] local_C_V_8_addr_reg_2036_pp0_iter3_reg; -reg [12:0] local_C_V_8_addr_reg_2036_pp0_iter4_reg; -reg [12:0] local_C_V_8_addr_reg_2036_pp0_iter5_reg; -reg [12:0] local_C_V_8_addr_reg_2036_pp0_iter6_reg; -reg [12:0] local_C_V_8_addr_reg_2036_pp0_iter7_reg; -reg [12:0] local_C_V_8_addr_reg_2036_pp0_iter8_reg; -reg [12:0] local_C_V_8_addr_reg_2036_pp0_iter9_reg; -reg [12:0] local_C_V_9_addr_reg_2042; -reg [12:0] local_C_V_9_addr_reg_2042_pp0_iter2_reg; -reg [12:0] local_C_V_9_addr_reg_2042_pp0_iter3_reg; -reg [12:0] local_C_V_9_addr_reg_2042_pp0_iter4_reg; -reg [12:0] local_C_V_9_addr_reg_2042_pp0_iter5_reg; -reg [12:0] local_C_V_9_addr_reg_2042_pp0_iter6_reg; -reg [12:0] local_C_V_9_addr_reg_2042_pp0_iter7_reg; -reg [12:0] local_C_V_9_addr_reg_2042_pp0_iter8_reg; -reg [12:0] local_C_V_9_addr_reg_2042_pp0_iter9_reg; -reg [12:0] local_C_V_10_addr_reg_2048; -reg [12:0] local_C_V_10_addr_reg_2048_pp0_iter2_reg; -reg [12:0] local_C_V_10_addr_reg_2048_pp0_iter3_reg; -reg [12:0] local_C_V_10_addr_reg_2048_pp0_iter4_reg; -reg [12:0] local_C_V_10_addr_reg_2048_pp0_iter5_reg; -reg [12:0] local_C_V_10_addr_reg_2048_pp0_iter6_reg; -reg [12:0] local_C_V_10_addr_reg_2048_pp0_iter7_reg; -reg [12:0] local_C_V_10_addr_reg_2048_pp0_iter8_reg; -reg [12:0] local_C_V_10_addr_reg_2048_pp0_iter9_reg; -reg [12:0] local_C_V_11_addr_reg_2054; -reg [12:0] local_C_V_11_addr_reg_2054_pp0_iter2_reg; -reg [12:0] local_C_V_11_addr_reg_2054_pp0_iter3_reg; -reg [12:0] local_C_V_11_addr_reg_2054_pp0_iter4_reg; -reg [12:0] local_C_V_11_addr_reg_2054_pp0_iter5_reg; -reg [12:0] local_C_V_11_addr_reg_2054_pp0_iter6_reg; -reg [12:0] local_C_V_11_addr_reg_2054_pp0_iter7_reg; -reg [12:0] local_C_V_11_addr_reg_2054_pp0_iter8_reg; -reg [12:0] local_C_V_11_addr_reg_2054_pp0_iter9_reg; -reg [12:0] local_C_V_12_addr_reg_2060; -reg [12:0] local_C_V_12_addr_reg_2060_pp0_iter2_reg; -reg [12:0] local_C_V_12_addr_reg_2060_pp0_iter3_reg; -reg [12:0] local_C_V_12_addr_reg_2060_pp0_iter4_reg; -reg [12:0] local_C_V_12_addr_reg_2060_pp0_iter5_reg; -reg [12:0] local_C_V_12_addr_reg_2060_pp0_iter6_reg; -reg [12:0] local_C_V_12_addr_reg_2060_pp0_iter7_reg; -reg [12:0] local_C_V_12_addr_reg_2060_pp0_iter8_reg; -reg [12:0] local_C_V_12_addr_reg_2060_pp0_iter9_reg; -reg [12:0] local_C_V_13_addr_reg_2066; -reg [12:0] local_C_V_13_addr_reg_2066_pp0_iter2_reg; -reg [12:0] local_C_V_13_addr_reg_2066_pp0_iter3_reg; -reg [12:0] local_C_V_13_addr_reg_2066_pp0_iter4_reg; -reg [12:0] local_C_V_13_addr_reg_2066_pp0_iter5_reg; -reg [12:0] local_C_V_13_addr_reg_2066_pp0_iter6_reg; -reg [12:0] local_C_V_13_addr_reg_2066_pp0_iter7_reg; -reg [12:0] local_C_V_13_addr_reg_2066_pp0_iter8_reg; -reg [12:0] local_C_V_13_addr_reg_2066_pp0_iter9_reg; -reg [12:0] local_C_V_14_addr_reg_2072; -reg [12:0] local_C_V_14_addr_reg_2072_pp0_iter2_reg; -reg [12:0] local_C_V_14_addr_reg_2072_pp0_iter3_reg; -reg [12:0] local_C_V_14_addr_reg_2072_pp0_iter4_reg; -reg [12:0] local_C_V_14_addr_reg_2072_pp0_iter5_reg; -reg [12:0] local_C_V_14_addr_reg_2072_pp0_iter6_reg; -reg [12:0] local_C_V_14_addr_reg_2072_pp0_iter7_reg; -reg [12:0] local_C_V_14_addr_reg_2072_pp0_iter8_reg; -reg [12:0] local_C_V_14_addr_reg_2072_pp0_iter9_reg; -reg [12:0] local_C_V_15_addr_reg_2078; -reg [12:0] local_C_V_15_addr_reg_2078_pp0_iter2_reg; -reg [12:0] local_C_V_15_addr_reg_2078_pp0_iter3_reg; -reg [12:0] local_C_V_15_addr_reg_2078_pp0_iter4_reg; -reg [12:0] local_C_V_15_addr_reg_2078_pp0_iter5_reg; -reg [12:0] local_C_V_15_addr_reg_2078_pp0_iter6_reg; -reg [12:0] local_C_V_15_addr_reg_2078_pp0_iter7_reg; -reg [12:0] local_C_V_15_addr_reg_2078_pp0_iter8_reg; -reg [12:0] local_C_V_15_addr_reg_2078_pp0_iter9_reg; -wire [31:0] c_val_d0_u_V_fu_1185_p1; -reg [31:0] c_val_d0_u_V_reg_2084; -reg [31:0] c_val_d1_u_V_reg_2089; -wire [31:0] c_val_d0_u_V_1_fu_1199_p1; -reg [31:0] c_val_d0_u_V_1_reg_2094; -reg [31:0] c_val_d1_u_V_1_reg_2099; -wire [31:0] c_val_d0_u_V_2_fu_1213_p1; -reg [31:0] c_val_d0_u_V_2_reg_2104; -reg [31:0] c_val_d1_u_V_2_reg_2109; -wire [31:0] c_val_d0_u_V_3_fu_1227_p1; -reg [31:0] c_val_d0_u_V_3_reg_2114; -reg [31:0] c_val_d1_u_V_3_reg_2119; -wire [31:0] c_val_d0_u_V_4_fu_1241_p1; -reg [31:0] c_val_d0_u_V_4_reg_2124; -reg [31:0] c_val_d1_u_V_4_reg_2129; -wire [31:0] c_val_d0_u_V_5_fu_1255_p1; -reg [31:0] c_val_d0_u_V_5_reg_2134; -reg [31:0] c_val_d1_u_V_5_reg_2139; -wire [31:0] c_val_d0_u_V_6_fu_1269_p1; -reg [31:0] c_val_d0_u_V_6_reg_2144; -reg [31:0] c_val_d1_u_V_6_reg_2149; -wire [31:0] c_val_d0_u_V_7_fu_1283_p1; -reg [31:0] c_val_d0_u_V_7_reg_2154; -reg [31:0] c_val_d1_u_V_7_reg_2159; -wire [31:0] c_val_d0_u_V_8_fu_1297_p1; -reg [31:0] c_val_d0_u_V_8_reg_2164; -reg [31:0] c_val_d1_u_V_8_reg_2169; -wire [31:0] c_val_d0_u_V_9_fu_1311_p1; -reg [31:0] c_val_d0_u_V_9_reg_2174; -reg [31:0] c_val_d1_u_V_9_reg_2179; -wire [31:0] c_val_d0_u_V_10_fu_1325_p1; -reg [31:0] c_val_d0_u_V_10_reg_2184; -reg [31:0] c_val_d1_u_V_10_reg_2189; -wire [31:0] c_val_d0_u_V_11_fu_1339_p1; -reg [31:0] c_val_d0_u_V_11_reg_2194; -reg [31:0] c_val_d1_u_V_11_reg_2199; -wire [31:0] c_val_d0_u_V_12_fu_1353_p1; -reg [31:0] c_val_d0_u_V_12_reg_2204; -reg [31:0] c_val_d1_u_V_12_reg_2209; -wire [31:0] c_val_d0_u_V_13_fu_1367_p1; -reg [31:0] c_val_d0_u_V_13_reg_2214; -reg [31:0] c_val_d1_u_V_13_reg_2219; -wire [31:0] c_val_d0_u_V_14_fu_1381_p1; -reg [31:0] c_val_d0_u_V_14_reg_2224; -reg [31:0] c_val_d1_u_V_14_reg_2229; -wire [31:0] c_val_d0_u_V_15_fu_1395_p1; -reg [31:0] c_val_d0_u_V_15_reg_2234; -reg [31:0] c_val_d1_u_V_15_reg_2239; -wire [31:0] grp_fu_474_p2; -reg [31:0] c_val_d0_f_reg_2404; -wire [31:0] grp_fu_478_p2; -reg [31:0] c_val_d1_f_reg_2409; -wire [31:0] grp_fu_482_p2; -reg [31:0] c_val_d0_f_1_reg_2414; -wire [31:0] grp_fu_486_p2; -reg [31:0] c_val_d1_f_1_reg_2419; -wire [31:0] grp_fu_490_p2; -reg [31:0] c_val_d0_f_2_reg_2424; -wire [31:0] grp_fu_494_p2; -reg [31:0] c_val_d1_f_2_reg_2429; -wire [31:0] grp_fu_498_p2; -reg [31:0] c_val_d0_f_3_reg_2434; -wire [31:0] grp_fu_502_p2; -reg [31:0] c_val_d1_f_3_reg_2439; -wire [31:0] grp_fu_506_p2; -reg [31:0] c_val_d0_f_4_reg_2444; -wire [31:0] grp_fu_510_p2; -reg [31:0] c_val_d1_f_4_reg_2449; -wire [31:0] grp_fu_514_p2; -reg [31:0] c_val_d0_f_5_reg_2454; -wire [31:0] grp_fu_518_p2; -reg [31:0] c_val_d1_f_5_reg_2459; -wire [31:0] grp_fu_522_p2; -reg [31:0] c_val_d0_f_6_reg_2464; -wire [31:0] grp_fu_526_p2; -reg [31:0] c_val_d1_f_6_reg_2469; -wire [31:0] grp_fu_530_p2; -reg [31:0] c_val_d0_f_7_reg_2474; -wire [31:0] grp_fu_534_p2; -reg [31:0] c_val_d1_f_7_reg_2479; -wire [31:0] grp_fu_538_p2; -reg [31:0] c_val_d0_f_8_reg_2484; -wire [31:0] grp_fu_542_p2; -reg [31:0] c_val_d1_f_8_reg_2489; -wire [31:0] grp_fu_546_p2; -reg [31:0] c_val_d0_f_9_reg_2494; -wire [31:0] grp_fu_550_p2; -reg [31:0] c_val_d1_f_9_reg_2499; -wire [31:0] grp_fu_554_p2; -reg [31:0] c_val_d0_f_10_reg_2504; -wire [31:0] grp_fu_558_p2; -reg [31:0] c_val_d1_f_10_reg_2509; -wire [31:0] grp_fu_562_p2; -reg [31:0] c_val_d0_f_11_reg_2514; -wire [31:0] grp_fu_566_p2; -reg [31:0] c_val_d1_f_11_reg_2519; -wire [31:0] grp_fu_570_p2; -reg [31:0] c_val_d0_f_12_reg_2524; -wire [31:0] grp_fu_574_p2; -reg [31:0] c_val_d1_f_12_reg_2529; -wire [31:0] grp_fu_578_p2; -reg [31:0] c_val_d0_f_13_reg_2534; -wire [31:0] grp_fu_582_p2; -reg [31:0] c_val_d1_f_13_reg_2539; -wire [31:0] grp_fu_586_p2; -reg [31:0] c_val_d0_f_14_reg_2544; -wire [31:0] grp_fu_590_p2; -reg [31:0] c_val_d1_f_14_reg_2549; -wire [31:0] grp_fu_594_p2; -reg [31:0] c_val_d0_f_15_reg_2554; -wire [31:0] grp_fu_598_p2; -reg [31:0] c_val_d1_f_15_reg_2559; -wire [63:0] conv_i_i_i_fu_1157_p1; -wire ap_block_pp0_stage0; -wire [63:0] conv_i_i_i_1_fu_1164_p1; -wire [63:0] conv_i_i_i_2_fu_1171_p1; -wire [63:0] conv_i_i_i_3_fu_1178_p1; -reg [31:0] j_fu_130; -wire [31:0] j_2_fu_1146_p2; -wire ap_loop_init; -reg [31:0] ap_sig_allocacmp_j_1; -wire [0:0] tmp_nbreadreq_fu_146_p3; -wire [0:0] tmp_1_nbreadreq_fu_154_p3; -wire [0:0] tmp_2_nbreadreq_fu_162_p3; -wire [0:0] tmp_3_nbreadreq_fu_170_p3; -wire [31:0] grp_fu_474_p0; -wire [31:0] grp_fu_478_p0; -wire [31:0] grp_fu_482_p0; -wire [31:0] grp_fu_486_p0; -wire [31:0] grp_fu_490_p0; -wire [31:0] grp_fu_494_p0; -wire [31:0] grp_fu_498_p0; -wire [31:0] grp_fu_502_p0; -wire [31:0] grp_fu_506_p0; -wire [31:0] grp_fu_510_p0; -wire [31:0] grp_fu_514_p0; -wire [31:0] grp_fu_518_p0; -wire [31:0] grp_fu_522_p0; -wire [31:0] grp_fu_526_p0; -wire [31:0] grp_fu_530_p0; -wire [31:0] grp_fu_534_p0; -wire [31:0] grp_fu_538_p0; -wire [31:0] grp_fu_542_p0; -wire [31:0] grp_fu_546_p0; -wire [31:0] grp_fu_550_p0; -wire [31:0] grp_fu_554_p0; -wire [31:0] grp_fu_558_p0; -wire [31:0] grp_fu_562_p0; -wire [31:0] grp_fu_566_p0; -wire [31:0] grp_fu_570_p0; -wire [31:0] grp_fu_574_p0; -wire [31:0] grp_fu_578_p0; -wire [31:0] grp_fu_582_p0; -wire [31:0] grp_fu_586_p0; -wire [31:0] grp_fu_590_p0; -wire [31:0] grp_fu_594_p0; -wire [31:0] grp_fu_598_p0; -wire [0:0] and_ln260_1_fu_616_p2; -wire [0:0] and_ln260_fu_622_p2; -wire [31:0] trunc_ln2_fu_642_p4; -wire [31:0] trunc_ln78_1_fu_652_p4; -wire [31:0] trunc_ln78_2_fu_662_p4; -wire [31:0] trunc_ln78_3_fu_672_p4; -wire [31:0] trunc_ln78_4_fu_682_p4; -wire [31:0] trunc_ln78_5_fu_692_p4; -wire [31:0] trunc_ln78_6_fu_702_p4; -wire [31:0] trunc_ln78_7_fu_712_p4; -wire [31:0] trunc_ln78_8_fu_770_p4; -wire [31:0] trunc_ln78_9_fu_780_p4; -wire [31:0] trunc_ln78_s_fu_790_p4; -wire [31:0] trunc_ln78_10_fu_800_p4; -wire [31:0] trunc_ln78_11_fu_810_p4; -wire [31:0] trunc_ln78_12_fu_820_p4; -wire [31:0] trunc_ln78_13_fu_830_p4; -wire [31:0] trunc_ln78_14_fu_840_p4; -wire [31:0] trunc_ln78_15_fu_898_p4; -wire [31:0] trunc_ln78_16_fu_908_p4; -wire [31:0] trunc_ln78_17_fu_918_p4; -wire [31:0] trunc_ln78_18_fu_928_p4; -wire [31:0] trunc_ln78_19_fu_938_p4; -wire [31:0] trunc_ln78_20_fu_948_p4; -wire [31:0] trunc_ln78_21_fu_958_p4; -wire [31:0] trunc_ln78_22_fu_968_p4; -wire [31:0] trunc_ln78_23_fu_1026_p4; -wire [31:0] trunc_ln78_24_fu_1036_p4; -wire [31:0] trunc_ln78_25_fu_1046_p4; -wire [31:0] trunc_ln78_26_fu_1056_p4; -wire [31:0] trunc_ln78_27_fu_1066_p4; -wire [31:0] trunc_ln78_28_fu_1076_p4; -wire [31:0] trunc_ln78_29_fu_1086_p4; -wire [31:0] trunc_ln78_30_fu_1096_p4; -wire [31:0] empty_60_fu_1540_p1; -wire [31:0] empty_59_fu_1537_p1; -wire [31:0] empty_64_fu_1555_p1; -wire [31:0] empty_63_fu_1552_p1; -wire [31:0] empty_68_fu_1570_p1; -wire [31:0] empty_67_fu_1567_p1; -wire [31:0] empty_72_fu_1585_p1; -wire [31:0] empty_71_fu_1582_p1; -wire [31:0] empty_76_fu_1600_p1; -wire [31:0] empty_75_fu_1597_p1; -wire [31:0] empty_80_fu_1615_p1; -wire [31:0] empty_79_fu_1612_p1; -wire [31:0] empty_84_fu_1630_p1; -wire [31:0] empty_83_fu_1627_p1; -wire [31:0] empty_88_fu_1645_p1; -wire [31:0] empty_87_fu_1642_p1; -wire [31:0] empty_92_fu_1660_p1; -wire [31:0] empty_91_fu_1657_p1; -wire [31:0] empty_96_fu_1675_p1; -wire [31:0] empty_95_fu_1672_p1; -wire [31:0] empty_100_fu_1690_p1; -wire [31:0] empty_99_fu_1687_p1; -wire [31:0] empty_104_fu_1705_p1; -wire [31:0] empty_103_fu_1702_p1; -wire [31:0] empty_108_fu_1720_p1; -wire [31:0] empty_107_fu_1717_p1; -wire [31:0] empty_112_fu_1735_p1; -wire [31:0] empty_111_fu_1732_p1; -wire [31:0] empty_116_fu_1750_p1; -wire [31:0] empty_115_fu_1747_p1; -wire [31:0] empty_120_fu_1765_p1; -wire [31:0] empty_119_fu_1762_p1; -reg ap_done_reg; -wire ap_continue_int; -reg ap_done_int; -reg ap_loop_exit_ready_pp0_iter1_reg; -reg ap_loop_exit_ready_pp0_iter2_reg; -reg ap_loop_exit_ready_pp0_iter3_reg; -reg ap_loop_exit_ready_pp0_iter4_reg; -reg ap_loop_exit_ready_pp0_iter5_reg; -reg ap_loop_exit_ready_pp0_iter6_reg; -reg ap_loop_exit_ready_pp0_iter7_reg; -reg ap_loop_exit_ready_pp0_iter8_reg; -reg ap_loop_exit_ready_pp0_iter9_reg; -reg [0:0] ap_NS_fsm; -reg ap_block_pp0; -reg ap_predicate_op143_load_state2; -reg ap_enable_operation_143; -reg ap_enable_state2_pp0_iter1_stage0; -reg ap_predicate_op177_load_state3; -reg ap_enable_operation_177; -reg ap_enable_state3_pp0_iter2_stage0; -reg ap_predicate_op484_store_state11; -reg ap_enable_operation_484; -reg ap_enable_state11_pp0_iter10_stage0; -reg ap_predicate_op145_load_state2; -reg ap_enable_operation_145; -reg ap_predicate_op180_load_state3; -reg ap_enable_operation_180; -reg ap_predicate_op488_store_state11; -reg ap_enable_operation_488; -reg ap_predicate_op147_load_state2; -reg ap_enable_operation_147; -reg ap_predicate_op183_load_state3; -reg ap_enable_operation_183; -reg ap_predicate_op492_store_state11; -reg ap_enable_operation_492; -reg ap_predicate_op149_load_state2; -reg ap_enable_operation_149; -reg ap_predicate_op186_load_state3; -reg ap_enable_operation_186; -reg ap_predicate_op496_store_state11; -reg ap_enable_operation_496; -reg ap_predicate_op152_load_state2; -reg ap_enable_operation_152; -reg ap_predicate_op189_load_state3; -reg ap_enable_operation_189; -reg ap_predicate_op501_store_state11; -reg ap_enable_operation_501; -reg ap_predicate_op154_load_state2; -reg ap_enable_operation_154; -reg ap_predicate_op192_load_state3; -reg ap_enable_operation_192; -reg ap_predicate_op505_store_state11; -reg ap_enable_operation_505; -reg ap_predicate_op156_load_state2; -reg ap_enable_operation_156; -reg ap_predicate_op195_load_state3; -reg ap_enable_operation_195; -reg ap_predicate_op509_store_state11; -reg ap_enable_operation_509; -reg ap_predicate_op158_load_state2; -reg ap_enable_operation_158; -reg ap_predicate_op198_load_state3; -reg ap_enable_operation_198; -reg ap_predicate_op513_store_state11; -reg ap_enable_operation_513; -reg ap_predicate_op161_load_state2; -reg ap_enable_operation_161; -reg ap_predicate_op201_load_state3; -reg ap_enable_operation_201; -reg ap_predicate_op518_store_state11; -reg ap_enable_operation_518; -reg ap_predicate_op163_load_state2; -reg ap_enable_operation_163; -reg ap_predicate_op204_load_state3; -reg ap_enable_operation_204; -reg ap_predicate_op522_store_state11; -reg ap_enable_operation_522; -reg ap_predicate_op165_load_state2; -reg ap_enable_operation_165; -reg ap_predicate_op207_load_state3; -reg ap_enable_operation_207; -reg ap_predicate_op526_store_state11; -reg ap_enable_operation_526; -reg ap_predicate_op167_load_state2; -reg ap_enable_operation_167; -reg ap_predicate_op210_load_state3; -reg ap_enable_operation_210; -reg ap_predicate_op530_store_state11; -reg ap_enable_operation_530; -reg ap_predicate_op170_load_state2; -reg ap_enable_operation_170; -reg ap_predicate_op213_load_state3; -reg ap_enable_operation_213; -reg ap_predicate_op535_store_state11; -reg ap_enable_operation_535; -reg ap_predicate_op172_load_state2; -reg ap_enable_operation_172; -reg ap_predicate_op216_load_state3; -reg ap_enable_operation_216; -reg ap_predicate_op539_store_state11; -reg ap_enable_operation_539; -reg ap_predicate_op174_load_state2; -reg ap_enable_operation_174; -reg ap_predicate_op219_load_state3; -reg ap_enable_operation_219; -reg ap_predicate_op543_store_state11; -reg ap_enable_operation_543; -reg ap_predicate_op176_load_state2; -reg ap_enable_operation_176; -reg ap_predicate_op222_load_state3; -reg ap_enable_operation_222; -reg ap_predicate_op547_store_state11; -reg ap_enable_operation_547; -wire ap_enable_pp0; -wire ap_start_int; -reg ap_condition_2344; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 1'd1; -#0 ap_enable_reg_pp0_iter1 = 1'b0; -#0 ap_enable_reg_pp0_iter2 = 1'b0; -#0 ap_enable_reg_pp0_iter3 = 1'b0; -#0 ap_enable_reg_pp0_iter4 = 1'b0; -#0 ap_enable_reg_pp0_iter5 = 1'b0; -#0 ap_enable_reg_pp0_iter6 = 1'b0; -#0 ap_enable_reg_pp0_iter7 = 1'b0; -#0 ap_enable_reg_pp0_iter8 = 1'b0; -#0 ap_enable_reg_pp0_iter9 = 1'b0; -#0 ap_enable_reg_pp0_iter10 = 1'b0; -#0 ap_done_reg = 1'b0; -end - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U18( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_474_p0), - .din1(elem_val_abvec_M_elems_reg_1797_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_474_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U19( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_478_p0), - .din1(elem_val_abvec_M_elems_1_reg_1802_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_478_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U20( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_482_p0), - .din1(bitcast_ln78_reg_1807_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_482_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U21( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_486_p0), - .din1(bitcast_ln78_1_reg_1812_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_486_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U22( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_490_p0), - .din1(bitcast_ln78_2_reg_1817_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_490_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U23( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_494_p0), - .din1(bitcast_ln78_3_reg_1822_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_494_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U24( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_498_p0), - .din1(bitcast_ln78_4_reg_1827_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_498_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U25( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_502_p0), - .din1(bitcast_ln78_5_reg_1832_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_502_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U26( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_506_p0), - .din1(elem_val_abvec_M_elems_2_reg_1846_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_506_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U27( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_510_p0), - .din1(elem_val_abvec_M_elems_3_reg_1851_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_510_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U28( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_514_p0), - .din1(bitcast_ln78_8_reg_1856_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_514_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U29( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_518_p0), - .din1(bitcast_ln78_9_reg_1861_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_518_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U30( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_522_p0), - .din1(bitcast_ln78_10_reg_1866_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_522_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U31( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_526_p0), - .din1(bitcast_ln78_11_reg_1871_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_526_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U32( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_530_p0), - .din1(bitcast_ln78_12_reg_1876_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_530_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U33( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_534_p0), - .din1(bitcast_ln78_13_reg_1881_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_534_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U34( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_538_p0), - .din1(elem_val_abvec_M_elems_4_reg_1895_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_538_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U35( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_542_p0), - .din1(elem_val_abvec_M_elems_5_reg_1900_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_542_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U36( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_546_p0), - .din1(bitcast_ln78_16_reg_1905_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_546_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U37( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_550_p0), - .din1(bitcast_ln78_17_reg_1910_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_550_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U38( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_554_p0), - .din1(bitcast_ln78_18_reg_1915_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_554_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U39( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_558_p0), - .din1(bitcast_ln78_19_reg_1920_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_558_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U40( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_562_p0), - .din1(bitcast_ln78_20_reg_1925_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_562_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U41( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_566_p0), - .din1(bitcast_ln78_21_reg_1930_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_566_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U42( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_570_p0), - .din1(elem_val_abvec_M_elems_6_reg_1944_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_570_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U43( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_574_p0), - .din1(elem_val_abvec_M_elems_7_reg_1949_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_574_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U44( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_578_p0), - .din1(bitcast_ln78_24_reg_1954_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_578_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U45( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_582_p0), - .din1(bitcast_ln78_25_reg_1959_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_582_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U46( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_586_p0), - .din1(bitcast_ln78_26_reg_1964_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_586_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U47( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_590_p0), - .din1(bitcast_ln78_27_reg_1969_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_590_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U48( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_594_p0), - .din1(bitcast_ln78_28_reg_1974_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_594_p2) -); - -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 #( - .ID( 1 ), - .NUM_STAGE( 7 ), - .din0_WIDTH( 32 ), - .din1_WIDTH( 32 ), - .dout_WIDTH( 32 )) -fadd_32ns_32ns_32_7_full_dsp_1_U49( - .clk(ap_clk), - .reset(ap_rst), - .din0(grp_fu_598_p0), - .din1(bitcast_ln78_29_reg_1979_pp0_iter2_reg), - .ce(1'b1), - .dout(grp_fu_598_p2) -); - -PEG_Cmtx_flow_control_loop_pipe_sequential_init flow_control_loop_pipe_sequential_init_U( - .ap_clk(ap_clk), - .ap_rst(ap_rst), - .ap_start(ap_start), - .ap_ready(ap_ready), - .ap_done(ap_done), - .ap_start_int(ap_start_int), - .ap_loop_init(ap_loop_init), - .ap_ready_int(ap_ready_int), - .ap_loop_exit_ready(ap_condition_exit_pp0_iter0_stage0), - .ap_loop_exit_done(ap_done_int), - .ap_continue_int(ap_continue_int), - .ap_done_int(ap_done_int) -); - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_pp0_stage0; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_done_reg <= 1'b0; - end else begin - if ((ap_continue_int == 1'b1)) begin - ap_done_reg <= 1'b0; - end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_loop_exit_ready_pp0_iter9_reg == 1'b1))) begin - ap_done_reg <= 1'b1; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else begin - if ((1'b1 == ap_condition_exit_pp0_iter0_stage0)) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_enable_reg_pp0_iter1 <= ap_start_int; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter10 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter10 <= ap_enable_reg_pp0_iter9; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter2 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter2 <= ap_enable_reg_pp0_iter1; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter3 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter3 <= ap_enable_reg_pp0_iter2; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter4 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter4 <= ap_enable_reg_pp0_iter3; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter5 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter5 <= ap_enable_reg_pp0_iter4; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter6 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter6 <= ap_enable_reg_pp0_iter5; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter7 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter7 <= ap_enable_reg_pp0_iter6; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter8 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter8 <= ap_enable_reg_pp0_iter7; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter9 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter9 <= ap_enable_reg_pp0_iter8; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if ((1'b1 == ap_condition_2344)) begin - j_fu_130 <= j_2_fu_1146_p2; - end else if ((ap_loop_init == 1'b1)) begin - j_fu_130 <= start_32_3; - end - end -end - -always @ (posedge ap_clk) begin - if (((icmp_ln254_fu_610_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - and_ln260_2_reg_1788 <= and_ln260_2_fu_628_p2; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - and_ln260_2_reg_1788_pp0_iter1_reg <= and_ln260_2_reg_1788; - ap_loop_exit_ready_pp0_iter1_reg <= ap_loop_exit_ready; - ap_loop_exit_ready_pp0_iter2_reg <= ap_loop_exit_ready_pp0_iter1_reg; - bitcast_ln78_10_reg_1866_pp0_iter1_reg <= bitcast_ln78_10_reg_1866; - bitcast_ln78_11_reg_1871_pp0_iter1_reg <= bitcast_ln78_11_reg_1871; - bitcast_ln78_12_reg_1876_pp0_iter1_reg <= bitcast_ln78_12_reg_1876; - bitcast_ln78_13_reg_1881_pp0_iter1_reg <= bitcast_ln78_13_reg_1881; - bitcast_ln78_16_reg_1905_pp0_iter1_reg <= bitcast_ln78_16_reg_1905; - bitcast_ln78_17_reg_1910_pp0_iter1_reg <= bitcast_ln78_17_reg_1910; - bitcast_ln78_18_reg_1915_pp0_iter1_reg <= bitcast_ln78_18_reg_1915; - bitcast_ln78_19_reg_1920_pp0_iter1_reg <= bitcast_ln78_19_reg_1920; - bitcast_ln78_1_reg_1812_pp0_iter1_reg <= bitcast_ln78_1_reg_1812; - bitcast_ln78_20_reg_1925_pp0_iter1_reg <= bitcast_ln78_20_reg_1925; - bitcast_ln78_21_reg_1930_pp0_iter1_reg <= bitcast_ln78_21_reg_1930; - bitcast_ln78_24_reg_1954_pp0_iter1_reg <= bitcast_ln78_24_reg_1954; - bitcast_ln78_25_reg_1959_pp0_iter1_reg <= bitcast_ln78_25_reg_1959; - bitcast_ln78_26_reg_1964_pp0_iter1_reg <= bitcast_ln78_26_reg_1964; - bitcast_ln78_27_reg_1969_pp0_iter1_reg <= bitcast_ln78_27_reg_1969; - bitcast_ln78_28_reg_1974_pp0_iter1_reg <= bitcast_ln78_28_reg_1974; - bitcast_ln78_29_reg_1979_pp0_iter1_reg <= bitcast_ln78_29_reg_1979; - bitcast_ln78_2_reg_1817_pp0_iter1_reg <= bitcast_ln78_2_reg_1817; - bitcast_ln78_3_reg_1822_pp0_iter1_reg <= bitcast_ln78_3_reg_1822; - bitcast_ln78_4_reg_1827_pp0_iter1_reg <= bitcast_ln78_4_reg_1827; - bitcast_ln78_5_reg_1832_pp0_iter1_reg <= bitcast_ln78_5_reg_1832; - bitcast_ln78_8_reg_1856_pp0_iter1_reg <= bitcast_ln78_8_reg_1856; - bitcast_ln78_9_reg_1861_pp0_iter1_reg <= bitcast_ln78_9_reg_1861; - bitcast_ln78_reg_1807_pp0_iter1_reg <= bitcast_ln78_reg_1807; - elem_val_abvec_M_elems_1_reg_1802_pp0_iter1_reg <= elem_val_abvec_M_elems_1_reg_1802; - elem_val_abvec_M_elems_2_reg_1846_pp0_iter1_reg <= elem_val_abvec_M_elems_2_reg_1846; - elem_val_abvec_M_elems_3_reg_1851_pp0_iter1_reg <= elem_val_abvec_M_elems_3_reg_1851; - elem_val_abvec_M_elems_4_reg_1895_pp0_iter1_reg <= elem_val_abvec_M_elems_4_reg_1895; - elem_val_abvec_M_elems_5_reg_1900_pp0_iter1_reg <= elem_val_abvec_M_elems_5_reg_1900; - elem_val_abvec_M_elems_6_reg_1944_pp0_iter1_reg <= elem_val_abvec_M_elems_6_reg_1944; - elem_val_abvec_M_elems_7_reg_1949_pp0_iter1_reg <= elem_val_abvec_M_elems_7_reg_1949; - elem_val_abvec_M_elems_reg_1797_pp0_iter1_reg <= elem_val_abvec_M_elems_reg_1797; - p_Result_10_reg_1935_pp0_iter1_reg <= p_Result_10_reg_1935; - p_Result_15_reg_1984_pp0_iter1_reg <= p_Result_15_reg_1984; - p_Result_5_reg_1886_pp0_iter1_reg <= p_Result_5_reg_1886; - p_Result_s_reg_1837_pp0_iter1_reg <= p_Result_s_reg_1837; - end -end - -always @ (posedge ap_clk) begin - if ((1'b0 == ap_block_pp0_stage0_11001)) begin - and_ln260_2_reg_1788_pp0_iter2_reg <= and_ln260_2_reg_1788_pp0_iter1_reg; - and_ln260_2_reg_1788_pp0_iter3_reg <= and_ln260_2_reg_1788_pp0_iter2_reg; - and_ln260_2_reg_1788_pp0_iter4_reg <= and_ln260_2_reg_1788_pp0_iter3_reg; - and_ln260_2_reg_1788_pp0_iter5_reg <= and_ln260_2_reg_1788_pp0_iter4_reg; - and_ln260_2_reg_1788_pp0_iter6_reg <= and_ln260_2_reg_1788_pp0_iter5_reg; - and_ln260_2_reg_1788_pp0_iter7_reg <= and_ln260_2_reg_1788_pp0_iter6_reg; - and_ln260_2_reg_1788_pp0_iter8_reg <= and_ln260_2_reg_1788_pp0_iter7_reg; - and_ln260_2_reg_1788_pp0_iter9_reg <= and_ln260_2_reg_1788_pp0_iter8_reg; - ap_loop_exit_ready_pp0_iter3_reg <= ap_loop_exit_ready_pp0_iter2_reg; - ap_loop_exit_ready_pp0_iter4_reg <= ap_loop_exit_ready_pp0_iter3_reg; - ap_loop_exit_ready_pp0_iter5_reg <= ap_loop_exit_ready_pp0_iter4_reg; - ap_loop_exit_ready_pp0_iter6_reg <= ap_loop_exit_ready_pp0_iter5_reg; - ap_loop_exit_ready_pp0_iter7_reg <= ap_loop_exit_ready_pp0_iter6_reg; - ap_loop_exit_ready_pp0_iter8_reg <= ap_loop_exit_ready_pp0_iter7_reg; - ap_loop_exit_ready_pp0_iter9_reg <= ap_loop_exit_ready_pp0_iter8_reg; - bitcast_ln78_10_reg_1866_pp0_iter2_reg <= bitcast_ln78_10_reg_1866_pp0_iter1_reg; - bitcast_ln78_11_reg_1871_pp0_iter2_reg <= bitcast_ln78_11_reg_1871_pp0_iter1_reg; - bitcast_ln78_12_reg_1876_pp0_iter2_reg <= bitcast_ln78_12_reg_1876_pp0_iter1_reg; - bitcast_ln78_13_reg_1881_pp0_iter2_reg <= bitcast_ln78_13_reg_1881_pp0_iter1_reg; - bitcast_ln78_16_reg_1905_pp0_iter2_reg <= bitcast_ln78_16_reg_1905_pp0_iter1_reg; - bitcast_ln78_17_reg_1910_pp0_iter2_reg <= bitcast_ln78_17_reg_1910_pp0_iter1_reg; - bitcast_ln78_18_reg_1915_pp0_iter2_reg <= bitcast_ln78_18_reg_1915_pp0_iter1_reg; - bitcast_ln78_19_reg_1920_pp0_iter2_reg <= bitcast_ln78_19_reg_1920_pp0_iter1_reg; - bitcast_ln78_1_reg_1812_pp0_iter2_reg <= bitcast_ln78_1_reg_1812_pp0_iter1_reg; - bitcast_ln78_20_reg_1925_pp0_iter2_reg <= bitcast_ln78_20_reg_1925_pp0_iter1_reg; - bitcast_ln78_21_reg_1930_pp0_iter2_reg <= bitcast_ln78_21_reg_1930_pp0_iter1_reg; - bitcast_ln78_24_reg_1954_pp0_iter2_reg <= bitcast_ln78_24_reg_1954_pp0_iter1_reg; - bitcast_ln78_25_reg_1959_pp0_iter2_reg <= bitcast_ln78_25_reg_1959_pp0_iter1_reg; - bitcast_ln78_26_reg_1964_pp0_iter2_reg <= bitcast_ln78_26_reg_1964_pp0_iter1_reg; - bitcast_ln78_27_reg_1969_pp0_iter2_reg <= bitcast_ln78_27_reg_1969_pp0_iter1_reg; - bitcast_ln78_28_reg_1974_pp0_iter2_reg <= bitcast_ln78_28_reg_1974_pp0_iter1_reg; - bitcast_ln78_29_reg_1979_pp0_iter2_reg <= bitcast_ln78_29_reg_1979_pp0_iter1_reg; - bitcast_ln78_2_reg_1817_pp0_iter2_reg <= bitcast_ln78_2_reg_1817_pp0_iter1_reg; - bitcast_ln78_3_reg_1822_pp0_iter2_reg <= bitcast_ln78_3_reg_1822_pp0_iter1_reg; - bitcast_ln78_4_reg_1827_pp0_iter2_reg <= bitcast_ln78_4_reg_1827_pp0_iter1_reg; - bitcast_ln78_5_reg_1832_pp0_iter2_reg <= bitcast_ln78_5_reg_1832_pp0_iter1_reg; - bitcast_ln78_8_reg_1856_pp0_iter2_reg <= bitcast_ln78_8_reg_1856_pp0_iter1_reg; - bitcast_ln78_9_reg_1861_pp0_iter2_reg <= bitcast_ln78_9_reg_1861_pp0_iter1_reg; - bitcast_ln78_reg_1807_pp0_iter2_reg <= bitcast_ln78_reg_1807_pp0_iter1_reg; - elem_val_abvec_M_elems_1_reg_1802_pp0_iter2_reg <= elem_val_abvec_M_elems_1_reg_1802_pp0_iter1_reg; - elem_val_abvec_M_elems_2_reg_1846_pp0_iter2_reg <= elem_val_abvec_M_elems_2_reg_1846_pp0_iter1_reg; - elem_val_abvec_M_elems_3_reg_1851_pp0_iter2_reg <= elem_val_abvec_M_elems_3_reg_1851_pp0_iter1_reg; - elem_val_abvec_M_elems_4_reg_1895_pp0_iter2_reg <= elem_val_abvec_M_elems_4_reg_1895_pp0_iter1_reg; - elem_val_abvec_M_elems_5_reg_1900_pp0_iter2_reg <= elem_val_abvec_M_elems_5_reg_1900_pp0_iter1_reg; - elem_val_abvec_M_elems_6_reg_1944_pp0_iter2_reg <= elem_val_abvec_M_elems_6_reg_1944_pp0_iter1_reg; - elem_val_abvec_M_elems_7_reg_1949_pp0_iter2_reg <= elem_val_abvec_M_elems_7_reg_1949_pp0_iter1_reg; - elem_val_abvec_M_elems_reg_1797_pp0_iter2_reg <= elem_val_abvec_M_elems_reg_1797_pp0_iter1_reg; - local_C_V_10_addr_reg_2048_pp0_iter2_reg <= local_C_V_10_addr_reg_2048; - local_C_V_10_addr_reg_2048_pp0_iter3_reg <= local_C_V_10_addr_reg_2048_pp0_iter2_reg; - local_C_V_10_addr_reg_2048_pp0_iter4_reg <= local_C_V_10_addr_reg_2048_pp0_iter3_reg; - local_C_V_10_addr_reg_2048_pp0_iter5_reg <= local_C_V_10_addr_reg_2048_pp0_iter4_reg; - local_C_V_10_addr_reg_2048_pp0_iter6_reg <= local_C_V_10_addr_reg_2048_pp0_iter5_reg; - local_C_V_10_addr_reg_2048_pp0_iter7_reg <= local_C_V_10_addr_reg_2048_pp0_iter6_reg; - local_C_V_10_addr_reg_2048_pp0_iter8_reg <= local_C_V_10_addr_reg_2048_pp0_iter7_reg; - local_C_V_10_addr_reg_2048_pp0_iter9_reg <= local_C_V_10_addr_reg_2048_pp0_iter8_reg; - local_C_V_11_addr_reg_2054_pp0_iter2_reg <= local_C_V_11_addr_reg_2054; - local_C_V_11_addr_reg_2054_pp0_iter3_reg <= local_C_V_11_addr_reg_2054_pp0_iter2_reg; - local_C_V_11_addr_reg_2054_pp0_iter4_reg <= local_C_V_11_addr_reg_2054_pp0_iter3_reg; - local_C_V_11_addr_reg_2054_pp0_iter5_reg <= local_C_V_11_addr_reg_2054_pp0_iter4_reg; - local_C_V_11_addr_reg_2054_pp0_iter6_reg <= local_C_V_11_addr_reg_2054_pp0_iter5_reg; - local_C_V_11_addr_reg_2054_pp0_iter7_reg <= local_C_V_11_addr_reg_2054_pp0_iter6_reg; - local_C_V_11_addr_reg_2054_pp0_iter8_reg <= local_C_V_11_addr_reg_2054_pp0_iter7_reg; - local_C_V_11_addr_reg_2054_pp0_iter9_reg <= local_C_V_11_addr_reg_2054_pp0_iter8_reg; - local_C_V_12_addr_reg_2060_pp0_iter2_reg <= local_C_V_12_addr_reg_2060; - local_C_V_12_addr_reg_2060_pp0_iter3_reg <= local_C_V_12_addr_reg_2060_pp0_iter2_reg; - local_C_V_12_addr_reg_2060_pp0_iter4_reg <= local_C_V_12_addr_reg_2060_pp0_iter3_reg; - local_C_V_12_addr_reg_2060_pp0_iter5_reg <= local_C_V_12_addr_reg_2060_pp0_iter4_reg; - local_C_V_12_addr_reg_2060_pp0_iter6_reg <= local_C_V_12_addr_reg_2060_pp0_iter5_reg; - local_C_V_12_addr_reg_2060_pp0_iter7_reg <= local_C_V_12_addr_reg_2060_pp0_iter6_reg; - local_C_V_12_addr_reg_2060_pp0_iter8_reg <= local_C_V_12_addr_reg_2060_pp0_iter7_reg; - local_C_V_12_addr_reg_2060_pp0_iter9_reg <= local_C_V_12_addr_reg_2060_pp0_iter8_reg; - local_C_V_13_addr_reg_2066_pp0_iter2_reg <= local_C_V_13_addr_reg_2066; - local_C_V_13_addr_reg_2066_pp0_iter3_reg <= local_C_V_13_addr_reg_2066_pp0_iter2_reg; - local_C_V_13_addr_reg_2066_pp0_iter4_reg <= local_C_V_13_addr_reg_2066_pp0_iter3_reg; - local_C_V_13_addr_reg_2066_pp0_iter5_reg <= local_C_V_13_addr_reg_2066_pp0_iter4_reg; - local_C_V_13_addr_reg_2066_pp0_iter6_reg <= local_C_V_13_addr_reg_2066_pp0_iter5_reg; - local_C_V_13_addr_reg_2066_pp0_iter7_reg <= local_C_V_13_addr_reg_2066_pp0_iter6_reg; - local_C_V_13_addr_reg_2066_pp0_iter8_reg <= local_C_V_13_addr_reg_2066_pp0_iter7_reg; - local_C_V_13_addr_reg_2066_pp0_iter9_reg <= local_C_V_13_addr_reg_2066_pp0_iter8_reg; - local_C_V_14_addr_reg_2072_pp0_iter2_reg <= local_C_V_14_addr_reg_2072; - local_C_V_14_addr_reg_2072_pp0_iter3_reg <= local_C_V_14_addr_reg_2072_pp0_iter2_reg; - local_C_V_14_addr_reg_2072_pp0_iter4_reg <= local_C_V_14_addr_reg_2072_pp0_iter3_reg; - local_C_V_14_addr_reg_2072_pp0_iter5_reg <= local_C_V_14_addr_reg_2072_pp0_iter4_reg; - local_C_V_14_addr_reg_2072_pp0_iter6_reg <= local_C_V_14_addr_reg_2072_pp0_iter5_reg; - local_C_V_14_addr_reg_2072_pp0_iter7_reg <= local_C_V_14_addr_reg_2072_pp0_iter6_reg; - local_C_V_14_addr_reg_2072_pp0_iter8_reg <= local_C_V_14_addr_reg_2072_pp0_iter7_reg; - local_C_V_14_addr_reg_2072_pp0_iter9_reg <= local_C_V_14_addr_reg_2072_pp0_iter8_reg; - local_C_V_15_addr_reg_2078_pp0_iter2_reg <= local_C_V_15_addr_reg_2078; - local_C_V_15_addr_reg_2078_pp0_iter3_reg <= local_C_V_15_addr_reg_2078_pp0_iter2_reg; - local_C_V_15_addr_reg_2078_pp0_iter4_reg <= local_C_V_15_addr_reg_2078_pp0_iter3_reg; - local_C_V_15_addr_reg_2078_pp0_iter5_reg <= local_C_V_15_addr_reg_2078_pp0_iter4_reg; - local_C_V_15_addr_reg_2078_pp0_iter6_reg <= local_C_V_15_addr_reg_2078_pp0_iter5_reg; - local_C_V_15_addr_reg_2078_pp0_iter7_reg <= local_C_V_15_addr_reg_2078_pp0_iter6_reg; - local_C_V_15_addr_reg_2078_pp0_iter8_reg <= local_C_V_15_addr_reg_2078_pp0_iter7_reg; - local_C_V_15_addr_reg_2078_pp0_iter9_reg <= local_C_V_15_addr_reg_2078_pp0_iter8_reg; - local_C_V_1_addr_reg_1994_pp0_iter2_reg <= local_C_V_1_addr_reg_1994; - local_C_V_1_addr_reg_1994_pp0_iter3_reg <= local_C_V_1_addr_reg_1994_pp0_iter2_reg; - local_C_V_1_addr_reg_1994_pp0_iter4_reg <= local_C_V_1_addr_reg_1994_pp0_iter3_reg; - local_C_V_1_addr_reg_1994_pp0_iter5_reg <= local_C_V_1_addr_reg_1994_pp0_iter4_reg; - local_C_V_1_addr_reg_1994_pp0_iter6_reg <= local_C_V_1_addr_reg_1994_pp0_iter5_reg; - local_C_V_1_addr_reg_1994_pp0_iter7_reg <= local_C_V_1_addr_reg_1994_pp0_iter6_reg; - local_C_V_1_addr_reg_1994_pp0_iter8_reg <= local_C_V_1_addr_reg_1994_pp0_iter7_reg; - local_C_V_1_addr_reg_1994_pp0_iter9_reg <= local_C_V_1_addr_reg_1994_pp0_iter8_reg; - local_C_V_2_addr_reg_2000_pp0_iter2_reg <= local_C_V_2_addr_reg_2000; - local_C_V_2_addr_reg_2000_pp0_iter3_reg <= local_C_V_2_addr_reg_2000_pp0_iter2_reg; - local_C_V_2_addr_reg_2000_pp0_iter4_reg <= local_C_V_2_addr_reg_2000_pp0_iter3_reg; - local_C_V_2_addr_reg_2000_pp0_iter5_reg <= local_C_V_2_addr_reg_2000_pp0_iter4_reg; - local_C_V_2_addr_reg_2000_pp0_iter6_reg <= local_C_V_2_addr_reg_2000_pp0_iter5_reg; - local_C_V_2_addr_reg_2000_pp0_iter7_reg <= local_C_V_2_addr_reg_2000_pp0_iter6_reg; - local_C_V_2_addr_reg_2000_pp0_iter8_reg <= local_C_V_2_addr_reg_2000_pp0_iter7_reg; - local_C_V_2_addr_reg_2000_pp0_iter9_reg <= local_C_V_2_addr_reg_2000_pp0_iter8_reg; - local_C_V_3_addr_reg_2006_pp0_iter2_reg <= local_C_V_3_addr_reg_2006; - local_C_V_3_addr_reg_2006_pp0_iter3_reg <= local_C_V_3_addr_reg_2006_pp0_iter2_reg; - local_C_V_3_addr_reg_2006_pp0_iter4_reg <= local_C_V_3_addr_reg_2006_pp0_iter3_reg; - local_C_V_3_addr_reg_2006_pp0_iter5_reg <= local_C_V_3_addr_reg_2006_pp0_iter4_reg; - local_C_V_3_addr_reg_2006_pp0_iter6_reg <= local_C_V_3_addr_reg_2006_pp0_iter5_reg; - local_C_V_3_addr_reg_2006_pp0_iter7_reg <= local_C_V_3_addr_reg_2006_pp0_iter6_reg; - local_C_V_3_addr_reg_2006_pp0_iter8_reg <= local_C_V_3_addr_reg_2006_pp0_iter7_reg; - local_C_V_3_addr_reg_2006_pp0_iter9_reg <= local_C_V_3_addr_reg_2006_pp0_iter8_reg; - local_C_V_4_addr_reg_2012_pp0_iter2_reg <= local_C_V_4_addr_reg_2012; - local_C_V_4_addr_reg_2012_pp0_iter3_reg <= local_C_V_4_addr_reg_2012_pp0_iter2_reg; - local_C_V_4_addr_reg_2012_pp0_iter4_reg <= local_C_V_4_addr_reg_2012_pp0_iter3_reg; - local_C_V_4_addr_reg_2012_pp0_iter5_reg <= local_C_V_4_addr_reg_2012_pp0_iter4_reg; - local_C_V_4_addr_reg_2012_pp0_iter6_reg <= local_C_V_4_addr_reg_2012_pp0_iter5_reg; - local_C_V_4_addr_reg_2012_pp0_iter7_reg <= local_C_V_4_addr_reg_2012_pp0_iter6_reg; - local_C_V_4_addr_reg_2012_pp0_iter8_reg <= local_C_V_4_addr_reg_2012_pp0_iter7_reg; - local_C_V_4_addr_reg_2012_pp0_iter9_reg <= local_C_V_4_addr_reg_2012_pp0_iter8_reg; - local_C_V_5_addr_reg_2018_pp0_iter2_reg <= local_C_V_5_addr_reg_2018; - local_C_V_5_addr_reg_2018_pp0_iter3_reg <= local_C_V_5_addr_reg_2018_pp0_iter2_reg; - local_C_V_5_addr_reg_2018_pp0_iter4_reg <= local_C_V_5_addr_reg_2018_pp0_iter3_reg; - local_C_V_5_addr_reg_2018_pp0_iter5_reg <= local_C_V_5_addr_reg_2018_pp0_iter4_reg; - local_C_V_5_addr_reg_2018_pp0_iter6_reg <= local_C_V_5_addr_reg_2018_pp0_iter5_reg; - local_C_V_5_addr_reg_2018_pp0_iter7_reg <= local_C_V_5_addr_reg_2018_pp0_iter6_reg; - local_C_V_5_addr_reg_2018_pp0_iter8_reg <= local_C_V_5_addr_reg_2018_pp0_iter7_reg; - local_C_V_5_addr_reg_2018_pp0_iter9_reg <= local_C_V_5_addr_reg_2018_pp0_iter8_reg; - local_C_V_6_addr_reg_2024_pp0_iter2_reg <= local_C_V_6_addr_reg_2024; - local_C_V_6_addr_reg_2024_pp0_iter3_reg <= local_C_V_6_addr_reg_2024_pp0_iter2_reg; - local_C_V_6_addr_reg_2024_pp0_iter4_reg <= local_C_V_6_addr_reg_2024_pp0_iter3_reg; - local_C_V_6_addr_reg_2024_pp0_iter5_reg <= local_C_V_6_addr_reg_2024_pp0_iter4_reg; - local_C_V_6_addr_reg_2024_pp0_iter6_reg <= local_C_V_6_addr_reg_2024_pp0_iter5_reg; - local_C_V_6_addr_reg_2024_pp0_iter7_reg <= local_C_V_6_addr_reg_2024_pp0_iter6_reg; - local_C_V_6_addr_reg_2024_pp0_iter8_reg <= local_C_V_6_addr_reg_2024_pp0_iter7_reg; - local_C_V_6_addr_reg_2024_pp0_iter9_reg <= local_C_V_6_addr_reg_2024_pp0_iter8_reg; - local_C_V_7_addr_reg_2030_pp0_iter2_reg <= local_C_V_7_addr_reg_2030; - local_C_V_7_addr_reg_2030_pp0_iter3_reg <= local_C_V_7_addr_reg_2030_pp0_iter2_reg; - local_C_V_7_addr_reg_2030_pp0_iter4_reg <= local_C_V_7_addr_reg_2030_pp0_iter3_reg; - local_C_V_7_addr_reg_2030_pp0_iter5_reg <= local_C_V_7_addr_reg_2030_pp0_iter4_reg; - local_C_V_7_addr_reg_2030_pp0_iter6_reg <= local_C_V_7_addr_reg_2030_pp0_iter5_reg; - local_C_V_7_addr_reg_2030_pp0_iter7_reg <= local_C_V_7_addr_reg_2030_pp0_iter6_reg; - local_C_V_7_addr_reg_2030_pp0_iter8_reg <= local_C_V_7_addr_reg_2030_pp0_iter7_reg; - local_C_V_7_addr_reg_2030_pp0_iter9_reg <= local_C_V_7_addr_reg_2030_pp0_iter8_reg; - local_C_V_8_addr_reg_2036_pp0_iter2_reg <= local_C_V_8_addr_reg_2036; - local_C_V_8_addr_reg_2036_pp0_iter3_reg <= local_C_V_8_addr_reg_2036_pp0_iter2_reg; - local_C_V_8_addr_reg_2036_pp0_iter4_reg <= local_C_V_8_addr_reg_2036_pp0_iter3_reg; - local_C_V_8_addr_reg_2036_pp0_iter5_reg <= local_C_V_8_addr_reg_2036_pp0_iter4_reg; - local_C_V_8_addr_reg_2036_pp0_iter6_reg <= local_C_V_8_addr_reg_2036_pp0_iter5_reg; - local_C_V_8_addr_reg_2036_pp0_iter7_reg <= local_C_V_8_addr_reg_2036_pp0_iter6_reg; - local_C_V_8_addr_reg_2036_pp0_iter8_reg <= local_C_V_8_addr_reg_2036_pp0_iter7_reg; - local_C_V_8_addr_reg_2036_pp0_iter9_reg <= local_C_V_8_addr_reg_2036_pp0_iter8_reg; - local_C_V_9_addr_reg_2042_pp0_iter2_reg <= local_C_V_9_addr_reg_2042; - local_C_V_9_addr_reg_2042_pp0_iter3_reg <= local_C_V_9_addr_reg_2042_pp0_iter2_reg; - local_C_V_9_addr_reg_2042_pp0_iter4_reg <= local_C_V_9_addr_reg_2042_pp0_iter3_reg; - local_C_V_9_addr_reg_2042_pp0_iter5_reg <= local_C_V_9_addr_reg_2042_pp0_iter4_reg; - local_C_V_9_addr_reg_2042_pp0_iter6_reg <= local_C_V_9_addr_reg_2042_pp0_iter5_reg; - local_C_V_9_addr_reg_2042_pp0_iter7_reg <= local_C_V_9_addr_reg_2042_pp0_iter6_reg; - local_C_V_9_addr_reg_2042_pp0_iter8_reg <= local_C_V_9_addr_reg_2042_pp0_iter7_reg; - local_C_V_9_addr_reg_2042_pp0_iter9_reg <= local_C_V_9_addr_reg_2042_pp0_iter8_reg; - local_C_V_addr_reg_1988_pp0_iter2_reg <= local_C_V_addr_reg_1988; - local_C_V_addr_reg_1988_pp0_iter3_reg <= local_C_V_addr_reg_1988_pp0_iter2_reg; - local_C_V_addr_reg_1988_pp0_iter4_reg <= local_C_V_addr_reg_1988_pp0_iter3_reg; - local_C_V_addr_reg_1988_pp0_iter5_reg <= local_C_V_addr_reg_1988_pp0_iter4_reg; - local_C_V_addr_reg_1988_pp0_iter6_reg <= local_C_V_addr_reg_1988_pp0_iter5_reg; - local_C_V_addr_reg_1988_pp0_iter7_reg <= local_C_V_addr_reg_1988_pp0_iter6_reg; - local_C_V_addr_reg_1988_pp0_iter8_reg <= local_C_V_addr_reg_1988_pp0_iter7_reg; - local_C_V_addr_reg_1988_pp0_iter9_reg <= local_C_V_addr_reg_1988_pp0_iter8_reg; - p_Result_10_reg_1935_pp0_iter2_reg <= p_Result_10_reg_1935_pp0_iter1_reg; - p_Result_10_reg_1935_pp0_iter3_reg <= p_Result_10_reg_1935_pp0_iter2_reg; - p_Result_10_reg_1935_pp0_iter4_reg <= p_Result_10_reg_1935_pp0_iter3_reg; - p_Result_10_reg_1935_pp0_iter5_reg <= p_Result_10_reg_1935_pp0_iter4_reg; - p_Result_10_reg_1935_pp0_iter6_reg <= p_Result_10_reg_1935_pp0_iter5_reg; - p_Result_10_reg_1935_pp0_iter7_reg <= p_Result_10_reg_1935_pp0_iter6_reg; - p_Result_10_reg_1935_pp0_iter8_reg <= p_Result_10_reg_1935_pp0_iter7_reg; - p_Result_10_reg_1935_pp0_iter9_reg <= p_Result_10_reg_1935_pp0_iter8_reg; - p_Result_15_reg_1984_pp0_iter2_reg <= p_Result_15_reg_1984_pp0_iter1_reg; - p_Result_15_reg_1984_pp0_iter3_reg <= p_Result_15_reg_1984_pp0_iter2_reg; - p_Result_15_reg_1984_pp0_iter4_reg <= p_Result_15_reg_1984_pp0_iter3_reg; - p_Result_15_reg_1984_pp0_iter5_reg <= p_Result_15_reg_1984_pp0_iter4_reg; - p_Result_15_reg_1984_pp0_iter6_reg <= p_Result_15_reg_1984_pp0_iter5_reg; - p_Result_15_reg_1984_pp0_iter7_reg <= p_Result_15_reg_1984_pp0_iter6_reg; - p_Result_15_reg_1984_pp0_iter8_reg <= p_Result_15_reg_1984_pp0_iter7_reg; - p_Result_15_reg_1984_pp0_iter9_reg <= p_Result_15_reg_1984_pp0_iter8_reg; - p_Result_5_reg_1886_pp0_iter2_reg <= p_Result_5_reg_1886_pp0_iter1_reg; - p_Result_5_reg_1886_pp0_iter3_reg <= p_Result_5_reg_1886_pp0_iter2_reg; - p_Result_5_reg_1886_pp0_iter4_reg <= p_Result_5_reg_1886_pp0_iter3_reg; - p_Result_5_reg_1886_pp0_iter5_reg <= p_Result_5_reg_1886_pp0_iter4_reg; - p_Result_5_reg_1886_pp0_iter6_reg <= p_Result_5_reg_1886_pp0_iter5_reg; - p_Result_5_reg_1886_pp0_iter7_reg <= p_Result_5_reg_1886_pp0_iter6_reg; - p_Result_5_reg_1886_pp0_iter8_reg <= p_Result_5_reg_1886_pp0_iter7_reg; - p_Result_5_reg_1886_pp0_iter9_reg <= p_Result_5_reg_1886_pp0_iter8_reg; - p_Result_s_reg_1837_pp0_iter2_reg <= p_Result_s_reg_1837_pp0_iter1_reg; - p_Result_s_reg_1837_pp0_iter3_reg <= p_Result_s_reg_1837_pp0_iter2_reg; - p_Result_s_reg_1837_pp0_iter4_reg <= p_Result_s_reg_1837_pp0_iter3_reg; - p_Result_s_reg_1837_pp0_iter5_reg <= p_Result_s_reg_1837_pp0_iter4_reg; - p_Result_s_reg_1837_pp0_iter6_reg <= p_Result_s_reg_1837_pp0_iter5_reg; - p_Result_s_reg_1837_pp0_iter7_reg <= p_Result_s_reg_1837_pp0_iter6_reg; - p_Result_s_reg_1837_pp0_iter8_reg <= p_Result_s_reg_1837_pp0_iter7_reg; - p_Result_s_reg_1837_pp0_iter9_reg <= p_Result_s_reg_1837_pp0_iter8_reg; - end -end - -always @ (posedge ap_clk) begin - if (((icmp_ln254_fu_610_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (1'd1 == and_ln260_2_fu_628_p2) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - bitcast_ln78_10_reg_1866 <= bitcast_ln78_10_fu_866_p1; - bitcast_ln78_11_reg_1871 <= bitcast_ln78_11_fu_870_p1; - bitcast_ln78_12_reg_1876 <= bitcast_ln78_12_fu_874_p1; - bitcast_ln78_13_reg_1881 <= bitcast_ln78_13_fu_878_p1; - bitcast_ln78_16_reg_1905 <= bitcast_ln78_16_fu_986_p1; - bitcast_ln78_17_reg_1910 <= bitcast_ln78_17_fu_990_p1; - bitcast_ln78_18_reg_1915 <= bitcast_ln78_18_fu_994_p1; - bitcast_ln78_19_reg_1920 <= bitcast_ln78_19_fu_998_p1; - bitcast_ln78_1_reg_1812 <= bitcast_ln78_1_fu_734_p1; - bitcast_ln78_20_reg_1925 <= bitcast_ln78_20_fu_1002_p1; - bitcast_ln78_21_reg_1930 <= bitcast_ln78_21_fu_1006_p1; - bitcast_ln78_24_reg_1954 <= bitcast_ln78_24_fu_1114_p1; - bitcast_ln78_25_reg_1959 <= bitcast_ln78_25_fu_1118_p1; - bitcast_ln78_26_reg_1964 <= bitcast_ln78_26_fu_1122_p1; - bitcast_ln78_27_reg_1969 <= bitcast_ln78_27_fu_1126_p1; - bitcast_ln78_28_reg_1974 <= bitcast_ln78_28_fu_1130_p1; - bitcast_ln78_29_reg_1979 <= bitcast_ln78_29_fu_1134_p1; - bitcast_ln78_2_reg_1817 <= bitcast_ln78_2_fu_738_p1; - bitcast_ln78_3_reg_1822 <= bitcast_ln78_3_fu_742_p1; - bitcast_ln78_4_reg_1827 <= bitcast_ln78_4_fu_746_p1; - bitcast_ln78_5_reg_1832 <= bitcast_ln78_5_fu_750_p1; - bitcast_ln78_8_reg_1856 <= bitcast_ln78_8_fu_858_p1; - bitcast_ln78_9_reg_1861 <= bitcast_ln78_9_fu_862_p1; - bitcast_ln78_reg_1807 <= bitcast_ln78_fu_730_p1; - elem_val_abvec_M_elems_1_reg_1802 <= elem_val_abvec_M_elems_1_fu_726_p1; - elem_val_abvec_M_elems_2_reg_1846 <= elem_val_abvec_M_elems_2_fu_850_p1; - elem_val_abvec_M_elems_3_reg_1851 <= elem_val_abvec_M_elems_3_fu_854_p1; - elem_val_abvec_M_elems_4_reg_1895 <= elem_val_abvec_M_elems_4_fu_978_p1; - elem_val_abvec_M_elems_5_reg_1900 <= elem_val_abvec_M_elems_5_fu_982_p1; - elem_val_abvec_M_elems_6_reg_1944 <= elem_val_abvec_M_elems_6_fu_1106_p1; - elem_val_abvec_M_elems_7_reg_1949 <= elem_val_abvec_M_elems_7_fu_1110_p1; - elem_val_abvec_M_elems_reg_1797 <= elem_val_abvec_M_elems_fu_722_p1; - elem_val_row_V_1_reg_1890 <= elem_val_row_V_1_fu_894_p1; - elem_val_row_V_2_reg_1841 <= elem_val_row_V_2_fu_766_p1; - elem_val_row_V_3_reg_1792 <= elem_val_row_V_3_fu_638_p1; - elem_val_row_V_reg_1939 <= elem_val_row_V_fu_1022_p1; - p_Result_10_reg_1935 <= fifo_aBvec_2_dout[32'd17]; - p_Result_15_reg_1984 <= fifo_aBvec_3_dout[32'd17]; - p_Result_5_reg_1886 <= fifo_aBvec_1_dout[32'd17]; - p_Result_s_reg_1837 <= fifo_aBvec_0_dout[32'd17]; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_10_reg_1935_pp0_iter8_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter8_reg))) begin - c_val_d0_f_10_reg_2504 <= grp_fu_554_p2; - c_val_d0_f_11_reg_2514 <= grp_fu_562_p2; - c_val_d0_f_8_reg_2484 <= grp_fu_538_p2; - c_val_d0_f_9_reg_2494 <= grp_fu_546_p2; - c_val_d1_f_10_reg_2509 <= grp_fu_558_p2; - c_val_d1_f_11_reg_2519 <= grp_fu_566_p2; - c_val_d1_f_8_reg_2489 <= grp_fu_542_p2; - c_val_d1_f_9_reg_2499 <= grp_fu_550_p2; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_15_reg_1984_pp0_iter8_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter8_reg))) begin - c_val_d0_f_12_reg_2524 <= grp_fu_570_p2; - c_val_d0_f_13_reg_2534 <= grp_fu_578_p2; - c_val_d0_f_14_reg_2544 <= grp_fu_586_p2; - c_val_d0_f_15_reg_2554 <= grp_fu_594_p2; - c_val_d1_f_12_reg_2529 <= grp_fu_574_p2; - c_val_d1_f_13_reg_2539 <= grp_fu_582_p2; - c_val_d1_f_14_reg_2549 <= grp_fu_590_p2; - c_val_d1_f_15_reg_2559 <= grp_fu_598_p2; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_s_reg_1837_pp0_iter8_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter8_reg))) begin - c_val_d0_f_1_reg_2414 <= grp_fu_482_p2; - c_val_d0_f_2_reg_2424 <= grp_fu_490_p2; - c_val_d0_f_3_reg_2434 <= grp_fu_498_p2; - c_val_d0_f_reg_2404 <= grp_fu_474_p2; - c_val_d1_f_1_reg_2419 <= grp_fu_486_p2; - c_val_d1_f_2_reg_2429 <= grp_fu_494_p2; - c_val_d1_f_3_reg_2439 <= grp_fu_502_p2; - c_val_d1_f_reg_2409 <= grp_fu_478_p2; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_5_reg_1886_pp0_iter8_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter8_reg))) begin - c_val_d0_f_4_reg_2444 <= grp_fu_506_p2; - c_val_d0_f_5_reg_2454 <= grp_fu_514_p2; - c_val_d0_f_6_reg_2464 <= grp_fu_522_p2; - c_val_d0_f_7_reg_2474 <= grp_fu_530_p2; - c_val_d1_f_4_reg_2449 <= grp_fu_510_p2; - c_val_d1_f_5_reg_2459 <= grp_fu_518_p2; - c_val_d1_f_6_reg_2469 <= grp_fu_526_p2; - c_val_d1_f_7_reg_2479 <= grp_fu_534_p2; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_10_reg_1935_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg))) begin - c_val_d0_u_V_10_reg_2184 <= c_val_d0_u_V_10_fu_1325_p1; - c_val_d0_u_V_11_reg_2194 <= c_val_d0_u_V_11_fu_1339_p1; - c_val_d0_u_V_8_reg_2164 <= c_val_d0_u_V_8_fu_1297_p1; - c_val_d0_u_V_9_reg_2174 <= c_val_d0_u_V_9_fu_1311_p1; - c_val_d1_u_V_10_reg_2189 <= {{local_C_V_10_q0[63:32]}}; - c_val_d1_u_V_11_reg_2199 <= {{local_C_V_11_q0[63:32]}}; - c_val_d1_u_V_8_reg_2169 <= {{local_C_V_8_q0[63:32]}}; - c_val_d1_u_V_9_reg_2179 <= {{local_C_V_9_q0[63:32]}}; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_15_reg_1984_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg))) begin - c_val_d0_u_V_12_reg_2204 <= c_val_d0_u_V_12_fu_1353_p1; - c_val_d0_u_V_13_reg_2214 <= c_val_d0_u_V_13_fu_1367_p1; - c_val_d0_u_V_14_reg_2224 <= c_val_d0_u_V_14_fu_1381_p1; - c_val_d0_u_V_15_reg_2234 <= c_val_d0_u_V_15_fu_1395_p1; - c_val_d1_u_V_12_reg_2209 <= {{local_C_V_12_q0[63:32]}}; - c_val_d1_u_V_13_reg_2219 <= {{local_C_V_13_q0[63:32]}}; - c_val_d1_u_V_14_reg_2229 <= {{local_C_V_14_q0[63:32]}}; - c_val_d1_u_V_15_reg_2239 <= {{local_C_V_15_q0[63:32]}}; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_s_reg_1837_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg))) begin - c_val_d0_u_V_1_reg_2094 <= c_val_d0_u_V_1_fu_1199_p1; - c_val_d0_u_V_2_reg_2104 <= c_val_d0_u_V_2_fu_1213_p1; - c_val_d0_u_V_3_reg_2114 <= c_val_d0_u_V_3_fu_1227_p1; - c_val_d0_u_V_reg_2084 <= c_val_d0_u_V_fu_1185_p1; - c_val_d1_u_V_1_reg_2099 <= {{local_C_V_1_q0[63:32]}}; - c_val_d1_u_V_2_reg_2109 <= {{local_C_V_2_q0[63:32]}}; - c_val_d1_u_V_3_reg_2119 <= {{local_C_V_3_q0[63:32]}}; - c_val_d1_u_V_reg_2089 <= {{local_C_V_q0[63:32]}}; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_5_reg_1886_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg))) begin - c_val_d0_u_V_4_reg_2124 <= c_val_d0_u_V_4_fu_1241_p1; - c_val_d0_u_V_5_reg_2134 <= c_val_d0_u_V_5_fu_1255_p1; - c_val_d0_u_V_6_reg_2144 <= c_val_d0_u_V_6_fu_1269_p1; - c_val_d0_u_V_7_reg_2154 <= c_val_d0_u_V_7_fu_1283_p1; - c_val_d1_u_V_4_reg_2129 <= {{local_C_V_4_q0[63:32]}}; - c_val_d1_u_V_5_reg_2139 <= {{local_C_V_5_q0[63:32]}}; - c_val_d1_u_V_6_reg_2149 <= {{local_C_V_6_q0[63:32]}}; - c_val_d1_u_V_7_reg_2159 <= {{local_C_V_7_q0[63:32]}}; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_10_reg_1935 == 1'd0) & (1'd1 == and_ln260_2_reg_1788) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_10_addr_reg_2048 <= conv_i_i_i_2_fu_1171_p1; - local_C_V_11_addr_reg_2054 <= conv_i_i_i_2_fu_1171_p1; - local_C_V_8_addr_reg_2036 <= conv_i_i_i_2_fu_1171_p1; - local_C_V_9_addr_reg_2042 <= conv_i_i_i_2_fu_1171_p1; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_15_reg_1984 == 1'd0) & (1'd1 == and_ln260_2_reg_1788) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_12_addr_reg_2060 <= conv_i_i_i_3_fu_1178_p1; - local_C_V_13_addr_reg_2066 <= conv_i_i_i_3_fu_1178_p1; - local_C_V_14_addr_reg_2072 <= conv_i_i_i_3_fu_1178_p1; - local_C_V_15_addr_reg_2078 <= conv_i_i_i_3_fu_1178_p1; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_s_reg_1837 == 1'd0) & (1'd1 == and_ln260_2_reg_1788) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_1_addr_reg_1994 <= conv_i_i_i_fu_1157_p1; - local_C_V_2_addr_reg_2000 <= conv_i_i_i_fu_1157_p1; - local_C_V_3_addr_reg_2006 <= conv_i_i_i_fu_1157_p1; - local_C_V_addr_reg_1988 <= conv_i_i_i_fu_1157_p1; - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_5_reg_1886 == 1'd0) & (1'd1 == and_ln260_2_reg_1788) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_4_addr_reg_2012 <= conv_i_i_i_1_fu_1164_p1; - local_C_V_5_addr_reg_2018 <= conv_i_i_i_1_fu_1164_p1; - local_C_V_6_addr_reg_2024 <= conv_i_i_i_1_fu_1164_p1; - local_C_V_7_addr_reg_2030 <= conv_i_i_i_1_fu_1164_p1; - end -end - -always @ (*) begin - if (((icmp_ln254_fu_610_p2 == 1'd0) & (1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_condition_exit_pp0_iter0_stage0 = 1'b1; - end else begin - ap_condition_exit_pp0_iter0_stage0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_loop_exit_ready_pp0_iter9_reg == 1'b1))) begin - ap_done_int = 1'b1; - end else begin - ap_done_int = ap_done_reg; - end -end - -always @ (*) begin - if (((ap_idle_pp0 == 1'b1) & (ap_start_int == 1'b0) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((ap_enable_reg_pp0_iter10 == 1'b0) & (ap_enable_reg_pp0_iter9 == 1'b0) & (ap_enable_reg_pp0_iter8 == 1'b0) & (ap_enable_reg_pp0_iter7 == 1'b0) & (ap_enable_reg_pp0_iter6 == 1'b0) & (ap_enable_reg_pp0_iter5 == 1'b0) & (ap_enable_reg_pp0_iter4 == 1'b0) & (ap_enable_reg_pp0_iter3 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0))) begin - ap_idle_pp0 = 1'b1; - end else begin - ap_idle_pp0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_ready_int = 1'b1; - end else begin - ap_ready_int = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0) & (1'b1 == ap_CS_fsm_pp0_stage0) & (ap_loop_init == 1'b1))) begin - ap_sig_allocacmp_j_1 = start_32_3; - end else begin - ap_sig_allocacmp_j_1 = j_fu_130; - end -end - -always @ (*) begin - if (((icmp_ln254_fu_610_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (1'd1 == and_ln260_2_fu_628_p2) & (fifo_aBvec_0_empty_n == 1'b1) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - fifo_aBvec_0_read = 1'b1; - end else begin - fifo_aBvec_0_read = 1'b0; - end -end - -always @ (*) begin - if (((icmp_ln254_fu_610_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (1'd1 == and_ln260_2_fu_628_p2) & (fifo_aBvec_1_empty_n == 1'b1) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - fifo_aBvec_1_read = 1'b1; - end else begin - fifo_aBvec_1_read = 1'b0; - end -end - -always @ (*) begin - if (((icmp_ln254_fu_610_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (1'd1 == and_ln260_2_fu_628_p2) & (fifo_aBvec_2_empty_n == 1'b1) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - fifo_aBvec_2_read = 1'b1; - end else begin - fifo_aBvec_2_read = 1'b0; - end -end - -always @ (*) begin - if (((icmp_ln254_fu_610_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (1'd1 == and_ln260_2_fu_628_p2) & (fifo_aBvec_3_empty_n == 1'b1) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - fifo_aBvec_3_read = 1'b1; - end else begin - fifo_aBvec_3_read = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_10_ce0 = 1'b1; - end else begin - local_C_V_10_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_10_ce1 = 1'b1; - end else begin - local_C_V_10_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_10_reg_1935_pp0_iter9_reg == 1'd0) & (ap_enable_reg_pp0_iter10 == 1'b1) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_10_we1 = 1'b1; - end else begin - local_C_V_10_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_11_ce0 = 1'b1; - end else begin - local_C_V_11_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_11_ce1 = 1'b1; - end else begin - local_C_V_11_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_10_reg_1935_pp0_iter9_reg == 1'd0) & (ap_enable_reg_pp0_iter10 == 1'b1) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_11_we1 = 1'b1; - end else begin - local_C_V_11_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_12_ce0 = 1'b1; - end else begin - local_C_V_12_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_12_ce1 = 1'b1; - end else begin - local_C_V_12_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_15_reg_1984_pp0_iter9_reg == 1'd0) & (ap_enable_reg_pp0_iter10 == 1'b1) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_12_we1 = 1'b1; - end else begin - local_C_V_12_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_13_ce0 = 1'b1; - end else begin - local_C_V_13_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_13_ce1 = 1'b1; - end else begin - local_C_V_13_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_15_reg_1984_pp0_iter9_reg == 1'd0) & (ap_enable_reg_pp0_iter10 == 1'b1) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_13_we1 = 1'b1; - end else begin - local_C_V_13_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_14_ce0 = 1'b1; - end else begin - local_C_V_14_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_14_ce1 = 1'b1; - end else begin - local_C_V_14_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_15_reg_1984_pp0_iter9_reg == 1'd0) & (ap_enable_reg_pp0_iter10 == 1'b1) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_14_we1 = 1'b1; - end else begin - local_C_V_14_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_15_ce0 = 1'b1; - end else begin - local_C_V_15_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_15_ce1 = 1'b1; - end else begin - local_C_V_15_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_15_reg_1984_pp0_iter9_reg == 1'd0) & (ap_enable_reg_pp0_iter10 == 1'b1) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_15_we1 = 1'b1; - end else begin - local_C_V_15_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_1_ce0 = 1'b1; - end else begin - local_C_V_1_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_1_ce1 = 1'b1; - end else begin - local_C_V_1_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1) & (p_Result_s_reg_1837_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_1_we1 = 1'b1; - end else begin - local_C_V_1_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_2_ce0 = 1'b1; - end else begin - local_C_V_2_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_2_ce1 = 1'b1; - end else begin - local_C_V_2_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1) & (p_Result_s_reg_1837_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_2_we1 = 1'b1; - end else begin - local_C_V_2_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_3_ce0 = 1'b1; - end else begin - local_C_V_3_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_3_ce1 = 1'b1; - end else begin - local_C_V_3_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1) & (p_Result_s_reg_1837_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_3_we1 = 1'b1; - end else begin - local_C_V_3_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_4_ce0 = 1'b1; - end else begin - local_C_V_4_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_4_ce1 = 1'b1; - end else begin - local_C_V_4_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1) & (p_Result_5_reg_1886_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_4_we1 = 1'b1; - end else begin - local_C_V_4_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_5_ce0 = 1'b1; - end else begin - local_C_V_5_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_5_ce1 = 1'b1; - end else begin - local_C_V_5_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1) & (p_Result_5_reg_1886_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_5_we1 = 1'b1; - end else begin - local_C_V_5_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_6_ce0 = 1'b1; - end else begin - local_C_V_6_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_6_ce1 = 1'b1; - end else begin - local_C_V_6_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1) & (p_Result_5_reg_1886_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_6_we1 = 1'b1; - end else begin - local_C_V_6_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_7_ce0 = 1'b1; - end else begin - local_C_V_7_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_7_ce1 = 1'b1; - end else begin - local_C_V_7_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1) & (p_Result_5_reg_1886_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_7_we1 = 1'b1; - end else begin - local_C_V_7_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_8_ce0 = 1'b1; - end else begin - local_C_V_8_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_8_ce1 = 1'b1; - end else begin - local_C_V_8_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_10_reg_1935_pp0_iter9_reg == 1'd0) & (ap_enable_reg_pp0_iter10 == 1'b1) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_8_we1 = 1'b1; - end else begin - local_C_V_8_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_9_ce0 = 1'b1; - end else begin - local_C_V_9_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_9_ce1 = 1'b1; - end else begin - local_C_V_9_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (p_Result_10_reg_1935_pp0_iter9_reg == 1'd0) & (ap_enable_reg_pp0_iter10 == 1'b1) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_9_we1 = 1'b1; - end else begin - local_C_V_9_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_ce0 = 1'b1; - end else begin - local_C_V_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1))) begin - local_C_V_ce1 = 1'b1; - end else begin - local_C_V_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter10 == 1'b1) & (p_Result_s_reg_1837_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg))) begin - local_C_V_we1 = 1'b1; - end else begin - local_C_V_we1 = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_pp0_stage0 : begin - ap_NS_fsm = ap_ST_fsm_pp0_stage0; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign and_ln260_1_fu_616_p2 = (tmp_3_nbreadreq_fu_170_p3 & tmp_2_nbreadreq_fu_162_p3); - -assign and_ln260_2_fu_628_p2 = (tmp_nbreadreq_fu_146_p3 & and_ln260_fu_622_p2); - -assign and_ln260_fu_622_p2 = (tmp_1_nbreadreq_fu_154_p3 & and_ln260_1_fu_616_p2); - -assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd0]; - -always @ (*) begin - ap_block_pp0 = ((ap_ST_fsm_pp0_stage0 == ap_CS_fsm) & (1'b1 == ap_block_pp0_stage0_subdone)); -end - -assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_11001 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_subdone = ~(1'b1 == 1'b1); - -assign ap_block_state10_pp0_stage0_iter9 = ~(1'b1 == 1'b1); - -assign ap_block_state11_pp0_stage0_iter10 = ~(1'b1 == 1'b1); - -assign ap_block_state1_pp0_stage0_iter0 = ~(1'b1 == 1'b1); - -assign ap_block_state2_pp0_stage0_iter1 = ~(1'b1 == 1'b1); - -assign ap_block_state3_pp0_stage0_iter2 = ~(1'b1 == 1'b1); - -assign ap_block_state4_pp0_stage0_iter3 = ~(1'b1 == 1'b1); - -assign ap_block_state5_pp0_stage0_iter4 = ~(1'b1 == 1'b1); - -assign ap_block_state6_pp0_stage0_iter5 = ~(1'b1 == 1'b1); - -assign ap_block_state7_pp0_stage0_iter6 = ~(1'b1 == 1'b1); - -assign ap_block_state8_pp0_stage0_iter7 = ~(1'b1 == 1'b1); - -assign ap_block_state9_pp0_stage0_iter8 = ~(1'b1 == 1'b1); - -always @ (*) begin - ap_condition_2344 = ((icmp_ln254_fu_610_p2 == 1'd1) & (1'd1 == and_ln260_2_fu_628_p2) & (ap_enable_reg_pp0_iter0 == 1'b1)); -end - -always @ (*) begin - ap_enable_operation_143 = (ap_predicate_op143_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_145 = (ap_predicate_op145_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_147 = (ap_predicate_op147_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_149 = (ap_predicate_op149_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_152 = (ap_predicate_op152_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_154 = (ap_predicate_op154_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_156 = (ap_predicate_op156_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_158 = (ap_predicate_op158_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_161 = (ap_predicate_op161_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_163 = (ap_predicate_op163_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_165 = (ap_predicate_op165_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_167 = (ap_predicate_op167_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_170 = (ap_predicate_op170_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_172 = (ap_predicate_op172_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_174 = (ap_predicate_op174_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_176 = (ap_predicate_op176_load_state2 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_177 = (ap_predicate_op177_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_180 = (ap_predicate_op180_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_183 = (ap_predicate_op183_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_186 = (ap_predicate_op186_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_189 = (ap_predicate_op189_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_192 = (ap_predicate_op192_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_195 = (ap_predicate_op195_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_198 = (ap_predicate_op198_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_201 = (ap_predicate_op201_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_204 = (ap_predicate_op204_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_207 = (ap_predicate_op207_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_210 = (ap_predicate_op210_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_213 = (ap_predicate_op213_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_216 = (ap_predicate_op216_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_219 = (ap_predicate_op219_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_222 = (ap_predicate_op222_load_state3 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_484 = (ap_predicate_op484_store_state11 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_488 = (ap_predicate_op488_store_state11 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_492 = (ap_predicate_op492_store_state11 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_496 = (ap_predicate_op496_store_state11 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_501 = (ap_predicate_op501_store_state11 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_505 = (ap_predicate_op505_store_state11 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_509 = (ap_predicate_op509_store_state11 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_513 = (ap_predicate_op513_store_state11 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_518 = (ap_predicate_op518_store_state11 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_522 = (ap_predicate_op522_store_state11 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_526 = (ap_predicate_op526_store_state11 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_530 = (ap_predicate_op530_store_state11 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_535 = (ap_predicate_op535_store_state11 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_539 = (ap_predicate_op539_store_state11 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_543 = (ap_predicate_op543_store_state11 == 1'b1); -end - -always @ (*) begin - ap_enable_operation_547 = (ap_predicate_op547_store_state11 == 1'b1); -end - -assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); - -assign ap_enable_reg_pp0_iter0 = ap_start_int; - -always @ (*) begin - ap_enable_state11_pp0_iter10_stage0 = ((ap_enable_reg_pp0_iter10 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0)); -end - -always @ (*) begin - ap_enable_state2_pp0_iter1_stage0 = ((ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0)); -end - -always @ (*) begin - ap_enable_state3_pp0_iter2_stage0 = ((ap_enable_reg_pp0_iter2 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0)); -end - -assign ap_loop_exit_ready = ap_condition_exit_pp0_iter0_stage0; - -always @ (*) begin - ap_predicate_op143_load_state2 = ((p_Result_s_reg_1837 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op145_load_state2 = ((p_Result_s_reg_1837 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op147_load_state2 = ((p_Result_s_reg_1837 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op149_load_state2 = ((p_Result_s_reg_1837 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op152_load_state2 = ((p_Result_5_reg_1886 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op154_load_state2 = ((p_Result_5_reg_1886 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op156_load_state2 = ((p_Result_5_reg_1886 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op158_load_state2 = ((p_Result_5_reg_1886 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op161_load_state2 = ((p_Result_10_reg_1935 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op163_load_state2 = ((p_Result_10_reg_1935 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op165_load_state2 = ((p_Result_10_reg_1935 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op167_load_state2 = ((p_Result_10_reg_1935 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op170_load_state2 = ((p_Result_15_reg_1984 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op172_load_state2 = ((p_Result_15_reg_1984 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op174_load_state2 = ((p_Result_15_reg_1984 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op176_load_state2 = ((p_Result_15_reg_1984 == 1'd0) & (1'd1 == and_ln260_2_reg_1788)); -end - -always @ (*) begin - ap_predicate_op177_load_state3 = ((p_Result_s_reg_1837_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op180_load_state3 = ((p_Result_s_reg_1837_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op183_load_state3 = ((p_Result_s_reg_1837_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op186_load_state3 = ((p_Result_s_reg_1837_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op189_load_state3 = ((p_Result_5_reg_1886_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op192_load_state3 = ((p_Result_5_reg_1886_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op195_load_state3 = ((p_Result_5_reg_1886_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op198_load_state3 = ((p_Result_5_reg_1886_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op201_load_state3 = ((p_Result_10_reg_1935_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op204_load_state3 = ((p_Result_10_reg_1935_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op207_load_state3 = ((p_Result_10_reg_1935_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op210_load_state3 = ((p_Result_10_reg_1935_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op213_load_state3 = ((p_Result_15_reg_1984_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op216_load_state3 = ((p_Result_15_reg_1984_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op219_load_state3 = ((p_Result_15_reg_1984_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op222_load_state3 = ((p_Result_15_reg_1984_pp0_iter1_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter1_reg)); -end - -always @ (*) begin - ap_predicate_op484_store_state11 = ((p_Result_s_reg_1837_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -always @ (*) begin - ap_predicate_op488_store_state11 = ((p_Result_s_reg_1837_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -always @ (*) begin - ap_predicate_op492_store_state11 = ((p_Result_s_reg_1837_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -always @ (*) begin - ap_predicate_op496_store_state11 = ((p_Result_s_reg_1837_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -always @ (*) begin - ap_predicate_op501_store_state11 = ((p_Result_5_reg_1886_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -always @ (*) begin - ap_predicate_op505_store_state11 = ((p_Result_5_reg_1886_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -always @ (*) begin - ap_predicate_op509_store_state11 = ((p_Result_5_reg_1886_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -always @ (*) begin - ap_predicate_op513_store_state11 = ((p_Result_5_reg_1886_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -always @ (*) begin - ap_predicate_op518_store_state11 = ((p_Result_10_reg_1935_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -always @ (*) begin - ap_predicate_op522_store_state11 = ((p_Result_10_reg_1935_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -always @ (*) begin - ap_predicate_op526_store_state11 = ((p_Result_10_reg_1935_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -always @ (*) begin - ap_predicate_op530_store_state11 = ((p_Result_10_reg_1935_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -always @ (*) begin - ap_predicate_op535_store_state11 = ((p_Result_15_reg_1984_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -always @ (*) begin - ap_predicate_op539_store_state11 = ((p_Result_15_reg_1984_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -always @ (*) begin - ap_predicate_op543_store_state11 = ((p_Result_15_reg_1984_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -always @ (*) begin - ap_predicate_op547_store_state11 = ((p_Result_15_reg_1984_pp0_iter9_reg == 1'd0) & (1'd1 == and_ln260_2_reg_1788_pp0_iter9_reg)); -end - -assign bitcast_ln78_10_fu_866_p1 = trunc_ln78_11_fu_810_p4; - -assign bitcast_ln78_11_fu_870_p1 = trunc_ln78_12_fu_820_p4; - -assign bitcast_ln78_12_fu_874_p1 = trunc_ln78_13_fu_830_p4; - -assign bitcast_ln78_13_fu_878_p1 = trunc_ln78_14_fu_840_p4; - -assign bitcast_ln78_16_fu_986_p1 = trunc_ln78_17_fu_918_p4; - -assign bitcast_ln78_17_fu_990_p1 = trunc_ln78_18_fu_928_p4; - -assign bitcast_ln78_18_fu_994_p1 = trunc_ln78_19_fu_938_p4; - -assign bitcast_ln78_19_fu_998_p1 = trunc_ln78_20_fu_948_p4; - -assign bitcast_ln78_1_fu_734_p1 = trunc_ln78_3_fu_672_p4; - -assign bitcast_ln78_20_fu_1002_p1 = trunc_ln78_21_fu_958_p4; - -assign bitcast_ln78_21_fu_1006_p1 = trunc_ln78_22_fu_968_p4; - -assign bitcast_ln78_24_fu_1114_p1 = trunc_ln78_25_fu_1046_p4; - -assign bitcast_ln78_25_fu_1118_p1 = trunc_ln78_26_fu_1056_p4; - -assign bitcast_ln78_26_fu_1122_p1 = trunc_ln78_27_fu_1066_p4; - -assign bitcast_ln78_27_fu_1126_p1 = trunc_ln78_28_fu_1076_p4; - -assign bitcast_ln78_28_fu_1130_p1 = trunc_ln78_29_fu_1086_p4; - -assign bitcast_ln78_29_fu_1134_p1 = trunc_ln78_30_fu_1096_p4; - -assign bitcast_ln78_2_fu_738_p1 = trunc_ln78_4_fu_682_p4; - -assign bitcast_ln78_3_fu_742_p1 = trunc_ln78_5_fu_692_p4; - -assign bitcast_ln78_4_fu_746_p1 = trunc_ln78_6_fu_702_p4; - -assign bitcast_ln78_5_fu_750_p1 = trunc_ln78_7_fu_712_p4; - -assign bitcast_ln78_8_fu_858_p1 = trunc_ln78_s_fu_790_p4; - -assign bitcast_ln78_9_fu_862_p1 = trunc_ln78_10_fu_800_p4; - -assign bitcast_ln78_fu_730_p1 = trunc_ln78_2_fu_662_p4; - -assign c_val_d0_u_V_10_fu_1325_p1 = local_C_V_10_q0[31:0]; - -assign c_val_d0_u_V_11_fu_1339_p1 = local_C_V_11_q0[31:0]; - -assign c_val_d0_u_V_12_fu_1353_p1 = local_C_V_12_q0[31:0]; - -assign c_val_d0_u_V_13_fu_1367_p1 = local_C_V_13_q0[31:0]; - -assign c_val_d0_u_V_14_fu_1381_p1 = local_C_V_14_q0[31:0]; - -assign c_val_d0_u_V_15_fu_1395_p1 = local_C_V_15_q0[31:0]; - -assign c_val_d0_u_V_1_fu_1199_p1 = local_C_V_1_q0[31:0]; - -assign c_val_d0_u_V_2_fu_1213_p1 = local_C_V_2_q0[31:0]; - -assign c_val_d0_u_V_3_fu_1227_p1 = local_C_V_3_q0[31:0]; - -assign c_val_d0_u_V_4_fu_1241_p1 = local_C_V_4_q0[31:0]; - -assign c_val_d0_u_V_5_fu_1255_p1 = local_C_V_5_q0[31:0]; - -assign c_val_d0_u_V_6_fu_1269_p1 = local_C_V_6_q0[31:0]; - -assign c_val_d0_u_V_7_fu_1283_p1 = local_C_V_7_q0[31:0]; - -assign c_val_d0_u_V_8_fu_1297_p1 = local_C_V_8_q0[31:0]; - -assign c_val_d0_u_V_9_fu_1311_p1 = local_C_V_9_q0[31:0]; - -assign c_val_d0_u_V_fu_1185_p1 = local_C_V_q0[31:0]; - -assign conv_i_i_i_1_fu_1164_p1 = elem_val_row_V_2_reg_1841; - -assign conv_i_i_i_2_fu_1171_p1 = elem_val_row_V_1_reg_1890; - -assign conv_i_i_i_3_fu_1178_p1 = elem_val_row_V_reg_1939; - -assign conv_i_i_i_fu_1157_p1 = elem_val_row_V_3_reg_1792; - -assign elem_val_abvec_M_elems_1_fu_726_p1 = trunc_ln78_1_fu_652_p4; - -assign elem_val_abvec_M_elems_2_fu_850_p1 = trunc_ln78_8_fu_770_p4; - -assign elem_val_abvec_M_elems_3_fu_854_p1 = trunc_ln78_9_fu_780_p4; - -assign elem_val_abvec_M_elems_4_fu_978_p1 = trunc_ln78_15_fu_898_p4; - -assign elem_val_abvec_M_elems_5_fu_982_p1 = trunc_ln78_16_fu_908_p4; - -assign elem_val_abvec_M_elems_6_fu_1106_p1 = trunc_ln78_23_fu_1026_p4; - -assign elem_val_abvec_M_elems_7_fu_1110_p1 = trunc_ln78_24_fu_1036_p4; - -assign elem_val_abvec_M_elems_fu_722_p1 = trunc_ln2_fu_642_p4; - -assign elem_val_row_V_1_fu_894_p1 = fifo_aBvec_2_dout[17:0]; - -assign elem_val_row_V_2_fu_766_p1 = fifo_aBvec_1_dout[17:0]; - -assign elem_val_row_V_3_fu_638_p1 = fifo_aBvec_0_dout[17:0]; - -assign elem_val_row_V_fu_1022_p1 = fifo_aBvec_3_dout[17:0]; - -assign empty_100_fu_1690_p1 = c_val_d1_f_10_reg_2509; - -assign empty_103_fu_1702_p1 = c_val_d0_f_11_reg_2514; - -assign empty_104_fu_1705_p1 = c_val_d1_f_11_reg_2519; - -assign empty_107_fu_1717_p1 = c_val_d0_f_12_reg_2524; - -assign empty_108_fu_1720_p1 = c_val_d1_f_12_reg_2529; - -assign empty_111_fu_1732_p1 = c_val_d0_f_13_reg_2534; - -assign empty_112_fu_1735_p1 = c_val_d1_f_13_reg_2539; - -assign empty_115_fu_1747_p1 = c_val_d0_f_14_reg_2544; - -assign empty_116_fu_1750_p1 = c_val_d1_f_14_reg_2549; - -assign empty_119_fu_1762_p1 = c_val_d0_f_15_reg_2554; - -assign empty_120_fu_1765_p1 = c_val_d1_f_15_reg_2559; - -assign empty_59_fu_1537_p1 = c_val_d0_f_reg_2404; - -assign empty_60_fu_1540_p1 = c_val_d1_f_reg_2409; - -assign empty_63_fu_1552_p1 = c_val_d0_f_1_reg_2414; - -assign empty_64_fu_1555_p1 = c_val_d1_f_1_reg_2419; - -assign empty_67_fu_1567_p1 = c_val_d0_f_2_reg_2424; - -assign empty_68_fu_1570_p1 = c_val_d1_f_2_reg_2429; - -assign empty_71_fu_1582_p1 = c_val_d0_f_3_reg_2434; - -assign empty_72_fu_1585_p1 = c_val_d1_f_3_reg_2439; - -assign empty_75_fu_1597_p1 = c_val_d0_f_4_reg_2444; - -assign empty_76_fu_1600_p1 = c_val_d1_f_4_reg_2449; - -assign empty_79_fu_1612_p1 = c_val_d0_f_5_reg_2454; - -assign empty_80_fu_1615_p1 = c_val_d1_f_5_reg_2459; - -assign empty_83_fu_1627_p1 = c_val_d0_f_6_reg_2464; - -assign empty_84_fu_1630_p1 = c_val_d1_f_6_reg_2469; - -assign empty_87_fu_1642_p1 = c_val_d0_f_7_reg_2474; - -assign empty_88_fu_1645_p1 = c_val_d1_f_7_reg_2479; - -assign empty_91_fu_1657_p1 = c_val_d0_f_8_reg_2484; - -assign empty_92_fu_1660_p1 = c_val_d1_f_8_reg_2489; - -assign empty_95_fu_1672_p1 = c_val_d0_f_9_reg_2494; - -assign empty_96_fu_1675_p1 = c_val_d1_f_9_reg_2499; - -assign empty_99_fu_1687_p1 = c_val_d0_f_10_reg_2504; - -assign grp_fu_474_p0 = c_val_d0_u_V_reg_2084; - -assign grp_fu_478_p0 = c_val_d1_u_V_reg_2089; - -assign grp_fu_482_p0 = c_val_d0_u_V_1_reg_2094; - -assign grp_fu_486_p0 = c_val_d1_u_V_1_reg_2099; - -assign grp_fu_490_p0 = c_val_d0_u_V_2_reg_2104; - -assign grp_fu_494_p0 = c_val_d1_u_V_2_reg_2109; - -assign grp_fu_498_p0 = c_val_d0_u_V_3_reg_2114; - -assign grp_fu_502_p0 = c_val_d1_u_V_3_reg_2119; - -assign grp_fu_506_p0 = c_val_d0_u_V_4_reg_2124; - -assign grp_fu_510_p0 = c_val_d1_u_V_4_reg_2129; - -assign grp_fu_514_p0 = c_val_d0_u_V_5_reg_2134; - -assign grp_fu_518_p0 = c_val_d1_u_V_5_reg_2139; - -assign grp_fu_522_p0 = c_val_d0_u_V_6_reg_2144; - -assign grp_fu_526_p0 = c_val_d1_u_V_6_reg_2149; - -assign grp_fu_530_p0 = c_val_d0_u_V_7_reg_2154; - -assign grp_fu_534_p0 = c_val_d1_u_V_7_reg_2159; - -assign grp_fu_538_p0 = c_val_d0_u_V_8_reg_2164; - -assign grp_fu_542_p0 = c_val_d1_u_V_8_reg_2169; - -assign grp_fu_546_p0 = c_val_d0_u_V_9_reg_2174; - -assign grp_fu_550_p0 = c_val_d1_u_V_9_reg_2179; - -assign grp_fu_554_p0 = c_val_d0_u_V_10_reg_2184; - -assign grp_fu_558_p0 = c_val_d1_u_V_10_reg_2189; - -assign grp_fu_562_p0 = c_val_d0_u_V_11_reg_2194; - -assign grp_fu_566_p0 = c_val_d1_u_V_11_reg_2199; - -assign grp_fu_570_p0 = c_val_d0_u_V_12_reg_2204; - -assign grp_fu_574_p0 = c_val_d1_u_V_12_reg_2209; - -assign grp_fu_578_p0 = c_val_d0_u_V_13_reg_2214; - -assign grp_fu_582_p0 = c_val_d1_u_V_13_reg_2219; - -assign grp_fu_586_p0 = c_val_d0_u_V_14_reg_2224; - -assign grp_fu_590_p0 = c_val_d1_u_V_14_reg_2229; - -assign grp_fu_594_p0 = c_val_d0_u_V_15_reg_2234; - -assign grp_fu_598_p0 = c_val_d1_u_V_15_reg_2239; - -assign icmp_ln254_fu_610_p2 = (($signed(ap_sig_allocacmp_j_1) < $signed(end_32)) ? 1'b1 : 1'b0); - -assign j_2_fu_1146_p2 = (ap_sig_allocacmp_j_1 + 32'd1); - -assign local_C_V_10_address0 = conv_i_i_i_2_fu_1171_p1; - -assign local_C_V_10_address1 = local_C_V_10_addr_reg_2048_pp0_iter9_reg; - -assign local_C_V_10_d1 = {{empty_100_fu_1690_p1}, {empty_99_fu_1687_p1}}; - -assign local_C_V_11_address0 = conv_i_i_i_2_fu_1171_p1; - -assign local_C_V_11_address1 = local_C_V_11_addr_reg_2054_pp0_iter9_reg; - -assign local_C_V_11_d1 = {{empty_104_fu_1705_p1}, {empty_103_fu_1702_p1}}; - -assign local_C_V_12_address0 = conv_i_i_i_3_fu_1178_p1; - -assign local_C_V_12_address1 = local_C_V_12_addr_reg_2060_pp0_iter9_reg; - -assign local_C_V_12_d1 = {{empty_108_fu_1720_p1}, {empty_107_fu_1717_p1}}; - -assign local_C_V_13_address0 = conv_i_i_i_3_fu_1178_p1; - -assign local_C_V_13_address1 = local_C_V_13_addr_reg_2066_pp0_iter9_reg; - -assign local_C_V_13_d1 = {{empty_112_fu_1735_p1}, {empty_111_fu_1732_p1}}; - -assign local_C_V_14_address0 = conv_i_i_i_3_fu_1178_p1; - -assign local_C_V_14_address1 = local_C_V_14_addr_reg_2072_pp0_iter9_reg; - -assign local_C_V_14_d1 = {{empty_116_fu_1750_p1}, {empty_115_fu_1747_p1}}; - -assign local_C_V_15_address0 = conv_i_i_i_3_fu_1178_p1; - -assign local_C_V_15_address1 = local_C_V_15_addr_reg_2078_pp0_iter9_reg; - -assign local_C_V_15_d1 = {{empty_120_fu_1765_p1}, {empty_119_fu_1762_p1}}; - -assign local_C_V_1_address0 = conv_i_i_i_fu_1157_p1; - -assign local_C_V_1_address1 = local_C_V_1_addr_reg_1994_pp0_iter9_reg; - -assign local_C_V_1_d1 = {{empty_64_fu_1555_p1}, {empty_63_fu_1552_p1}}; - -assign local_C_V_2_address0 = conv_i_i_i_fu_1157_p1; - -assign local_C_V_2_address1 = local_C_V_2_addr_reg_2000_pp0_iter9_reg; - -assign local_C_V_2_d1 = {{empty_68_fu_1570_p1}, {empty_67_fu_1567_p1}}; - -assign local_C_V_3_address0 = conv_i_i_i_fu_1157_p1; - -assign local_C_V_3_address1 = local_C_V_3_addr_reg_2006_pp0_iter9_reg; - -assign local_C_V_3_d1 = {{empty_72_fu_1585_p1}, {empty_71_fu_1582_p1}}; - -assign local_C_V_4_address0 = conv_i_i_i_1_fu_1164_p1; - -assign local_C_V_4_address1 = local_C_V_4_addr_reg_2012_pp0_iter9_reg; - -assign local_C_V_4_d1 = {{empty_76_fu_1600_p1}, {empty_75_fu_1597_p1}}; - -assign local_C_V_5_address0 = conv_i_i_i_1_fu_1164_p1; - -assign local_C_V_5_address1 = local_C_V_5_addr_reg_2018_pp0_iter9_reg; - -assign local_C_V_5_d1 = {{empty_80_fu_1615_p1}, {empty_79_fu_1612_p1}}; - -assign local_C_V_6_address0 = conv_i_i_i_1_fu_1164_p1; - -assign local_C_V_6_address1 = local_C_V_6_addr_reg_2024_pp0_iter9_reg; - -assign local_C_V_6_d1 = {{empty_84_fu_1630_p1}, {empty_83_fu_1627_p1}}; - -assign local_C_V_7_address0 = conv_i_i_i_1_fu_1164_p1; - -assign local_C_V_7_address1 = local_C_V_7_addr_reg_2030_pp0_iter9_reg; - -assign local_C_V_7_d1 = {{empty_88_fu_1645_p1}, {empty_87_fu_1642_p1}}; - -assign local_C_V_8_address0 = conv_i_i_i_2_fu_1171_p1; - -assign local_C_V_8_address1 = local_C_V_8_addr_reg_2036_pp0_iter9_reg; - -assign local_C_V_8_d1 = {{empty_92_fu_1660_p1}, {empty_91_fu_1657_p1}}; - -assign local_C_V_9_address0 = conv_i_i_i_2_fu_1171_p1; - -assign local_C_V_9_address1 = local_C_V_9_addr_reg_2042_pp0_iter9_reg; - -assign local_C_V_9_d1 = {{empty_96_fu_1675_p1}, {empty_95_fu_1672_p1}}; - -assign local_C_V_address0 = conv_i_i_i_fu_1157_p1; - -assign local_C_V_address1 = local_C_V_addr_reg_1988_pp0_iter9_reg; - -assign local_C_V_d1 = {{empty_60_fu_1540_p1}, {empty_59_fu_1537_p1}}; - -assign tmp_1_nbreadreq_fu_154_p3 = fifo_aBvec_1_empty_n; - -assign tmp_2_nbreadreq_fu_162_p3 = fifo_aBvec_2_empty_n; - -assign tmp_3_nbreadreq_fu_170_p3 = fifo_aBvec_3_empty_n; - -assign tmp_nbreadreq_fu_146_p3 = fifo_aBvec_0_empty_n; - -assign trunc_ln2_fu_642_p4 = {{fifo_aBvec_0_dout[49:18]}}; - -assign trunc_ln78_10_fu_800_p4 = {{fifo_aBvec_1_dout[145:114]}}; - -assign trunc_ln78_11_fu_810_p4 = {{fifo_aBvec_1_dout[177:146]}}; - -assign trunc_ln78_12_fu_820_p4 = {{fifo_aBvec_1_dout[209:178]}}; - -assign trunc_ln78_13_fu_830_p4 = {{fifo_aBvec_1_dout[241:210]}}; - -assign trunc_ln78_14_fu_840_p4 = {{fifo_aBvec_1_dout[273:242]}}; - -assign trunc_ln78_15_fu_898_p4 = {{fifo_aBvec_2_dout[49:18]}}; - -assign trunc_ln78_16_fu_908_p4 = {{fifo_aBvec_2_dout[81:50]}}; - -assign trunc_ln78_17_fu_918_p4 = {{fifo_aBvec_2_dout[113:82]}}; - -assign trunc_ln78_18_fu_928_p4 = {{fifo_aBvec_2_dout[145:114]}}; - -assign trunc_ln78_19_fu_938_p4 = {{fifo_aBvec_2_dout[177:146]}}; - -assign trunc_ln78_1_fu_652_p4 = {{fifo_aBvec_0_dout[81:50]}}; - -assign trunc_ln78_20_fu_948_p4 = {{fifo_aBvec_2_dout[209:178]}}; - -assign trunc_ln78_21_fu_958_p4 = {{fifo_aBvec_2_dout[241:210]}}; - -assign trunc_ln78_22_fu_968_p4 = {{fifo_aBvec_2_dout[273:242]}}; - -assign trunc_ln78_23_fu_1026_p4 = {{fifo_aBvec_3_dout[49:18]}}; - -assign trunc_ln78_24_fu_1036_p4 = {{fifo_aBvec_3_dout[81:50]}}; - -assign trunc_ln78_25_fu_1046_p4 = {{fifo_aBvec_3_dout[113:82]}}; - -assign trunc_ln78_26_fu_1056_p4 = {{fifo_aBvec_3_dout[145:114]}}; - -assign trunc_ln78_27_fu_1066_p4 = {{fifo_aBvec_3_dout[177:146]}}; - -assign trunc_ln78_28_fu_1076_p4 = {{fifo_aBvec_3_dout[209:178]}}; - -assign trunc_ln78_29_fu_1086_p4 = {{fifo_aBvec_3_dout[241:210]}}; - -assign trunc_ln78_2_fu_662_p4 = {{fifo_aBvec_0_dout[113:82]}}; - -assign trunc_ln78_30_fu_1096_p4 = {{fifo_aBvec_3_dout[273:242]}}; - -assign trunc_ln78_3_fu_672_p4 = {{fifo_aBvec_0_dout[145:114]}}; - -assign trunc_ln78_4_fu_682_p4 = {{fifo_aBvec_0_dout[177:146]}}; - -assign trunc_ln78_5_fu_692_p4 = {{fifo_aBvec_0_dout[209:178]}}; - -assign trunc_ln78_6_fu_702_p4 = {{fifo_aBvec_0_dout[241:210]}}; - -assign trunc_ln78_7_fu_712_p4 = {{fifo_aBvec_0_dout[273:242]}}; - -assign trunc_ln78_8_fu_770_p4 = {{fifo_aBvec_1_dout[49:18]}}; - -assign trunc_ln78_9_fu_780_p4 = {{fifo_aBvec_1_dout[81:50]}}; - -assign trunc_ln78_s_fu_790_p4 = {{fifo_aBvec_1_dout[113:82]}}; - -endmodule //PEG_Cmtx_PEG_Cmtx_Pipeline_computation diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_PEG_Cmtx_Pipeline_init_C.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_PEG_Cmtx_Pipeline_init_C.v deleted file mode 100644 index 6409e288..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_PEG_Cmtx_Pipeline_init_C.v +++ /dev/null @@ -1,696 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module PEG_Cmtx_PEG_Cmtx_Pipeline_init_C ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - trunc_ln, - local_C_V_15_address1, - local_C_V_15_ce1, - local_C_V_15_we1, - local_C_V_15_d1, - local_C_V_14_address1, - local_C_V_14_ce1, - local_C_V_14_we1, - local_C_V_14_d1, - local_C_V_13_address1, - local_C_V_13_ce1, - local_C_V_13_we1, - local_C_V_13_d1, - local_C_V_12_address1, - local_C_V_12_ce1, - local_C_V_12_we1, - local_C_V_12_d1, - local_C_V_11_address1, - local_C_V_11_ce1, - local_C_V_11_we1, - local_C_V_11_d1, - local_C_V_10_address1, - local_C_V_10_ce1, - local_C_V_10_we1, - local_C_V_10_d1, - local_C_V_9_address1, - local_C_V_9_ce1, - local_C_V_9_we1, - local_C_V_9_d1, - local_C_V_8_address1, - local_C_V_8_ce1, - local_C_V_8_we1, - local_C_V_8_d1, - local_C_V_7_address1, - local_C_V_7_ce1, - local_C_V_7_we1, - local_C_V_7_d1, - local_C_V_6_address1, - local_C_V_6_ce1, - local_C_V_6_we1, - local_C_V_6_d1, - local_C_V_5_address1, - local_C_V_5_ce1, - local_C_V_5_we1, - local_C_V_5_d1, - local_C_V_4_address1, - local_C_V_4_ce1, - local_C_V_4_we1, - local_C_V_4_d1, - local_C_V_3_address1, - local_C_V_3_ce1, - local_C_V_3_we1, - local_C_V_3_d1, - local_C_V_2_address1, - local_C_V_2_ce1, - local_C_V_2_we1, - local_C_V_2_d1, - local_C_V_1_address1, - local_C_V_1_ce1, - local_C_V_1_we1, - local_C_V_1_d1, - local_C_V_address1, - local_C_V_ce1, - local_C_V_we1, - local_C_V_d1 -); - -parameter ap_ST_fsm_pp0_stage0 = 1'd1; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [25:0] trunc_ln; -output [12:0] local_C_V_15_address1; -output local_C_V_15_ce1; -output local_C_V_15_we1; -output [63:0] local_C_V_15_d1; -output [12:0] local_C_V_14_address1; -output local_C_V_14_ce1; -output local_C_V_14_we1; -output [63:0] local_C_V_14_d1; -output [12:0] local_C_V_13_address1; -output local_C_V_13_ce1; -output local_C_V_13_we1; -output [63:0] local_C_V_13_d1; -output [12:0] local_C_V_12_address1; -output local_C_V_12_ce1; -output local_C_V_12_we1; -output [63:0] local_C_V_12_d1; -output [12:0] local_C_V_11_address1; -output local_C_V_11_ce1; -output local_C_V_11_we1; -output [63:0] local_C_V_11_d1; -output [12:0] local_C_V_10_address1; -output local_C_V_10_ce1; -output local_C_V_10_we1; -output [63:0] local_C_V_10_d1; -output [12:0] local_C_V_9_address1; -output local_C_V_9_ce1; -output local_C_V_9_we1; -output [63:0] local_C_V_9_d1; -output [12:0] local_C_V_8_address1; -output local_C_V_8_ce1; -output local_C_V_8_we1; -output [63:0] local_C_V_8_d1; -output [12:0] local_C_V_7_address1; -output local_C_V_7_ce1; -output local_C_V_7_we1; -output [63:0] local_C_V_7_d1; -output [12:0] local_C_V_6_address1; -output local_C_V_6_ce1; -output local_C_V_6_we1; -output [63:0] local_C_V_6_d1; -output [12:0] local_C_V_5_address1; -output local_C_V_5_ce1; -output local_C_V_5_we1; -output [63:0] local_C_V_5_d1; -output [12:0] local_C_V_4_address1; -output local_C_V_4_ce1; -output local_C_V_4_we1; -output [63:0] local_C_V_4_d1; -output [12:0] local_C_V_3_address1; -output local_C_V_3_ce1; -output local_C_V_3_we1; -output [63:0] local_C_V_3_d1; -output [12:0] local_C_V_2_address1; -output local_C_V_2_ce1; -output local_C_V_2_we1; -output [63:0] local_C_V_2_d1; -output [12:0] local_C_V_1_address1; -output local_C_V_1_ce1; -output local_C_V_1_we1; -output [63:0] local_C_V_1_d1; -output [12:0] local_C_V_address1; -output local_C_V_ce1; -output local_C_V_we1; -output [63:0] local_C_V_d1; - -reg ap_idle; -reg local_C_V_15_ce1; -reg local_C_V_15_we1; -reg local_C_V_14_ce1; -reg local_C_V_14_we1; -reg local_C_V_13_ce1; -reg local_C_V_13_we1; -reg local_C_V_12_ce1; -reg local_C_V_12_we1; -reg local_C_V_11_ce1; -reg local_C_V_11_we1; -reg local_C_V_10_ce1; -reg local_C_V_10_we1; -reg local_C_V_9_ce1; -reg local_C_V_9_we1; -reg local_C_V_8_ce1; -reg local_C_V_8_we1; -reg local_C_V_7_ce1; -reg local_C_V_7_we1; -reg local_C_V_6_ce1; -reg local_C_V_6_we1; -reg local_C_V_5_ce1; -reg local_C_V_5_we1; -reg local_C_V_4_ce1; -reg local_C_V_4_we1; -reg local_C_V_3_ce1; -reg local_C_V_3_we1; -reg local_C_V_2_ce1; -reg local_C_V_2_we1; -reg local_C_V_1_ce1; -reg local_C_V_1_we1; -reg local_C_V_ce1; -reg local_C_V_we1; - -(* fsm_encoding = "none" *) reg [0:0] ap_CS_fsm; -wire ap_CS_fsm_pp0_stage0; -wire ap_enable_reg_pp0_iter0; -reg ap_enable_reg_pp0_iter1; -reg ap_idle_pp0; -wire ap_block_state1_pp0_stage0_iter0; -wire ap_block_state2_pp0_stage0_iter1; -wire ap_block_pp0_stage0_subdone; -wire [0:0] icmp_ln237_fu_378_p2; -reg ap_condition_exit_pp0_iter0_stage0; -wire ap_loop_exit_ready; -reg ap_ready_int; -reg [13:0] i_3_reg_421; -wire ap_block_pp0_stage0_11001; -wire [63:0] zext_ln237_fu_395_p1; -wire ap_block_pp0_stage0; -reg [13:0] i_fu_68; -wire [13:0] add_ln237_fu_384_p2; -wire ap_loop_init; -reg [13:0] ap_sig_allocacmp_i_3; -wire [25:0] zext_ln237_1_fu_374_p1; -reg ap_done_reg; -wire ap_continue_int; -reg ap_done_int; -reg [0:0] ap_NS_fsm; -wire ap_enable_pp0; -wire ap_start_int; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 1'd1; -#0 ap_enable_reg_pp0_iter1 = 1'b0; -#0 ap_done_reg = 1'b0; -end - -PEG_Cmtx_flow_control_loop_pipe_sequential_init flow_control_loop_pipe_sequential_init_U( - .ap_clk(ap_clk), - .ap_rst(ap_rst), - .ap_start(ap_start), - .ap_ready(ap_ready), - .ap_done(ap_done), - .ap_start_int(ap_start_int), - .ap_loop_init(ap_loop_init), - .ap_ready_int(ap_ready_int), - .ap_loop_exit_ready(ap_condition_exit_pp0_iter0_stage0), - .ap_loop_exit_done(ap_done_int), - .ap_continue_int(ap_continue_int), - .ap_done_int(ap_done_int) -); - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_pp0_stage0; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_done_reg <= 1'b0; - end else begin - if ((ap_continue_int == 1'b1)) begin - ap_done_reg <= 1'b0; - end else if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_done_reg <= 1'b1; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else begin - if ((1'b1 == ap_condition_exit_pp0_iter0_stage0)) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_enable_reg_pp0_iter1 <= ap_start_int; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if (((icmp_ln237_fu_378_p2 == 1'd1) & (ap_enable_reg_pp0_iter0 == 1'b1))) begin - i_fu_68 <= add_ln237_fu_384_p2; - end else if ((ap_loop_init == 1'b1)) begin - i_fu_68 <= 14'd0; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - i_3_reg_421 <= ap_sig_allocacmp_i_3; - end -end - -always @ (*) begin - if (((icmp_ln237_fu_378_p2 == 1'd0) & (1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_condition_exit_pp0_iter0_stage0 = 1'b1; - end else begin - ap_condition_exit_pp0_iter0_stage0 = 1'b0; - end -end - -always @ (*) begin - if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_done_int = 1'b1; - end else begin - ap_done_int = ap_done_reg; - end -end - -always @ (*) begin - if (((ap_idle_pp0 == 1'b1) & (ap_start_int == 1'b0) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0))) begin - ap_idle_pp0 = 1'b1; - end else begin - ap_idle_pp0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_ready_int = 1'b1; - end else begin - ap_ready_int = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0) & (1'b1 == ap_CS_fsm_pp0_stage0) & (ap_loop_init == 1'b1))) begin - ap_sig_allocacmp_i_3 = 14'd0; - end else begin - ap_sig_allocacmp_i_3 = i_fu_68; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_10_ce1 = 1'b1; - end else begin - local_C_V_10_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_10_we1 = 1'b1; - end else begin - local_C_V_10_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_11_ce1 = 1'b1; - end else begin - local_C_V_11_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_11_we1 = 1'b1; - end else begin - local_C_V_11_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_12_ce1 = 1'b1; - end else begin - local_C_V_12_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_12_we1 = 1'b1; - end else begin - local_C_V_12_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_13_ce1 = 1'b1; - end else begin - local_C_V_13_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_13_we1 = 1'b1; - end else begin - local_C_V_13_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_14_ce1 = 1'b1; - end else begin - local_C_V_14_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_14_we1 = 1'b1; - end else begin - local_C_V_14_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_15_ce1 = 1'b1; - end else begin - local_C_V_15_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_15_we1 = 1'b1; - end else begin - local_C_V_15_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_1_ce1 = 1'b1; - end else begin - local_C_V_1_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_1_we1 = 1'b1; - end else begin - local_C_V_1_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_2_ce1 = 1'b1; - end else begin - local_C_V_2_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_2_we1 = 1'b1; - end else begin - local_C_V_2_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_3_ce1 = 1'b1; - end else begin - local_C_V_3_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_3_we1 = 1'b1; - end else begin - local_C_V_3_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_4_ce1 = 1'b1; - end else begin - local_C_V_4_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_4_we1 = 1'b1; - end else begin - local_C_V_4_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_5_ce1 = 1'b1; - end else begin - local_C_V_5_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_5_we1 = 1'b1; - end else begin - local_C_V_5_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_6_ce1 = 1'b1; - end else begin - local_C_V_6_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_6_we1 = 1'b1; - end else begin - local_C_V_6_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_7_ce1 = 1'b1; - end else begin - local_C_V_7_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_7_we1 = 1'b1; - end else begin - local_C_V_7_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_8_ce1 = 1'b1; - end else begin - local_C_V_8_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_8_we1 = 1'b1; - end else begin - local_C_V_8_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_9_ce1 = 1'b1; - end else begin - local_C_V_9_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_9_we1 = 1'b1; - end else begin - local_C_V_9_we1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_ce1 = 1'b1; - end else begin - local_C_V_ce1 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_we1 = 1'b1; - end else begin - local_C_V_we1 = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_pp0_stage0 : begin - ap_NS_fsm = ap_ST_fsm_pp0_stage0; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign add_ln237_fu_384_p2 = (ap_sig_allocacmp_i_3 + 14'd1); - -assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd0]; - -assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_11001 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_subdone = ~(1'b1 == 1'b1); - -assign ap_block_state1_pp0_stage0_iter0 = ~(1'b1 == 1'b1); - -assign ap_block_state2_pp0_stage0_iter1 = ~(1'b1 == 1'b1); - -assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); - -assign ap_enable_reg_pp0_iter0 = ap_start_int; - -assign ap_loop_exit_ready = ap_condition_exit_pp0_iter0_stage0; - -assign icmp_ln237_fu_378_p2 = (($signed(zext_ln237_1_fu_374_p1) < $signed(trunc_ln)) ? 1'b1 : 1'b0); - -assign local_C_V_10_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_10_d1 = 64'd0; - -assign local_C_V_11_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_11_d1 = 64'd0; - -assign local_C_V_12_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_12_d1 = 64'd0; - -assign local_C_V_13_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_13_d1 = 64'd0; - -assign local_C_V_14_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_14_d1 = 64'd0; - -assign local_C_V_15_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_15_d1 = 64'd0; - -assign local_C_V_1_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_1_d1 = 64'd0; - -assign local_C_V_2_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_2_d1 = 64'd0; - -assign local_C_V_3_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_3_d1 = 64'd0; - -assign local_C_V_4_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_4_d1 = 64'd0; - -assign local_C_V_5_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_5_d1 = 64'd0; - -assign local_C_V_6_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_6_d1 = 64'd0; - -assign local_C_V_7_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_7_d1 = 64'd0; - -assign local_C_V_8_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_8_d1 = 64'd0; - -assign local_C_V_9_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_9_d1 = 64'd0; - -assign local_C_V_address1 = zext_ln237_fu_395_p1; - -assign local_C_V_d1 = 64'd0; - -assign zext_ln237_1_fu_374_p1 = ap_sig_allocacmp_i_3; - -assign zext_ln237_fu_395_p1 = i_3_reg_421; - -endmodule //PEG_Cmtx_PEG_Cmtx_Pipeline_init_C diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_PEG_Cmtx_Pipeline_write_C_outer.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_PEG_Cmtx_Pipeline_write_C_outer.v deleted file mode 100644 index b2aebcf5..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_PEG_Cmtx_Pipeline_write_C_outer.v +++ /dev/null @@ -1,671 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module PEG_Cmtx_PEG_Cmtx_Pipeline_write_C_outer ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - fifo_C_out_din, - fifo_C_out_full_n, - fifo_C_out_write, - num_v_out, - local_C_V_address0, - local_C_V_ce0, - local_C_V_q0, - local_C_V_4_address0, - local_C_V_4_ce0, - local_C_V_4_q0, - local_C_V_8_address0, - local_C_V_8_ce0, - local_C_V_8_q0, - local_C_V_12_address0, - local_C_V_12_ce0, - local_C_V_12_q0, - local_C_V_1_address0, - local_C_V_1_ce0, - local_C_V_1_q0, - local_C_V_5_address0, - local_C_V_5_ce0, - local_C_V_5_q0, - local_C_V_9_address0, - local_C_V_9_ce0, - local_C_V_9_q0, - local_C_V_13_address0, - local_C_V_13_ce0, - local_C_V_13_q0, - local_C_V_2_address0, - local_C_V_2_ce0, - local_C_V_2_q0, - local_C_V_6_address0, - local_C_V_6_ce0, - local_C_V_6_q0, - local_C_V_10_address0, - local_C_V_10_ce0, - local_C_V_10_q0, - local_C_V_14_address0, - local_C_V_14_ce0, - local_C_V_14_q0, - local_C_V_3_address0, - local_C_V_3_ce0, - local_C_V_3_q0, - local_C_V_7_address0, - local_C_V_7_ce0, - local_C_V_7_q0, - local_C_V_11_address0, - local_C_V_11_ce0, - local_C_V_11_q0, - local_C_V_15_address0, - local_C_V_15_ce0, - local_C_V_15_q0 -); - -parameter ap_ST_fsm_pp0_stage0 = 1'd1; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -output [256:0] fifo_C_out_din; -input fifo_C_out_full_n; -output fifo_C_out_write; -input [27:0] num_v_out; -output [12:0] local_C_V_address0; -output local_C_V_ce0; -input [63:0] local_C_V_q0; -output [12:0] local_C_V_4_address0; -output local_C_V_4_ce0; -input [63:0] local_C_V_4_q0; -output [12:0] local_C_V_8_address0; -output local_C_V_8_ce0; -input [63:0] local_C_V_8_q0; -output [12:0] local_C_V_12_address0; -output local_C_V_12_ce0; -input [63:0] local_C_V_12_q0; -output [12:0] local_C_V_1_address0; -output local_C_V_1_ce0; -input [63:0] local_C_V_1_q0; -output [12:0] local_C_V_5_address0; -output local_C_V_5_ce0; -input [63:0] local_C_V_5_q0; -output [12:0] local_C_V_9_address0; -output local_C_V_9_ce0; -input [63:0] local_C_V_9_q0; -output [12:0] local_C_V_13_address0; -output local_C_V_13_ce0; -input [63:0] local_C_V_13_q0; -output [12:0] local_C_V_2_address0; -output local_C_V_2_ce0; -input [63:0] local_C_V_2_q0; -output [12:0] local_C_V_6_address0; -output local_C_V_6_ce0; -input [63:0] local_C_V_6_q0; -output [12:0] local_C_V_10_address0; -output local_C_V_10_ce0; -input [63:0] local_C_V_10_q0; -output [12:0] local_C_V_14_address0; -output local_C_V_14_ce0; -input [63:0] local_C_V_14_q0; -output [12:0] local_C_V_3_address0; -output local_C_V_3_ce0; -input [63:0] local_C_V_3_q0; -output [12:0] local_C_V_7_address0; -output local_C_V_7_ce0; -input [63:0] local_C_V_7_q0; -output [12:0] local_C_V_11_address0; -output local_C_V_11_ce0; -input [63:0] local_C_V_11_q0; -output [12:0] local_C_V_15_address0; -output local_C_V_15_ce0; -input [63:0] local_C_V_15_q0; - -reg ap_idle; -reg fifo_C_out_write; -reg local_C_V_ce0; -reg local_C_V_4_ce0; -reg local_C_V_8_ce0; -reg local_C_V_12_ce0; -reg local_C_V_1_ce0; -reg local_C_V_5_ce0; -reg local_C_V_9_ce0; -reg local_C_V_13_ce0; -reg local_C_V_2_ce0; -reg local_C_V_6_ce0; -reg local_C_V_10_ce0; -reg local_C_V_14_ce0; -reg local_C_V_3_ce0; -reg local_C_V_7_ce0; -reg local_C_V_11_ce0; -reg local_C_V_15_ce0; - -(* fsm_encoding = "none" *) reg [0:0] ap_CS_fsm; -wire ap_CS_fsm_pp0_stage0; -wire ap_enable_reg_pp0_iter0; -reg ap_enable_reg_pp0_iter1; -reg ap_enable_reg_pp0_iter2; -reg ap_idle_pp0; -wire ap_block_state1_pp0_stage0_iter0; -wire ap_block_state2_pp0_stage0_iter1; -reg ap_block_state3_pp0_stage0_iter2; -reg ap_block_pp0_stage0_subdone; -wire [0:0] icmp_ln278_fu_338_p2; -reg ap_condition_exit_pp0_iter0_stage0; -wire ap_loop_exit_ready; -reg ap_ready_int; -reg fifo_C_out_blk_n; -wire ap_block_pp0_stage0; -reg ap_block_pp0_stage0_11001; -wire [63:0] u_64_V_fu_392_p6; -reg [63:0] u_64_V_reg_630; -wire [63:0] u_64_V_1_fu_406_p6; -reg [63:0] u_64_V_1_reg_635; -wire [63:0] u_64_V_2_fu_420_p6; -reg [63:0] u_64_V_2_reg_640; -wire [63:0] u_64_V_3_fu_434_p6; -reg [63:0] u_64_V_3_reg_645; -wire [63:0] idxprom1431_fu_360_p1; -reg [26:0] i_fu_92; -wire [26:0] i_2_fu_344_p2; -wire ap_loop_init; -reg [26:0] ap_sig_allocacmp_i_1; -reg [31:0] c_idx_fu_96; -wire [31:0] c_idx_1_fu_508_p3; -reg ap_block_pp0_stage0_01001; -wire [27:0] zext_ln278_fu_334_p1; -wire [12:0] tmp_4_fu_350_p4; -wire [1:0] trunc_ln283_fu_388_p1; -wire [0:0] icmp_ln287_1_fu_454_p2; -wire [0:0] icmp_ln287_fu_448_p2; -wire [0:0] or_ln287_fu_468_p2; -wire [31:0] select_ln287_fu_460_p3; -wire [0:0] icmp_ln287_3_fu_488_p2; -wire [0:0] icmp_ln287_2_fu_482_p2; -wire [0:0] empty_57_fu_502_p2; -wire [31:0] empty_fu_494_p3; -wire [31:0] select_ln287_1_fu_474_p3; -reg ap_done_reg; -wire ap_continue_int; -reg ap_done_int; -reg ap_loop_exit_ready_pp0_iter1_reg; -reg [0:0] ap_NS_fsm; -wire ap_enable_pp0; -wire ap_start_int; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 1'd1; -#0 ap_enable_reg_pp0_iter1 = 1'b0; -#0 ap_enable_reg_pp0_iter2 = 1'b0; -#0 ap_done_reg = 1'b0; -end - -PEG_Cmtx_mux_42_64_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 64 ), - .din1_WIDTH( 64 ), - .din2_WIDTH( 64 ), - .din3_WIDTH( 64 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 64 )) -mux_42_64_1_1_U73( - .din0(local_C_V_q0), - .din1(local_C_V_4_q0), - .din2(local_C_V_8_q0), - .din3(local_C_V_12_q0), - .din4(trunc_ln283_fu_388_p1), - .dout(u_64_V_fu_392_p6) -); - -PEG_Cmtx_mux_42_64_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 64 ), - .din1_WIDTH( 64 ), - .din2_WIDTH( 64 ), - .din3_WIDTH( 64 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 64 )) -mux_42_64_1_1_U74( - .din0(local_C_V_1_q0), - .din1(local_C_V_5_q0), - .din2(local_C_V_9_q0), - .din3(local_C_V_13_q0), - .din4(trunc_ln283_fu_388_p1), - .dout(u_64_V_1_fu_406_p6) -); - -PEG_Cmtx_mux_42_64_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 64 ), - .din1_WIDTH( 64 ), - .din2_WIDTH( 64 ), - .din3_WIDTH( 64 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 64 )) -mux_42_64_1_1_U75( - .din0(local_C_V_2_q0), - .din1(local_C_V_6_q0), - .din2(local_C_V_10_q0), - .din3(local_C_V_14_q0), - .din4(trunc_ln283_fu_388_p1), - .dout(u_64_V_2_fu_420_p6) -); - -PEG_Cmtx_mux_42_64_1_1 #( - .ID( 1 ), - .NUM_STAGE( 1 ), - .din0_WIDTH( 64 ), - .din1_WIDTH( 64 ), - .din2_WIDTH( 64 ), - .din3_WIDTH( 64 ), - .din4_WIDTH( 2 ), - .dout_WIDTH( 64 )) -mux_42_64_1_1_U76( - .din0(local_C_V_3_q0), - .din1(local_C_V_7_q0), - .din2(local_C_V_11_q0), - .din3(local_C_V_15_q0), - .din4(trunc_ln283_fu_388_p1), - .dout(u_64_V_3_fu_434_p6) -); - -PEG_Cmtx_flow_control_loop_pipe_sequential_init flow_control_loop_pipe_sequential_init_U( - .ap_clk(ap_clk), - .ap_rst(ap_rst), - .ap_start(ap_start), - .ap_ready(ap_ready), - .ap_done(ap_done), - .ap_start_int(ap_start_int), - .ap_loop_init(ap_loop_init), - .ap_ready_int(ap_ready_int), - .ap_loop_exit_ready(ap_condition_exit_pp0_iter0_stage0), - .ap_loop_exit_done(ap_done_int), - .ap_continue_int(ap_continue_int), - .ap_done_int(ap_done_int) -); - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_pp0_stage0; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_done_reg <= 1'b0; - end else begin - if ((ap_continue_int == 1'b1)) begin - ap_done_reg <= 1'b0; - end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_loop_exit_ready_pp0_iter1_reg == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_done_reg <= 1'b1; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else begin - if ((1'b1 == ap_condition_exit_pp0_iter0_stage0)) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_enable_reg_pp0_iter1 <= ap_start_int; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter2 <= 1'b0; - end else begin - if ((1'b0 == ap_block_pp0_stage0_subdone)) begin - ap_enable_reg_pp0_iter2 <= ap_enable_reg_pp0_iter1; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if ((ap_loop_init == 1'b1)) begin - c_idx_fu_96 <= 32'd0; - end else if ((ap_enable_reg_pp0_iter1 == 1'b1)) begin - c_idx_fu_96 <= c_idx_1_fu_508_p3; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if (((icmp_ln278_fu_338_p2 == 1'd1) & (ap_enable_reg_pp0_iter0 == 1'b1))) begin - i_fu_92 <= i_2_fu_344_p2; - end else if ((ap_loop_init == 1'b1)) begin - i_fu_92 <= 27'd0; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_loop_exit_ready_pp0_iter1_reg <= ap_loop_exit_ready; - u_64_V_1_reg_635 <= u_64_V_1_fu_406_p6; - u_64_V_2_reg_640 <= u_64_V_2_fu_420_p6; - u_64_V_3_reg_645 <= u_64_V_3_fu_434_p6; - u_64_V_reg_630 <= u_64_V_fu_392_p6; - end -end - -always @ (*) begin - if (((icmp_ln278_fu_338_p2 == 1'd0) & (1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_condition_exit_pp0_iter0_stage0 = 1'b1; - end else begin - ap_condition_exit_pp0_iter0_stage0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_loop_exit_ready_pp0_iter1_reg == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_done_int = 1'b1; - end else begin - ap_done_int = ap_done_reg; - end -end - -always @ (*) begin - if (((ap_start_int == 1'b0) & (ap_idle_pp0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((ap_enable_reg_pp0_iter2 == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0))) begin - ap_idle_pp0 = 1'b1; - end else begin - ap_idle_pp0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_ready_int = 1'b1; - end else begin - ap_ready_int = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0) & (ap_loop_init == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_sig_allocacmp_i_1 = 27'd0; - end else begin - ap_sig_allocacmp_i_1 = i_fu_92; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin - fifo_C_out_blk_n = fifo_C_out_full_n; - end else begin - fifo_C_out_blk_n = 1'b1; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin - fifo_C_out_write = 1'b1; - end else begin - fifo_C_out_write = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_10_ce0 = 1'b1; - end else begin - local_C_V_10_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_11_ce0 = 1'b1; - end else begin - local_C_V_11_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_12_ce0 = 1'b1; - end else begin - local_C_V_12_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_13_ce0 = 1'b1; - end else begin - local_C_V_13_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_14_ce0 = 1'b1; - end else begin - local_C_V_14_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_15_ce0 = 1'b1; - end else begin - local_C_V_15_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_1_ce0 = 1'b1; - end else begin - local_C_V_1_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_2_ce0 = 1'b1; - end else begin - local_C_V_2_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_3_ce0 = 1'b1; - end else begin - local_C_V_3_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_4_ce0 = 1'b1; - end else begin - local_C_V_4_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_5_ce0 = 1'b1; - end else begin - local_C_V_5_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_6_ce0 = 1'b1; - end else begin - local_C_V_6_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_7_ce0 = 1'b1; - end else begin - local_C_V_7_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_8_ce0 = 1'b1; - end else begin - local_C_V_8_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_9_ce0 = 1'b1; - end else begin - local_C_V_9_ce0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - local_C_V_ce0 = 1'b1; - end else begin - local_C_V_ce0 = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_pp0_stage0 : begin - ap_NS_fsm = ap_ST_fsm_pp0_stage0; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd0]; - -assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); - -always @ (*) begin - ap_block_pp0_stage0_01001 = ((fifo_C_out_full_n == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b1)); -end - -always @ (*) begin - ap_block_pp0_stage0_11001 = ((fifo_C_out_full_n == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b1)); -end - -always @ (*) begin - ap_block_pp0_stage0_subdone = ((fifo_C_out_full_n == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b1)); -end - -assign ap_block_state1_pp0_stage0_iter0 = ~(1'b1 == 1'b1); - -assign ap_block_state2_pp0_stage0_iter1 = ~(1'b1 == 1'b1); - -always @ (*) begin - ap_block_state3_pp0_stage0_iter2 = (fifo_C_out_full_n == 1'b0); -end - -assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); - -assign ap_enable_reg_pp0_iter0 = ap_start_int; - -assign ap_loop_exit_ready = ap_condition_exit_pp0_iter0_stage0; - -assign c_idx_1_fu_508_p3 = ((empty_57_fu_502_p2[0:0] == 1'b1) ? empty_fu_494_p3 : select_ln287_1_fu_474_p3); - -assign empty_57_fu_502_p2 = (icmp_ln287_3_fu_488_p2 | icmp_ln287_2_fu_482_p2); - -assign empty_fu_494_p3 = ((icmp_ln287_3_fu_488_p2[0:0] == 1'b1) ? 32'd0 : 32'd1); - -assign fifo_C_out_din = {{{{{{{{1'd0}, {u_64_V_3_reg_645}}}, {u_64_V_2_reg_640}}}, {u_64_V_1_reg_635}}}, {u_64_V_reg_630}}; - -assign i_2_fu_344_p2 = (ap_sig_allocacmp_i_1 + 27'd1); - -assign icmp_ln278_fu_338_p2 = (($signed(zext_ln278_fu_334_p1) < $signed(num_v_out)) ? 1'b1 : 1'b0); - -assign icmp_ln287_1_fu_454_p2 = ((c_idx_fu_96 == 32'd1) ? 1'b1 : 1'b0); - -assign icmp_ln287_2_fu_482_p2 = ((c_idx_fu_96 == 32'd2) ? 1'b1 : 1'b0); - -assign icmp_ln287_3_fu_488_p2 = ((c_idx_fu_96 == 32'd3) ? 1'b1 : 1'b0); - -assign icmp_ln287_fu_448_p2 = ((c_idx_fu_96 == 32'd0) ? 1'b1 : 1'b0); - -assign idxprom1431_fu_360_p1 = tmp_4_fu_350_p4; - -assign local_C_V_10_address0 = idxprom1431_fu_360_p1; - -assign local_C_V_11_address0 = idxprom1431_fu_360_p1; - -assign local_C_V_12_address0 = idxprom1431_fu_360_p1; - -assign local_C_V_13_address0 = idxprom1431_fu_360_p1; - -assign local_C_V_14_address0 = idxprom1431_fu_360_p1; - -assign local_C_V_15_address0 = idxprom1431_fu_360_p1; - -assign local_C_V_1_address0 = idxprom1431_fu_360_p1; - -assign local_C_V_2_address0 = idxprom1431_fu_360_p1; - -assign local_C_V_3_address0 = idxprom1431_fu_360_p1; - -assign local_C_V_4_address0 = idxprom1431_fu_360_p1; - -assign local_C_V_5_address0 = idxprom1431_fu_360_p1; - -assign local_C_V_6_address0 = idxprom1431_fu_360_p1; - -assign local_C_V_7_address0 = idxprom1431_fu_360_p1; - -assign local_C_V_8_address0 = idxprom1431_fu_360_p1; - -assign local_C_V_9_address0 = idxprom1431_fu_360_p1; - -assign local_C_V_address0 = idxprom1431_fu_360_p1; - -assign or_ln287_fu_468_p2 = (icmp_ln287_fu_448_p2 | icmp_ln287_1_fu_454_p2); - -assign select_ln287_1_fu_474_p3 = ((or_ln287_fu_468_p2[0:0] == 1'b1) ? select_ln287_fu_460_p3 : c_idx_fu_96); - -assign select_ln287_fu_460_p3 = ((icmp_ln287_1_fu_454_p2[0:0] == 1'b1) ? 32'd3 : 32'd2); - -assign tmp_4_fu_350_p4 = {{ap_sig_allocacmp_i_1[14:2]}}; - -assign trunc_ln283_fu_388_p1 = c_idx_fu_96[1:0]; - -assign zext_ln278_fu_334_p1 = ap_sig_allocacmp_i_1; - -endmodule //PEG_Cmtx_PEG_Cmtx_Pipeline_write_C_outer diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1.v deleted file mode 100644 index fca405e6..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1.v +++ /dev/null @@ -1,76 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1ns/1ps - -module PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1 -#(parameter - ID = 1, - NUM_STAGE = 3, - din0_WIDTH = 32, - din1_WIDTH = 32, - dout_WIDTH = 32 -)( - input wire clk, - input wire reset, - input wire ce, - input wire [din0_WIDTH-1:0] din0, - input wire [din1_WIDTH-1:0] din1, - output wire [dout_WIDTH-1:0] dout -); -//------------------------Local signal------------------- -wire aclk; -wire aclken; -wire a_tvalid; -wire [31:0] a_tdata; -wire b_tvalid; -wire [31:0] b_tdata; -wire r_tvalid; -wire [31:0] r_tdata; -reg [din0_WIDTH-1:0] din0_buf1; -reg [din1_WIDTH-1:0] din1_buf1; -reg ce_r; -wire [dout_WIDTH-1:0] dout_i; -reg [dout_WIDTH-1:0] dout_r; -//------------------------Instantiation------------------ -PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1_ip PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1_ip_u ( - .aclk ( aclk ), - .aclken ( aclken ), - .s_axis_a_tvalid ( a_tvalid ), - .s_axis_a_tdata ( a_tdata ), - .s_axis_b_tvalid ( b_tvalid ), - .s_axis_b_tdata ( b_tdata ), - .m_axis_result_tvalid ( r_tvalid ), - .m_axis_result_tdata ( r_tdata ) -); -//------------------------Body--------------------------- -assign aclk = clk; -assign aclken = ce_r; -assign a_tvalid = 1'b1; -assign a_tdata = din0_buf1; -assign b_tvalid = 1'b1; -assign b_tdata = din1_buf1; -assign dout_i = r_tdata; - -always @(posedge clk) begin - if (ce) begin - din0_buf1 <= din0; - din1_buf1 <= din1; - end -end - -always @ (posedge clk) begin - ce_r <= ce; -end - -always @ (posedge clk) begin - if (ce_r) begin - dout_r <= dout_i; - end -end - -assign dout = ce_r?dout_i:dout_r; -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1_ip.tcl b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1_ip.tcl deleted file mode 100644 index 7340b7b7..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1_ip.tcl +++ /dev/null @@ -1,45 +0,0 @@ -# BEGIN Vivado Commands -set vivado_ver [version -short] -set fpo_ver 7.1 -if {[regexp -nocase {2015\.1.*} $vivado_ver match]} { - set fpo_ver 7.0 -} -create_ip -name floating_point -version $fpo_ver -vendor xilinx.com -library ip -module_name PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1_ip -# BEGIN Vivado Commands -# BEGIN Vivado Parameters -set_property -dict [list CONFIG.a_precision_type Single \ - CONFIG.a_tuser_width 1 \ - CONFIG.add_sub_value Add \ - CONFIG.b_tuser_width 1 \ - CONFIG.c_a_exponent_width 8 \ - CONFIG.c_a_fraction_width 24 \ - CONFIG.c_compare_operation Programmable \ - CONFIG.c_has_divide_by_zero false \ - CONFIG.c_has_invalid_op false \ - CONFIG.c_has_overflow false \ - CONFIG.c_has_underflow false \ - CONFIG.c_latency 5 \ - CONFIG.c_mult_usage Full_Usage \ - CONFIG.c_optimization Speed_Optimized \ - CONFIG.c_rate 1 \ - CONFIG.c_result_exponent_width 8 \ - CONFIG.c_result_fraction_width 24 \ - CONFIG.component_name PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1_ip \ - CONFIG.flow_control NonBlocking \ - CONFIG.has_a_tlast false \ - CONFIG.has_a_tuser false \ - CONFIG.has_aclken true \ - CONFIG.has_aresetn false \ - CONFIG.has_b_tlast false \ - CONFIG.has_b_tuser false \ - CONFIG.has_operation_tlast false \ - CONFIG.has_operation_tuser false \ - CONFIG.has_result_tready false \ - CONFIG.maximum_latency false \ - CONFIG.operation_tuser_width 1 \ - CONFIG.operation_type Add_Subtract \ - CONFIG.result_precision_type Single \ - CONFIG.result_tlast_behv Null] -objects [get_ips PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1_ip] -quiet -# END Vivado Parameters -set_property generate_synth_checkpoint false [get_files PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1_ip.xci] -generate_target {synthesis simulation} [get_files PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1_ip.xci] diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_flow_control_loop_pipe_sequential_init.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_flow_control_loop_pipe_sequential_init.v deleted file mode 100644 index a4aae129..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_flow_control_loop_pipe_sequential_init.v +++ /dev/null @@ -1,104 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Tool Version Limit: 2019.12 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1 ns / 1 ps - -module PEG_Cmtx_flow_control_loop_pipe_sequential_init( - ap_clk, - ap_rst, - ap_start, - ap_ready, - ap_done, - ap_start_int, - ap_ready_int, - ap_done_int, - ap_continue_int, - ap_loop_init, - ap_loop_exit_ready, - ap_loop_exit_done -); - -input ap_clk; -input ap_rst; - -//Block level handshake with outside loop -input ap_start; -output ap_ready; -output ap_done; - -//Block level handshake with loop body -output ap_start_int; -input ap_ready_int; -input ap_done_int; -output ap_continue_int; - -//Init live in variables -output ap_loop_init; -wire ap_loop_init; -reg ap_loop_init_int; -reg ap_done; -reg ap_done_cache; - -//Exit signal from loop body -input ap_loop_exit_ready; -input ap_loop_exit_done; - -// power-on initialization -initial begin -#0 ap_loop_init_int = 1'b1; -#0 ap_done_cache = 1'b0; -end - -assign ap_start_int = ap_start; - -assign ap_continue_int = 1'b1; - -assign ap_ready = ap_loop_exit_ready; - -//ap_loop_init is valid for the first II -//of the first loop run so as to enable -//the init block ops which are pushed into -//the first state of the pipeline region -always @ (posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_loop_exit_done == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_ready_int == 1'b1) begin - ap_loop_init_int <= 1'b0; - end -end - -assign ap_loop_init = ap_loop_init_int & ap_start; - -// if no ap_continue port and current module is not top module, -// ap_done handshakes with ap_start. Internally, flow control sends out -// ap_conintue_int = 1'b1 so the ap_done_int is asserted high for 1 clock cycle. -// ap_done_cache is used to record ap_done_int, and de-assert if ap_start_int -// is asserted, so DUT can start the next run -always @(posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_done_cache <= 1'b0; - end else if (ap_done_int == 1'b1) begin - ap_done_cache <= 1'b1; - end else if (ap_start_int == 1'b1) begin - ap_done_cache <= 1'b0; - end -end - -// if no ap_continue port and current module is not top module, ap_done handshakes with ap_start -always @(*) -begin - if ((ap_done_int == 1'b1) || ((ap_done_cache == 1'b1) && (ap_start_int == 1'b0))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W.v deleted file mode 100644 index e159c2b6..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W.v +++ /dev/null @@ -1,67 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== -`timescale 1 ns / 1 ps -module PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W ( - - address0, ce0, - - q0, - - address1, ce1, - d1, we1, - - - reset, clk); - -parameter DataWidth = 64; -parameter AddressWidth = 13; -parameter AddressRange = 8192; - -input[AddressWidth-1:0] address0; -input ce0; - -output reg[DataWidth-1:0] q0; - -input[AddressWidth-1:0] address1; -input ce1; -input[DataWidth-1:0] d1; -input we1; - - -input reset; -input clk; - -(* ram_style = "hls_ultra" , cascade_height = 1 *)reg [DataWidth-1:0] ram[0:AddressRange-1]; - - - - - - -always @(posedge clk) -begin - if (ce0) begin - q0 <= ram[address0]; - end -end - - - - -always @(posedge clk) -begin - if (ce1) begin - if (we1) - ram[address1] <= d1; - end -end - - - - - - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_mul_mul_16s_14ns_30_4_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_mul_mul_16s_14ns_30_4_1.v deleted file mode 100644 index 8e46d065..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_mul_mul_16s_14ns_30_4_1.v +++ /dev/null @@ -1,62 +0,0 @@ - -`timescale 1 ns / 1 ps - - module PEG_Cmtx_mul_mul_16s_14ns_30_4_1_DSP48_0(clk, rst, ce, a, b, p); -input clk; -input rst; -input ce; -input signed [16 - 1 : 0] a; -input [14 - 1 : 0] b; -output signed [30 - 1 : 0] p; - -reg signed [30 - 1 : 0] p_reg; - -reg signed [16 - 1 : 0] a_reg; -reg [14 - 1 : 0] b_reg; - -reg signed [30 - 1 : 0] p_reg_tmp; - -always @ (posedge clk) begin - if (ce) begin - a_reg <= a; - b_reg <= b; - p_reg_tmp <= a_reg * $signed({1'b0, b_reg}); - p_reg <= p_reg_tmp; - end -end - -assign p = p_reg; - -endmodule -`timescale 1 ns / 1 ps -module PEG_Cmtx_mul_mul_16s_14ns_30_4_1( - clk, - reset, - ce, - din0, - din1, - dout); - -parameter ID = 32'd1; -parameter NUM_STAGE = 32'd1; -parameter din0_WIDTH = 32'd1; -parameter din1_WIDTH = 32'd1; -parameter dout_WIDTH = 32'd1; -input clk; -input reset; -input ce; -input[din0_WIDTH - 1:0] din0; -input[din1_WIDTH - 1:0] din1; -output[dout_WIDTH - 1:0] dout; - - - -PEG_Cmtx_mul_mul_16s_14ns_30_4_1_DSP48_0 PEG_Cmtx_mul_mul_16s_14ns_30_4_1_DSP48_0_U( - .clk( clk ), - .rst( reset ), - .ce( ce ), - .a( din0 ), - .b( din1 ), - .p( dout )); - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_mux_42_64_1_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_mux_42_64_1_1.v deleted file mode 100644 index 42c71bc6..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/PEG_Cmtx_mux_42_64_1_1.v +++ /dev/null @@ -1,47 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Tool Version Limit: 2019.12 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1ns/1ps - -module PEG_Cmtx_mux_42_64_1_1 #( -parameter - ID = 0, - NUM_STAGE = 1, - din0_WIDTH = 32, - din1_WIDTH = 32, - din2_WIDTH = 32, - din3_WIDTH = 32, - din4_WIDTH = 32, - dout_WIDTH = 32 -)( - input [63 : 0] din0, - input [63 : 0] din1, - input [63 : 0] din2, - input [63 : 0] din3, - input [1 : 0] din4, - output [63 : 0] dout); - -// puts internal signals -wire [1 : 0] sel; -// level 1 signals -wire [63 : 0] mux_1_0; -wire [63 : 0] mux_1_1; -// level 2 signals -wire [63 : 0] mux_2_0; - -assign sel = din4; - -// Generate level 1 logic -assign mux_1_0 = (sel[0] == 0)? din0 : din1; -assign mux_1_1 = (sel[0] == 0)? din2 : din3; - -// Generate level 2 logic -assign mux_2_0 = (sel[1] == 0)? mux_1_0 : mux_1_1; - -// output logic -assign dout = mux_2_0; - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/Scatter_1_2.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/Scatter_1_2.v deleted file mode 100644 index 68ad072c..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/Scatter_1_2.v +++ /dev/null @@ -1,237 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -(* CORE_GENERATION_INFO="Scatter_1_2_Scatter_1_2,hls_ip_2022_2,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xcu280-fsvh2892-2L-e,HLS_INPUT_CLOCK=3.330000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=2.430900,HLS_SYN_LAT=-1,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=6,HLS_SYN_LUT=67,HLS_VERSION=2022_2}" *) - -module Scatter_1_2 ( - ap_clk, - ap_rst_n, - ap_start, - ap_done, - ap_idle, - ap_ready, - fifo_in_s_dout, - fifo_in_s_empty_n, - fifo_in_s_read, - fifo_in_peek_dout, - fifo_in_peek_empty_n, - fifo_in_peek_read, - fifo_out_0_din, - fifo_out_0_full_n, - fifo_out_0_write, - fifo_out_1_din, - fifo_out_1_full_n, - fifo_out_1_write -); - -parameter ap_ST_fsm_state1 = 3'd1; -parameter ap_ST_fsm_state2 = 3'd2; -parameter ap_ST_fsm_state3 = 3'd4; - -input ap_clk; -input ap_rst_n; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [512:0] fifo_in_s_dout; -input fifo_in_s_empty_n; -output fifo_in_s_read; -input [512:0] fifo_in_peek_dout; -input fifo_in_peek_empty_n; -output fifo_in_peek_read; -output [256:0] fifo_out_0_din; -input fifo_out_0_full_n; -output fifo_out_0_write; -output [256:0] fifo_out_1_din; -input fifo_out_1_full_n; -output fifo_out_1_write; - -reg ap_done; -reg ap_idle; -reg ap_ready; -reg fifo_in_s_read; -reg fifo_out_0_write; -reg fifo_out_1_write; - - reg ap_rst_n_inv; -(* fsm_encoding = "none" *) reg [2:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -wire grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_start; -wire grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_done; -wire grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_idle; -wire grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_ready; -wire grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_fifo_in_s_read; -wire [256:0] grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_fifo_out_0_din; -wire grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_fifo_out_0_write; -wire [256:0] grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_fifo_out_1_din; -wire grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_fifo_out_1_write; -reg grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_start_reg; -wire ap_CS_fsm_state2; -wire ap_CS_fsm_state3; -reg [2:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -wire ap_ST_fsm_state2_blk; -reg ap_ST_fsm_state3_blk; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 3'd1; -#0 grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_start_reg = 1'b0; -end - -Scatter_1_2_Scatter_1_2_Pipeline_VITIS_LOOP_405_1 grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_start), - .ap_done(grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_done), - .ap_idle(grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_idle), - .ap_ready(grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_ready), - .fifo_in_s_dout(fifo_in_s_dout), - .fifo_in_s_empty_n(fifo_in_s_empty_n), - .fifo_in_s_read(grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_fifo_in_s_read), - .fifo_out_0_din(grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_fifo_out_0_din), - .fifo_out_0_full_n(fifo_out_0_full_n), - .fifo_out_0_write(grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_fifo_out_0_write), - .fifo_out_1_din(grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_fifo_out_1_din), - .fifo_out_1_full_n(fifo_out_1_full_n), - .fifo_out_1_write(grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_fifo_out_1_write) -); - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_start_reg <= 1'b0; - end else begin - if ((1'b1 == ap_CS_fsm_state2)) begin - grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_start_reg <= 1'b1; - end else if ((grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_ready == 1'b1)) begin - grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_start_reg <= 1'b0; - end - end -end - -always @ (*) begin - if ((ap_start == 1'b0)) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -assign ap_ST_fsm_state2_blk = 1'b0; - -always @ (*) begin - if ((grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_done == 1'b0)) begin - ap_ST_fsm_state3_blk = 1'b1; - end else begin - ap_ST_fsm_state3_blk = 1'b0; - end -end - -always @ (*) begin - if (((grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin - ap_ready = 1'b1; - end else begin - ap_ready = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state3)) begin - fifo_in_s_read = grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_fifo_in_s_read; - end else begin - fifo_in_s_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state3)) begin - fifo_out_0_write = grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_fifo_out_0_write; - end else begin - fifo_out_0_write = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state3)) begin - fifo_out_1_write = grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_fifo_out_1_write; - end else begin - fifo_out_1_write = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - ap_NS_fsm = ap_ST_fsm_state3; - end - ap_ST_fsm_state3 : begin - if (((grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin - ap_NS_fsm = ap_ST_fsm_state1; - end else begin - ap_NS_fsm = ap_ST_fsm_state3; - end - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; - -assign ap_CS_fsm_state3 = ap_CS_fsm[32'd2]; - -always @ (*) begin - ap_rst_n_inv = ~ap_rst_n; -end - -assign fifo_in_peek_read = 1'b0; - -assign fifo_out_0_din = grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_fifo_out_0_din; - -assign fifo_out_1_din = grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_fifo_out_1_din; - -assign grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_start = grp_Scatter_1_2_Pipeline_VITIS_LOOP_405_1_fu_66_ap_start_reg; - -endmodule //Scatter_1_2 diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/Scatter_1_2_Scatter_1_2_Pipeline_VITIS_LOOP_405_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/Scatter_1_2_Scatter_1_2_Pipeline_VITIS_LOOP_405_1.v deleted file mode 100644 index b8a7ae93..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/Scatter_1_2_Scatter_1_2_Pipeline_VITIS_LOOP_405_1.v +++ /dev/null @@ -1,173 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module Scatter_1_2_Scatter_1_2_Pipeline_VITIS_LOOP_405_1 ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - fifo_in_s_dout, - fifo_in_s_empty_n, - fifo_in_s_read, - fifo_out_0_din, - fifo_out_0_full_n, - fifo_out_0_write, - fifo_out_1_din, - fifo_out_1_full_n, - fifo_out_1_write -); - -parameter ap_ST_fsm_state1 = 2'd1; -parameter ap_ST_fsm_state2 = 2'd2; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [512:0] fifo_in_s_dout; -input fifo_in_s_empty_n; -output fifo_in_s_read; -output [256:0] fifo_out_0_din; -input fifo_out_0_full_n; -output fifo_out_0_write; -output [256:0] fifo_out_1_din; -input fifo_out_1_full_n; -output fifo_out_1_write; - -reg ap_done; -reg ap_idle; -reg fifo_in_s_read; -reg fifo_out_0_write; -reg fifo_out_1_write; - -(* fsm_encoding = "none" *) reg [1:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -wire [0:0] tmp_nbreadreq_fu_42_p3; -wire ap_CS_fsm_state2; -wire [0:0] and_ln409_1_fu_92_p2; -wire [0:0] and_ln409_fu_86_p0; -wire [0:0] and_ln409_fu_86_p1; -wire [0:0] and_ln409_fu_86_p2; -wire [255:0] trunc_ln628_fu_102_p1; -wire [255:0] tmp_7_fu_115_p4; -reg [1:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -wire ap_ST_fsm_state2_blk; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 2'd1; -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (*) begin - if ((ap_start == 1'b0)) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -assign ap_ST_fsm_state2_blk = 1'b0; - -always @ (*) begin - if (((ap_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((ap_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln409_1_fu_92_p2) & (fifo_in_s_empty_n == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin - fifo_in_s_read = 1'b1; - end else begin - fifo_in_s_read = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln409_1_fu_92_p2) & (fifo_out_0_full_n == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin - fifo_out_0_write = 1'b1; - end else begin - fifo_out_0_write = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln409_1_fu_92_p2) & (fifo_out_1_full_n == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin - fifo_out_1_write = 1'b1; - end else begin - fifo_out_1_write = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - ap_NS_fsm = ap_ST_fsm_state2; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign and_ln409_1_fu_92_p2 = (tmp_nbreadreq_fu_42_p3 & and_ln409_fu_86_p2); - -assign and_ln409_fu_86_p0 = fifo_out_0_full_n; - -assign and_ln409_fu_86_p1 = fifo_out_1_full_n; - -assign and_ln409_fu_86_p2 = (and_ln409_fu_86_p1 & and_ln409_fu_86_p0); - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; - -assign ap_ready = 1'b0; - -assign fifo_out_0_din = {{1'd0}, {trunc_ln628_fu_102_p1}}; - -assign fifo_out_1_din = {{1'd0}, {tmp_7_fu_115_p4}}; - -assign tmp_7_fu_115_p4 = {{fifo_in_s_dout[511:256]}}; - -assign tmp_nbreadreq_fu_42_p3 = fifo_in_s_empty_n; - -assign trunc_ln628_fu_102_p1 = fifo_in_s_dout[255:0]; - -endmodule //Scatter_1_2_Scatter_1_2_Pipeline_VITIS_LOOP_405_1 diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/Sextans.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/Sextans.v deleted file mode 100644 index b877cee4..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/Sextans.v +++ /dev/null @@ -1,17991 +0,0 @@ -`timescale 1 ns / 1 ps - -(* CORE_GENERATION_INFO = "Sextans_Sextans,hls_ip_2022_2,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xcu280-fsvh2892-2L-e,HLS_INPUT_CLOCK=3.330000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=1.000000,HLS_SYN_LAT=0,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=2332,HLS_SYN_LUT=4200,HLS_VERSION=2022_2}" *) - - -module Sextans -( - s_axi_control_AWVALID, - s_axi_control_AWREADY, - s_axi_control_AWADDR, - s_axi_control_WVALID, - s_axi_control_WREADY, - s_axi_control_WDATA, - s_axi_control_WSTRB, - s_axi_control_ARVALID, - s_axi_control_ARREADY, - s_axi_control_ARADDR, - s_axi_control_RVALID, - s_axi_control_RREADY, - s_axi_control_RDATA, - s_axi_control_RRESP, - s_axi_control_BVALID, - s_axi_control_BREADY, - s_axi_control_BRESP, - ap_clk, - ap_rst_n, - interrupt, - m_axi_edge_list_ch_0_ARADDR, - m_axi_edge_list_ch_0_ARBURST, - m_axi_edge_list_ch_0_ARCACHE, - m_axi_edge_list_ch_0_ARID, - m_axi_edge_list_ch_0_ARLEN, - m_axi_edge_list_ch_0_ARLOCK, - m_axi_edge_list_ch_0_ARPROT, - m_axi_edge_list_ch_0_ARQOS, - m_axi_edge_list_ch_0_ARREADY, - m_axi_edge_list_ch_0_ARSIZE, - m_axi_edge_list_ch_0_ARVALID, - m_axi_edge_list_ch_0_AWADDR, - m_axi_edge_list_ch_0_AWBURST, - m_axi_edge_list_ch_0_AWCACHE, - m_axi_edge_list_ch_0_AWID, - m_axi_edge_list_ch_0_AWLEN, - m_axi_edge_list_ch_0_AWLOCK, - m_axi_edge_list_ch_0_AWPROT, - m_axi_edge_list_ch_0_AWQOS, - m_axi_edge_list_ch_0_AWREADY, - m_axi_edge_list_ch_0_AWSIZE, - m_axi_edge_list_ch_0_AWVALID, - m_axi_edge_list_ch_0_BID, - m_axi_edge_list_ch_0_BREADY, - m_axi_edge_list_ch_0_BRESP, - m_axi_edge_list_ch_0_BVALID, - m_axi_edge_list_ch_0_RDATA, - m_axi_edge_list_ch_0_RID, - m_axi_edge_list_ch_0_RLAST, - m_axi_edge_list_ch_0_RREADY, - m_axi_edge_list_ch_0_RRESP, - m_axi_edge_list_ch_0_RVALID, - m_axi_edge_list_ch_0_WDATA, - m_axi_edge_list_ch_0_WLAST, - m_axi_edge_list_ch_0_WREADY, - m_axi_edge_list_ch_0_WSTRB, - m_axi_edge_list_ch_0_WVALID, - m_axi_edge_list_ch_1_ARADDR, - m_axi_edge_list_ch_1_ARBURST, - m_axi_edge_list_ch_1_ARCACHE, - m_axi_edge_list_ch_1_ARID, - m_axi_edge_list_ch_1_ARLEN, - m_axi_edge_list_ch_1_ARLOCK, - m_axi_edge_list_ch_1_ARPROT, - m_axi_edge_list_ch_1_ARQOS, - m_axi_edge_list_ch_1_ARREADY, - m_axi_edge_list_ch_1_ARSIZE, - m_axi_edge_list_ch_1_ARVALID, - m_axi_edge_list_ch_1_AWADDR, - m_axi_edge_list_ch_1_AWBURST, - m_axi_edge_list_ch_1_AWCACHE, - m_axi_edge_list_ch_1_AWID, - m_axi_edge_list_ch_1_AWLEN, - m_axi_edge_list_ch_1_AWLOCK, - m_axi_edge_list_ch_1_AWPROT, - m_axi_edge_list_ch_1_AWQOS, - m_axi_edge_list_ch_1_AWREADY, - m_axi_edge_list_ch_1_AWSIZE, - m_axi_edge_list_ch_1_AWVALID, - m_axi_edge_list_ch_1_BID, - m_axi_edge_list_ch_1_BREADY, - m_axi_edge_list_ch_1_BRESP, - m_axi_edge_list_ch_1_BVALID, - m_axi_edge_list_ch_1_RDATA, - m_axi_edge_list_ch_1_RID, - m_axi_edge_list_ch_1_RLAST, - m_axi_edge_list_ch_1_RREADY, - m_axi_edge_list_ch_1_RRESP, - m_axi_edge_list_ch_1_RVALID, - m_axi_edge_list_ch_1_WDATA, - m_axi_edge_list_ch_1_WLAST, - m_axi_edge_list_ch_1_WREADY, - m_axi_edge_list_ch_1_WSTRB, - m_axi_edge_list_ch_1_WVALID, - m_axi_edge_list_ch_2_ARADDR, - m_axi_edge_list_ch_2_ARBURST, - m_axi_edge_list_ch_2_ARCACHE, - m_axi_edge_list_ch_2_ARID, - m_axi_edge_list_ch_2_ARLEN, - m_axi_edge_list_ch_2_ARLOCK, - m_axi_edge_list_ch_2_ARPROT, - m_axi_edge_list_ch_2_ARQOS, - m_axi_edge_list_ch_2_ARREADY, - m_axi_edge_list_ch_2_ARSIZE, - m_axi_edge_list_ch_2_ARVALID, - m_axi_edge_list_ch_2_AWADDR, - m_axi_edge_list_ch_2_AWBURST, - m_axi_edge_list_ch_2_AWCACHE, - m_axi_edge_list_ch_2_AWID, - m_axi_edge_list_ch_2_AWLEN, - m_axi_edge_list_ch_2_AWLOCK, - m_axi_edge_list_ch_2_AWPROT, - m_axi_edge_list_ch_2_AWQOS, - m_axi_edge_list_ch_2_AWREADY, - m_axi_edge_list_ch_2_AWSIZE, - m_axi_edge_list_ch_2_AWVALID, - m_axi_edge_list_ch_2_BID, - m_axi_edge_list_ch_2_BREADY, - m_axi_edge_list_ch_2_BRESP, - m_axi_edge_list_ch_2_BVALID, - m_axi_edge_list_ch_2_RDATA, - m_axi_edge_list_ch_2_RID, - m_axi_edge_list_ch_2_RLAST, - m_axi_edge_list_ch_2_RREADY, - m_axi_edge_list_ch_2_RRESP, - m_axi_edge_list_ch_2_RVALID, - m_axi_edge_list_ch_2_WDATA, - m_axi_edge_list_ch_2_WLAST, - m_axi_edge_list_ch_2_WREADY, - m_axi_edge_list_ch_2_WSTRB, - m_axi_edge_list_ch_2_WVALID, - m_axi_edge_list_ch_3_ARADDR, - m_axi_edge_list_ch_3_ARBURST, - m_axi_edge_list_ch_3_ARCACHE, - m_axi_edge_list_ch_3_ARID, - m_axi_edge_list_ch_3_ARLEN, - m_axi_edge_list_ch_3_ARLOCK, - m_axi_edge_list_ch_3_ARPROT, - m_axi_edge_list_ch_3_ARQOS, - m_axi_edge_list_ch_3_ARREADY, - m_axi_edge_list_ch_3_ARSIZE, - m_axi_edge_list_ch_3_ARVALID, - m_axi_edge_list_ch_3_AWADDR, - m_axi_edge_list_ch_3_AWBURST, - m_axi_edge_list_ch_3_AWCACHE, - m_axi_edge_list_ch_3_AWID, - m_axi_edge_list_ch_3_AWLEN, - m_axi_edge_list_ch_3_AWLOCK, - m_axi_edge_list_ch_3_AWPROT, - m_axi_edge_list_ch_3_AWQOS, - m_axi_edge_list_ch_3_AWREADY, - m_axi_edge_list_ch_3_AWSIZE, - m_axi_edge_list_ch_3_AWVALID, - m_axi_edge_list_ch_3_BID, - m_axi_edge_list_ch_3_BREADY, - m_axi_edge_list_ch_3_BRESP, - m_axi_edge_list_ch_3_BVALID, - m_axi_edge_list_ch_3_RDATA, - m_axi_edge_list_ch_3_RID, - m_axi_edge_list_ch_3_RLAST, - m_axi_edge_list_ch_3_RREADY, - m_axi_edge_list_ch_3_RRESP, - m_axi_edge_list_ch_3_RVALID, - m_axi_edge_list_ch_3_WDATA, - m_axi_edge_list_ch_3_WLAST, - m_axi_edge_list_ch_3_WREADY, - m_axi_edge_list_ch_3_WSTRB, - m_axi_edge_list_ch_3_WVALID, - m_axi_edge_list_ch_4_ARADDR, - m_axi_edge_list_ch_4_ARBURST, - m_axi_edge_list_ch_4_ARCACHE, - m_axi_edge_list_ch_4_ARID, - m_axi_edge_list_ch_4_ARLEN, - m_axi_edge_list_ch_4_ARLOCK, - m_axi_edge_list_ch_4_ARPROT, - m_axi_edge_list_ch_4_ARQOS, - m_axi_edge_list_ch_4_ARREADY, - m_axi_edge_list_ch_4_ARSIZE, - m_axi_edge_list_ch_4_ARVALID, - m_axi_edge_list_ch_4_AWADDR, - m_axi_edge_list_ch_4_AWBURST, - m_axi_edge_list_ch_4_AWCACHE, - m_axi_edge_list_ch_4_AWID, - m_axi_edge_list_ch_4_AWLEN, - m_axi_edge_list_ch_4_AWLOCK, - m_axi_edge_list_ch_4_AWPROT, - m_axi_edge_list_ch_4_AWQOS, - m_axi_edge_list_ch_4_AWREADY, - m_axi_edge_list_ch_4_AWSIZE, - m_axi_edge_list_ch_4_AWVALID, - m_axi_edge_list_ch_4_BID, - m_axi_edge_list_ch_4_BREADY, - m_axi_edge_list_ch_4_BRESP, - m_axi_edge_list_ch_4_BVALID, - m_axi_edge_list_ch_4_RDATA, - m_axi_edge_list_ch_4_RID, - m_axi_edge_list_ch_4_RLAST, - m_axi_edge_list_ch_4_RREADY, - m_axi_edge_list_ch_4_RRESP, - m_axi_edge_list_ch_4_RVALID, - m_axi_edge_list_ch_4_WDATA, - m_axi_edge_list_ch_4_WLAST, - m_axi_edge_list_ch_4_WREADY, - m_axi_edge_list_ch_4_WSTRB, - m_axi_edge_list_ch_4_WVALID, - m_axi_edge_list_ch_5_ARADDR, - m_axi_edge_list_ch_5_ARBURST, - m_axi_edge_list_ch_5_ARCACHE, - m_axi_edge_list_ch_5_ARID, - m_axi_edge_list_ch_5_ARLEN, - m_axi_edge_list_ch_5_ARLOCK, - m_axi_edge_list_ch_5_ARPROT, - m_axi_edge_list_ch_5_ARQOS, - m_axi_edge_list_ch_5_ARREADY, - m_axi_edge_list_ch_5_ARSIZE, - m_axi_edge_list_ch_5_ARVALID, - m_axi_edge_list_ch_5_AWADDR, - m_axi_edge_list_ch_5_AWBURST, - m_axi_edge_list_ch_5_AWCACHE, - m_axi_edge_list_ch_5_AWID, - m_axi_edge_list_ch_5_AWLEN, - m_axi_edge_list_ch_5_AWLOCK, - m_axi_edge_list_ch_5_AWPROT, - m_axi_edge_list_ch_5_AWQOS, - m_axi_edge_list_ch_5_AWREADY, - m_axi_edge_list_ch_5_AWSIZE, - m_axi_edge_list_ch_5_AWVALID, - m_axi_edge_list_ch_5_BID, - m_axi_edge_list_ch_5_BREADY, - m_axi_edge_list_ch_5_BRESP, - m_axi_edge_list_ch_5_BVALID, - m_axi_edge_list_ch_5_RDATA, - m_axi_edge_list_ch_5_RID, - m_axi_edge_list_ch_5_RLAST, - m_axi_edge_list_ch_5_RREADY, - m_axi_edge_list_ch_5_RRESP, - m_axi_edge_list_ch_5_RVALID, - m_axi_edge_list_ch_5_WDATA, - m_axi_edge_list_ch_5_WLAST, - m_axi_edge_list_ch_5_WREADY, - m_axi_edge_list_ch_5_WSTRB, - m_axi_edge_list_ch_5_WVALID, - m_axi_edge_list_ch_6_ARADDR, - m_axi_edge_list_ch_6_ARBURST, - m_axi_edge_list_ch_6_ARCACHE, - m_axi_edge_list_ch_6_ARID, - m_axi_edge_list_ch_6_ARLEN, - m_axi_edge_list_ch_6_ARLOCK, - m_axi_edge_list_ch_6_ARPROT, - m_axi_edge_list_ch_6_ARQOS, - m_axi_edge_list_ch_6_ARREADY, - m_axi_edge_list_ch_6_ARSIZE, - m_axi_edge_list_ch_6_ARVALID, - m_axi_edge_list_ch_6_AWADDR, - m_axi_edge_list_ch_6_AWBURST, - m_axi_edge_list_ch_6_AWCACHE, - m_axi_edge_list_ch_6_AWID, - m_axi_edge_list_ch_6_AWLEN, - m_axi_edge_list_ch_6_AWLOCK, - m_axi_edge_list_ch_6_AWPROT, - m_axi_edge_list_ch_6_AWQOS, - m_axi_edge_list_ch_6_AWREADY, - m_axi_edge_list_ch_6_AWSIZE, - m_axi_edge_list_ch_6_AWVALID, - m_axi_edge_list_ch_6_BID, - m_axi_edge_list_ch_6_BREADY, - m_axi_edge_list_ch_6_BRESP, - m_axi_edge_list_ch_6_BVALID, - m_axi_edge_list_ch_6_RDATA, - m_axi_edge_list_ch_6_RID, - m_axi_edge_list_ch_6_RLAST, - m_axi_edge_list_ch_6_RREADY, - m_axi_edge_list_ch_6_RRESP, - m_axi_edge_list_ch_6_RVALID, - m_axi_edge_list_ch_6_WDATA, - m_axi_edge_list_ch_6_WLAST, - m_axi_edge_list_ch_6_WREADY, - m_axi_edge_list_ch_6_WSTRB, - m_axi_edge_list_ch_6_WVALID, - m_axi_edge_list_ch_7_ARADDR, - m_axi_edge_list_ch_7_ARBURST, - m_axi_edge_list_ch_7_ARCACHE, - m_axi_edge_list_ch_7_ARID, - m_axi_edge_list_ch_7_ARLEN, - m_axi_edge_list_ch_7_ARLOCK, - m_axi_edge_list_ch_7_ARPROT, - m_axi_edge_list_ch_7_ARQOS, - m_axi_edge_list_ch_7_ARREADY, - m_axi_edge_list_ch_7_ARSIZE, - m_axi_edge_list_ch_7_ARVALID, - m_axi_edge_list_ch_7_AWADDR, - m_axi_edge_list_ch_7_AWBURST, - m_axi_edge_list_ch_7_AWCACHE, - m_axi_edge_list_ch_7_AWID, - m_axi_edge_list_ch_7_AWLEN, - m_axi_edge_list_ch_7_AWLOCK, - m_axi_edge_list_ch_7_AWPROT, - m_axi_edge_list_ch_7_AWQOS, - m_axi_edge_list_ch_7_AWREADY, - m_axi_edge_list_ch_7_AWSIZE, - m_axi_edge_list_ch_7_AWVALID, - m_axi_edge_list_ch_7_BID, - m_axi_edge_list_ch_7_BREADY, - m_axi_edge_list_ch_7_BRESP, - m_axi_edge_list_ch_7_BVALID, - m_axi_edge_list_ch_7_RDATA, - m_axi_edge_list_ch_7_RID, - m_axi_edge_list_ch_7_RLAST, - m_axi_edge_list_ch_7_RREADY, - m_axi_edge_list_ch_7_RRESP, - m_axi_edge_list_ch_7_RVALID, - m_axi_edge_list_ch_7_WDATA, - m_axi_edge_list_ch_7_WLAST, - m_axi_edge_list_ch_7_WREADY, - m_axi_edge_list_ch_7_WSTRB, - m_axi_edge_list_ch_7_WVALID, - m_axi_mat_B_ch_0_ARADDR, - m_axi_mat_B_ch_0_ARBURST, - m_axi_mat_B_ch_0_ARCACHE, - m_axi_mat_B_ch_0_ARID, - m_axi_mat_B_ch_0_ARLEN, - m_axi_mat_B_ch_0_ARLOCK, - m_axi_mat_B_ch_0_ARPROT, - m_axi_mat_B_ch_0_ARQOS, - m_axi_mat_B_ch_0_ARREADY, - m_axi_mat_B_ch_0_ARSIZE, - m_axi_mat_B_ch_0_ARVALID, - m_axi_mat_B_ch_0_AWADDR, - m_axi_mat_B_ch_0_AWBURST, - m_axi_mat_B_ch_0_AWCACHE, - m_axi_mat_B_ch_0_AWID, - m_axi_mat_B_ch_0_AWLEN, - m_axi_mat_B_ch_0_AWLOCK, - m_axi_mat_B_ch_0_AWPROT, - m_axi_mat_B_ch_0_AWQOS, - m_axi_mat_B_ch_0_AWREADY, - m_axi_mat_B_ch_0_AWSIZE, - m_axi_mat_B_ch_0_AWVALID, - m_axi_mat_B_ch_0_BID, - m_axi_mat_B_ch_0_BREADY, - m_axi_mat_B_ch_0_BRESP, - m_axi_mat_B_ch_0_BVALID, - m_axi_mat_B_ch_0_RDATA, - m_axi_mat_B_ch_0_RID, - m_axi_mat_B_ch_0_RLAST, - m_axi_mat_B_ch_0_RREADY, - m_axi_mat_B_ch_0_RRESP, - m_axi_mat_B_ch_0_RVALID, - m_axi_mat_B_ch_0_WDATA, - m_axi_mat_B_ch_0_WLAST, - m_axi_mat_B_ch_0_WREADY, - m_axi_mat_B_ch_0_WSTRB, - m_axi_mat_B_ch_0_WVALID, - m_axi_mat_B_ch_1_ARADDR, - m_axi_mat_B_ch_1_ARBURST, - m_axi_mat_B_ch_1_ARCACHE, - m_axi_mat_B_ch_1_ARID, - m_axi_mat_B_ch_1_ARLEN, - m_axi_mat_B_ch_1_ARLOCK, - m_axi_mat_B_ch_1_ARPROT, - m_axi_mat_B_ch_1_ARQOS, - m_axi_mat_B_ch_1_ARREADY, - m_axi_mat_B_ch_1_ARSIZE, - m_axi_mat_B_ch_1_ARVALID, - m_axi_mat_B_ch_1_AWADDR, - m_axi_mat_B_ch_1_AWBURST, - m_axi_mat_B_ch_1_AWCACHE, - m_axi_mat_B_ch_1_AWID, - m_axi_mat_B_ch_1_AWLEN, - m_axi_mat_B_ch_1_AWLOCK, - m_axi_mat_B_ch_1_AWPROT, - m_axi_mat_B_ch_1_AWQOS, - m_axi_mat_B_ch_1_AWREADY, - m_axi_mat_B_ch_1_AWSIZE, - m_axi_mat_B_ch_1_AWVALID, - m_axi_mat_B_ch_1_BID, - m_axi_mat_B_ch_1_BREADY, - m_axi_mat_B_ch_1_BRESP, - m_axi_mat_B_ch_1_BVALID, - m_axi_mat_B_ch_1_RDATA, - m_axi_mat_B_ch_1_RID, - m_axi_mat_B_ch_1_RLAST, - m_axi_mat_B_ch_1_RREADY, - m_axi_mat_B_ch_1_RRESP, - m_axi_mat_B_ch_1_RVALID, - m_axi_mat_B_ch_1_WDATA, - m_axi_mat_B_ch_1_WLAST, - m_axi_mat_B_ch_1_WREADY, - m_axi_mat_B_ch_1_WSTRB, - m_axi_mat_B_ch_1_WVALID, - m_axi_mat_B_ch_2_ARADDR, - m_axi_mat_B_ch_2_ARBURST, - m_axi_mat_B_ch_2_ARCACHE, - m_axi_mat_B_ch_2_ARID, - m_axi_mat_B_ch_2_ARLEN, - m_axi_mat_B_ch_2_ARLOCK, - m_axi_mat_B_ch_2_ARPROT, - m_axi_mat_B_ch_2_ARQOS, - m_axi_mat_B_ch_2_ARREADY, - m_axi_mat_B_ch_2_ARSIZE, - m_axi_mat_B_ch_2_ARVALID, - m_axi_mat_B_ch_2_AWADDR, - m_axi_mat_B_ch_2_AWBURST, - m_axi_mat_B_ch_2_AWCACHE, - m_axi_mat_B_ch_2_AWID, - m_axi_mat_B_ch_2_AWLEN, - m_axi_mat_B_ch_2_AWLOCK, - m_axi_mat_B_ch_2_AWPROT, - m_axi_mat_B_ch_2_AWQOS, - m_axi_mat_B_ch_2_AWREADY, - m_axi_mat_B_ch_2_AWSIZE, - m_axi_mat_B_ch_2_AWVALID, - m_axi_mat_B_ch_2_BID, - m_axi_mat_B_ch_2_BREADY, - m_axi_mat_B_ch_2_BRESP, - m_axi_mat_B_ch_2_BVALID, - m_axi_mat_B_ch_2_RDATA, - m_axi_mat_B_ch_2_RID, - m_axi_mat_B_ch_2_RLAST, - m_axi_mat_B_ch_2_RREADY, - m_axi_mat_B_ch_2_RRESP, - m_axi_mat_B_ch_2_RVALID, - m_axi_mat_B_ch_2_WDATA, - m_axi_mat_B_ch_2_WLAST, - m_axi_mat_B_ch_2_WREADY, - m_axi_mat_B_ch_2_WSTRB, - m_axi_mat_B_ch_2_WVALID, - m_axi_mat_B_ch_3_ARADDR, - m_axi_mat_B_ch_3_ARBURST, - m_axi_mat_B_ch_3_ARCACHE, - m_axi_mat_B_ch_3_ARID, - m_axi_mat_B_ch_3_ARLEN, - m_axi_mat_B_ch_3_ARLOCK, - m_axi_mat_B_ch_3_ARPROT, - m_axi_mat_B_ch_3_ARQOS, - m_axi_mat_B_ch_3_ARREADY, - m_axi_mat_B_ch_3_ARSIZE, - m_axi_mat_B_ch_3_ARVALID, - m_axi_mat_B_ch_3_AWADDR, - m_axi_mat_B_ch_3_AWBURST, - m_axi_mat_B_ch_3_AWCACHE, - m_axi_mat_B_ch_3_AWID, - m_axi_mat_B_ch_3_AWLEN, - m_axi_mat_B_ch_3_AWLOCK, - m_axi_mat_B_ch_3_AWPROT, - m_axi_mat_B_ch_3_AWQOS, - m_axi_mat_B_ch_3_AWREADY, - m_axi_mat_B_ch_3_AWSIZE, - m_axi_mat_B_ch_3_AWVALID, - m_axi_mat_B_ch_3_BID, - m_axi_mat_B_ch_3_BREADY, - m_axi_mat_B_ch_3_BRESP, - m_axi_mat_B_ch_3_BVALID, - m_axi_mat_B_ch_3_RDATA, - m_axi_mat_B_ch_3_RID, - m_axi_mat_B_ch_3_RLAST, - m_axi_mat_B_ch_3_RREADY, - m_axi_mat_B_ch_3_RRESP, - m_axi_mat_B_ch_3_RVALID, - m_axi_mat_B_ch_3_WDATA, - m_axi_mat_B_ch_3_WLAST, - m_axi_mat_B_ch_3_WREADY, - m_axi_mat_B_ch_3_WSTRB, - m_axi_mat_B_ch_3_WVALID, - m_axi_mat_C_ch_in_0_ARADDR, - m_axi_mat_C_ch_in_0_ARBURST, - m_axi_mat_C_ch_in_0_ARCACHE, - m_axi_mat_C_ch_in_0_ARID, - m_axi_mat_C_ch_in_0_ARLEN, - m_axi_mat_C_ch_in_0_ARLOCK, - m_axi_mat_C_ch_in_0_ARPROT, - m_axi_mat_C_ch_in_0_ARQOS, - m_axi_mat_C_ch_in_0_ARREADY, - m_axi_mat_C_ch_in_0_ARSIZE, - m_axi_mat_C_ch_in_0_ARVALID, - m_axi_mat_C_ch_in_0_AWADDR, - m_axi_mat_C_ch_in_0_AWBURST, - m_axi_mat_C_ch_in_0_AWCACHE, - m_axi_mat_C_ch_in_0_AWID, - m_axi_mat_C_ch_in_0_AWLEN, - m_axi_mat_C_ch_in_0_AWLOCK, - m_axi_mat_C_ch_in_0_AWPROT, - m_axi_mat_C_ch_in_0_AWQOS, - m_axi_mat_C_ch_in_0_AWREADY, - m_axi_mat_C_ch_in_0_AWSIZE, - m_axi_mat_C_ch_in_0_AWVALID, - m_axi_mat_C_ch_in_0_BID, - m_axi_mat_C_ch_in_0_BREADY, - m_axi_mat_C_ch_in_0_BRESP, - m_axi_mat_C_ch_in_0_BVALID, - m_axi_mat_C_ch_in_0_RDATA, - m_axi_mat_C_ch_in_0_RID, - m_axi_mat_C_ch_in_0_RLAST, - m_axi_mat_C_ch_in_0_RREADY, - m_axi_mat_C_ch_in_0_RRESP, - m_axi_mat_C_ch_in_0_RVALID, - m_axi_mat_C_ch_in_0_WDATA, - m_axi_mat_C_ch_in_0_WLAST, - m_axi_mat_C_ch_in_0_WREADY, - m_axi_mat_C_ch_in_0_WSTRB, - m_axi_mat_C_ch_in_0_WVALID, - m_axi_mat_C_ch_in_1_ARADDR, - m_axi_mat_C_ch_in_1_ARBURST, - m_axi_mat_C_ch_in_1_ARCACHE, - m_axi_mat_C_ch_in_1_ARID, - m_axi_mat_C_ch_in_1_ARLEN, - m_axi_mat_C_ch_in_1_ARLOCK, - m_axi_mat_C_ch_in_1_ARPROT, - m_axi_mat_C_ch_in_1_ARQOS, - m_axi_mat_C_ch_in_1_ARREADY, - m_axi_mat_C_ch_in_1_ARSIZE, - m_axi_mat_C_ch_in_1_ARVALID, - m_axi_mat_C_ch_in_1_AWADDR, - m_axi_mat_C_ch_in_1_AWBURST, - m_axi_mat_C_ch_in_1_AWCACHE, - m_axi_mat_C_ch_in_1_AWID, - m_axi_mat_C_ch_in_1_AWLEN, - m_axi_mat_C_ch_in_1_AWLOCK, - m_axi_mat_C_ch_in_1_AWPROT, - m_axi_mat_C_ch_in_1_AWQOS, - m_axi_mat_C_ch_in_1_AWREADY, - m_axi_mat_C_ch_in_1_AWSIZE, - m_axi_mat_C_ch_in_1_AWVALID, - m_axi_mat_C_ch_in_1_BID, - m_axi_mat_C_ch_in_1_BREADY, - m_axi_mat_C_ch_in_1_BRESP, - m_axi_mat_C_ch_in_1_BVALID, - m_axi_mat_C_ch_in_1_RDATA, - m_axi_mat_C_ch_in_1_RID, - m_axi_mat_C_ch_in_1_RLAST, - m_axi_mat_C_ch_in_1_RREADY, - m_axi_mat_C_ch_in_1_RRESP, - m_axi_mat_C_ch_in_1_RVALID, - m_axi_mat_C_ch_in_1_WDATA, - m_axi_mat_C_ch_in_1_WLAST, - m_axi_mat_C_ch_in_1_WREADY, - m_axi_mat_C_ch_in_1_WSTRB, - m_axi_mat_C_ch_in_1_WVALID, - m_axi_mat_C_ch_in_2_ARADDR, - m_axi_mat_C_ch_in_2_ARBURST, - m_axi_mat_C_ch_in_2_ARCACHE, - m_axi_mat_C_ch_in_2_ARID, - m_axi_mat_C_ch_in_2_ARLEN, - m_axi_mat_C_ch_in_2_ARLOCK, - m_axi_mat_C_ch_in_2_ARPROT, - m_axi_mat_C_ch_in_2_ARQOS, - m_axi_mat_C_ch_in_2_ARREADY, - m_axi_mat_C_ch_in_2_ARSIZE, - m_axi_mat_C_ch_in_2_ARVALID, - m_axi_mat_C_ch_in_2_AWADDR, - m_axi_mat_C_ch_in_2_AWBURST, - m_axi_mat_C_ch_in_2_AWCACHE, - m_axi_mat_C_ch_in_2_AWID, - m_axi_mat_C_ch_in_2_AWLEN, - m_axi_mat_C_ch_in_2_AWLOCK, - m_axi_mat_C_ch_in_2_AWPROT, - m_axi_mat_C_ch_in_2_AWQOS, - m_axi_mat_C_ch_in_2_AWREADY, - m_axi_mat_C_ch_in_2_AWSIZE, - m_axi_mat_C_ch_in_2_AWVALID, - m_axi_mat_C_ch_in_2_BID, - m_axi_mat_C_ch_in_2_BREADY, - m_axi_mat_C_ch_in_2_BRESP, - m_axi_mat_C_ch_in_2_BVALID, - m_axi_mat_C_ch_in_2_RDATA, - m_axi_mat_C_ch_in_2_RID, - m_axi_mat_C_ch_in_2_RLAST, - m_axi_mat_C_ch_in_2_RREADY, - m_axi_mat_C_ch_in_2_RRESP, - m_axi_mat_C_ch_in_2_RVALID, - m_axi_mat_C_ch_in_2_WDATA, - m_axi_mat_C_ch_in_2_WLAST, - m_axi_mat_C_ch_in_2_WREADY, - m_axi_mat_C_ch_in_2_WSTRB, - m_axi_mat_C_ch_in_2_WVALID, - m_axi_mat_C_ch_in_3_ARADDR, - m_axi_mat_C_ch_in_3_ARBURST, - m_axi_mat_C_ch_in_3_ARCACHE, - m_axi_mat_C_ch_in_3_ARID, - m_axi_mat_C_ch_in_3_ARLEN, - m_axi_mat_C_ch_in_3_ARLOCK, - m_axi_mat_C_ch_in_3_ARPROT, - m_axi_mat_C_ch_in_3_ARQOS, - m_axi_mat_C_ch_in_3_ARREADY, - m_axi_mat_C_ch_in_3_ARSIZE, - m_axi_mat_C_ch_in_3_ARVALID, - m_axi_mat_C_ch_in_3_AWADDR, - m_axi_mat_C_ch_in_3_AWBURST, - m_axi_mat_C_ch_in_3_AWCACHE, - m_axi_mat_C_ch_in_3_AWID, - m_axi_mat_C_ch_in_3_AWLEN, - m_axi_mat_C_ch_in_3_AWLOCK, - m_axi_mat_C_ch_in_3_AWPROT, - m_axi_mat_C_ch_in_3_AWQOS, - m_axi_mat_C_ch_in_3_AWREADY, - m_axi_mat_C_ch_in_3_AWSIZE, - m_axi_mat_C_ch_in_3_AWVALID, - m_axi_mat_C_ch_in_3_BID, - m_axi_mat_C_ch_in_3_BREADY, - m_axi_mat_C_ch_in_3_BRESP, - m_axi_mat_C_ch_in_3_BVALID, - m_axi_mat_C_ch_in_3_RDATA, - m_axi_mat_C_ch_in_3_RID, - m_axi_mat_C_ch_in_3_RLAST, - m_axi_mat_C_ch_in_3_RREADY, - m_axi_mat_C_ch_in_3_RRESP, - m_axi_mat_C_ch_in_3_RVALID, - m_axi_mat_C_ch_in_3_WDATA, - m_axi_mat_C_ch_in_3_WLAST, - m_axi_mat_C_ch_in_3_WREADY, - m_axi_mat_C_ch_in_3_WSTRB, - m_axi_mat_C_ch_in_3_WVALID, - m_axi_mat_C_ch_in_4_ARADDR, - m_axi_mat_C_ch_in_4_ARBURST, - m_axi_mat_C_ch_in_4_ARCACHE, - m_axi_mat_C_ch_in_4_ARID, - m_axi_mat_C_ch_in_4_ARLEN, - m_axi_mat_C_ch_in_4_ARLOCK, - m_axi_mat_C_ch_in_4_ARPROT, - m_axi_mat_C_ch_in_4_ARQOS, - m_axi_mat_C_ch_in_4_ARREADY, - m_axi_mat_C_ch_in_4_ARSIZE, - m_axi_mat_C_ch_in_4_ARVALID, - m_axi_mat_C_ch_in_4_AWADDR, - m_axi_mat_C_ch_in_4_AWBURST, - m_axi_mat_C_ch_in_4_AWCACHE, - m_axi_mat_C_ch_in_4_AWID, - m_axi_mat_C_ch_in_4_AWLEN, - m_axi_mat_C_ch_in_4_AWLOCK, - m_axi_mat_C_ch_in_4_AWPROT, - m_axi_mat_C_ch_in_4_AWQOS, - m_axi_mat_C_ch_in_4_AWREADY, - m_axi_mat_C_ch_in_4_AWSIZE, - m_axi_mat_C_ch_in_4_AWVALID, - m_axi_mat_C_ch_in_4_BID, - m_axi_mat_C_ch_in_4_BREADY, - m_axi_mat_C_ch_in_4_BRESP, - m_axi_mat_C_ch_in_4_BVALID, - m_axi_mat_C_ch_in_4_RDATA, - m_axi_mat_C_ch_in_4_RID, - m_axi_mat_C_ch_in_4_RLAST, - m_axi_mat_C_ch_in_4_RREADY, - m_axi_mat_C_ch_in_4_RRESP, - m_axi_mat_C_ch_in_4_RVALID, - m_axi_mat_C_ch_in_4_WDATA, - m_axi_mat_C_ch_in_4_WLAST, - m_axi_mat_C_ch_in_4_WREADY, - m_axi_mat_C_ch_in_4_WSTRB, - m_axi_mat_C_ch_in_4_WVALID, - m_axi_mat_C_ch_in_5_ARADDR, - m_axi_mat_C_ch_in_5_ARBURST, - m_axi_mat_C_ch_in_5_ARCACHE, - m_axi_mat_C_ch_in_5_ARID, - m_axi_mat_C_ch_in_5_ARLEN, - m_axi_mat_C_ch_in_5_ARLOCK, - m_axi_mat_C_ch_in_5_ARPROT, - m_axi_mat_C_ch_in_5_ARQOS, - m_axi_mat_C_ch_in_5_ARREADY, - m_axi_mat_C_ch_in_5_ARSIZE, - m_axi_mat_C_ch_in_5_ARVALID, - m_axi_mat_C_ch_in_5_AWADDR, - m_axi_mat_C_ch_in_5_AWBURST, - m_axi_mat_C_ch_in_5_AWCACHE, - m_axi_mat_C_ch_in_5_AWID, - m_axi_mat_C_ch_in_5_AWLEN, - m_axi_mat_C_ch_in_5_AWLOCK, - m_axi_mat_C_ch_in_5_AWPROT, - m_axi_mat_C_ch_in_5_AWQOS, - m_axi_mat_C_ch_in_5_AWREADY, - m_axi_mat_C_ch_in_5_AWSIZE, - m_axi_mat_C_ch_in_5_AWVALID, - m_axi_mat_C_ch_in_5_BID, - m_axi_mat_C_ch_in_5_BREADY, - m_axi_mat_C_ch_in_5_BRESP, - m_axi_mat_C_ch_in_5_BVALID, - m_axi_mat_C_ch_in_5_RDATA, - m_axi_mat_C_ch_in_5_RID, - m_axi_mat_C_ch_in_5_RLAST, - m_axi_mat_C_ch_in_5_RREADY, - m_axi_mat_C_ch_in_5_RRESP, - m_axi_mat_C_ch_in_5_RVALID, - m_axi_mat_C_ch_in_5_WDATA, - m_axi_mat_C_ch_in_5_WLAST, - m_axi_mat_C_ch_in_5_WREADY, - m_axi_mat_C_ch_in_5_WSTRB, - m_axi_mat_C_ch_in_5_WVALID, - m_axi_mat_C_ch_in_6_ARADDR, - m_axi_mat_C_ch_in_6_ARBURST, - m_axi_mat_C_ch_in_6_ARCACHE, - m_axi_mat_C_ch_in_6_ARID, - m_axi_mat_C_ch_in_6_ARLEN, - m_axi_mat_C_ch_in_6_ARLOCK, - m_axi_mat_C_ch_in_6_ARPROT, - m_axi_mat_C_ch_in_6_ARQOS, - m_axi_mat_C_ch_in_6_ARREADY, - m_axi_mat_C_ch_in_6_ARSIZE, - m_axi_mat_C_ch_in_6_ARVALID, - m_axi_mat_C_ch_in_6_AWADDR, - m_axi_mat_C_ch_in_6_AWBURST, - m_axi_mat_C_ch_in_6_AWCACHE, - m_axi_mat_C_ch_in_6_AWID, - m_axi_mat_C_ch_in_6_AWLEN, - m_axi_mat_C_ch_in_6_AWLOCK, - m_axi_mat_C_ch_in_6_AWPROT, - m_axi_mat_C_ch_in_6_AWQOS, - m_axi_mat_C_ch_in_6_AWREADY, - m_axi_mat_C_ch_in_6_AWSIZE, - m_axi_mat_C_ch_in_6_AWVALID, - m_axi_mat_C_ch_in_6_BID, - m_axi_mat_C_ch_in_6_BREADY, - m_axi_mat_C_ch_in_6_BRESP, - m_axi_mat_C_ch_in_6_BVALID, - m_axi_mat_C_ch_in_6_RDATA, - m_axi_mat_C_ch_in_6_RID, - m_axi_mat_C_ch_in_6_RLAST, - m_axi_mat_C_ch_in_6_RREADY, - m_axi_mat_C_ch_in_6_RRESP, - m_axi_mat_C_ch_in_6_RVALID, - m_axi_mat_C_ch_in_6_WDATA, - m_axi_mat_C_ch_in_6_WLAST, - m_axi_mat_C_ch_in_6_WREADY, - m_axi_mat_C_ch_in_6_WSTRB, - m_axi_mat_C_ch_in_6_WVALID, - m_axi_mat_C_ch_in_7_ARADDR, - m_axi_mat_C_ch_in_7_ARBURST, - m_axi_mat_C_ch_in_7_ARCACHE, - m_axi_mat_C_ch_in_7_ARID, - m_axi_mat_C_ch_in_7_ARLEN, - m_axi_mat_C_ch_in_7_ARLOCK, - m_axi_mat_C_ch_in_7_ARPROT, - m_axi_mat_C_ch_in_7_ARQOS, - m_axi_mat_C_ch_in_7_ARREADY, - m_axi_mat_C_ch_in_7_ARSIZE, - m_axi_mat_C_ch_in_7_ARVALID, - m_axi_mat_C_ch_in_7_AWADDR, - m_axi_mat_C_ch_in_7_AWBURST, - m_axi_mat_C_ch_in_7_AWCACHE, - m_axi_mat_C_ch_in_7_AWID, - m_axi_mat_C_ch_in_7_AWLEN, - m_axi_mat_C_ch_in_7_AWLOCK, - m_axi_mat_C_ch_in_7_AWPROT, - m_axi_mat_C_ch_in_7_AWQOS, - m_axi_mat_C_ch_in_7_AWREADY, - m_axi_mat_C_ch_in_7_AWSIZE, - m_axi_mat_C_ch_in_7_AWVALID, - m_axi_mat_C_ch_in_7_BID, - m_axi_mat_C_ch_in_7_BREADY, - m_axi_mat_C_ch_in_7_BRESP, - m_axi_mat_C_ch_in_7_BVALID, - m_axi_mat_C_ch_in_7_RDATA, - m_axi_mat_C_ch_in_7_RID, - m_axi_mat_C_ch_in_7_RLAST, - m_axi_mat_C_ch_in_7_RREADY, - m_axi_mat_C_ch_in_7_RRESP, - m_axi_mat_C_ch_in_7_RVALID, - m_axi_mat_C_ch_in_7_WDATA, - m_axi_mat_C_ch_in_7_WLAST, - m_axi_mat_C_ch_in_7_WREADY, - m_axi_mat_C_ch_in_7_WSTRB, - m_axi_mat_C_ch_in_7_WVALID, - m_axi_edge_list_ptr_ARADDR, - m_axi_edge_list_ptr_ARBURST, - m_axi_edge_list_ptr_ARCACHE, - m_axi_edge_list_ptr_ARID, - m_axi_edge_list_ptr_ARLEN, - m_axi_edge_list_ptr_ARLOCK, - m_axi_edge_list_ptr_ARPROT, - m_axi_edge_list_ptr_ARQOS, - m_axi_edge_list_ptr_ARREADY, - m_axi_edge_list_ptr_ARSIZE, - m_axi_edge_list_ptr_ARVALID, - m_axi_edge_list_ptr_AWADDR, - m_axi_edge_list_ptr_AWBURST, - m_axi_edge_list_ptr_AWCACHE, - m_axi_edge_list_ptr_AWID, - m_axi_edge_list_ptr_AWLEN, - m_axi_edge_list_ptr_AWLOCK, - m_axi_edge_list_ptr_AWPROT, - m_axi_edge_list_ptr_AWQOS, - m_axi_edge_list_ptr_AWREADY, - m_axi_edge_list_ptr_AWSIZE, - m_axi_edge_list_ptr_AWVALID, - m_axi_edge_list_ptr_BID, - m_axi_edge_list_ptr_BREADY, - m_axi_edge_list_ptr_BRESP, - m_axi_edge_list_ptr_BVALID, - m_axi_edge_list_ptr_RDATA, - m_axi_edge_list_ptr_RID, - m_axi_edge_list_ptr_RLAST, - m_axi_edge_list_ptr_RREADY, - m_axi_edge_list_ptr_RRESP, - m_axi_edge_list_ptr_RVALID, - m_axi_edge_list_ptr_WDATA, - m_axi_edge_list_ptr_WLAST, - m_axi_edge_list_ptr_WREADY, - m_axi_edge_list_ptr_WSTRB, - m_axi_edge_list_ptr_WVALID, - m_axi_mat_C_ch_0_ARADDR, - m_axi_mat_C_ch_0_ARBURST, - m_axi_mat_C_ch_0_ARCACHE, - m_axi_mat_C_ch_0_ARID, - m_axi_mat_C_ch_0_ARLEN, - m_axi_mat_C_ch_0_ARLOCK, - m_axi_mat_C_ch_0_ARPROT, - m_axi_mat_C_ch_0_ARQOS, - m_axi_mat_C_ch_0_ARREADY, - m_axi_mat_C_ch_0_ARSIZE, - m_axi_mat_C_ch_0_ARVALID, - m_axi_mat_C_ch_0_AWADDR, - m_axi_mat_C_ch_0_AWBURST, - m_axi_mat_C_ch_0_AWCACHE, - m_axi_mat_C_ch_0_AWID, - m_axi_mat_C_ch_0_AWLEN, - m_axi_mat_C_ch_0_AWLOCK, - m_axi_mat_C_ch_0_AWPROT, - m_axi_mat_C_ch_0_AWQOS, - m_axi_mat_C_ch_0_AWREADY, - m_axi_mat_C_ch_0_AWSIZE, - m_axi_mat_C_ch_0_AWVALID, - m_axi_mat_C_ch_0_BID, - m_axi_mat_C_ch_0_BREADY, - m_axi_mat_C_ch_0_BRESP, - m_axi_mat_C_ch_0_BVALID, - m_axi_mat_C_ch_0_RDATA, - m_axi_mat_C_ch_0_RID, - m_axi_mat_C_ch_0_RLAST, - m_axi_mat_C_ch_0_RREADY, - m_axi_mat_C_ch_0_RRESP, - m_axi_mat_C_ch_0_RVALID, - m_axi_mat_C_ch_0_WDATA, - m_axi_mat_C_ch_0_WLAST, - m_axi_mat_C_ch_0_WREADY, - m_axi_mat_C_ch_0_WSTRB, - m_axi_mat_C_ch_0_WVALID, - m_axi_mat_C_ch_1_ARADDR, - m_axi_mat_C_ch_1_ARBURST, - m_axi_mat_C_ch_1_ARCACHE, - m_axi_mat_C_ch_1_ARID, - m_axi_mat_C_ch_1_ARLEN, - m_axi_mat_C_ch_1_ARLOCK, - m_axi_mat_C_ch_1_ARPROT, - m_axi_mat_C_ch_1_ARQOS, - m_axi_mat_C_ch_1_ARREADY, - m_axi_mat_C_ch_1_ARSIZE, - m_axi_mat_C_ch_1_ARVALID, - m_axi_mat_C_ch_1_AWADDR, - m_axi_mat_C_ch_1_AWBURST, - m_axi_mat_C_ch_1_AWCACHE, - m_axi_mat_C_ch_1_AWID, - m_axi_mat_C_ch_1_AWLEN, - m_axi_mat_C_ch_1_AWLOCK, - m_axi_mat_C_ch_1_AWPROT, - m_axi_mat_C_ch_1_AWQOS, - m_axi_mat_C_ch_1_AWREADY, - m_axi_mat_C_ch_1_AWSIZE, - m_axi_mat_C_ch_1_AWVALID, - m_axi_mat_C_ch_1_BID, - m_axi_mat_C_ch_1_BREADY, - m_axi_mat_C_ch_1_BRESP, - m_axi_mat_C_ch_1_BVALID, - m_axi_mat_C_ch_1_RDATA, - m_axi_mat_C_ch_1_RID, - m_axi_mat_C_ch_1_RLAST, - m_axi_mat_C_ch_1_RREADY, - m_axi_mat_C_ch_1_RRESP, - m_axi_mat_C_ch_1_RVALID, - m_axi_mat_C_ch_1_WDATA, - m_axi_mat_C_ch_1_WLAST, - m_axi_mat_C_ch_1_WREADY, - m_axi_mat_C_ch_1_WSTRB, - m_axi_mat_C_ch_1_WVALID, - m_axi_mat_C_ch_2_ARADDR, - m_axi_mat_C_ch_2_ARBURST, - m_axi_mat_C_ch_2_ARCACHE, - m_axi_mat_C_ch_2_ARID, - m_axi_mat_C_ch_2_ARLEN, - m_axi_mat_C_ch_2_ARLOCK, - m_axi_mat_C_ch_2_ARPROT, - m_axi_mat_C_ch_2_ARQOS, - m_axi_mat_C_ch_2_ARREADY, - m_axi_mat_C_ch_2_ARSIZE, - m_axi_mat_C_ch_2_ARVALID, - m_axi_mat_C_ch_2_AWADDR, - m_axi_mat_C_ch_2_AWBURST, - m_axi_mat_C_ch_2_AWCACHE, - m_axi_mat_C_ch_2_AWID, - m_axi_mat_C_ch_2_AWLEN, - m_axi_mat_C_ch_2_AWLOCK, - m_axi_mat_C_ch_2_AWPROT, - m_axi_mat_C_ch_2_AWQOS, - m_axi_mat_C_ch_2_AWREADY, - m_axi_mat_C_ch_2_AWSIZE, - m_axi_mat_C_ch_2_AWVALID, - m_axi_mat_C_ch_2_BID, - m_axi_mat_C_ch_2_BREADY, - m_axi_mat_C_ch_2_BRESP, - m_axi_mat_C_ch_2_BVALID, - m_axi_mat_C_ch_2_RDATA, - m_axi_mat_C_ch_2_RID, - m_axi_mat_C_ch_2_RLAST, - m_axi_mat_C_ch_2_RREADY, - m_axi_mat_C_ch_2_RRESP, - m_axi_mat_C_ch_2_RVALID, - m_axi_mat_C_ch_2_WDATA, - m_axi_mat_C_ch_2_WLAST, - m_axi_mat_C_ch_2_WREADY, - m_axi_mat_C_ch_2_WSTRB, - m_axi_mat_C_ch_2_WVALID, - m_axi_mat_C_ch_3_ARADDR, - m_axi_mat_C_ch_3_ARBURST, - m_axi_mat_C_ch_3_ARCACHE, - m_axi_mat_C_ch_3_ARID, - m_axi_mat_C_ch_3_ARLEN, - m_axi_mat_C_ch_3_ARLOCK, - m_axi_mat_C_ch_3_ARPROT, - m_axi_mat_C_ch_3_ARQOS, - m_axi_mat_C_ch_3_ARREADY, - m_axi_mat_C_ch_3_ARSIZE, - m_axi_mat_C_ch_3_ARVALID, - m_axi_mat_C_ch_3_AWADDR, - m_axi_mat_C_ch_3_AWBURST, - m_axi_mat_C_ch_3_AWCACHE, - m_axi_mat_C_ch_3_AWID, - m_axi_mat_C_ch_3_AWLEN, - m_axi_mat_C_ch_3_AWLOCK, - m_axi_mat_C_ch_3_AWPROT, - m_axi_mat_C_ch_3_AWQOS, - m_axi_mat_C_ch_3_AWREADY, - m_axi_mat_C_ch_3_AWSIZE, - m_axi_mat_C_ch_3_AWVALID, - m_axi_mat_C_ch_3_BID, - m_axi_mat_C_ch_3_BREADY, - m_axi_mat_C_ch_3_BRESP, - m_axi_mat_C_ch_3_BVALID, - m_axi_mat_C_ch_3_RDATA, - m_axi_mat_C_ch_3_RID, - m_axi_mat_C_ch_3_RLAST, - m_axi_mat_C_ch_3_RREADY, - m_axi_mat_C_ch_3_RRESP, - m_axi_mat_C_ch_3_RVALID, - m_axi_mat_C_ch_3_WDATA, - m_axi_mat_C_ch_3_WLAST, - m_axi_mat_C_ch_3_WREADY, - m_axi_mat_C_ch_3_WSTRB, - m_axi_mat_C_ch_3_WVALID, - m_axi_mat_C_ch_4_ARADDR, - m_axi_mat_C_ch_4_ARBURST, - m_axi_mat_C_ch_4_ARCACHE, - m_axi_mat_C_ch_4_ARID, - m_axi_mat_C_ch_4_ARLEN, - m_axi_mat_C_ch_4_ARLOCK, - m_axi_mat_C_ch_4_ARPROT, - m_axi_mat_C_ch_4_ARQOS, - m_axi_mat_C_ch_4_ARREADY, - m_axi_mat_C_ch_4_ARSIZE, - m_axi_mat_C_ch_4_ARVALID, - m_axi_mat_C_ch_4_AWADDR, - m_axi_mat_C_ch_4_AWBURST, - m_axi_mat_C_ch_4_AWCACHE, - m_axi_mat_C_ch_4_AWID, - m_axi_mat_C_ch_4_AWLEN, - m_axi_mat_C_ch_4_AWLOCK, - m_axi_mat_C_ch_4_AWPROT, - m_axi_mat_C_ch_4_AWQOS, - m_axi_mat_C_ch_4_AWREADY, - m_axi_mat_C_ch_4_AWSIZE, - m_axi_mat_C_ch_4_AWVALID, - m_axi_mat_C_ch_4_BID, - m_axi_mat_C_ch_4_BREADY, - m_axi_mat_C_ch_4_BRESP, - m_axi_mat_C_ch_4_BVALID, - m_axi_mat_C_ch_4_RDATA, - m_axi_mat_C_ch_4_RID, - m_axi_mat_C_ch_4_RLAST, - m_axi_mat_C_ch_4_RREADY, - m_axi_mat_C_ch_4_RRESP, - m_axi_mat_C_ch_4_RVALID, - m_axi_mat_C_ch_4_WDATA, - m_axi_mat_C_ch_4_WLAST, - m_axi_mat_C_ch_4_WREADY, - m_axi_mat_C_ch_4_WSTRB, - m_axi_mat_C_ch_4_WVALID, - m_axi_mat_C_ch_5_ARADDR, - m_axi_mat_C_ch_5_ARBURST, - m_axi_mat_C_ch_5_ARCACHE, - m_axi_mat_C_ch_5_ARID, - m_axi_mat_C_ch_5_ARLEN, - m_axi_mat_C_ch_5_ARLOCK, - m_axi_mat_C_ch_5_ARPROT, - m_axi_mat_C_ch_5_ARQOS, - m_axi_mat_C_ch_5_ARREADY, - m_axi_mat_C_ch_5_ARSIZE, - m_axi_mat_C_ch_5_ARVALID, - m_axi_mat_C_ch_5_AWADDR, - m_axi_mat_C_ch_5_AWBURST, - m_axi_mat_C_ch_5_AWCACHE, - m_axi_mat_C_ch_5_AWID, - m_axi_mat_C_ch_5_AWLEN, - m_axi_mat_C_ch_5_AWLOCK, - m_axi_mat_C_ch_5_AWPROT, - m_axi_mat_C_ch_5_AWQOS, - m_axi_mat_C_ch_5_AWREADY, - m_axi_mat_C_ch_5_AWSIZE, - m_axi_mat_C_ch_5_AWVALID, - m_axi_mat_C_ch_5_BID, - m_axi_mat_C_ch_5_BREADY, - m_axi_mat_C_ch_5_BRESP, - m_axi_mat_C_ch_5_BVALID, - m_axi_mat_C_ch_5_RDATA, - m_axi_mat_C_ch_5_RID, - m_axi_mat_C_ch_5_RLAST, - m_axi_mat_C_ch_5_RREADY, - m_axi_mat_C_ch_5_RRESP, - m_axi_mat_C_ch_5_RVALID, - m_axi_mat_C_ch_5_WDATA, - m_axi_mat_C_ch_5_WLAST, - m_axi_mat_C_ch_5_WREADY, - m_axi_mat_C_ch_5_WSTRB, - m_axi_mat_C_ch_5_WVALID, - m_axi_mat_C_ch_6_ARADDR, - m_axi_mat_C_ch_6_ARBURST, - m_axi_mat_C_ch_6_ARCACHE, - m_axi_mat_C_ch_6_ARID, - m_axi_mat_C_ch_6_ARLEN, - m_axi_mat_C_ch_6_ARLOCK, - m_axi_mat_C_ch_6_ARPROT, - m_axi_mat_C_ch_6_ARQOS, - m_axi_mat_C_ch_6_ARREADY, - m_axi_mat_C_ch_6_ARSIZE, - m_axi_mat_C_ch_6_ARVALID, - m_axi_mat_C_ch_6_AWADDR, - m_axi_mat_C_ch_6_AWBURST, - m_axi_mat_C_ch_6_AWCACHE, - m_axi_mat_C_ch_6_AWID, - m_axi_mat_C_ch_6_AWLEN, - m_axi_mat_C_ch_6_AWLOCK, - m_axi_mat_C_ch_6_AWPROT, - m_axi_mat_C_ch_6_AWQOS, - m_axi_mat_C_ch_6_AWREADY, - m_axi_mat_C_ch_6_AWSIZE, - m_axi_mat_C_ch_6_AWVALID, - m_axi_mat_C_ch_6_BID, - m_axi_mat_C_ch_6_BREADY, - m_axi_mat_C_ch_6_BRESP, - m_axi_mat_C_ch_6_BVALID, - m_axi_mat_C_ch_6_RDATA, - m_axi_mat_C_ch_6_RID, - m_axi_mat_C_ch_6_RLAST, - m_axi_mat_C_ch_6_RREADY, - m_axi_mat_C_ch_6_RRESP, - m_axi_mat_C_ch_6_RVALID, - m_axi_mat_C_ch_6_WDATA, - m_axi_mat_C_ch_6_WLAST, - m_axi_mat_C_ch_6_WREADY, - m_axi_mat_C_ch_6_WSTRB, - m_axi_mat_C_ch_6_WVALID, - m_axi_mat_C_ch_7_ARADDR, - m_axi_mat_C_ch_7_ARBURST, - m_axi_mat_C_ch_7_ARCACHE, - m_axi_mat_C_ch_7_ARID, - m_axi_mat_C_ch_7_ARLEN, - m_axi_mat_C_ch_7_ARLOCK, - m_axi_mat_C_ch_7_ARPROT, - m_axi_mat_C_ch_7_ARQOS, - m_axi_mat_C_ch_7_ARREADY, - m_axi_mat_C_ch_7_ARSIZE, - m_axi_mat_C_ch_7_ARVALID, - m_axi_mat_C_ch_7_AWADDR, - m_axi_mat_C_ch_7_AWBURST, - m_axi_mat_C_ch_7_AWCACHE, - m_axi_mat_C_ch_7_AWID, - m_axi_mat_C_ch_7_AWLEN, - m_axi_mat_C_ch_7_AWLOCK, - m_axi_mat_C_ch_7_AWPROT, - m_axi_mat_C_ch_7_AWQOS, - m_axi_mat_C_ch_7_AWREADY, - m_axi_mat_C_ch_7_AWSIZE, - m_axi_mat_C_ch_7_AWVALID, - m_axi_mat_C_ch_7_BID, - m_axi_mat_C_ch_7_BREADY, - m_axi_mat_C_ch_7_BRESP, - m_axi_mat_C_ch_7_BVALID, - m_axi_mat_C_ch_7_RDATA, - m_axi_mat_C_ch_7_RID, - m_axi_mat_C_ch_7_RLAST, - m_axi_mat_C_ch_7_RREADY, - m_axi_mat_C_ch_7_RRESP, - m_axi_mat_C_ch_7_RVALID, - m_axi_mat_C_ch_7_WDATA, - m_axi_mat_C_ch_7_WLAST, - m_axi_mat_C_ch_7_WREADY, - m_axi_mat_C_ch_7_WSTRB, - m_axi_mat_C_ch_7_WVALID -); - - parameter C_S_AXI_CONTROL_DATA_WIDTH = 32; - parameter C_S_AXI_CONTROL_ADDR_WIDTH = 9; - parameter C_S_AXI_DATA_WIDTH = 32; - parameter C_S_AXI_CONTROL_WSTRB_WIDTH = 32 / 8; - parameter C_S_AXI_WSTRB_WIDTH = 32 / 8; - (* RS_HS = "s_axi_control_AW.valid" *)input s_axi_control_AWVALID; - (* RS_HS = "s_axi_control_AW.ready" *)output s_axi_control_AWREADY; - (* RS_HS = "s_axi_control_AW.data" *)input [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR; - (* RS_HS = "s_axi_control_W.valid" *)input s_axi_control_WVALID; - (* RS_HS = "s_axi_control_W.ready" *)output s_axi_control_WREADY; - (* RS_HS = "s_axi_control_W.data" *)input [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA; - (* RS_HS = "s_axi_control_W.data" *)input [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB; - (* RS_HS = "s_axi_control_AR.valid" *)input s_axi_control_ARVALID; - (* RS_HS = "s_axi_control_AR.ready" *)output s_axi_control_ARREADY; - (* RS_HS = "s_axi_control_AR.data" *)input [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_ARADDR; - (* RS_HS = "s_axi_control_R.valid" *)output s_axi_control_RVALID; - (* RS_HS = "s_axi_control_R.ready" *)input s_axi_control_RREADY; - (* RS_HS = "s_axi_control_R.data" *)output [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_RDATA; - (* RS_HS = "s_axi_control_R.data" *)output [1:0] s_axi_control_RRESP; - (* RS_HS = "s_axi_control_B.valid" *)output s_axi_control_BVALID; - (* RS_HS = "s_axi_control_B.ready" *)input s_axi_control_BREADY; - (* RS_HS = "s_axi_control_B.data" *)output [1:0] s_axi_control_BRESP; - (* RS_CLK *)input ap_clk; - (* RS_RST = "ff" *)input ap_rst_n; - (* RS_FF = "interrupt" *)output interrupt; - (* RS_HS = "m_axi_edge_list_ch_0_AR.data" *)output [63:0] m_axi_edge_list_ch_0_ARADDR; - (* RS_HS = "m_axi_edge_list_ch_0_AR.data" *)output [1:0] m_axi_edge_list_ch_0_ARBURST; - (* RS_HS = "m_axi_edge_list_ch_0_AR.data" *)output [3:0] m_axi_edge_list_ch_0_ARCACHE; - (* RS_HS = "m_axi_edge_list_ch_0_AR.data" *)output [0:0] m_axi_edge_list_ch_0_ARID; - (* RS_HS = "m_axi_edge_list_ch_0_AR.data" *)output [7:0] m_axi_edge_list_ch_0_ARLEN; - (* RS_HS = "m_axi_edge_list_ch_0_AR.data" *)output m_axi_edge_list_ch_0_ARLOCK; - (* RS_HS = "m_axi_edge_list_ch_0_AR.data" *)output [2:0] m_axi_edge_list_ch_0_ARPROT; - (* RS_HS = "m_axi_edge_list_ch_0_AR.data" *)output [3:0] m_axi_edge_list_ch_0_ARQOS; - (* RS_HS = "m_axi_edge_list_ch_0_AR.ready" *)input m_axi_edge_list_ch_0_ARREADY; - (* RS_HS = "m_axi_edge_list_ch_0_AR.data" *)output [2:0] m_axi_edge_list_ch_0_ARSIZE; - (* RS_HS = "m_axi_edge_list_ch_0_AR.valid" *)output m_axi_edge_list_ch_0_ARVALID; - (* RS_HS = "m_axi_edge_list_ch_0_AW.data" *)output [63:0] m_axi_edge_list_ch_0_AWADDR; - (* RS_HS = "m_axi_edge_list_ch_0_AW.data" *)output [1:0] m_axi_edge_list_ch_0_AWBURST; - (* RS_HS = "m_axi_edge_list_ch_0_AW.data" *)output [3:0] m_axi_edge_list_ch_0_AWCACHE; - (* RS_HS = "m_axi_edge_list_ch_0_AW.data" *)output [0:0] m_axi_edge_list_ch_0_AWID; - (* RS_HS = "m_axi_edge_list_ch_0_AW.data" *)output [7:0] m_axi_edge_list_ch_0_AWLEN; - (* RS_HS = "m_axi_edge_list_ch_0_AW.data" *)output m_axi_edge_list_ch_0_AWLOCK; - (* RS_HS = "m_axi_edge_list_ch_0_AW.data" *)output [2:0] m_axi_edge_list_ch_0_AWPROT; - (* RS_HS = "m_axi_edge_list_ch_0_AW.data" *)output [3:0] m_axi_edge_list_ch_0_AWQOS; - (* RS_HS = "m_axi_edge_list_ch_0_AW.ready" *)input m_axi_edge_list_ch_0_AWREADY; - (* RS_HS = "m_axi_edge_list_ch_0_AW.data" *)output [2:0] m_axi_edge_list_ch_0_AWSIZE; - (* RS_HS = "m_axi_edge_list_ch_0_AW.valid" *)output m_axi_edge_list_ch_0_AWVALID; - (* RS_HS = "m_axi_edge_list_ch_0_B.data" *)input [0:0] m_axi_edge_list_ch_0_BID; - (* RS_HS = "m_axi_edge_list_ch_0_B.ready" *)output m_axi_edge_list_ch_0_BREADY; - (* RS_HS = "m_axi_edge_list_ch_0_B.data" *)input [1:0] m_axi_edge_list_ch_0_BRESP; - (* RS_HS = "m_axi_edge_list_ch_0_B.valid" *)input m_axi_edge_list_ch_0_BVALID; - (* RS_HS = "m_axi_edge_list_ch_0_R.data" *)input [511:0] m_axi_edge_list_ch_0_RDATA; - (* RS_HS = "m_axi_edge_list_ch_0_R.data" *)input [0:0] m_axi_edge_list_ch_0_RID; - (* RS_HS = "m_axi_edge_list_ch_0_R.data" *)input m_axi_edge_list_ch_0_RLAST; - (* RS_HS = "m_axi_edge_list_ch_0_R.ready" *)output m_axi_edge_list_ch_0_RREADY; - (* RS_HS = "m_axi_edge_list_ch_0_R.data" *)input [1:0] m_axi_edge_list_ch_0_RRESP; - (* RS_HS = "m_axi_edge_list_ch_0_R.valid" *)input m_axi_edge_list_ch_0_RVALID; - (* RS_HS = "m_axi_edge_list_ch_0_W.data" *)output [511:0] m_axi_edge_list_ch_0_WDATA; - (* RS_HS = "m_axi_edge_list_ch_0_W.data" *)output m_axi_edge_list_ch_0_WLAST; - (* RS_HS = "m_axi_edge_list_ch_0_W.ready" *)input m_axi_edge_list_ch_0_WREADY; - (* RS_HS = "m_axi_edge_list_ch_0_W.data" *)output [63:0] m_axi_edge_list_ch_0_WSTRB; - (* RS_HS = "m_axi_edge_list_ch_0_W.valid" *)output m_axi_edge_list_ch_0_WVALID; - (* RS_HS = "m_axi_edge_list_ch_1_AR.data" *)output [63:0] m_axi_edge_list_ch_1_ARADDR; - (* RS_HS = "m_axi_edge_list_ch_1_AR.data" *)output [1:0] m_axi_edge_list_ch_1_ARBURST; - (* RS_HS = "m_axi_edge_list_ch_1_AR.data" *)output [3:0] m_axi_edge_list_ch_1_ARCACHE; - (* RS_HS = "m_axi_edge_list_ch_1_AR.data" *)output [0:0] m_axi_edge_list_ch_1_ARID; - (* RS_HS = "m_axi_edge_list_ch_1_AR.data" *)output [7:0] m_axi_edge_list_ch_1_ARLEN; - (* RS_HS = "m_axi_edge_list_ch_1_AR.data" *)output m_axi_edge_list_ch_1_ARLOCK; - (* RS_HS = "m_axi_edge_list_ch_1_AR.data" *)output [2:0] m_axi_edge_list_ch_1_ARPROT; - (* RS_HS = "m_axi_edge_list_ch_1_AR.data" *)output [3:0] m_axi_edge_list_ch_1_ARQOS; - (* RS_HS = "m_axi_edge_list_ch_1_AR.ready" *)input m_axi_edge_list_ch_1_ARREADY; - (* RS_HS = "m_axi_edge_list_ch_1_AR.data" *)output [2:0] m_axi_edge_list_ch_1_ARSIZE; - (* RS_HS = "m_axi_edge_list_ch_1_AR.valid" *)output m_axi_edge_list_ch_1_ARVALID; - (* RS_HS = "m_axi_edge_list_ch_1_AW.data" *)output [63:0] m_axi_edge_list_ch_1_AWADDR; - (* RS_HS = "m_axi_edge_list_ch_1_AW.data" *)output [1:0] m_axi_edge_list_ch_1_AWBURST; - (* RS_HS = "m_axi_edge_list_ch_1_AW.data" *)output [3:0] m_axi_edge_list_ch_1_AWCACHE; - (* RS_HS = "m_axi_edge_list_ch_1_AW.data" *)output [0:0] m_axi_edge_list_ch_1_AWID; - (* RS_HS = "m_axi_edge_list_ch_1_AW.data" *)output [7:0] m_axi_edge_list_ch_1_AWLEN; - (* RS_HS = "m_axi_edge_list_ch_1_AW.data" *)output m_axi_edge_list_ch_1_AWLOCK; - (* RS_HS = "m_axi_edge_list_ch_1_AW.data" *)output [2:0] m_axi_edge_list_ch_1_AWPROT; - (* RS_HS = "m_axi_edge_list_ch_1_AW.data" *)output [3:0] m_axi_edge_list_ch_1_AWQOS; - (* RS_HS = "m_axi_edge_list_ch_1_AW.ready" *)input m_axi_edge_list_ch_1_AWREADY; - (* RS_HS = "m_axi_edge_list_ch_1_AW.data" *)output [2:0] m_axi_edge_list_ch_1_AWSIZE; - (* RS_HS = "m_axi_edge_list_ch_1_AW.valid" *)output m_axi_edge_list_ch_1_AWVALID; - (* RS_HS = "m_axi_edge_list_ch_1_B.data" *)input [0:0] m_axi_edge_list_ch_1_BID; - (* RS_HS = "m_axi_edge_list_ch_1_B.ready" *)output m_axi_edge_list_ch_1_BREADY; - (* RS_HS = "m_axi_edge_list_ch_1_B.data" *)input [1:0] m_axi_edge_list_ch_1_BRESP; - (* RS_HS = "m_axi_edge_list_ch_1_B.valid" *)input m_axi_edge_list_ch_1_BVALID; - (* RS_HS = "m_axi_edge_list_ch_1_R.data" *)input [511:0] m_axi_edge_list_ch_1_RDATA; - (* RS_HS = "m_axi_edge_list_ch_1_R.data" *)input [0:0] m_axi_edge_list_ch_1_RID; - (* RS_HS = "m_axi_edge_list_ch_1_R.data" *)input m_axi_edge_list_ch_1_RLAST; - (* RS_HS = "m_axi_edge_list_ch_1_R.ready" *)output m_axi_edge_list_ch_1_RREADY; - (* RS_HS = "m_axi_edge_list_ch_1_R.data" *)input [1:0] m_axi_edge_list_ch_1_RRESP; - (* RS_HS = "m_axi_edge_list_ch_1_R.valid" *)input m_axi_edge_list_ch_1_RVALID; - (* RS_HS = "m_axi_edge_list_ch_1_W.data" *)output [511:0] m_axi_edge_list_ch_1_WDATA; - (* RS_HS = "m_axi_edge_list_ch_1_W.data" *)output m_axi_edge_list_ch_1_WLAST; - (* RS_HS = "m_axi_edge_list_ch_1_W.ready" *)input m_axi_edge_list_ch_1_WREADY; - (* RS_HS = "m_axi_edge_list_ch_1_W.data" *)output [63:0] m_axi_edge_list_ch_1_WSTRB; - (* RS_HS = "m_axi_edge_list_ch_1_W.valid" *)output m_axi_edge_list_ch_1_WVALID; - (* RS_HS = "m_axi_edge_list_ch_2_AR.data" *)output [63:0] m_axi_edge_list_ch_2_ARADDR; - (* RS_HS = "m_axi_edge_list_ch_2_AR.data" *)output [1:0] m_axi_edge_list_ch_2_ARBURST; - (* RS_HS = "m_axi_edge_list_ch_2_AR.data" *)output [3:0] m_axi_edge_list_ch_2_ARCACHE; - (* RS_HS = "m_axi_edge_list_ch_2_AR.data" *)output [0:0] m_axi_edge_list_ch_2_ARID; - (* RS_HS = "m_axi_edge_list_ch_2_AR.data" *)output [7:0] m_axi_edge_list_ch_2_ARLEN; - (* RS_HS = "m_axi_edge_list_ch_2_AR.data" *)output m_axi_edge_list_ch_2_ARLOCK; - (* RS_HS = "m_axi_edge_list_ch_2_AR.data" *)output [2:0] m_axi_edge_list_ch_2_ARPROT; - (* RS_HS = "m_axi_edge_list_ch_2_AR.data" *)output [3:0] m_axi_edge_list_ch_2_ARQOS; - (* RS_HS = "m_axi_edge_list_ch_2_AR.ready" *)input m_axi_edge_list_ch_2_ARREADY; - (* RS_HS = "m_axi_edge_list_ch_2_AR.data" *)output [2:0] m_axi_edge_list_ch_2_ARSIZE; - (* RS_HS = "m_axi_edge_list_ch_2_AR.valid" *)output m_axi_edge_list_ch_2_ARVALID; - (* RS_HS = "m_axi_edge_list_ch_2_AW.data" *)output [63:0] m_axi_edge_list_ch_2_AWADDR; - (* RS_HS = "m_axi_edge_list_ch_2_AW.data" *)output [1:0] m_axi_edge_list_ch_2_AWBURST; - (* RS_HS = "m_axi_edge_list_ch_2_AW.data" *)output [3:0] m_axi_edge_list_ch_2_AWCACHE; - (* RS_HS = "m_axi_edge_list_ch_2_AW.data" *)output [0:0] m_axi_edge_list_ch_2_AWID; - (* RS_HS = "m_axi_edge_list_ch_2_AW.data" *)output [7:0] m_axi_edge_list_ch_2_AWLEN; - (* RS_HS = "m_axi_edge_list_ch_2_AW.data" *)output m_axi_edge_list_ch_2_AWLOCK; - (* RS_HS = "m_axi_edge_list_ch_2_AW.data" *)output [2:0] m_axi_edge_list_ch_2_AWPROT; - (* RS_HS = "m_axi_edge_list_ch_2_AW.data" *)output [3:0] m_axi_edge_list_ch_2_AWQOS; - (* RS_HS = "m_axi_edge_list_ch_2_AW.ready" *)input m_axi_edge_list_ch_2_AWREADY; - (* RS_HS = "m_axi_edge_list_ch_2_AW.data" *)output [2:0] m_axi_edge_list_ch_2_AWSIZE; - (* RS_HS = "m_axi_edge_list_ch_2_AW.valid" *)output m_axi_edge_list_ch_2_AWVALID; - (* RS_HS = "m_axi_edge_list_ch_2_B.data" *)input [0:0] m_axi_edge_list_ch_2_BID; - (* RS_HS = "m_axi_edge_list_ch_2_B.ready" *)output m_axi_edge_list_ch_2_BREADY; - (* RS_HS = "m_axi_edge_list_ch_2_B.data" *)input [1:0] m_axi_edge_list_ch_2_BRESP; - (* RS_HS = "m_axi_edge_list_ch_2_B.valid" *)input m_axi_edge_list_ch_2_BVALID; - (* RS_HS = "m_axi_edge_list_ch_2_R.data" *)input [511:0] m_axi_edge_list_ch_2_RDATA; - (* RS_HS = "m_axi_edge_list_ch_2_R.data" *)input [0:0] m_axi_edge_list_ch_2_RID; - (* RS_HS = "m_axi_edge_list_ch_2_R.data" *)input m_axi_edge_list_ch_2_RLAST; - (* RS_HS = "m_axi_edge_list_ch_2_R.ready" *)output m_axi_edge_list_ch_2_RREADY; - (* RS_HS = "m_axi_edge_list_ch_2_R.data" *)input [1:0] m_axi_edge_list_ch_2_RRESP; - (* RS_HS = "m_axi_edge_list_ch_2_R.valid" *)input m_axi_edge_list_ch_2_RVALID; - (* RS_HS = "m_axi_edge_list_ch_2_W.data" *)output [511:0] m_axi_edge_list_ch_2_WDATA; - (* RS_HS = "m_axi_edge_list_ch_2_W.data" *)output m_axi_edge_list_ch_2_WLAST; - (* RS_HS = "m_axi_edge_list_ch_2_W.ready" *)input m_axi_edge_list_ch_2_WREADY; - (* RS_HS = "m_axi_edge_list_ch_2_W.data" *)output [63:0] m_axi_edge_list_ch_2_WSTRB; - (* RS_HS = "m_axi_edge_list_ch_2_W.valid" *)output m_axi_edge_list_ch_2_WVALID; - (* RS_HS = "m_axi_edge_list_ch_3_AR.data" *)output [63:0] m_axi_edge_list_ch_3_ARADDR; - (* RS_HS = "m_axi_edge_list_ch_3_AR.data" *)output [1:0] m_axi_edge_list_ch_3_ARBURST; - (* RS_HS = "m_axi_edge_list_ch_3_AR.data" *)output [3:0] m_axi_edge_list_ch_3_ARCACHE; - (* RS_HS = "m_axi_edge_list_ch_3_AR.data" *)output [0:0] m_axi_edge_list_ch_3_ARID; - (* RS_HS = "m_axi_edge_list_ch_3_AR.data" *)output [7:0] m_axi_edge_list_ch_3_ARLEN; - (* RS_HS = "m_axi_edge_list_ch_3_AR.data" *)output m_axi_edge_list_ch_3_ARLOCK; - (* RS_HS = "m_axi_edge_list_ch_3_AR.data" *)output [2:0] m_axi_edge_list_ch_3_ARPROT; - (* RS_HS = "m_axi_edge_list_ch_3_AR.data" *)output [3:0] m_axi_edge_list_ch_3_ARQOS; - (* RS_HS = "m_axi_edge_list_ch_3_AR.ready" *)input m_axi_edge_list_ch_3_ARREADY; - (* RS_HS = "m_axi_edge_list_ch_3_AR.data" *)output [2:0] m_axi_edge_list_ch_3_ARSIZE; - (* RS_HS = "m_axi_edge_list_ch_3_AR.valid" *)output m_axi_edge_list_ch_3_ARVALID; - (* RS_HS = "m_axi_edge_list_ch_3_AW.data" *)output [63:0] m_axi_edge_list_ch_3_AWADDR; - (* RS_HS = "m_axi_edge_list_ch_3_AW.data" *)output [1:0] m_axi_edge_list_ch_3_AWBURST; - (* RS_HS = "m_axi_edge_list_ch_3_AW.data" *)output [3:0] m_axi_edge_list_ch_3_AWCACHE; - (* RS_HS = "m_axi_edge_list_ch_3_AW.data" *)output [0:0] m_axi_edge_list_ch_3_AWID; - (* RS_HS = "m_axi_edge_list_ch_3_AW.data" *)output [7:0] m_axi_edge_list_ch_3_AWLEN; - (* RS_HS = "m_axi_edge_list_ch_3_AW.data" *)output m_axi_edge_list_ch_3_AWLOCK; - (* RS_HS = "m_axi_edge_list_ch_3_AW.data" *)output [2:0] m_axi_edge_list_ch_3_AWPROT; - (* RS_HS = "m_axi_edge_list_ch_3_AW.data" *)output [3:0] m_axi_edge_list_ch_3_AWQOS; - (* RS_HS = "m_axi_edge_list_ch_3_AW.ready" *)input m_axi_edge_list_ch_3_AWREADY; - (* RS_HS = "m_axi_edge_list_ch_3_AW.data" *)output [2:0] m_axi_edge_list_ch_3_AWSIZE; - (* RS_HS = "m_axi_edge_list_ch_3_AW.valid" *)output m_axi_edge_list_ch_3_AWVALID; - (* RS_HS = "m_axi_edge_list_ch_3_B.data" *)input [0:0] m_axi_edge_list_ch_3_BID; - (* RS_HS = "m_axi_edge_list_ch_3_B.ready" *)output m_axi_edge_list_ch_3_BREADY; - (* RS_HS = "m_axi_edge_list_ch_3_B.data" *)input [1:0] m_axi_edge_list_ch_3_BRESP; - (* RS_HS = "m_axi_edge_list_ch_3_B.valid" *)input m_axi_edge_list_ch_3_BVALID; - (* RS_HS = "m_axi_edge_list_ch_3_R.data" *)input [511:0] m_axi_edge_list_ch_3_RDATA; - (* RS_HS = "m_axi_edge_list_ch_3_R.data" *)input [0:0] m_axi_edge_list_ch_3_RID; - (* RS_HS = "m_axi_edge_list_ch_3_R.data" *)input m_axi_edge_list_ch_3_RLAST; - (* RS_HS = "m_axi_edge_list_ch_3_R.ready" *)output m_axi_edge_list_ch_3_RREADY; - (* RS_HS = "m_axi_edge_list_ch_3_R.data" *)input [1:0] m_axi_edge_list_ch_3_RRESP; - (* RS_HS = "m_axi_edge_list_ch_3_R.valid" *)input m_axi_edge_list_ch_3_RVALID; - (* RS_HS = "m_axi_edge_list_ch_3_W.data" *)output [511:0] m_axi_edge_list_ch_3_WDATA; - (* RS_HS = "m_axi_edge_list_ch_3_W.data" *)output m_axi_edge_list_ch_3_WLAST; - (* RS_HS = "m_axi_edge_list_ch_3_W.ready" *)input m_axi_edge_list_ch_3_WREADY; - (* RS_HS = "m_axi_edge_list_ch_3_W.data" *)output [63:0] m_axi_edge_list_ch_3_WSTRB; - (* RS_HS = "m_axi_edge_list_ch_3_W.valid" *)output m_axi_edge_list_ch_3_WVALID; - (* RS_HS = "m_axi_edge_list_ch_4_AR.data" *)output [63:0] m_axi_edge_list_ch_4_ARADDR; - (* RS_HS = "m_axi_edge_list_ch_4_AR.data" *)output [1:0] m_axi_edge_list_ch_4_ARBURST; - (* RS_HS = "m_axi_edge_list_ch_4_AR.data" *)output [3:0] m_axi_edge_list_ch_4_ARCACHE; - (* RS_HS = "m_axi_edge_list_ch_4_AR.data" *)output [0:0] m_axi_edge_list_ch_4_ARID; - (* RS_HS = "m_axi_edge_list_ch_4_AR.data" *)output [7:0] m_axi_edge_list_ch_4_ARLEN; - (* RS_HS = "m_axi_edge_list_ch_4_AR.data" *)output m_axi_edge_list_ch_4_ARLOCK; - (* RS_HS = "m_axi_edge_list_ch_4_AR.data" *)output [2:0] m_axi_edge_list_ch_4_ARPROT; - (* RS_HS = "m_axi_edge_list_ch_4_AR.data" *)output [3:0] m_axi_edge_list_ch_4_ARQOS; - (* RS_HS = "m_axi_edge_list_ch_4_AR.ready" *)input m_axi_edge_list_ch_4_ARREADY; - (* RS_HS = "m_axi_edge_list_ch_4_AR.data" *)output [2:0] m_axi_edge_list_ch_4_ARSIZE; - (* RS_HS = "m_axi_edge_list_ch_4_AR.valid" *)output m_axi_edge_list_ch_4_ARVALID; - (* RS_HS = "m_axi_edge_list_ch_4_AW.data" *)output [63:0] m_axi_edge_list_ch_4_AWADDR; - (* RS_HS = "m_axi_edge_list_ch_4_AW.data" *)output [1:0] m_axi_edge_list_ch_4_AWBURST; - (* RS_HS = "m_axi_edge_list_ch_4_AW.data" *)output [3:0] m_axi_edge_list_ch_4_AWCACHE; - (* RS_HS = "m_axi_edge_list_ch_4_AW.data" *)output [0:0] m_axi_edge_list_ch_4_AWID; - (* RS_HS = "m_axi_edge_list_ch_4_AW.data" *)output [7:0] m_axi_edge_list_ch_4_AWLEN; - (* RS_HS = "m_axi_edge_list_ch_4_AW.data" *)output m_axi_edge_list_ch_4_AWLOCK; - (* RS_HS = "m_axi_edge_list_ch_4_AW.data" *)output [2:0] m_axi_edge_list_ch_4_AWPROT; - (* RS_HS = "m_axi_edge_list_ch_4_AW.data" *)output [3:0] m_axi_edge_list_ch_4_AWQOS; - (* RS_HS = "m_axi_edge_list_ch_4_AW.ready" *)input m_axi_edge_list_ch_4_AWREADY; - (* RS_HS = "m_axi_edge_list_ch_4_AW.data" *)output [2:0] m_axi_edge_list_ch_4_AWSIZE; - (* RS_HS = "m_axi_edge_list_ch_4_AW.valid" *)output m_axi_edge_list_ch_4_AWVALID; - (* RS_HS = "m_axi_edge_list_ch_4_B.data" *)input [0:0] m_axi_edge_list_ch_4_BID; - (* RS_HS = "m_axi_edge_list_ch_4_B.ready" *)output m_axi_edge_list_ch_4_BREADY; - (* RS_HS = "m_axi_edge_list_ch_4_B.data" *)input [1:0] m_axi_edge_list_ch_4_BRESP; - (* RS_HS = "m_axi_edge_list_ch_4_B.valid" *)input m_axi_edge_list_ch_4_BVALID; - (* RS_HS = "m_axi_edge_list_ch_4_R.data" *)input [511:0] m_axi_edge_list_ch_4_RDATA; - (* RS_HS = "m_axi_edge_list_ch_4_R.data" *)input [0:0] m_axi_edge_list_ch_4_RID; - (* RS_HS = "m_axi_edge_list_ch_4_R.data" *)input m_axi_edge_list_ch_4_RLAST; - (* RS_HS = "m_axi_edge_list_ch_4_R.ready" *)output m_axi_edge_list_ch_4_RREADY; - (* RS_HS = "m_axi_edge_list_ch_4_R.data" *)input [1:0] m_axi_edge_list_ch_4_RRESP; - (* RS_HS = "m_axi_edge_list_ch_4_R.valid" *)input m_axi_edge_list_ch_4_RVALID; - (* RS_HS = "m_axi_edge_list_ch_4_W.data" *)output [511:0] m_axi_edge_list_ch_4_WDATA; - (* RS_HS = "m_axi_edge_list_ch_4_W.data" *)output m_axi_edge_list_ch_4_WLAST; - (* RS_HS = "m_axi_edge_list_ch_4_W.ready" *)input m_axi_edge_list_ch_4_WREADY; - (* RS_HS = "m_axi_edge_list_ch_4_W.data" *)output [63:0] m_axi_edge_list_ch_4_WSTRB; - (* RS_HS = "m_axi_edge_list_ch_4_W.valid" *)output m_axi_edge_list_ch_4_WVALID; - (* RS_HS = "m_axi_edge_list_ch_5_AR.data" *)output [63:0] m_axi_edge_list_ch_5_ARADDR; - (* RS_HS = "m_axi_edge_list_ch_5_AR.data" *)output [1:0] m_axi_edge_list_ch_5_ARBURST; - (* RS_HS = "m_axi_edge_list_ch_5_AR.data" *)output [3:0] m_axi_edge_list_ch_5_ARCACHE; - (* RS_HS = "m_axi_edge_list_ch_5_AR.data" *)output [0:0] m_axi_edge_list_ch_5_ARID; - (* RS_HS = "m_axi_edge_list_ch_5_AR.data" *)output [7:0] m_axi_edge_list_ch_5_ARLEN; - (* RS_HS = "m_axi_edge_list_ch_5_AR.data" *)output m_axi_edge_list_ch_5_ARLOCK; - (* RS_HS = "m_axi_edge_list_ch_5_AR.data" *)output [2:0] m_axi_edge_list_ch_5_ARPROT; - (* RS_HS = "m_axi_edge_list_ch_5_AR.data" *)output [3:0] m_axi_edge_list_ch_5_ARQOS; - (* RS_HS = "m_axi_edge_list_ch_5_AR.ready" *)input m_axi_edge_list_ch_5_ARREADY; - (* RS_HS = "m_axi_edge_list_ch_5_AR.data" *)output [2:0] m_axi_edge_list_ch_5_ARSIZE; - (* RS_HS = "m_axi_edge_list_ch_5_AR.valid" *)output m_axi_edge_list_ch_5_ARVALID; - (* RS_HS = "m_axi_edge_list_ch_5_AW.data" *)output [63:0] m_axi_edge_list_ch_5_AWADDR; - (* RS_HS = "m_axi_edge_list_ch_5_AW.data" *)output [1:0] m_axi_edge_list_ch_5_AWBURST; - (* RS_HS = "m_axi_edge_list_ch_5_AW.data" *)output [3:0] m_axi_edge_list_ch_5_AWCACHE; - (* RS_HS = "m_axi_edge_list_ch_5_AW.data" *)output [0:0] m_axi_edge_list_ch_5_AWID; - (* RS_HS = "m_axi_edge_list_ch_5_AW.data" *)output [7:0] m_axi_edge_list_ch_5_AWLEN; - (* RS_HS = "m_axi_edge_list_ch_5_AW.data" *)output m_axi_edge_list_ch_5_AWLOCK; - (* RS_HS = "m_axi_edge_list_ch_5_AW.data" *)output [2:0] m_axi_edge_list_ch_5_AWPROT; - (* RS_HS = "m_axi_edge_list_ch_5_AW.data" *)output [3:0] m_axi_edge_list_ch_5_AWQOS; - (* RS_HS = "m_axi_edge_list_ch_5_AW.ready" *)input m_axi_edge_list_ch_5_AWREADY; - (* RS_HS = "m_axi_edge_list_ch_5_AW.data" *)output [2:0] m_axi_edge_list_ch_5_AWSIZE; - (* RS_HS = "m_axi_edge_list_ch_5_AW.valid" *)output m_axi_edge_list_ch_5_AWVALID; - (* RS_HS = "m_axi_edge_list_ch_5_B.data" *)input [0:0] m_axi_edge_list_ch_5_BID; - (* RS_HS = "m_axi_edge_list_ch_5_B.ready" *)output m_axi_edge_list_ch_5_BREADY; - (* RS_HS = "m_axi_edge_list_ch_5_B.data" *)input [1:0] m_axi_edge_list_ch_5_BRESP; - (* RS_HS = "m_axi_edge_list_ch_5_B.valid" *)input m_axi_edge_list_ch_5_BVALID; - (* RS_HS = "m_axi_edge_list_ch_5_R.data" *)input [511:0] m_axi_edge_list_ch_5_RDATA; - (* RS_HS = "m_axi_edge_list_ch_5_R.data" *)input [0:0] m_axi_edge_list_ch_5_RID; - (* RS_HS = "m_axi_edge_list_ch_5_R.data" *)input m_axi_edge_list_ch_5_RLAST; - (* RS_HS = "m_axi_edge_list_ch_5_R.ready" *)output m_axi_edge_list_ch_5_RREADY; - (* RS_HS = "m_axi_edge_list_ch_5_R.data" *)input [1:0] m_axi_edge_list_ch_5_RRESP; - (* RS_HS = "m_axi_edge_list_ch_5_R.valid" *)input m_axi_edge_list_ch_5_RVALID; - (* RS_HS = "m_axi_edge_list_ch_5_W.data" *)output [511:0] m_axi_edge_list_ch_5_WDATA; - (* RS_HS = "m_axi_edge_list_ch_5_W.data" *)output m_axi_edge_list_ch_5_WLAST; - (* RS_HS = "m_axi_edge_list_ch_5_W.ready" *)input m_axi_edge_list_ch_5_WREADY; - (* RS_HS = "m_axi_edge_list_ch_5_W.data" *)output [63:0] m_axi_edge_list_ch_5_WSTRB; - (* RS_HS = "m_axi_edge_list_ch_5_W.valid" *)output m_axi_edge_list_ch_5_WVALID; - (* RS_HS = "m_axi_edge_list_ch_6_AR.data" *)output [63:0] m_axi_edge_list_ch_6_ARADDR; - (* RS_HS = "m_axi_edge_list_ch_6_AR.data" *)output [1:0] m_axi_edge_list_ch_6_ARBURST; - (* RS_HS = "m_axi_edge_list_ch_6_AR.data" *)output [3:0] m_axi_edge_list_ch_6_ARCACHE; - (* RS_HS = "m_axi_edge_list_ch_6_AR.data" *)output [0:0] m_axi_edge_list_ch_6_ARID; - (* RS_HS = "m_axi_edge_list_ch_6_AR.data" *)output [7:0] m_axi_edge_list_ch_6_ARLEN; - (* RS_HS = "m_axi_edge_list_ch_6_AR.data" *)output m_axi_edge_list_ch_6_ARLOCK; - (* RS_HS = "m_axi_edge_list_ch_6_AR.data" *)output [2:0] m_axi_edge_list_ch_6_ARPROT; - (* RS_HS = "m_axi_edge_list_ch_6_AR.data" *)output [3:0] m_axi_edge_list_ch_6_ARQOS; - (* RS_HS = "m_axi_edge_list_ch_6_AR.ready" *)input m_axi_edge_list_ch_6_ARREADY; - (* RS_HS = "m_axi_edge_list_ch_6_AR.data" *)output [2:0] m_axi_edge_list_ch_6_ARSIZE; - (* RS_HS = "m_axi_edge_list_ch_6_AR.valid" *)output m_axi_edge_list_ch_6_ARVALID; - (* RS_HS = "m_axi_edge_list_ch_6_AW.data" *)output [63:0] m_axi_edge_list_ch_6_AWADDR; - (* RS_HS = "m_axi_edge_list_ch_6_AW.data" *)output [1:0] m_axi_edge_list_ch_6_AWBURST; - (* RS_HS = "m_axi_edge_list_ch_6_AW.data" *)output [3:0] m_axi_edge_list_ch_6_AWCACHE; - (* RS_HS = "m_axi_edge_list_ch_6_AW.data" *)output [0:0] m_axi_edge_list_ch_6_AWID; - (* RS_HS = "m_axi_edge_list_ch_6_AW.data" *)output [7:0] m_axi_edge_list_ch_6_AWLEN; - (* RS_HS = "m_axi_edge_list_ch_6_AW.data" *)output m_axi_edge_list_ch_6_AWLOCK; - (* RS_HS = "m_axi_edge_list_ch_6_AW.data" *)output [2:0] m_axi_edge_list_ch_6_AWPROT; - (* RS_HS = "m_axi_edge_list_ch_6_AW.data" *)output [3:0] m_axi_edge_list_ch_6_AWQOS; - (* RS_HS = "m_axi_edge_list_ch_6_AW.ready" *)input m_axi_edge_list_ch_6_AWREADY; - (* RS_HS = "m_axi_edge_list_ch_6_AW.data" *)output [2:0] m_axi_edge_list_ch_6_AWSIZE; - (* RS_HS = "m_axi_edge_list_ch_6_AW.valid" *)output m_axi_edge_list_ch_6_AWVALID; - (* RS_HS = "m_axi_edge_list_ch_6_B.data" *)input [0:0] m_axi_edge_list_ch_6_BID; - (* RS_HS = "m_axi_edge_list_ch_6_B.ready" *)output m_axi_edge_list_ch_6_BREADY; - (* RS_HS = "m_axi_edge_list_ch_6_B.data" *)input [1:0] m_axi_edge_list_ch_6_BRESP; - (* RS_HS = "m_axi_edge_list_ch_6_B.valid" *)input m_axi_edge_list_ch_6_BVALID; - (* RS_HS = "m_axi_edge_list_ch_6_R.data" *)input [511:0] m_axi_edge_list_ch_6_RDATA; - (* RS_HS = "m_axi_edge_list_ch_6_R.data" *)input [0:0] m_axi_edge_list_ch_6_RID; - (* RS_HS = "m_axi_edge_list_ch_6_R.data" *)input m_axi_edge_list_ch_6_RLAST; - (* RS_HS = "m_axi_edge_list_ch_6_R.ready" *)output m_axi_edge_list_ch_6_RREADY; - (* RS_HS = "m_axi_edge_list_ch_6_R.data" *)input [1:0] m_axi_edge_list_ch_6_RRESP; - (* RS_HS = "m_axi_edge_list_ch_6_R.valid" *)input m_axi_edge_list_ch_6_RVALID; - (* RS_HS = "m_axi_edge_list_ch_6_W.data" *)output [511:0] m_axi_edge_list_ch_6_WDATA; - (* RS_HS = "m_axi_edge_list_ch_6_W.data" *)output m_axi_edge_list_ch_6_WLAST; - (* RS_HS = "m_axi_edge_list_ch_6_W.ready" *)input m_axi_edge_list_ch_6_WREADY; - (* RS_HS = "m_axi_edge_list_ch_6_W.data" *)output [63:0] m_axi_edge_list_ch_6_WSTRB; - (* RS_HS = "m_axi_edge_list_ch_6_W.valid" *)output m_axi_edge_list_ch_6_WVALID; - (* RS_HS = "m_axi_edge_list_ch_7_AR.data" *)output [63:0] m_axi_edge_list_ch_7_ARADDR; - (* RS_HS = "m_axi_edge_list_ch_7_AR.data" *)output [1:0] m_axi_edge_list_ch_7_ARBURST; - (* RS_HS = "m_axi_edge_list_ch_7_AR.data" *)output [3:0] m_axi_edge_list_ch_7_ARCACHE; - (* RS_HS = "m_axi_edge_list_ch_7_AR.data" *)output [0:0] m_axi_edge_list_ch_7_ARID; - (* RS_HS = "m_axi_edge_list_ch_7_AR.data" *)output [7:0] m_axi_edge_list_ch_7_ARLEN; - (* RS_HS = "m_axi_edge_list_ch_7_AR.data" *)output m_axi_edge_list_ch_7_ARLOCK; - (* RS_HS = "m_axi_edge_list_ch_7_AR.data" *)output [2:0] m_axi_edge_list_ch_7_ARPROT; - (* RS_HS = "m_axi_edge_list_ch_7_AR.data" *)output [3:0] m_axi_edge_list_ch_7_ARQOS; - (* RS_HS = "m_axi_edge_list_ch_7_AR.ready" *)input m_axi_edge_list_ch_7_ARREADY; - (* RS_HS = "m_axi_edge_list_ch_7_AR.data" *)output [2:0] m_axi_edge_list_ch_7_ARSIZE; - (* RS_HS = "m_axi_edge_list_ch_7_AR.valid" *)output m_axi_edge_list_ch_7_ARVALID; - (* RS_HS = "m_axi_edge_list_ch_7_AW.data" *)output [63:0] m_axi_edge_list_ch_7_AWADDR; - (* RS_HS = "m_axi_edge_list_ch_7_AW.data" *)output [1:0] m_axi_edge_list_ch_7_AWBURST; - (* RS_HS = "m_axi_edge_list_ch_7_AW.data" *)output [3:0] m_axi_edge_list_ch_7_AWCACHE; - (* RS_HS = "m_axi_edge_list_ch_7_AW.data" *)output [0:0] m_axi_edge_list_ch_7_AWID; - (* RS_HS = "m_axi_edge_list_ch_7_AW.data" *)output [7:0] m_axi_edge_list_ch_7_AWLEN; - (* RS_HS = "m_axi_edge_list_ch_7_AW.data" *)output m_axi_edge_list_ch_7_AWLOCK; - (* RS_HS = "m_axi_edge_list_ch_7_AW.data" *)output [2:0] m_axi_edge_list_ch_7_AWPROT; - (* RS_HS = "m_axi_edge_list_ch_7_AW.data" *)output [3:0] m_axi_edge_list_ch_7_AWQOS; - (* RS_HS = "m_axi_edge_list_ch_7_AW.ready" *)input m_axi_edge_list_ch_7_AWREADY; - (* RS_HS = "m_axi_edge_list_ch_7_AW.data" *)output [2:0] m_axi_edge_list_ch_7_AWSIZE; - (* RS_HS = "m_axi_edge_list_ch_7_AW.valid" *)output m_axi_edge_list_ch_7_AWVALID; - (* RS_HS = "m_axi_edge_list_ch_7_B.data" *)input [0:0] m_axi_edge_list_ch_7_BID; - (* RS_HS = "m_axi_edge_list_ch_7_B.ready" *)output m_axi_edge_list_ch_7_BREADY; - (* RS_HS = "m_axi_edge_list_ch_7_B.data" *)input [1:0] m_axi_edge_list_ch_7_BRESP; - (* RS_HS = "m_axi_edge_list_ch_7_B.valid" *)input m_axi_edge_list_ch_7_BVALID; - (* RS_HS = "m_axi_edge_list_ch_7_R.data" *)input [511:0] m_axi_edge_list_ch_7_RDATA; - (* RS_HS = "m_axi_edge_list_ch_7_R.data" *)input [0:0] m_axi_edge_list_ch_7_RID; - (* RS_HS = "m_axi_edge_list_ch_7_R.data" *)input m_axi_edge_list_ch_7_RLAST; - (* RS_HS = "m_axi_edge_list_ch_7_R.ready" *)output m_axi_edge_list_ch_7_RREADY; - (* RS_HS = "m_axi_edge_list_ch_7_R.data" *)input [1:0] m_axi_edge_list_ch_7_RRESP; - (* RS_HS = "m_axi_edge_list_ch_7_R.valid" *)input m_axi_edge_list_ch_7_RVALID; - (* RS_HS = "m_axi_edge_list_ch_7_W.data" *)output [511:0] m_axi_edge_list_ch_7_WDATA; - (* RS_HS = "m_axi_edge_list_ch_7_W.data" *)output m_axi_edge_list_ch_7_WLAST; - (* RS_HS = "m_axi_edge_list_ch_7_W.ready" *)input m_axi_edge_list_ch_7_WREADY; - (* RS_HS = "m_axi_edge_list_ch_7_W.data" *)output [63:0] m_axi_edge_list_ch_7_WSTRB; - (* RS_HS = "m_axi_edge_list_ch_7_W.valid" *)output m_axi_edge_list_ch_7_WVALID; - (* RS_HS = "m_axi_mat_B_ch_0_AR.data" *)output [63:0] m_axi_mat_B_ch_0_ARADDR; - (* RS_HS = "m_axi_mat_B_ch_0_AR.data" *)output [1:0] m_axi_mat_B_ch_0_ARBURST; - (* RS_HS = "m_axi_mat_B_ch_0_AR.data" *)output [3:0] m_axi_mat_B_ch_0_ARCACHE; - (* RS_HS = "m_axi_mat_B_ch_0_AR.data" *)output [0:0] m_axi_mat_B_ch_0_ARID; - (* RS_HS = "m_axi_mat_B_ch_0_AR.data" *)output [7:0] m_axi_mat_B_ch_0_ARLEN; - (* RS_HS = "m_axi_mat_B_ch_0_AR.data" *)output m_axi_mat_B_ch_0_ARLOCK; - (* RS_HS = "m_axi_mat_B_ch_0_AR.data" *)output [2:0] m_axi_mat_B_ch_0_ARPROT; - (* RS_HS = "m_axi_mat_B_ch_0_AR.data" *)output [3:0] m_axi_mat_B_ch_0_ARQOS; - (* RS_HS = "m_axi_mat_B_ch_0_AR.ready" *)input m_axi_mat_B_ch_0_ARREADY; - (* RS_HS = "m_axi_mat_B_ch_0_AR.data" *)output [2:0] m_axi_mat_B_ch_0_ARSIZE; - (* RS_HS = "m_axi_mat_B_ch_0_AR.valid" *)output m_axi_mat_B_ch_0_ARVALID; - (* RS_HS = "m_axi_mat_B_ch_0_AW.data" *)output [63:0] m_axi_mat_B_ch_0_AWADDR; - (* RS_HS = "m_axi_mat_B_ch_0_AW.data" *)output [1:0] m_axi_mat_B_ch_0_AWBURST; - (* RS_HS = "m_axi_mat_B_ch_0_AW.data" *)output [3:0] m_axi_mat_B_ch_0_AWCACHE; - (* RS_HS = "m_axi_mat_B_ch_0_AW.data" *)output [0:0] m_axi_mat_B_ch_0_AWID; - (* RS_HS = "m_axi_mat_B_ch_0_AW.data" *)output [7:0] m_axi_mat_B_ch_0_AWLEN; - (* RS_HS = "m_axi_mat_B_ch_0_AW.data" *)output m_axi_mat_B_ch_0_AWLOCK; - (* RS_HS = "m_axi_mat_B_ch_0_AW.data" *)output [2:0] m_axi_mat_B_ch_0_AWPROT; - (* RS_HS = "m_axi_mat_B_ch_0_AW.data" *)output [3:0] m_axi_mat_B_ch_0_AWQOS; - (* RS_HS = "m_axi_mat_B_ch_0_AW.ready" *)input m_axi_mat_B_ch_0_AWREADY; - (* RS_HS = "m_axi_mat_B_ch_0_AW.data" *)output [2:0] m_axi_mat_B_ch_0_AWSIZE; - (* RS_HS = "m_axi_mat_B_ch_0_AW.valid" *)output m_axi_mat_B_ch_0_AWVALID; - (* RS_HS = "m_axi_mat_B_ch_0_B.data" *)input [0:0] m_axi_mat_B_ch_0_BID; - (* RS_HS = "m_axi_mat_B_ch_0_B.ready" *)output m_axi_mat_B_ch_0_BREADY; - (* RS_HS = "m_axi_mat_B_ch_0_B.data" *)input [1:0] m_axi_mat_B_ch_0_BRESP; - (* RS_HS = "m_axi_mat_B_ch_0_B.valid" *)input m_axi_mat_B_ch_0_BVALID; - (* RS_HS = "m_axi_mat_B_ch_0_R.data" *)input [511:0] m_axi_mat_B_ch_0_RDATA; - (* RS_HS = "m_axi_mat_B_ch_0_R.data" *)input [0:0] m_axi_mat_B_ch_0_RID; - (* RS_HS = "m_axi_mat_B_ch_0_R.data" *)input m_axi_mat_B_ch_0_RLAST; - (* RS_HS = "m_axi_mat_B_ch_0_R.ready" *)output m_axi_mat_B_ch_0_RREADY; - (* RS_HS = "m_axi_mat_B_ch_0_R.data" *)input [1:0] m_axi_mat_B_ch_0_RRESP; - (* RS_HS = "m_axi_mat_B_ch_0_R.valid" *)input m_axi_mat_B_ch_0_RVALID; - (* RS_HS = "m_axi_mat_B_ch_0_W.data" *)output [511:0] m_axi_mat_B_ch_0_WDATA; - (* RS_HS = "m_axi_mat_B_ch_0_W.data" *)output m_axi_mat_B_ch_0_WLAST; - (* RS_HS = "m_axi_mat_B_ch_0_W.ready" *)input m_axi_mat_B_ch_0_WREADY; - (* RS_HS = "m_axi_mat_B_ch_0_W.data" *)output [63:0] m_axi_mat_B_ch_0_WSTRB; - (* RS_HS = "m_axi_mat_B_ch_0_W.valid" *)output m_axi_mat_B_ch_0_WVALID; - (* RS_HS = "m_axi_mat_B_ch_1_AR.data" *)output [63:0] m_axi_mat_B_ch_1_ARADDR; - (* RS_HS = "m_axi_mat_B_ch_1_AR.data" *)output [1:0] m_axi_mat_B_ch_1_ARBURST; - (* RS_HS = "m_axi_mat_B_ch_1_AR.data" *)output [3:0] m_axi_mat_B_ch_1_ARCACHE; - (* RS_HS = "m_axi_mat_B_ch_1_AR.data" *)output [0:0] m_axi_mat_B_ch_1_ARID; - (* RS_HS = "m_axi_mat_B_ch_1_AR.data" *)output [7:0] m_axi_mat_B_ch_1_ARLEN; - (* RS_HS = "m_axi_mat_B_ch_1_AR.data" *)output m_axi_mat_B_ch_1_ARLOCK; - (* RS_HS = "m_axi_mat_B_ch_1_AR.data" *)output [2:0] m_axi_mat_B_ch_1_ARPROT; - (* RS_HS = "m_axi_mat_B_ch_1_AR.data" *)output [3:0] m_axi_mat_B_ch_1_ARQOS; - (* RS_HS = "m_axi_mat_B_ch_1_AR.ready" *)input m_axi_mat_B_ch_1_ARREADY; - (* RS_HS = "m_axi_mat_B_ch_1_AR.data" *)output [2:0] m_axi_mat_B_ch_1_ARSIZE; - (* RS_HS = "m_axi_mat_B_ch_1_AR.valid" *)output m_axi_mat_B_ch_1_ARVALID; - (* RS_HS = "m_axi_mat_B_ch_1_AW.data" *)output [63:0] m_axi_mat_B_ch_1_AWADDR; - (* RS_HS = "m_axi_mat_B_ch_1_AW.data" *)output [1:0] m_axi_mat_B_ch_1_AWBURST; - (* RS_HS = "m_axi_mat_B_ch_1_AW.data" *)output [3:0] m_axi_mat_B_ch_1_AWCACHE; - (* RS_HS = "m_axi_mat_B_ch_1_AW.data" *)output [0:0] m_axi_mat_B_ch_1_AWID; - (* RS_HS = "m_axi_mat_B_ch_1_AW.data" *)output [7:0] m_axi_mat_B_ch_1_AWLEN; - (* RS_HS = "m_axi_mat_B_ch_1_AW.data" *)output m_axi_mat_B_ch_1_AWLOCK; - (* RS_HS = "m_axi_mat_B_ch_1_AW.data" *)output [2:0] m_axi_mat_B_ch_1_AWPROT; - (* RS_HS = "m_axi_mat_B_ch_1_AW.data" *)output [3:0] m_axi_mat_B_ch_1_AWQOS; - (* RS_HS = "m_axi_mat_B_ch_1_AW.ready" *)input m_axi_mat_B_ch_1_AWREADY; - (* RS_HS = "m_axi_mat_B_ch_1_AW.data" *)output [2:0] m_axi_mat_B_ch_1_AWSIZE; - (* RS_HS = "m_axi_mat_B_ch_1_AW.valid" *)output m_axi_mat_B_ch_1_AWVALID; - (* RS_HS = "m_axi_mat_B_ch_1_B.data" *)input [0:0] m_axi_mat_B_ch_1_BID; - (* RS_HS = "m_axi_mat_B_ch_1_B.ready" *)output m_axi_mat_B_ch_1_BREADY; - (* RS_HS = "m_axi_mat_B_ch_1_B.data" *)input [1:0] m_axi_mat_B_ch_1_BRESP; - (* RS_HS = "m_axi_mat_B_ch_1_B.valid" *)input m_axi_mat_B_ch_1_BVALID; - (* RS_HS = "m_axi_mat_B_ch_1_R.data" *)input [511:0] m_axi_mat_B_ch_1_RDATA; - (* RS_HS = "m_axi_mat_B_ch_1_R.data" *)input [0:0] m_axi_mat_B_ch_1_RID; - (* RS_HS = "m_axi_mat_B_ch_1_R.data" *)input m_axi_mat_B_ch_1_RLAST; - (* RS_HS = "m_axi_mat_B_ch_1_R.ready" *)output m_axi_mat_B_ch_1_RREADY; - (* RS_HS = "m_axi_mat_B_ch_1_R.data" *)input [1:0] m_axi_mat_B_ch_1_RRESP; - (* RS_HS = "m_axi_mat_B_ch_1_R.valid" *)input m_axi_mat_B_ch_1_RVALID; - (* RS_HS = "m_axi_mat_B_ch_1_W.data" *)output [511:0] m_axi_mat_B_ch_1_WDATA; - (* RS_HS = "m_axi_mat_B_ch_1_W.data" *)output m_axi_mat_B_ch_1_WLAST; - (* RS_HS = "m_axi_mat_B_ch_1_W.ready" *)input m_axi_mat_B_ch_1_WREADY; - (* RS_HS = "m_axi_mat_B_ch_1_W.data" *)output [63:0] m_axi_mat_B_ch_1_WSTRB; - (* RS_HS = "m_axi_mat_B_ch_1_W.valid" *)output m_axi_mat_B_ch_1_WVALID; - (* RS_HS = "m_axi_mat_B_ch_2_AR.data" *)output [63:0] m_axi_mat_B_ch_2_ARADDR; - (* RS_HS = "m_axi_mat_B_ch_2_AR.data" *)output [1:0] m_axi_mat_B_ch_2_ARBURST; - (* RS_HS = "m_axi_mat_B_ch_2_AR.data" *)output [3:0] m_axi_mat_B_ch_2_ARCACHE; - (* RS_HS = "m_axi_mat_B_ch_2_AR.data" *)output [0:0] m_axi_mat_B_ch_2_ARID; - (* RS_HS = "m_axi_mat_B_ch_2_AR.data" *)output [7:0] m_axi_mat_B_ch_2_ARLEN; - (* RS_HS = "m_axi_mat_B_ch_2_AR.data" *)output m_axi_mat_B_ch_2_ARLOCK; - (* RS_HS = "m_axi_mat_B_ch_2_AR.data" *)output [2:0] m_axi_mat_B_ch_2_ARPROT; - (* RS_HS = "m_axi_mat_B_ch_2_AR.data" *)output [3:0] m_axi_mat_B_ch_2_ARQOS; - (* RS_HS = "m_axi_mat_B_ch_2_AR.ready" *)input m_axi_mat_B_ch_2_ARREADY; - (* RS_HS = "m_axi_mat_B_ch_2_AR.data" *)output [2:0] m_axi_mat_B_ch_2_ARSIZE; - (* RS_HS = "m_axi_mat_B_ch_2_AR.valid" *)output m_axi_mat_B_ch_2_ARVALID; - (* RS_HS = "m_axi_mat_B_ch_2_AW.data" *)output [63:0] m_axi_mat_B_ch_2_AWADDR; - (* RS_HS = "m_axi_mat_B_ch_2_AW.data" *)output [1:0] m_axi_mat_B_ch_2_AWBURST; - (* RS_HS = "m_axi_mat_B_ch_2_AW.data" *)output [3:0] m_axi_mat_B_ch_2_AWCACHE; - (* RS_HS = "m_axi_mat_B_ch_2_AW.data" *)output [0:0] m_axi_mat_B_ch_2_AWID; - (* RS_HS = "m_axi_mat_B_ch_2_AW.data" *)output [7:0] m_axi_mat_B_ch_2_AWLEN; - (* RS_HS = "m_axi_mat_B_ch_2_AW.data" *)output m_axi_mat_B_ch_2_AWLOCK; - (* RS_HS = "m_axi_mat_B_ch_2_AW.data" *)output [2:0] m_axi_mat_B_ch_2_AWPROT; - (* RS_HS = "m_axi_mat_B_ch_2_AW.data" *)output [3:0] m_axi_mat_B_ch_2_AWQOS; - (* RS_HS = "m_axi_mat_B_ch_2_AW.ready" *)input m_axi_mat_B_ch_2_AWREADY; - (* RS_HS = "m_axi_mat_B_ch_2_AW.data" *)output [2:0] m_axi_mat_B_ch_2_AWSIZE; - (* RS_HS = "m_axi_mat_B_ch_2_AW.valid" *)output m_axi_mat_B_ch_2_AWVALID; - (* RS_HS = "m_axi_mat_B_ch_2_B.data" *)input [0:0] m_axi_mat_B_ch_2_BID; - (* RS_HS = "m_axi_mat_B_ch_2_B.ready" *)output m_axi_mat_B_ch_2_BREADY; - (* RS_HS = "m_axi_mat_B_ch_2_B.data" *)input [1:0] m_axi_mat_B_ch_2_BRESP; - (* RS_HS = "m_axi_mat_B_ch_2_B.valid" *)input m_axi_mat_B_ch_2_BVALID; - (* RS_HS = "m_axi_mat_B_ch_2_R.data" *)input [511:0] m_axi_mat_B_ch_2_RDATA; - (* RS_HS = "m_axi_mat_B_ch_2_R.data" *)input [0:0] m_axi_mat_B_ch_2_RID; - (* RS_HS = "m_axi_mat_B_ch_2_R.data" *)input m_axi_mat_B_ch_2_RLAST; - (* RS_HS = "m_axi_mat_B_ch_2_R.ready" *)output m_axi_mat_B_ch_2_RREADY; - (* RS_HS = "m_axi_mat_B_ch_2_R.data" *)input [1:0] m_axi_mat_B_ch_2_RRESP; - (* RS_HS = "m_axi_mat_B_ch_2_R.valid" *)input m_axi_mat_B_ch_2_RVALID; - (* RS_HS = "m_axi_mat_B_ch_2_W.data" *)output [511:0] m_axi_mat_B_ch_2_WDATA; - (* RS_HS = "m_axi_mat_B_ch_2_W.data" *)output m_axi_mat_B_ch_2_WLAST; - (* RS_HS = "m_axi_mat_B_ch_2_W.ready" *)input m_axi_mat_B_ch_2_WREADY; - (* RS_HS = "m_axi_mat_B_ch_2_W.data" *)output [63:0] m_axi_mat_B_ch_2_WSTRB; - (* RS_HS = "m_axi_mat_B_ch_2_W.valid" *)output m_axi_mat_B_ch_2_WVALID; - (* RS_HS = "m_axi_mat_B_ch_3_AR.data" *)output [63:0] m_axi_mat_B_ch_3_ARADDR; - (* RS_HS = "m_axi_mat_B_ch_3_AR.data" *)output [1:0] m_axi_mat_B_ch_3_ARBURST; - (* RS_HS = "m_axi_mat_B_ch_3_AR.data" *)output [3:0] m_axi_mat_B_ch_3_ARCACHE; - (* RS_HS = "m_axi_mat_B_ch_3_AR.data" *)output [0:0] m_axi_mat_B_ch_3_ARID; - (* RS_HS = "m_axi_mat_B_ch_3_AR.data" *)output [7:0] m_axi_mat_B_ch_3_ARLEN; - (* RS_HS = "m_axi_mat_B_ch_3_AR.data" *)output m_axi_mat_B_ch_3_ARLOCK; - (* RS_HS = "m_axi_mat_B_ch_3_AR.data" *)output [2:0] m_axi_mat_B_ch_3_ARPROT; - (* RS_HS = "m_axi_mat_B_ch_3_AR.data" *)output [3:0] m_axi_mat_B_ch_3_ARQOS; - (* RS_HS = "m_axi_mat_B_ch_3_AR.ready" *)input m_axi_mat_B_ch_3_ARREADY; - (* RS_HS = "m_axi_mat_B_ch_3_AR.data" *)output [2:0] m_axi_mat_B_ch_3_ARSIZE; - (* RS_HS = "m_axi_mat_B_ch_3_AR.valid" *)output m_axi_mat_B_ch_3_ARVALID; - (* RS_HS = "m_axi_mat_B_ch_3_AW.data" *)output [63:0] m_axi_mat_B_ch_3_AWADDR; - (* RS_HS = "m_axi_mat_B_ch_3_AW.data" *)output [1:0] m_axi_mat_B_ch_3_AWBURST; - (* RS_HS = "m_axi_mat_B_ch_3_AW.data" *)output [3:0] m_axi_mat_B_ch_3_AWCACHE; - (* RS_HS = "m_axi_mat_B_ch_3_AW.data" *)output [0:0] m_axi_mat_B_ch_3_AWID; - (* RS_HS = "m_axi_mat_B_ch_3_AW.data" *)output [7:0] m_axi_mat_B_ch_3_AWLEN; - (* RS_HS = "m_axi_mat_B_ch_3_AW.data" *)output m_axi_mat_B_ch_3_AWLOCK; - (* RS_HS = "m_axi_mat_B_ch_3_AW.data" *)output [2:0] m_axi_mat_B_ch_3_AWPROT; - (* RS_HS = "m_axi_mat_B_ch_3_AW.data" *)output [3:0] m_axi_mat_B_ch_3_AWQOS; - (* RS_HS = "m_axi_mat_B_ch_3_AW.ready" *)input m_axi_mat_B_ch_3_AWREADY; - (* RS_HS = "m_axi_mat_B_ch_3_AW.data" *)output [2:0] m_axi_mat_B_ch_3_AWSIZE; - (* RS_HS = "m_axi_mat_B_ch_3_AW.valid" *)output m_axi_mat_B_ch_3_AWVALID; - (* RS_HS = "m_axi_mat_B_ch_3_B.data" *)input [0:0] m_axi_mat_B_ch_3_BID; - (* RS_HS = "m_axi_mat_B_ch_3_B.ready" *)output m_axi_mat_B_ch_3_BREADY; - (* RS_HS = "m_axi_mat_B_ch_3_B.data" *)input [1:0] m_axi_mat_B_ch_3_BRESP; - (* RS_HS = "m_axi_mat_B_ch_3_B.valid" *)input m_axi_mat_B_ch_3_BVALID; - (* RS_HS = "m_axi_mat_B_ch_3_R.data" *)input [511:0] m_axi_mat_B_ch_3_RDATA; - (* RS_HS = "m_axi_mat_B_ch_3_R.data" *)input [0:0] m_axi_mat_B_ch_3_RID; - (* RS_HS = "m_axi_mat_B_ch_3_R.data" *)input m_axi_mat_B_ch_3_RLAST; - (* RS_HS = "m_axi_mat_B_ch_3_R.ready" *)output m_axi_mat_B_ch_3_RREADY; - (* RS_HS = "m_axi_mat_B_ch_3_R.data" *)input [1:0] m_axi_mat_B_ch_3_RRESP; - (* RS_HS = "m_axi_mat_B_ch_3_R.valid" *)input m_axi_mat_B_ch_3_RVALID; - (* RS_HS = "m_axi_mat_B_ch_3_W.data" *)output [511:0] m_axi_mat_B_ch_3_WDATA; - (* RS_HS = "m_axi_mat_B_ch_3_W.data" *)output m_axi_mat_B_ch_3_WLAST; - (* RS_HS = "m_axi_mat_B_ch_3_W.ready" *)input m_axi_mat_B_ch_3_WREADY; - (* RS_HS = "m_axi_mat_B_ch_3_W.data" *)output [63:0] m_axi_mat_B_ch_3_WSTRB; - (* RS_HS = "m_axi_mat_B_ch_3_W.valid" *)output m_axi_mat_B_ch_3_WVALID; - (* RS_HS = "m_axi_mat_C_ch_in_0_AR.data" *)output [63:0] m_axi_mat_C_ch_in_0_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_in_0_AR.data" *)output [1:0] m_axi_mat_C_ch_in_0_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_in_0_AR.data" *)output [3:0] m_axi_mat_C_ch_in_0_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_0_AR.data" *)output [0:0] m_axi_mat_C_ch_in_0_ARID; - (* RS_HS = "m_axi_mat_C_ch_in_0_AR.data" *)output [7:0] m_axi_mat_C_ch_in_0_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_in_0_AR.data" *)output m_axi_mat_C_ch_in_0_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_0_AR.data" *)output [2:0] m_axi_mat_C_ch_in_0_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_in_0_AR.data" *)output [3:0] m_axi_mat_C_ch_in_0_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_in_0_AR.ready" *)input m_axi_mat_C_ch_in_0_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_in_0_AR.data" *)output [2:0] m_axi_mat_C_ch_in_0_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_0_AR.valid" *)output m_axi_mat_C_ch_in_0_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_in_0_AW.data" *)output [63:0] m_axi_mat_C_ch_in_0_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_in_0_AW.data" *)output [1:0] m_axi_mat_C_ch_in_0_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_in_0_AW.data" *)output [3:0] m_axi_mat_C_ch_in_0_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_0_AW.data" *)output [0:0] m_axi_mat_C_ch_in_0_AWID; - (* RS_HS = "m_axi_mat_C_ch_in_0_AW.data" *)output [7:0] m_axi_mat_C_ch_in_0_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_in_0_AW.data" *)output m_axi_mat_C_ch_in_0_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_0_AW.data" *)output [2:0] m_axi_mat_C_ch_in_0_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_in_0_AW.data" *)output [3:0] m_axi_mat_C_ch_in_0_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_in_0_AW.ready" *)input m_axi_mat_C_ch_in_0_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_in_0_AW.data" *)output [2:0] m_axi_mat_C_ch_in_0_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_0_AW.valid" *)output m_axi_mat_C_ch_in_0_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_in_0_B.data" *)input [0:0] m_axi_mat_C_ch_in_0_BID; - (* RS_HS = "m_axi_mat_C_ch_in_0_B.ready" *)output m_axi_mat_C_ch_in_0_BREADY; - (* RS_HS = "m_axi_mat_C_ch_in_0_B.data" *)input [1:0] m_axi_mat_C_ch_in_0_BRESP; - (* RS_HS = "m_axi_mat_C_ch_in_0_B.valid" *)input m_axi_mat_C_ch_in_0_BVALID; - (* RS_HS = "m_axi_mat_C_ch_in_0_R.data" *)input [511:0] m_axi_mat_C_ch_in_0_RDATA; - (* RS_HS = "m_axi_mat_C_ch_in_0_R.data" *)input [0:0] m_axi_mat_C_ch_in_0_RID; - (* RS_HS = "m_axi_mat_C_ch_in_0_R.data" *)input m_axi_mat_C_ch_in_0_RLAST; - (* RS_HS = "m_axi_mat_C_ch_in_0_R.ready" *)output m_axi_mat_C_ch_in_0_RREADY; - (* RS_HS = "m_axi_mat_C_ch_in_0_R.data" *)input [1:0] m_axi_mat_C_ch_in_0_RRESP; - (* RS_HS = "m_axi_mat_C_ch_in_0_R.valid" *)input m_axi_mat_C_ch_in_0_RVALID; - (* RS_HS = "m_axi_mat_C_ch_in_0_W.data" *)output [511:0] m_axi_mat_C_ch_in_0_WDATA; - (* RS_HS = "m_axi_mat_C_ch_in_0_W.data" *)output m_axi_mat_C_ch_in_0_WLAST; - (* RS_HS = "m_axi_mat_C_ch_in_0_W.ready" *)input m_axi_mat_C_ch_in_0_WREADY; - (* RS_HS = "m_axi_mat_C_ch_in_0_W.data" *)output [63:0] m_axi_mat_C_ch_in_0_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_in_0_W.valid" *)output m_axi_mat_C_ch_in_0_WVALID; - (* RS_HS = "m_axi_mat_C_ch_in_1_AR.data" *)output [63:0] m_axi_mat_C_ch_in_1_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_in_1_AR.data" *)output [1:0] m_axi_mat_C_ch_in_1_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_in_1_AR.data" *)output [3:0] m_axi_mat_C_ch_in_1_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_1_AR.data" *)output [0:0] m_axi_mat_C_ch_in_1_ARID; - (* RS_HS = "m_axi_mat_C_ch_in_1_AR.data" *)output [7:0] m_axi_mat_C_ch_in_1_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_in_1_AR.data" *)output m_axi_mat_C_ch_in_1_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_1_AR.data" *)output [2:0] m_axi_mat_C_ch_in_1_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_in_1_AR.data" *)output [3:0] m_axi_mat_C_ch_in_1_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_in_1_AR.ready" *)input m_axi_mat_C_ch_in_1_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_in_1_AR.data" *)output [2:0] m_axi_mat_C_ch_in_1_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_1_AR.valid" *)output m_axi_mat_C_ch_in_1_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_in_1_AW.data" *)output [63:0] m_axi_mat_C_ch_in_1_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_in_1_AW.data" *)output [1:0] m_axi_mat_C_ch_in_1_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_in_1_AW.data" *)output [3:0] m_axi_mat_C_ch_in_1_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_1_AW.data" *)output [0:0] m_axi_mat_C_ch_in_1_AWID; - (* RS_HS = "m_axi_mat_C_ch_in_1_AW.data" *)output [7:0] m_axi_mat_C_ch_in_1_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_in_1_AW.data" *)output m_axi_mat_C_ch_in_1_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_1_AW.data" *)output [2:0] m_axi_mat_C_ch_in_1_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_in_1_AW.data" *)output [3:0] m_axi_mat_C_ch_in_1_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_in_1_AW.ready" *)input m_axi_mat_C_ch_in_1_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_in_1_AW.data" *)output [2:0] m_axi_mat_C_ch_in_1_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_1_AW.valid" *)output m_axi_mat_C_ch_in_1_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_in_1_B.data" *)input [0:0] m_axi_mat_C_ch_in_1_BID; - (* RS_HS = "m_axi_mat_C_ch_in_1_B.ready" *)output m_axi_mat_C_ch_in_1_BREADY; - (* RS_HS = "m_axi_mat_C_ch_in_1_B.data" *)input [1:0] m_axi_mat_C_ch_in_1_BRESP; - (* RS_HS = "m_axi_mat_C_ch_in_1_B.valid" *)input m_axi_mat_C_ch_in_1_BVALID; - (* RS_HS = "m_axi_mat_C_ch_in_1_R.data" *)input [511:0] m_axi_mat_C_ch_in_1_RDATA; - (* RS_HS = "m_axi_mat_C_ch_in_1_R.data" *)input [0:0] m_axi_mat_C_ch_in_1_RID; - (* RS_HS = "m_axi_mat_C_ch_in_1_R.data" *)input m_axi_mat_C_ch_in_1_RLAST; - (* RS_HS = "m_axi_mat_C_ch_in_1_R.ready" *)output m_axi_mat_C_ch_in_1_RREADY; - (* RS_HS = "m_axi_mat_C_ch_in_1_R.data" *)input [1:0] m_axi_mat_C_ch_in_1_RRESP; - (* RS_HS = "m_axi_mat_C_ch_in_1_R.valid" *)input m_axi_mat_C_ch_in_1_RVALID; - (* RS_HS = "m_axi_mat_C_ch_in_1_W.data" *)output [511:0] m_axi_mat_C_ch_in_1_WDATA; - (* RS_HS = "m_axi_mat_C_ch_in_1_W.data" *)output m_axi_mat_C_ch_in_1_WLAST; - (* RS_HS = "m_axi_mat_C_ch_in_1_W.ready" *)input m_axi_mat_C_ch_in_1_WREADY; - (* RS_HS = "m_axi_mat_C_ch_in_1_W.data" *)output [63:0] m_axi_mat_C_ch_in_1_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_in_1_W.valid" *)output m_axi_mat_C_ch_in_1_WVALID; - (* RS_HS = "m_axi_mat_C_ch_in_2_AR.data" *)output [63:0] m_axi_mat_C_ch_in_2_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_in_2_AR.data" *)output [1:0] m_axi_mat_C_ch_in_2_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_in_2_AR.data" *)output [3:0] m_axi_mat_C_ch_in_2_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_2_AR.data" *)output [0:0] m_axi_mat_C_ch_in_2_ARID; - (* RS_HS = "m_axi_mat_C_ch_in_2_AR.data" *)output [7:0] m_axi_mat_C_ch_in_2_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_in_2_AR.data" *)output m_axi_mat_C_ch_in_2_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_2_AR.data" *)output [2:0] m_axi_mat_C_ch_in_2_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_in_2_AR.data" *)output [3:0] m_axi_mat_C_ch_in_2_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_in_2_AR.ready" *)input m_axi_mat_C_ch_in_2_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_in_2_AR.data" *)output [2:0] m_axi_mat_C_ch_in_2_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_2_AR.valid" *)output m_axi_mat_C_ch_in_2_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_in_2_AW.data" *)output [63:0] m_axi_mat_C_ch_in_2_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_in_2_AW.data" *)output [1:0] m_axi_mat_C_ch_in_2_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_in_2_AW.data" *)output [3:0] m_axi_mat_C_ch_in_2_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_2_AW.data" *)output [0:0] m_axi_mat_C_ch_in_2_AWID; - (* RS_HS = "m_axi_mat_C_ch_in_2_AW.data" *)output [7:0] m_axi_mat_C_ch_in_2_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_in_2_AW.data" *)output m_axi_mat_C_ch_in_2_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_2_AW.data" *)output [2:0] m_axi_mat_C_ch_in_2_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_in_2_AW.data" *)output [3:0] m_axi_mat_C_ch_in_2_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_in_2_AW.ready" *)input m_axi_mat_C_ch_in_2_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_in_2_AW.data" *)output [2:0] m_axi_mat_C_ch_in_2_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_2_AW.valid" *)output m_axi_mat_C_ch_in_2_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_in_2_B.data" *)input [0:0] m_axi_mat_C_ch_in_2_BID; - (* RS_HS = "m_axi_mat_C_ch_in_2_B.ready" *)output m_axi_mat_C_ch_in_2_BREADY; - (* RS_HS = "m_axi_mat_C_ch_in_2_B.data" *)input [1:0] m_axi_mat_C_ch_in_2_BRESP; - (* RS_HS = "m_axi_mat_C_ch_in_2_B.valid" *)input m_axi_mat_C_ch_in_2_BVALID; - (* RS_HS = "m_axi_mat_C_ch_in_2_R.data" *)input [511:0] m_axi_mat_C_ch_in_2_RDATA; - (* RS_HS = "m_axi_mat_C_ch_in_2_R.data" *)input [0:0] m_axi_mat_C_ch_in_2_RID; - (* RS_HS = "m_axi_mat_C_ch_in_2_R.data" *)input m_axi_mat_C_ch_in_2_RLAST; - (* RS_HS = "m_axi_mat_C_ch_in_2_R.ready" *)output m_axi_mat_C_ch_in_2_RREADY; - (* RS_HS = "m_axi_mat_C_ch_in_2_R.data" *)input [1:0] m_axi_mat_C_ch_in_2_RRESP; - (* RS_HS = "m_axi_mat_C_ch_in_2_R.valid" *)input m_axi_mat_C_ch_in_2_RVALID; - (* RS_HS = "m_axi_mat_C_ch_in_2_W.data" *)output [511:0] m_axi_mat_C_ch_in_2_WDATA; - (* RS_HS = "m_axi_mat_C_ch_in_2_W.data" *)output m_axi_mat_C_ch_in_2_WLAST; - (* RS_HS = "m_axi_mat_C_ch_in_2_W.ready" *)input m_axi_mat_C_ch_in_2_WREADY; - (* RS_HS = "m_axi_mat_C_ch_in_2_W.data" *)output [63:0] m_axi_mat_C_ch_in_2_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_in_2_W.valid" *)output m_axi_mat_C_ch_in_2_WVALID; - (* RS_HS = "m_axi_mat_C_ch_in_3_AR.data" *)output [63:0] m_axi_mat_C_ch_in_3_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_in_3_AR.data" *)output [1:0] m_axi_mat_C_ch_in_3_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_in_3_AR.data" *)output [3:0] m_axi_mat_C_ch_in_3_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_3_AR.data" *)output [0:0] m_axi_mat_C_ch_in_3_ARID; - (* RS_HS = "m_axi_mat_C_ch_in_3_AR.data" *)output [7:0] m_axi_mat_C_ch_in_3_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_in_3_AR.data" *)output m_axi_mat_C_ch_in_3_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_3_AR.data" *)output [2:0] m_axi_mat_C_ch_in_3_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_in_3_AR.data" *)output [3:0] m_axi_mat_C_ch_in_3_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_in_3_AR.ready" *)input m_axi_mat_C_ch_in_3_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_in_3_AR.data" *)output [2:0] m_axi_mat_C_ch_in_3_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_3_AR.valid" *)output m_axi_mat_C_ch_in_3_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_in_3_AW.data" *)output [63:0] m_axi_mat_C_ch_in_3_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_in_3_AW.data" *)output [1:0] m_axi_mat_C_ch_in_3_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_in_3_AW.data" *)output [3:0] m_axi_mat_C_ch_in_3_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_3_AW.data" *)output [0:0] m_axi_mat_C_ch_in_3_AWID; - (* RS_HS = "m_axi_mat_C_ch_in_3_AW.data" *)output [7:0] m_axi_mat_C_ch_in_3_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_in_3_AW.data" *)output m_axi_mat_C_ch_in_3_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_3_AW.data" *)output [2:0] m_axi_mat_C_ch_in_3_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_in_3_AW.data" *)output [3:0] m_axi_mat_C_ch_in_3_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_in_3_AW.ready" *)input m_axi_mat_C_ch_in_3_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_in_3_AW.data" *)output [2:0] m_axi_mat_C_ch_in_3_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_3_AW.valid" *)output m_axi_mat_C_ch_in_3_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_in_3_B.data" *)input [0:0] m_axi_mat_C_ch_in_3_BID; - (* RS_HS = "m_axi_mat_C_ch_in_3_B.ready" *)output m_axi_mat_C_ch_in_3_BREADY; - (* RS_HS = "m_axi_mat_C_ch_in_3_B.data" *)input [1:0] m_axi_mat_C_ch_in_3_BRESP; - (* RS_HS = "m_axi_mat_C_ch_in_3_B.valid" *)input m_axi_mat_C_ch_in_3_BVALID; - (* RS_HS = "m_axi_mat_C_ch_in_3_R.data" *)input [511:0] m_axi_mat_C_ch_in_3_RDATA; - (* RS_HS = "m_axi_mat_C_ch_in_3_R.data" *)input [0:0] m_axi_mat_C_ch_in_3_RID; - (* RS_HS = "m_axi_mat_C_ch_in_3_R.data" *)input m_axi_mat_C_ch_in_3_RLAST; - (* RS_HS = "m_axi_mat_C_ch_in_3_R.ready" *)output m_axi_mat_C_ch_in_3_RREADY; - (* RS_HS = "m_axi_mat_C_ch_in_3_R.data" *)input [1:0] m_axi_mat_C_ch_in_3_RRESP; - (* RS_HS = "m_axi_mat_C_ch_in_3_R.valid" *)input m_axi_mat_C_ch_in_3_RVALID; - (* RS_HS = "m_axi_mat_C_ch_in_3_W.data" *)output [511:0] m_axi_mat_C_ch_in_3_WDATA; - (* RS_HS = "m_axi_mat_C_ch_in_3_W.data" *)output m_axi_mat_C_ch_in_3_WLAST; - (* RS_HS = "m_axi_mat_C_ch_in_3_W.ready" *)input m_axi_mat_C_ch_in_3_WREADY; - (* RS_HS = "m_axi_mat_C_ch_in_3_W.data" *)output [63:0] m_axi_mat_C_ch_in_3_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_in_3_W.valid" *)output m_axi_mat_C_ch_in_3_WVALID; - (* RS_HS = "m_axi_mat_C_ch_in_4_AR.data" *)output [63:0] m_axi_mat_C_ch_in_4_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_in_4_AR.data" *)output [1:0] m_axi_mat_C_ch_in_4_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_in_4_AR.data" *)output [3:0] m_axi_mat_C_ch_in_4_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_4_AR.data" *)output [0:0] m_axi_mat_C_ch_in_4_ARID; - (* RS_HS = "m_axi_mat_C_ch_in_4_AR.data" *)output [7:0] m_axi_mat_C_ch_in_4_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_in_4_AR.data" *)output m_axi_mat_C_ch_in_4_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_4_AR.data" *)output [2:0] m_axi_mat_C_ch_in_4_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_in_4_AR.data" *)output [3:0] m_axi_mat_C_ch_in_4_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_in_4_AR.ready" *)input m_axi_mat_C_ch_in_4_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_in_4_AR.data" *)output [2:0] m_axi_mat_C_ch_in_4_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_4_AR.valid" *)output m_axi_mat_C_ch_in_4_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_in_4_AW.data" *)output [63:0] m_axi_mat_C_ch_in_4_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_in_4_AW.data" *)output [1:0] m_axi_mat_C_ch_in_4_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_in_4_AW.data" *)output [3:0] m_axi_mat_C_ch_in_4_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_4_AW.data" *)output [0:0] m_axi_mat_C_ch_in_4_AWID; - (* RS_HS = "m_axi_mat_C_ch_in_4_AW.data" *)output [7:0] m_axi_mat_C_ch_in_4_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_in_4_AW.data" *)output m_axi_mat_C_ch_in_4_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_4_AW.data" *)output [2:0] m_axi_mat_C_ch_in_4_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_in_4_AW.data" *)output [3:0] m_axi_mat_C_ch_in_4_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_in_4_AW.ready" *)input m_axi_mat_C_ch_in_4_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_in_4_AW.data" *)output [2:0] m_axi_mat_C_ch_in_4_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_4_AW.valid" *)output m_axi_mat_C_ch_in_4_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_in_4_B.data" *)input [0:0] m_axi_mat_C_ch_in_4_BID; - (* RS_HS = "m_axi_mat_C_ch_in_4_B.ready" *)output m_axi_mat_C_ch_in_4_BREADY; - (* RS_HS = "m_axi_mat_C_ch_in_4_B.data" *)input [1:0] m_axi_mat_C_ch_in_4_BRESP; - (* RS_HS = "m_axi_mat_C_ch_in_4_B.valid" *)input m_axi_mat_C_ch_in_4_BVALID; - (* RS_HS = "m_axi_mat_C_ch_in_4_R.data" *)input [511:0] m_axi_mat_C_ch_in_4_RDATA; - (* RS_HS = "m_axi_mat_C_ch_in_4_R.data" *)input [0:0] m_axi_mat_C_ch_in_4_RID; - (* RS_HS = "m_axi_mat_C_ch_in_4_R.data" *)input m_axi_mat_C_ch_in_4_RLAST; - (* RS_HS = "m_axi_mat_C_ch_in_4_R.ready" *)output m_axi_mat_C_ch_in_4_RREADY; - (* RS_HS = "m_axi_mat_C_ch_in_4_R.data" *)input [1:0] m_axi_mat_C_ch_in_4_RRESP; - (* RS_HS = "m_axi_mat_C_ch_in_4_R.valid" *)input m_axi_mat_C_ch_in_4_RVALID; - (* RS_HS = "m_axi_mat_C_ch_in_4_W.data" *)output [511:0] m_axi_mat_C_ch_in_4_WDATA; - (* RS_HS = "m_axi_mat_C_ch_in_4_W.data" *)output m_axi_mat_C_ch_in_4_WLAST; - (* RS_HS = "m_axi_mat_C_ch_in_4_W.ready" *)input m_axi_mat_C_ch_in_4_WREADY; - (* RS_HS = "m_axi_mat_C_ch_in_4_W.data" *)output [63:0] m_axi_mat_C_ch_in_4_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_in_4_W.valid" *)output m_axi_mat_C_ch_in_4_WVALID; - (* RS_HS = "m_axi_mat_C_ch_in_5_AR.data" *)output [63:0] m_axi_mat_C_ch_in_5_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_in_5_AR.data" *)output [1:0] m_axi_mat_C_ch_in_5_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_in_5_AR.data" *)output [3:0] m_axi_mat_C_ch_in_5_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_5_AR.data" *)output [0:0] m_axi_mat_C_ch_in_5_ARID; - (* RS_HS = "m_axi_mat_C_ch_in_5_AR.data" *)output [7:0] m_axi_mat_C_ch_in_5_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_in_5_AR.data" *)output m_axi_mat_C_ch_in_5_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_5_AR.data" *)output [2:0] m_axi_mat_C_ch_in_5_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_in_5_AR.data" *)output [3:0] m_axi_mat_C_ch_in_5_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_in_5_AR.ready" *)input m_axi_mat_C_ch_in_5_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_in_5_AR.data" *)output [2:0] m_axi_mat_C_ch_in_5_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_5_AR.valid" *)output m_axi_mat_C_ch_in_5_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_in_5_AW.data" *)output [63:0] m_axi_mat_C_ch_in_5_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_in_5_AW.data" *)output [1:0] m_axi_mat_C_ch_in_5_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_in_5_AW.data" *)output [3:0] m_axi_mat_C_ch_in_5_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_5_AW.data" *)output [0:0] m_axi_mat_C_ch_in_5_AWID; - (* RS_HS = "m_axi_mat_C_ch_in_5_AW.data" *)output [7:0] m_axi_mat_C_ch_in_5_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_in_5_AW.data" *)output m_axi_mat_C_ch_in_5_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_5_AW.data" *)output [2:0] m_axi_mat_C_ch_in_5_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_in_5_AW.data" *)output [3:0] m_axi_mat_C_ch_in_5_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_in_5_AW.ready" *)input m_axi_mat_C_ch_in_5_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_in_5_AW.data" *)output [2:0] m_axi_mat_C_ch_in_5_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_5_AW.valid" *)output m_axi_mat_C_ch_in_5_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_in_5_B.data" *)input [0:0] m_axi_mat_C_ch_in_5_BID; - (* RS_HS = "m_axi_mat_C_ch_in_5_B.ready" *)output m_axi_mat_C_ch_in_5_BREADY; - (* RS_HS = "m_axi_mat_C_ch_in_5_B.data" *)input [1:0] m_axi_mat_C_ch_in_5_BRESP; - (* RS_HS = "m_axi_mat_C_ch_in_5_B.valid" *)input m_axi_mat_C_ch_in_5_BVALID; - (* RS_HS = "m_axi_mat_C_ch_in_5_R.data" *)input [511:0] m_axi_mat_C_ch_in_5_RDATA; - (* RS_HS = "m_axi_mat_C_ch_in_5_R.data" *)input [0:0] m_axi_mat_C_ch_in_5_RID; - (* RS_HS = "m_axi_mat_C_ch_in_5_R.data" *)input m_axi_mat_C_ch_in_5_RLAST; - (* RS_HS = "m_axi_mat_C_ch_in_5_R.ready" *)output m_axi_mat_C_ch_in_5_RREADY; - (* RS_HS = "m_axi_mat_C_ch_in_5_R.data" *)input [1:0] m_axi_mat_C_ch_in_5_RRESP; - (* RS_HS = "m_axi_mat_C_ch_in_5_R.valid" *)input m_axi_mat_C_ch_in_5_RVALID; - (* RS_HS = "m_axi_mat_C_ch_in_5_W.data" *)output [511:0] m_axi_mat_C_ch_in_5_WDATA; - (* RS_HS = "m_axi_mat_C_ch_in_5_W.data" *)output m_axi_mat_C_ch_in_5_WLAST; - (* RS_HS = "m_axi_mat_C_ch_in_5_W.ready" *)input m_axi_mat_C_ch_in_5_WREADY; - (* RS_HS = "m_axi_mat_C_ch_in_5_W.data" *)output [63:0] m_axi_mat_C_ch_in_5_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_in_5_W.valid" *)output m_axi_mat_C_ch_in_5_WVALID; - (* RS_HS = "m_axi_mat_C_ch_in_6_AR.data" *)output [63:0] m_axi_mat_C_ch_in_6_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_in_6_AR.data" *)output [1:0] m_axi_mat_C_ch_in_6_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_in_6_AR.data" *)output [3:0] m_axi_mat_C_ch_in_6_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_6_AR.data" *)output [0:0] m_axi_mat_C_ch_in_6_ARID; - (* RS_HS = "m_axi_mat_C_ch_in_6_AR.data" *)output [7:0] m_axi_mat_C_ch_in_6_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_in_6_AR.data" *)output m_axi_mat_C_ch_in_6_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_6_AR.data" *)output [2:0] m_axi_mat_C_ch_in_6_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_in_6_AR.data" *)output [3:0] m_axi_mat_C_ch_in_6_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_in_6_AR.ready" *)input m_axi_mat_C_ch_in_6_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_in_6_AR.data" *)output [2:0] m_axi_mat_C_ch_in_6_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_6_AR.valid" *)output m_axi_mat_C_ch_in_6_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_in_6_AW.data" *)output [63:0] m_axi_mat_C_ch_in_6_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_in_6_AW.data" *)output [1:0] m_axi_mat_C_ch_in_6_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_in_6_AW.data" *)output [3:0] m_axi_mat_C_ch_in_6_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_6_AW.data" *)output [0:0] m_axi_mat_C_ch_in_6_AWID; - (* RS_HS = "m_axi_mat_C_ch_in_6_AW.data" *)output [7:0] m_axi_mat_C_ch_in_6_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_in_6_AW.data" *)output m_axi_mat_C_ch_in_6_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_6_AW.data" *)output [2:0] m_axi_mat_C_ch_in_6_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_in_6_AW.data" *)output [3:0] m_axi_mat_C_ch_in_6_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_in_6_AW.ready" *)input m_axi_mat_C_ch_in_6_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_in_6_AW.data" *)output [2:0] m_axi_mat_C_ch_in_6_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_6_AW.valid" *)output m_axi_mat_C_ch_in_6_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_in_6_B.data" *)input [0:0] m_axi_mat_C_ch_in_6_BID; - (* RS_HS = "m_axi_mat_C_ch_in_6_B.ready" *)output m_axi_mat_C_ch_in_6_BREADY; - (* RS_HS = "m_axi_mat_C_ch_in_6_B.data" *)input [1:0] m_axi_mat_C_ch_in_6_BRESP; - (* RS_HS = "m_axi_mat_C_ch_in_6_B.valid" *)input m_axi_mat_C_ch_in_6_BVALID; - (* RS_HS = "m_axi_mat_C_ch_in_6_R.data" *)input [511:0] m_axi_mat_C_ch_in_6_RDATA; - (* RS_HS = "m_axi_mat_C_ch_in_6_R.data" *)input [0:0] m_axi_mat_C_ch_in_6_RID; - (* RS_HS = "m_axi_mat_C_ch_in_6_R.data" *)input m_axi_mat_C_ch_in_6_RLAST; - (* RS_HS = "m_axi_mat_C_ch_in_6_R.ready" *)output m_axi_mat_C_ch_in_6_RREADY; - (* RS_HS = "m_axi_mat_C_ch_in_6_R.data" *)input [1:0] m_axi_mat_C_ch_in_6_RRESP; - (* RS_HS = "m_axi_mat_C_ch_in_6_R.valid" *)input m_axi_mat_C_ch_in_6_RVALID; - (* RS_HS = "m_axi_mat_C_ch_in_6_W.data" *)output [511:0] m_axi_mat_C_ch_in_6_WDATA; - (* RS_HS = "m_axi_mat_C_ch_in_6_W.data" *)output m_axi_mat_C_ch_in_6_WLAST; - (* RS_HS = "m_axi_mat_C_ch_in_6_W.ready" *)input m_axi_mat_C_ch_in_6_WREADY; - (* RS_HS = "m_axi_mat_C_ch_in_6_W.data" *)output [63:0] m_axi_mat_C_ch_in_6_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_in_6_W.valid" *)output m_axi_mat_C_ch_in_6_WVALID; - (* RS_HS = "m_axi_mat_C_ch_in_7_AR.data" *)output [63:0] m_axi_mat_C_ch_in_7_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_in_7_AR.data" *)output [1:0] m_axi_mat_C_ch_in_7_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_in_7_AR.data" *)output [3:0] m_axi_mat_C_ch_in_7_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_7_AR.data" *)output [0:0] m_axi_mat_C_ch_in_7_ARID; - (* RS_HS = "m_axi_mat_C_ch_in_7_AR.data" *)output [7:0] m_axi_mat_C_ch_in_7_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_in_7_AR.data" *)output m_axi_mat_C_ch_in_7_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_7_AR.data" *)output [2:0] m_axi_mat_C_ch_in_7_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_in_7_AR.data" *)output [3:0] m_axi_mat_C_ch_in_7_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_in_7_AR.ready" *)input m_axi_mat_C_ch_in_7_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_in_7_AR.data" *)output [2:0] m_axi_mat_C_ch_in_7_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_7_AR.valid" *)output m_axi_mat_C_ch_in_7_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_in_7_AW.data" *)output [63:0] m_axi_mat_C_ch_in_7_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_in_7_AW.data" *)output [1:0] m_axi_mat_C_ch_in_7_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_in_7_AW.data" *)output [3:0] m_axi_mat_C_ch_in_7_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_in_7_AW.data" *)output [0:0] m_axi_mat_C_ch_in_7_AWID; - (* RS_HS = "m_axi_mat_C_ch_in_7_AW.data" *)output [7:0] m_axi_mat_C_ch_in_7_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_in_7_AW.data" *)output m_axi_mat_C_ch_in_7_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_in_7_AW.data" *)output [2:0] m_axi_mat_C_ch_in_7_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_in_7_AW.data" *)output [3:0] m_axi_mat_C_ch_in_7_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_in_7_AW.ready" *)input m_axi_mat_C_ch_in_7_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_in_7_AW.data" *)output [2:0] m_axi_mat_C_ch_in_7_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_in_7_AW.valid" *)output m_axi_mat_C_ch_in_7_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_in_7_B.data" *)input [0:0] m_axi_mat_C_ch_in_7_BID; - (* RS_HS = "m_axi_mat_C_ch_in_7_B.ready" *)output m_axi_mat_C_ch_in_7_BREADY; - (* RS_HS = "m_axi_mat_C_ch_in_7_B.data" *)input [1:0] m_axi_mat_C_ch_in_7_BRESP; - (* RS_HS = "m_axi_mat_C_ch_in_7_B.valid" *)input m_axi_mat_C_ch_in_7_BVALID; - (* RS_HS = "m_axi_mat_C_ch_in_7_R.data" *)input [511:0] m_axi_mat_C_ch_in_7_RDATA; - (* RS_HS = "m_axi_mat_C_ch_in_7_R.data" *)input [0:0] m_axi_mat_C_ch_in_7_RID; - (* RS_HS = "m_axi_mat_C_ch_in_7_R.data" *)input m_axi_mat_C_ch_in_7_RLAST; - (* RS_HS = "m_axi_mat_C_ch_in_7_R.ready" *)output m_axi_mat_C_ch_in_7_RREADY; - (* RS_HS = "m_axi_mat_C_ch_in_7_R.data" *)input [1:0] m_axi_mat_C_ch_in_7_RRESP; - (* RS_HS = "m_axi_mat_C_ch_in_7_R.valid" *)input m_axi_mat_C_ch_in_7_RVALID; - (* RS_HS = "m_axi_mat_C_ch_in_7_W.data" *)output [511:0] m_axi_mat_C_ch_in_7_WDATA; - (* RS_HS = "m_axi_mat_C_ch_in_7_W.data" *)output m_axi_mat_C_ch_in_7_WLAST; - (* RS_HS = "m_axi_mat_C_ch_in_7_W.ready" *)input m_axi_mat_C_ch_in_7_WREADY; - (* RS_HS = "m_axi_mat_C_ch_in_7_W.data" *)output [63:0] m_axi_mat_C_ch_in_7_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_in_7_W.valid" *)output m_axi_mat_C_ch_in_7_WVALID; - (* RS_HS = "m_axi_edge_list_ptr_AR.data" *)output [63:0] m_axi_edge_list_ptr_ARADDR; - (* RS_HS = "m_axi_edge_list_ptr_AR.data" *)output [1:0] m_axi_edge_list_ptr_ARBURST; - (* RS_HS = "m_axi_edge_list_ptr_AR.data" *)output [3:0] m_axi_edge_list_ptr_ARCACHE; - (* RS_HS = "m_axi_edge_list_ptr_AR.data" *)output [0:0] m_axi_edge_list_ptr_ARID; - (* RS_HS = "m_axi_edge_list_ptr_AR.data" *)output [7:0] m_axi_edge_list_ptr_ARLEN; - (* RS_HS = "m_axi_edge_list_ptr_AR.data" *)output m_axi_edge_list_ptr_ARLOCK; - (* RS_HS = "m_axi_edge_list_ptr_AR.data" *)output [2:0] m_axi_edge_list_ptr_ARPROT; - (* RS_HS = "m_axi_edge_list_ptr_AR.data" *)output [3:0] m_axi_edge_list_ptr_ARQOS; - (* RS_HS = "m_axi_edge_list_ptr_AR.ready" *)input m_axi_edge_list_ptr_ARREADY; - (* RS_HS = "m_axi_edge_list_ptr_AR.data" *)output [2:0] m_axi_edge_list_ptr_ARSIZE; - (* RS_HS = "m_axi_edge_list_ptr_AR.valid" *)output m_axi_edge_list_ptr_ARVALID; - (* RS_HS = "m_axi_edge_list_ptr_AW.data" *)output [63:0] m_axi_edge_list_ptr_AWADDR; - (* RS_HS = "m_axi_edge_list_ptr_AW.data" *)output [1:0] m_axi_edge_list_ptr_AWBURST; - (* RS_HS = "m_axi_edge_list_ptr_AW.data" *)output [3:0] m_axi_edge_list_ptr_AWCACHE; - (* RS_HS = "m_axi_edge_list_ptr_AW.data" *)output [0:0] m_axi_edge_list_ptr_AWID; - (* RS_HS = "m_axi_edge_list_ptr_AW.data" *)output [7:0] m_axi_edge_list_ptr_AWLEN; - (* RS_HS = "m_axi_edge_list_ptr_AW.data" *)output m_axi_edge_list_ptr_AWLOCK; - (* RS_HS = "m_axi_edge_list_ptr_AW.data" *)output [2:0] m_axi_edge_list_ptr_AWPROT; - (* RS_HS = "m_axi_edge_list_ptr_AW.data" *)output [3:0] m_axi_edge_list_ptr_AWQOS; - (* RS_HS = "m_axi_edge_list_ptr_AW.ready" *)input m_axi_edge_list_ptr_AWREADY; - (* RS_HS = "m_axi_edge_list_ptr_AW.data" *)output [2:0] m_axi_edge_list_ptr_AWSIZE; - (* RS_HS = "m_axi_edge_list_ptr_AW.valid" *)output m_axi_edge_list_ptr_AWVALID; - (* RS_HS = "m_axi_edge_list_ptr_B.data" *)input [0:0] m_axi_edge_list_ptr_BID; - (* RS_HS = "m_axi_edge_list_ptr_B.ready" *)output m_axi_edge_list_ptr_BREADY; - (* RS_HS = "m_axi_edge_list_ptr_B.data" *)input [1:0] m_axi_edge_list_ptr_BRESP; - (* RS_HS = "m_axi_edge_list_ptr_B.valid" *)input m_axi_edge_list_ptr_BVALID; - (* RS_HS = "m_axi_edge_list_ptr_R.data" *)input [31:0] m_axi_edge_list_ptr_RDATA; - (* RS_HS = "m_axi_edge_list_ptr_R.data" *)input [0:0] m_axi_edge_list_ptr_RID; - (* RS_HS = "m_axi_edge_list_ptr_R.data" *)input m_axi_edge_list_ptr_RLAST; - (* RS_HS = "m_axi_edge_list_ptr_R.ready" *)output m_axi_edge_list_ptr_RREADY; - (* RS_HS = "m_axi_edge_list_ptr_R.data" *)input [1:0] m_axi_edge_list_ptr_RRESP; - (* RS_HS = "m_axi_edge_list_ptr_R.valid" *)input m_axi_edge_list_ptr_RVALID; - (* RS_HS = "m_axi_edge_list_ptr_W.data" *)output [31:0] m_axi_edge_list_ptr_WDATA; - (* RS_HS = "m_axi_edge_list_ptr_W.data" *)output m_axi_edge_list_ptr_WLAST; - (* RS_HS = "m_axi_edge_list_ptr_W.ready" *)input m_axi_edge_list_ptr_WREADY; - (* RS_HS = "m_axi_edge_list_ptr_W.data" *)output [3:0] m_axi_edge_list_ptr_WSTRB; - (* RS_HS = "m_axi_edge_list_ptr_W.valid" *)output m_axi_edge_list_ptr_WVALID; - (* RS_HS = "m_axi_mat_C_ch_0_AR.data" *)output [63:0] m_axi_mat_C_ch_0_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_0_AR.data" *)output [1:0] m_axi_mat_C_ch_0_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_0_AR.data" *)output [3:0] m_axi_mat_C_ch_0_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_0_AR.data" *)output [0:0] m_axi_mat_C_ch_0_ARID; - (* RS_HS = "m_axi_mat_C_ch_0_AR.data" *)output [7:0] m_axi_mat_C_ch_0_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_0_AR.data" *)output m_axi_mat_C_ch_0_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_0_AR.data" *)output [2:0] m_axi_mat_C_ch_0_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_0_AR.data" *)output [3:0] m_axi_mat_C_ch_0_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_0_AR.ready" *)input m_axi_mat_C_ch_0_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_0_AR.data" *)output [2:0] m_axi_mat_C_ch_0_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_0_AR.valid" *)output m_axi_mat_C_ch_0_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_0_AW.data" *)output [63:0] m_axi_mat_C_ch_0_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_0_AW.data" *)output [1:0] m_axi_mat_C_ch_0_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_0_AW.data" *)output [3:0] m_axi_mat_C_ch_0_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_0_AW.data" *)output [0:0] m_axi_mat_C_ch_0_AWID; - (* RS_HS = "m_axi_mat_C_ch_0_AW.data" *)output [7:0] m_axi_mat_C_ch_0_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_0_AW.data" *)output m_axi_mat_C_ch_0_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_0_AW.data" *)output [2:0] m_axi_mat_C_ch_0_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_0_AW.data" *)output [3:0] m_axi_mat_C_ch_0_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_0_AW.ready" *)input m_axi_mat_C_ch_0_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_0_AW.data" *)output [2:0] m_axi_mat_C_ch_0_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_0_AW.valid" *)output m_axi_mat_C_ch_0_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_0_B.data" *)input [0:0] m_axi_mat_C_ch_0_BID; - (* RS_HS = "m_axi_mat_C_ch_0_B.ready" *)output m_axi_mat_C_ch_0_BREADY; - (* RS_HS = "m_axi_mat_C_ch_0_B.data" *)input [1:0] m_axi_mat_C_ch_0_BRESP; - (* RS_HS = "m_axi_mat_C_ch_0_B.valid" *)input m_axi_mat_C_ch_0_BVALID; - (* RS_HS = "m_axi_mat_C_ch_0_R.data" *)input [511:0] m_axi_mat_C_ch_0_RDATA; - (* RS_HS = "m_axi_mat_C_ch_0_R.data" *)input [0:0] m_axi_mat_C_ch_0_RID; - (* RS_HS = "m_axi_mat_C_ch_0_R.data" *)input m_axi_mat_C_ch_0_RLAST; - (* RS_HS = "m_axi_mat_C_ch_0_R.ready" *)output m_axi_mat_C_ch_0_RREADY; - (* RS_HS = "m_axi_mat_C_ch_0_R.data" *)input [1:0] m_axi_mat_C_ch_0_RRESP; - (* RS_HS = "m_axi_mat_C_ch_0_R.valid" *)input m_axi_mat_C_ch_0_RVALID; - (* RS_HS = "m_axi_mat_C_ch_0_W.data" *)output [511:0] m_axi_mat_C_ch_0_WDATA; - (* RS_HS = "m_axi_mat_C_ch_0_W.data" *)output m_axi_mat_C_ch_0_WLAST; - (* RS_HS = "m_axi_mat_C_ch_0_W.ready" *)input m_axi_mat_C_ch_0_WREADY; - (* RS_HS = "m_axi_mat_C_ch_0_W.data" *)output [63:0] m_axi_mat_C_ch_0_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_0_W.valid" *)output m_axi_mat_C_ch_0_WVALID; - (* RS_HS = "m_axi_mat_C_ch_1_AR.data" *)output [63:0] m_axi_mat_C_ch_1_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_1_AR.data" *)output [1:0] m_axi_mat_C_ch_1_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_1_AR.data" *)output [3:0] m_axi_mat_C_ch_1_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_1_AR.data" *)output [0:0] m_axi_mat_C_ch_1_ARID; - (* RS_HS = "m_axi_mat_C_ch_1_AR.data" *)output [7:0] m_axi_mat_C_ch_1_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_1_AR.data" *)output m_axi_mat_C_ch_1_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_1_AR.data" *)output [2:0] m_axi_mat_C_ch_1_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_1_AR.data" *)output [3:0] m_axi_mat_C_ch_1_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_1_AR.ready" *)input m_axi_mat_C_ch_1_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_1_AR.data" *)output [2:0] m_axi_mat_C_ch_1_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_1_AR.valid" *)output m_axi_mat_C_ch_1_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_1_AW.data" *)output [63:0] m_axi_mat_C_ch_1_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_1_AW.data" *)output [1:0] m_axi_mat_C_ch_1_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_1_AW.data" *)output [3:0] m_axi_mat_C_ch_1_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_1_AW.data" *)output [0:0] m_axi_mat_C_ch_1_AWID; - (* RS_HS = "m_axi_mat_C_ch_1_AW.data" *)output [7:0] m_axi_mat_C_ch_1_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_1_AW.data" *)output m_axi_mat_C_ch_1_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_1_AW.data" *)output [2:0] m_axi_mat_C_ch_1_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_1_AW.data" *)output [3:0] m_axi_mat_C_ch_1_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_1_AW.ready" *)input m_axi_mat_C_ch_1_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_1_AW.data" *)output [2:0] m_axi_mat_C_ch_1_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_1_AW.valid" *)output m_axi_mat_C_ch_1_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_1_B.data" *)input [0:0] m_axi_mat_C_ch_1_BID; - (* RS_HS = "m_axi_mat_C_ch_1_B.ready" *)output m_axi_mat_C_ch_1_BREADY; - (* RS_HS = "m_axi_mat_C_ch_1_B.data" *)input [1:0] m_axi_mat_C_ch_1_BRESP; - (* RS_HS = "m_axi_mat_C_ch_1_B.valid" *)input m_axi_mat_C_ch_1_BVALID; - (* RS_HS = "m_axi_mat_C_ch_1_R.data" *)input [511:0] m_axi_mat_C_ch_1_RDATA; - (* RS_HS = "m_axi_mat_C_ch_1_R.data" *)input [0:0] m_axi_mat_C_ch_1_RID; - (* RS_HS = "m_axi_mat_C_ch_1_R.data" *)input m_axi_mat_C_ch_1_RLAST; - (* RS_HS = "m_axi_mat_C_ch_1_R.ready" *)output m_axi_mat_C_ch_1_RREADY; - (* RS_HS = "m_axi_mat_C_ch_1_R.data" *)input [1:0] m_axi_mat_C_ch_1_RRESP; - (* RS_HS = "m_axi_mat_C_ch_1_R.valid" *)input m_axi_mat_C_ch_1_RVALID; - (* RS_HS = "m_axi_mat_C_ch_1_W.data" *)output [511:0] m_axi_mat_C_ch_1_WDATA; - (* RS_HS = "m_axi_mat_C_ch_1_W.data" *)output m_axi_mat_C_ch_1_WLAST; - (* RS_HS = "m_axi_mat_C_ch_1_W.ready" *)input m_axi_mat_C_ch_1_WREADY; - (* RS_HS = "m_axi_mat_C_ch_1_W.data" *)output [63:0] m_axi_mat_C_ch_1_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_1_W.valid" *)output m_axi_mat_C_ch_1_WVALID; - (* RS_HS = "m_axi_mat_C_ch_2_AR.data" *)output [63:0] m_axi_mat_C_ch_2_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_2_AR.data" *)output [1:0] m_axi_mat_C_ch_2_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_2_AR.data" *)output [3:0] m_axi_mat_C_ch_2_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_2_AR.data" *)output [0:0] m_axi_mat_C_ch_2_ARID; - (* RS_HS = "m_axi_mat_C_ch_2_AR.data" *)output [7:0] m_axi_mat_C_ch_2_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_2_AR.data" *)output m_axi_mat_C_ch_2_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_2_AR.data" *)output [2:0] m_axi_mat_C_ch_2_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_2_AR.data" *)output [3:0] m_axi_mat_C_ch_2_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_2_AR.ready" *)input m_axi_mat_C_ch_2_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_2_AR.data" *)output [2:0] m_axi_mat_C_ch_2_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_2_AR.valid" *)output m_axi_mat_C_ch_2_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_2_AW.data" *)output [63:0] m_axi_mat_C_ch_2_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_2_AW.data" *)output [1:0] m_axi_mat_C_ch_2_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_2_AW.data" *)output [3:0] m_axi_mat_C_ch_2_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_2_AW.data" *)output [0:0] m_axi_mat_C_ch_2_AWID; - (* RS_HS = "m_axi_mat_C_ch_2_AW.data" *)output [7:0] m_axi_mat_C_ch_2_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_2_AW.data" *)output m_axi_mat_C_ch_2_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_2_AW.data" *)output [2:0] m_axi_mat_C_ch_2_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_2_AW.data" *)output [3:0] m_axi_mat_C_ch_2_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_2_AW.ready" *)input m_axi_mat_C_ch_2_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_2_AW.data" *)output [2:0] m_axi_mat_C_ch_2_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_2_AW.valid" *)output m_axi_mat_C_ch_2_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_2_B.data" *)input [0:0] m_axi_mat_C_ch_2_BID; - (* RS_HS = "m_axi_mat_C_ch_2_B.ready" *)output m_axi_mat_C_ch_2_BREADY; - (* RS_HS = "m_axi_mat_C_ch_2_B.data" *)input [1:0] m_axi_mat_C_ch_2_BRESP; - (* RS_HS = "m_axi_mat_C_ch_2_B.valid" *)input m_axi_mat_C_ch_2_BVALID; - (* RS_HS = "m_axi_mat_C_ch_2_R.data" *)input [511:0] m_axi_mat_C_ch_2_RDATA; - (* RS_HS = "m_axi_mat_C_ch_2_R.data" *)input [0:0] m_axi_mat_C_ch_2_RID; - (* RS_HS = "m_axi_mat_C_ch_2_R.data" *)input m_axi_mat_C_ch_2_RLAST; - (* RS_HS = "m_axi_mat_C_ch_2_R.ready" *)output m_axi_mat_C_ch_2_RREADY; - (* RS_HS = "m_axi_mat_C_ch_2_R.data" *)input [1:0] m_axi_mat_C_ch_2_RRESP; - (* RS_HS = "m_axi_mat_C_ch_2_R.valid" *)input m_axi_mat_C_ch_2_RVALID; - (* RS_HS = "m_axi_mat_C_ch_2_W.data" *)output [511:0] m_axi_mat_C_ch_2_WDATA; - (* RS_HS = "m_axi_mat_C_ch_2_W.data" *)output m_axi_mat_C_ch_2_WLAST; - (* RS_HS = "m_axi_mat_C_ch_2_W.ready" *)input m_axi_mat_C_ch_2_WREADY; - (* RS_HS = "m_axi_mat_C_ch_2_W.data" *)output [63:0] m_axi_mat_C_ch_2_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_2_W.valid" *)output m_axi_mat_C_ch_2_WVALID; - (* RS_HS = "m_axi_mat_C_ch_3_AR.data" *)output [63:0] m_axi_mat_C_ch_3_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_3_AR.data" *)output [1:0] m_axi_mat_C_ch_3_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_3_AR.data" *)output [3:0] m_axi_mat_C_ch_3_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_3_AR.data" *)output [0:0] m_axi_mat_C_ch_3_ARID; - (* RS_HS = "m_axi_mat_C_ch_3_AR.data" *)output [7:0] m_axi_mat_C_ch_3_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_3_AR.data" *)output m_axi_mat_C_ch_3_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_3_AR.data" *)output [2:0] m_axi_mat_C_ch_3_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_3_AR.data" *)output [3:0] m_axi_mat_C_ch_3_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_3_AR.ready" *)input m_axi_mat_C_ch_3_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_3_AR.data" *)output [2:0] m_axi_mat_C_ch_3_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_3_AR.valid" *)output m_axi_mat_C_ch_3_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_3_AW.data" *)output [63:0] m_axi_mat_C_ch_3_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_3_AW.data" *)output [1:0] m_axi_mat_C_ch_3_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_3_AW.data" *)output [3:0] m_axi_mat_C_ch_3_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_3_AW.data" *)output [0:0] m_axi_mat_C_ch_3_AWID; - (* RS_HS = "m_axi_mat_C_ch_3_AW.data" *)output [7:0] m_axi_mat_C_ch_3_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_3_AW.data" *)output m_axi_mat_C_ch_3_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_3_AW.data" *)output [2:0] m_axi_mat_C_ch_3_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_3_AW.data" *)output [3:0] m_axi_mat_C_ch_3_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_3_AW.ready" *)input m_axi_mat_C_ch_3_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_3_AW.data" *)output [2:0] m_axi_mat_C_ch_3_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_3_AW.valid" *)output m_axi_mat_C_ch_3_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_3_B.data" *)input [0:0] m_axi_mat_C_ch_3_BID; - (* RS_HS = "m_axi_mat_C_ch_3_B.ready" *)output m_axi_mat_C_ch_3_BREADY; - (* RS_HS = "m_axi_mat_C_ch_3_B.data" *)input [1:0] m_axi_mat_C_ch_3_BRESP; - (* RS_HS = "m_axi_mat_C_ch_3_B.valid" *)input m_axi_mat_C_ch_3_BVALID; - (* RS_HS = "m_axi_mat_C_ch_3_R.data" *)input [511:0] m_axi_mat_C_ch_3_RDATA; - (* RS_HS = "m_axi_mat_C_ch_3_R.data" *)input [0:0] m_axi_mat_C_ch_3_RID; - (* RS_HS = "m_axi_mat_C_ch_3_R.data" *)input m_axi_mat_C_ch_3_RLAST; - (* RS_HS = "m_axi_mat_C_ch_3_R.ready" *)output m_axi_mat_C_ch_3_RREADY; - (* RS_HS = "m_axi_mat_C_ch_3_R.data" *)input [1:0] m_axi_mat_C_ch_3_RRESP; - (* RS_HS = "m_axi_mat_C_ch_3_R.valid" *)input m_axi_mat_C_ch_3_RVALID; - (* RS_HS = "m_axi_mat_C_ch_3_W.data" *)output [511:0] m_axi_mat_C_ch_3_WDATA; - (* RS_HS = "m_axi_mat_C_ch_3_W.data" *)output m_axi_mat_C_ch_3_WLAST; - (* RS_HS = "m_axi_mat_C_ch_3_W.ready" *)input m_axi_mat_C_ch_3_WREADY; - (* RS_HS = "m_axi_mat_C_ch_3_W.data" *)output [63:0] m_axi_mat_C_ch_3_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_3_W.valid" *)output m_axi_mat_C_ch_3_WVALID; - (* RS_HS = "m_axi_mat_C_ch_4_AR.data" *)output [63:0] m_axi_mat_C_ch_4_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_4_AR.data" *)output [1:0] m_axi_mat_C_ch_4_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_4_AR.data" *)output [3:0] m_axi_mat_C_ch_4_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_4_AR.data" *)output [0:0] m_axi_mat_C_ch_4_ARID; - (* RS_HS = "m_axi_mat_C_ch_4_AR.data" *)output [7:0] m_axi_mat_C_ch_4_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_4_AR.data" *)output m_axi_mat_C_ch_4_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_4_AR.data" *)output [2:0] m_axi_mat_C_ch_4_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_4_AR.data" *)output [3:0] m_axi_mat_C_ch_4_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_4_AR.ready" *)input m_axi_mat_C_ch_4_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_4_AR.data" *)output [2:0] m_axi_mat_C_ch_4_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_4_AR.valid" *)output m_axi_mat_C_ch_4_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_4_AW.data" *)output [63:0] m_axi_mat_C_ch_4_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_4_AW.data" *)output [1:0] m_axi_mat_C_ch_4_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_4_AW.data" *)output [3:0] m_axi_mat_C_ch_4_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_4_AW.data" *)output [0:0] m_axi_mat_C_ch_4_AWID; - (* RS_HS = "m_axi_mat_C_ch_4_AW.data" *)output [7:0] m_axi_mat_C_ch_4_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_4_AW.data" *)output m_axi_mat_C_ch_4_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_4_AW.data" *)output [2:0] m_axi_mat_C_ch_4_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_4_AW.data" *)output [3:0] m_axi_mat_C_ch_4_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_4_AW.ready" *)input m_axi_mat_C_ch_4_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_4_AW.data" *)output [2:0] m_axi_mat_C_ch_4_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_4_AW.valid" *)output m_axi_mat_C_ch_4_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_4_B.data" *)input [0:0] m_axi_mat_C_ch_4_BID; - (* RS_HS = "m_axi_mat_C_ch_4_B.ready" *)output m_axi_mat_C_ch_4_BREADY; - (* RS_HS = "m_axi_mat_C_ch_4_B.data" *)input [1:0] m_axi_mat_C_ch_4_BRESP; - (* RS_HS = "m_axi_mat_C_ch_4_B.valid" *)input m_axi_mat_C_ch_4_BVALID; - (* RS_HS = "m_axi_mat_C_ch_4_R.data" *)input [511:0] m_axi_mat_C_ch_4_RDATA; - (* RS_HS = "m_axi_mat_C_ch_4_R.data" *)input [0:0] m_axi_mat_C_ch_4_RID; - (* RS_HS = "m_axi_mat_C_ch_4_R.data" *)input m_axi_mat_C_ch_4_RLAST; - (* RS_HS = "m_axi_mat_C_ch_4_R.ready" *)output m_axi_mat_C_ch_4_RREADY; - (* RS_HS = "m_axi_mat_C_ch_4_R.data" *)input [1:0] m_axi_mat_C_ch_4_RRESP; - (* RS_HS = "m_axi_mat_C_ch_4_R.valid" *)input m_axi_mat_C_ch_4_RVALID; - (* RS_HS = "m_axi_mat_C_ch_4_W.data" *)output [511:0] m_axi_mat_C_ch_4_WDATA; - (* RS_HS = "m_axi_mat_C_ch_4_W.data" *)output m_axi_mat_C_ch_4_WLAST; - (* RS_HS = "m_axi_mat_C_ch_4_W.ready" *)input m_axi_mat_C_ch_4_WREADY; - (* RS_HS = "m_axi_mat_C_ch_4_W.data" *)output [63:0] m_axi_mat_C_ch_4_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_4_W.valid" *)output m_axi_mat_C_ch_4_WVALID; - (* RS_HS = "m_axi_mat_C_ch_5_AR.data" *)output [63:0] m_axi_mat_C_ch_5_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_5_AR.data" *)output [1:0] m_axi_mat_C_ch_5_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_5_AR.data" *)output [3:0] m_axi_mat_C_ch_5_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_5_AR.data" *)output [0:0] m_axi_mat_C_ch_5_ARID; - (* RS_HS = "m_axi_mat_C_ch_5_AR.data" *)output [7:0] m_axi_mat_C_ch_5_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_5_AR.data" *)output m_axi_mat_C_ch_5_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_5_AR.data" *)output [2:0] m_axi_mat_C_ch_5_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_5_AR.data" *)output [3:0] m_axi_mat_C_ch_5_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_5_AR.ready" *)input m_axi_mat_C_ch_5_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_5_AR.data" *)output [2:0] m_axi_mat_C_ch_5_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_5_AR.valid" *)output m_axi_mat_C_ch_5_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_5_AW.data" *)output [63:0] m_axi_mat_C_ch_5_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_5_AW.data" *)output [1:0] m_axi_mat_C_ch_5_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_5_AW.data" *)output [3:0] m_axi_mat_C_ch_5_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_5_AW.data" *)output [0:0] m_axi_mat_C_ch_5_AWID; - (* RS_HS = "m_axi_mat_C_ch_5_AW.data" *)output [7:0] m_axi_mat_C_ch_5_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_5_AW.data" *)output m_axi_mat_C_ch_5_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_5_AW.data" *)output [2:0] m_axi_mat_C_ch_5_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_5_AW.data" *)output [3:0] m_axi_mat_C_ch_5_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_5_AW.ready" *)input m_axi_mat_C_ch_5_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_5_AW.data" *)output [2:0] m_axi_mat_C_ch_5_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_5_AW.valid" *)output m_axi_mat_C_ch_5_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_5_B.data" *)input [0:0] m_axi_mat_C_ch_5_BID; - (* RS_HS = "m_axi_mat_C_ch_5_B.ready" *)output m_axi_mat_C_ch_5_BREADY; - (* RS_HS = "m_axi_mat_C_ch_5_B.data" *)input [1:0] m_axi_mat_C_ch_5_BRESP; - (* RS_HS = "m_axi_mat_C_ch_5_B.valid" *)input m_axi_mat_C_ch_5_BVALID; - (* RS_HS = "m_axi_mat_C_ch_5_R.data" *)input [511:0] m_axi_mat_C_ch_5_RDATA; - (* RS_HS = "m_axi_mat_C_ch_5_R.data" *)input [0:0] m_axi_mat_C_ch_5_RID; - (* RS_HS = "m_axi_mat_C_ch_5_R.data" *)input m_axi_mat_C_ch_5_RLAST; - (* RS_HS = "m_axi_mat_C_ch_5_R.ready" *)output m_axi_mat_C_ch_5_RREADY; - (* RS_HS = "m_axi_mat_C_ch_5_R.data" *)input [1:0] m_axi_mat_C_ch_5_RRESP; - (* RS_HS = "m_axi_mat_C_ch_5_R.valid" *)input m_axi_mat_C_ch_5_RVALID; - (* RS_HS = "m_axi_mat_C_ch_5_W.data" *)output [511:0] m_axi_mat_C_ch_5_WDATA; - (* RS_HS = "m_axi_mat_C_ch_5_W.data" *)output m_axi_mat_C_ch_5_WLAST; - (* RS_HS = "m_axi_mat_C_ch_5_W.ready" *)input m_axi_mat_C_ch_5_WREADY; - (* RS_HS = "m_axi_mat_C_ch_5_W.data" *)output [63:0] m_axi_mat_C_ch_5_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_5_W.valid" *)output m_axi_mat_C_ch_5_WVALID; - (* RS_HS = "m_axi_mat_C_ch_6_AR.data" *)output [63:0] m_axi_mat_C_ch_6_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_6_AR.data" *)output [1:0] m_axi_mat_C_ch_6_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_6_AR.data" *)output [3:0] m_axi_mat_C_ch_6_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_6_AR.data" *)output [0:0] m_axi_mat_C_ch_6_ARID; - (* RS_HS = "m_axi_mat_C_ch_6_AR.data" *)output [7:0] m_axi_mat_C_ch_6_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_6_AR.data" *)output m_axi_mat_C_ch_6_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_6_AR.data" *)output [2:0] m_axi_mat_C_ch_6_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_6_AR.data" *)output [3:0] m_axi_mat_C_ch_6_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_6_AR.ready" *)input m_axi_mat_C_ch_6_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_6_AR.data" *)output [2:0] m_axi_mat_C_ch_6_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_6_AR.valid" *)output m_axi_mat_C_ch_6_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_6_AW.data" *)output [63:0] m_axi_mat_C_ch_6_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_6_AW.data" *)output [1:0] m_axi_mat_C_ch_6_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_6_AW.data" *)output [3:0] m_axi_mat_C_ch_6_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_6_AW.data" *)output [0:0] m_axi_mat_C_ch_6_AWID; - (* RS_HS = "m_axi_mat_C_ch_6_AW.data" *)output [7:0] m_axi_mat_C_ch_6_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_6_AW.data" *)output m_axi_mat_C_ch_6_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_6_AW.data" *)output [2:0] m_axi_mat_C_ch_6_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_6_AW.data" *)output [3:0] m_axi_mat_C_ch_6_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_6_AW.ready" *)input m_axi_mat_C_ch_6_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_6_AW.data" *)output [2:0] m_axi_mat_C_ch_6_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_6_AW.valid" *)output m_axi_mat_C_ch_6_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_6_B.data" *)input [0:0] m_axi_mat_C_ch_6_BID; - (* RS_HS = "m_axi_mat_C_ch_6_B.ready" *)output m_axi_mat_C_ch_6_BREADY; - (* RS_HS = "m_axi_mat_C_ch_6_B.data" *)input [1:0] m_axi_mat_C_ch_6_BRESP; - (* RS_HS = "m_axi_mat_C_ch_6_B.valid" *)input m_axi_mat_C_ch_6_BVALID; - (* RS_HS = "m_axi_mat_C_ch_6_R.data" *)input [511:0] m_axi_mat_C_ch_6_RDATA; - (* RS_HS = "m_axi_mat_C_ch_6_R.data" *)input [0:0] m_axi_mat_C_ch_6_RID; - (* RS_HS = "m_axi_mat_C_ch_6_R.data" *)input m_axi_mat_C_ch_6_RLAST; - (* RS_HS = "m_axi_mat_C_ch_6_R.ready" *)output m_axi_mat_C_ch_6_RREADY; - (* RS_HS = "m_axi_mat_C_ch_6_R.data" *)input [1:0] m_axi_mat_C_ch_6_RRESP; - (* RS_HS = "m_axi_mat_C_ch_6_R.valid" *)input m_axi_mat_C_ch_6_RVALID; - (* RS_HS = "m_axi_mat_C_ch_6_W.data" *)output [511:0] m_axi_mat_C_ch_6_WDATA; - (* RS_HS = "m_axi_mat_C_ch_6_W.data" *)output m_axi_mat_C_ch_6_WLAST; - (* RS_HS = "m_axi_mat_C_ch_6_W.ready" *)input m_axi_mat_C_ch_6_WREADY; - (* RS_HS = "m_axi_mat_C_ch_6_W.data" *)output [63:0] m_axi_mat_C_ch_6_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_6_W.valid" *)output m_axi_mat_C_ch_6_WVALID; - (* RS_HS = "m_axi_mat_C_ch_7_AR.data" *)output [63:0] m_axi_mat_C_ch_7_ARADDR; - (* RS_HS = "m_axi_mat_C_ch_7_AR.data" *)output [1:0] m_axi_mat_C_ch_7_ARBURST; - (* RS_HS = "m_axi_mat_C_ch_7_AR.data" *)output [3:0] m_axi_mat_C_ch_7_ARCACHE; - (* RS_HS = "m_axi_mat_C_ch_7_AR.data" *)output [0:0] m_axi_mat_C_ch_7_ARID; - (* RS_HS = "m_axi_mat_C_ch_7_AR.data" *)output [7:0] m_axi_mat_C_ch_7_ARLEN; - (* RS_HS = "m_axi_mat_C_ch_7_AR.data" *)output m_axi_mat_C_ch_7_ARLOCK; - (* RS_HS = "m_axi_mat_C_ch_7_AR.data" *)output [2:0] m_axi_mat_C_ch_7_ARPROT; - (* RS_HS = "m_axi_mat_C_ch_7_AR.data" *)output [3:0] m_axi_mat_C_ch_7_ARQOS; - (* RS_HS = "m_axi_mat_C_ch_7_AR.ready" *)input m_axi_mat_C_ch_7_ARREADY; - (* RS_HS = "m_axi_mat_C_ch_7_AR.data" *)output [2:0] m_axi_mat_C_ch_7_ARSIZE; - (* RS_HS = "m_axi_mat_C_ch_7_AR.valid" *)output m_axi_mat_C_ch_7_ARVALID; - (* RS_HS = "m_axi_mat_C_ch_7_AW.data" *)output [63:0] m_axi_mat_C_ch_7_AWADDR; - (* RS_HS = "m_axi_mat_C_ch_7_AW.data" *)output [1:0] m_axi_mat_C_ch_7_AWBURST; - (* RS_HS = "m_axi_mat_C_ch_7_AW.data" *)output [3:0] m_axi_mat_C_ch_7_AWCACHE; - (* RS_HS = "m_axi_mat_C_ch_7_AW.data" *)output [0:0] m_axi_mat_C_ch_7_AWID; - (* RS_HS = "m_axi_mat_C_ch_7_AW.data" *)output [7:0] m_axi_mat_C_ch_7_AWLEN; - (* RS_HS = "m_axi_mat_C_ch_7_AW.data" *)output m_axi_mat_C_ch_7_AWLOCK; - (* RS_HS = "m_axi_mat_C_ch_7_AW.data" *)output [2:0] m_axi_mat_C_ch_7_AWPROT; - (* RS_HS = "m_axi_mat_C_ch_7_AW.data" *)output [3:0] m_axi_mat_C_ch_7_AWQOS; - (* RS_HS = "m_axi_mat_C_ch_7_AW.ready" *)input m_axi_mat_C_ch_7_AWREADY; - (* RS_HS = "m_axi_mat_C_ch_7_AW.data" *)output [2:0] m_axi_mat_C_ch_7_AWSIZE; - (* RS_HS = "m_axi_mat_C_ch_7_AW.valid" *)output m_axi_mat_C_ch_7_AWVALID; - (* RS_HS = "m_axi_mat_C_ch_7_B.data" *)input [0:0] m_axi_mat_C_ch_7_BID; - (* RS_HS = "m_axi_mat_C_ch_7_B.ready" *)output m_axi_mat_C_ch_7_BREADY; - (* RS_HS = "m_axi_mat_C_ch_7_B.data" *)input [1:0] m_axi_mat_C_ch_7_BRESP; - (* RS_HS = "m_axi_mat_C_ch_7_B.valid" *)input m_axi_mat_C_ch_7_BVALID; - (* RS_HS = "m_axi_mat_C_ch_7_R.data" *)input [511:0] m_axi_mat_C_ch_7_RDATA; - (* RS_HS = "m_axi_mat_C_ch_7_R.data" *)input [0:0] m_axi_mat_C_ch_7_RID; - (* RS_HS = "m_axi_mat_C_ch_7_R.data" *)input m_axi_mat_C_ch_7_RLAST; - (* RS_HS = "m_axi_mat_C_ch_7_R.ready" *)output m_axi_mat_C_ch_7_RREADY; - (* RS_HS = "m_axi_mat_C_ch_7_R.data" *)input [1:0] m_axi_mat_C_ch_7_RRESP; - (* RS_HS = "m_axi_mat_C_ch_7_R.valid" *)input m_axi_mat_C_ch_7_RVALID; - (* RS_HS = "m_axi_mat_C_ch_7_W.data" *)output [511:0] m_axi_mat_C_ch_7_WDATA; - (* RS_HS = "m_axi_mat_C_ch_7_W.data" *)output m_axi_mat_C_ch_7_WLAST; - (* RS_HS = "m_axi_mat_C_ch_7_W.ready" *)input m_axi_mat_C_ch_7_WREADY; - (* RS_HS = "m_axi_mat_C_ch_7_W.data" *)output [63:0] m_axi_mat_C_ch_7_WSTRB; - (* RS_HS = "m_axi_mat_C_ch_7_W.valid" *)output m_axi_mat_C_ch_7_WVALID; - wire ap_start; - wire [63:0] edge_list_ptr; - wire [63:0] edge_list_ch_0; - wire [63:0] edge_list_ch_1; - wire [63:0] edge_list_ch_2; - wire [63:0] edge_list_ch_3; - wire [63:0] edge_list_ch_4; - wire [63:0] edge_list_ch_5; - wire [63:0] edge_list_ch_6; - wire [63:0] edge_list_ch_7; - wire [63:0] mat_B_ch_0; - wire [63:0] mat_B_ch_1; - wire [63:0] mat_B_ch_2; - wire [63:0] mat_B_ch_3; - wire [63:0] mat_C_ch_in_0; - wire [63:0] mat_C_ch_in_1; - wire [63:0] mat_C_ch_in_2; - wire [63:0] mat_C_ch_in_3; - wire [63:0] mat_C_ch_in_4; - wire [63:0] mat_C_ch_in_5; - wire [63:0] mat_C_ch_in_6; - wire [63:0] mat_C_ch_in_7; - wire [63:0] mat_C_ch_0; - wire [63:0] mat_C_ch_1; - wire [63:0] mat_C_ch_2; - wire [63:0] mat_C_ch_3; - wire [63:0] mat_C_ch_4; - wire [63:0] mat_C_ch_5; - wire [63:0] mat_C_ch_6; - wire [63:0] mat_C_ch_7; - wire [31:0] NUM_ITE; - wire [31:0] NUM_A_LEN; - wire [31:0] M; - wire [31:0] K; - wire [31:0] P_N; - wire [31:0] alpha_u; - wire [31:0] beta_u; - wire [32:0] PE_inst_Sextans_0__dout; - wire PE_inst_Sextans_0__empty_n; - wire PE_inst_Sextans_0__read; - wire [32:0] PE_inst_Sextans_0__din; - wire PE_inst_Sextans_0__full_n; - wire PE_inst_Sextans_0__write; - wire [32:0] PE_inst_Sextans_10__dout; - wire PE_inst_Sextans_10__empty_n; - wire PE_inst_Sextans_10__read; - wire [32:0] PE_inst_Sextans_10__din; - wire PE_inst_Sextans_10__full_n; - wire PE_inst_Sextans_10__write; - wire [32:0] PE_inst_Sextans_11__dout; - wire PE_inst_Sextans_11__empty_n; - wire PE_inst_Sextans_11__read; - wire [32:0] PE_inst_Sextans_11__din; - wire PE_inst_Sextans_11__full_n; - wire PE_inst_Sextans_11__write; - wire [32:0] PE_inst_Sextans_12__dout; - wire PE_inst_Sextans_12__empty_n; - wire PE_inst_Sextans_12__read; - wire [32:0] PE_inst_Sextans_12__din; - wire PE_inst_Sextans_12__full_n; - wire PE_inst_Sextans_12__write; - wire [32:0] PE_inst_Sextans_13__dout; - wire PE_inst_Sextans_13__empty_n; - wire PE_inst_Sextans_13__read; - wire [32:0] PE_inst_Sextans_13__din; - wire PE_inst_Sextans_13__full_n; - wire PE_inst_Sextans_13__write; - wire [32:0] PE_inst_Sextans_14__dout; - wire PE_inst_Sextans_14__empty_n; - wire PE_inst_Sextans_14__read; - wire [32:0] PE_inst_Sextans_14__din; - wire PE_inst_Sextans_14__full_n; - wire PE_inst_Sextans_14__write; - wire [32:0] PE_inst_Sextans_15__dout; - wire PE_inst_Sextans_15__empty_n; - wire PE_inst_Sextans_15__read; - wire [32:0] PE_inst_Sextans_15__din; - wire PE_inst_Sextans_15__full_n; - wire PE_inst_Sextans_15__write; - wire [32:0] PE_inst_Sextans_16__dout; - wire PE_inst_Sextans_16__empty_n; - wire PE_inst_Sextans_16__read; - wire [32:0] PE_inst_Sextans_16__din; - wire PE_inst_Sextans_16__full_n; - wire PE_inst_Sextans_16__write; - wire [32:0] PE_inst_Sextans_1__dout; - wire PE_inst_Sextans_1__empty_n; - wire PE_inst_Sextans_1__read; - wire [32:0] PE_inst_Sextans_1__din; - wire PE_inst_Sextans_1__full_n; - wire PE_inst_Sextans_1__write; - wire [32:0] PE_inst_Sextans_2__dout; - wire PE_inst_Sextans_2__empty_n; - wire PE_inst_Sextans_2__read; - wire [32:0] PE_inst_Sextans_2__din; - wire PE_inst_Sextans_2__full_n; - wire PE_inst_Sextans_2__write; - wire [32:0] PE_inst_Sextans_3__dout; - wire PE_inst_Sextans_3__empty_n; - wire PE_inst_Sextans_3__read; - wire [32:0] PE_inst_Sextans_3__din; - wire PE_inst_Sextans_3__full_n; - wire PE_inst_Sextans_3__write; - wire [32:0] PE_inst_Sextans_4__dout; - wire PE_inst_Sextans_4__empty_n; - wire PE_inst_Sextans_4__read; - wire [32:0] PE_inst_Sextans_4__din; - wire PE_inst_Sextans_4__full_n; - wire PE_inst_Sextans_4__write; - wire [32:0] PE_inst_Sextans_5__dout; - wire PE_inst_Sextans_5__empty_n; - wire PE_inst_Sextans_5__read; - wire [32:0] PE_inst_Sextans_5__din; - wire PE_inst_Sextans_5__full_n; - wire PE_inst_Sextans_5__write; - wire [32:0] PE_inst_Sextans_6__dout; - wire PE_inst_Sextans_6__empty_n; - wire PE_inst_Sextans_6__read; - wire [32:0] PE_inst_Sextans_6__din; - wire PE_inst_Sextans_6__full_n; - wire PE_inst_Sextans_6__write; - wire [32:0] PE_inst_Sextans_7__dout; - wire PE_inst_Sextans_7__empty_n; - wire PE_inst_Sextans_7__read; - wire [32:0] PE_inst_Sextans_7__din; - wire PE_inst_Sextans_7__full_n; - wire PE_inst_Sextans_7__write; - wire [32:0] PE_inst_Sextans_8__dout; - wire PE_inst_Sextans_8__empty_n; - wire PE_inst_Sextans_8__read; - wire [32:0] PE_inst_Sextans_8__din; - wire PE_inst_Sextans_8__full_n; - wire PE_inst_Sextans_8__write; - wire [32:0] PE_inst_Sextans_9__dout; - wire PE_inst_Sextans_9__empty_n; - wire PE_inst_Sextans_9__read; - wire [32:0] PE_inst_Sextans_9__din; - wire PE_inst_Sextans_9__full_n; - wire PE_inst_Sextans_9__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_0__dout; - wire PE_inst_to_Cmtx_Sextans_0__empty_n; - wire PE_inst_to_Cmtx_Sextans_0__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_0__din; - wire PE_inst_to_Cmtx_Sextans_0__full_n; - wire PE_inst_to_Cmtx_Sextans_0__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_10__dout; - wire PE_inst_to_Cmtx_Sextans_10__empty_n; - wire PE_inst_to_Cmtx_Sextans_10__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_10__din; - wire PE_inst_to_Cmtx_Sextans_10__full_n; - wire PE_inst_to_Cmtx_Sextans_10__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_11__dout; - wire PE_inst_to_Cmtx_Sextans_11__empty_n; - wire PE_inst_to_Cmtx_Sextans_11__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_11__din; - wire PE_inst_to_Cmtx_Sextans_11__full_n; - wire PE_inst_to_Cmtx_Sextans_11__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_12__dout; - wire PE_inst_to_Cmtx_Sextans_12__empty_n; - wire PE_inst_to_Cmtx_Sextans_12__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_12__din; - wire PE_inst_to_Cmtx_Sextans_12__full_n; - wire PE_inst_to_Cmtx_Sextans_12__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_13__dout; - wire PE_inst_to_Cmtx_Sextans_13__empty_n; - wire PE_inst_to_Cmtx_Sextans_13__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_13__din; - wire PE_inst_to_Cmtx_Sextans_13__full_n; - wire PE_inst_to_Cmtx_Sextans_13__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_14__dout; - wire PE_inst_to_Cmtx_Sextans_14__empty_n; - wire PE_inst_to_Cmtx_Sextans_14__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_14__din; - wire PE_inst_to_Cmtx_Sextans_14__full_n; - wire PE_inst_to_Cmtx_Sextans_14__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_15__dout; - wire PE_inst_to_Cmtx_Sextans_15__empty_n; - wire PE_inst_to_Cmtx_Sextans_15__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_15__din; - wire PE_inst_to_Cmtx_Sextans_15__full_n; - wire PE_inst_to_Cmtx_Sextans_15__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_1__dout; - wire PE_inst_to_Cmtx_Sextans_1__empty_n; - wire PE_inst_to_Cmtx_Sextans_1__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_1__din; - wire PE_inst_to_Cmtx_Sextans_1__full_n; - wire PE_inst_to_Cmtx_Sextans_1__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_2__dout; - wire PE_inst_to_Cmtx_Sextans_2__empty_n; - wire PE_inst_to_Cmtx_Sextans_2__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_2__din; - wire PE_inst_to_Cmtx_Sextans_2__full_n; - wire PE_inst_to_Cmtx_Sextans_2__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_3__dout; - wire PE_inst_to_Cmtx_Sextans_3__empty_n; - wire PE_inst_to_Cmtx_Sextans_3__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_3__din; - wire PE_inst_to_Cmtx_Sextans_3__full_n; - wire PE_inst_to_Cmtx_Sextans_3__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_4__dout; - wire PE_inst_to_Cmtx_Sextans_4__empty_n; - wire PE_inst_to_Cmtx_Sextans_4__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_4__din; - wire PE_inst_to_Cmtx_Sextans_4__full_n; - wire PE_inst_to_Cmtx_Sextans_4__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_5__dout; - wire PE_inst_to_Cmtx_Sextans_5__empty_n; - wire PE_inst_to_Cmtx_Sextans_5__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_5__din; - wire PE_inst_to_Cmtx_Sextans_5__full_n; - wire PE_inst_to_Cmtx_Sextans_5__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_6__dout; - wire PE_inst_to_Cmtx_Sextans_6__empty_n; - wire PE_inst_to_Cmtx_Sextans_6__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_6__din; - wire PE_inst_to_Cmtx_Sextans_6__full_n; - wire PE_inst_to_Cmtx_Sextans_6__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_7__dout; - wire PE_inst_to_Cmtx_Sextans_7__empty_n; - wire PE_inst_to_Cmtx_Sextans_7__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_7__din; - wire PE_inst_to_Cmtx_Sextans_7__full_n; - wire PE_inst_to_Cmtx_Sextans_7__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_8__dout; - wire PE_inst_to_Cmtx_Sextans_8__empty_n; - wire PE_inst_to_Cmtx_Sextans_8__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_8__din; - wire PE_inst_to_Cmtx_Sextans_8__full_n; - wire PE_inst_to_Cmtx_Sextans_8__write; - wire [32:0] PE_inst_to_Cmtx_Sextans_9__dout; - wire PE_inst_to_Cmtx_Sextans_9__empty_n; - wire PE_inst_to_Cmtx_Sextans_9__read; - wire [32:0] PE_inst_to_Cmtx_Sextans_9__din; - wire PE_inst_to_Cmtx_Sextans_9__full_n; - wire PE_inst_to_Cmtx_Sextans_9__write; - wire [512:0] fifo_A_Sextans_0__dout; - wire fifo_A_Sextans_0__empty_n; - wire fifo_A_Sextans_0__read; - wire [512:0] fifo_A_Sextans_0__din; - wire fifo_A_Sextans_0__full_n; - wire fifo_A_Sextans_0__write; - wire [512:0] fifo_A_Sextans_1__dout; - wire fifo_A_Sextans_1__empty_n; - wire fifo_A_Sextans_1__read; - wire [512:0] fifo_A_Sextans_1__din; - wire fifo_A_Sextans_1__full_n; - wire fifo_A_Sextans_1__write; - wire [512:0] fifo_A_Sextans_2__dout; - wire fifo_A_Sextans_2__empty_n; - wire fifo_A_Sextans_2__read; - wire [512:0] fifo_A_Sextans_2__din; - wire fifo_A_Sextans_2__full_n; - wire fifo_A_Sextans_2__write; - wire [512:0] fifo_A_Sextans_3__dout; - wire fifo_A_Sextans_3__empty_n; - wire fifo_A_Sextans_3__read; - wire [512:0] fifo_A_Sextans_3__din; - wire fifo_A_Sextans_3__full_n; - wire fifo_A_Sextans_3__write; - wire [512:0] fifo_A_Sextans_4__dout; - wire fifo_A_Sextans_4__empty_n; - wire fifo_A_Sextans_4__read; - wire [512:0] fifo_A_Sextans_4__din; - wire fifo_A_Sextans_4__full_n; - wire fifo_A_Sextans_4__write; - wire [512:0] fifo_A_Sextans_5__dout; - wire fifo_A_Sextans_5__empty_n; - wire fifo_A_Sextans_5__read; - wire [512:0] fifo_A_Sextans_5__din; - wire fifo_A_Sextans_5__full_n; - wire fifo_A_Sextans_5__write; - wire [512:0] fifo_A_Sextans_6__dout; - wire fifo_A_Sextans_6__empty_n; - wire fifo_A_Sextans_6__read; - wire [512:0] fifo_A_Sextans_6__din; - wire fifo_A_Sextans_6__full_n; - wire fifo_A_Sextans_6__write; - wire [512:0] fifo_A_Sextans_7__dout; - wire fifo_A_Sextans_7__empty_n; - wire fifo_A_Sextans_7__read; - wire [512:0] fifo_A_Sextans_7__din; - wire fifo_A_Sextans_7__full_n; - wire fifo_A_Sextans_7__write; - wire [256:0] fifo_A_pe_Sextans_0__dout; - wire fifo_A_pe_Sextans_0__empty_n; - wire fifo_A_pe_Sextans_0__read; - wire [256:0] fifo_A_pe_Sextans_0__din; - wire fifo_A_pe_Sextans_0__full_n; - wire fifo_A_pe_Sextans_0__write; - wire [256:0] fifo_A_pe_Sextans_10__dout; - wire fifo_A_pe_Sextans_10__empty_n; - wire fifo_A_pe_Sextans_10__read; - wire [256:0] fifo_A_pe_Sextans_10__din; - wire fifo_A_pe_Sextans_10__full_n; - wire fifo_A_pe_Sextans_10__write; - wire [256:0] fifo_A_pe_Sextans_11__dout; - wire fifo_A_pe_Sextans_11__empty_n; - wire fifo_A_pe_Sextans_11__read; - wire [256:0] fifo_A_pe_Sextans_11__din; - wire fifo_A_pe_Sextans_11__full_n; - wire fifo_A_pe_Sextans_11__write; - wire [256:0] fifo_A_pe_Sextans_12__dout; - wire fifo_A_pe_Sextans_12__empty_n; - wire fifo_A_pe_Sextans_12__read; - wire [256:0] fifo_A_pe_Sextans_12__din; - wire fifo_A_pe_Sextans_12__full_n; - wire fifo_A_pe_Sextans_12__write; - wire [256:0] fifo_A_pe_Sextans_13__dout; - wire fifo_A_pe_Sextans_13__empty_n; - wire fifo_A_pe_Sextans_13__read; - wire [256:0] fifo_A_pe_Sextans_13__din; - wire fifo_A_pe_Sextans_13__full_n; - wire fifo_A_pe_Sextans_13__write; - wire [256:0] fifo_A_pe_Sextans_14__dout; - wire fifo_A_pe_Sextans_14__empty_n; - wire fifo_A_pe_Sextans_14__read; - wire [256:0] fifo_A_pe_Sextans_14__din; - wire fifo_A_pe_Sextans_14__full_n; - wire fifo_A_pe_Sextans_14__write; - wire [256:0] fifo_A_pe_Sextans_15__dout; - wire fifo_A_pe_Sextans_15__empty_n; - wire fifo_A_pe_Sextans_15__read; - wire [256:0] fifo_A_pe_Sextans_15__din; - wire fifo_A_pe_Sextans_15__full_n; - wire fifo_A_pe_Sextans_15__write; - wire [256:0] fifo_A_pe_Sextans_1__dout; - wire fifo_A_pe_Sextans_1__empty_n; - wire fifo_A_pe_Sextans_1__read; - wire [256:0] fifo_A_pe_Sextans_1__din; - wire fifo_A_pe_Sextans_1__full_n; - wire fifo_A_pe_Sextans_1__write; - wire [256:0] fifo_A_pe_Sextans_2__dout; - wire fifo_A_pe_Sextans_2__empty_n; - wire fifo_A_pe_Sextans_2__read; - wire [256:0] fifo_A_pe_Sextans_2__din; - wire fifo_A_pe_Sextans_2__full_n; - wire fifo_A_pe_Sextans_2__write; - wire [256:0] fifo_A_pe_Sextans_3__dout; - wire fifo_A_pe_Sextans_3__empty_n; - wire fifo_A_pe_Sextans_3__read; - wire [256:0] fifo_A_pe_Sextans_3__din; - wire fifo_A_pe_Sextans_3__full_n; - wire fifo_A_pe_Sextans_3__write; - wire [256:0] fifo_A_pe_Sextans_4__dout; - wire fifo_A_pe_Sextans_4__empty_n; - wire fifo_A_pe_Sextans_4__read; - wire [256:0] fifo_A_pe_Sextans_4__din; - wire fifo_A_pe_Sextans_4__full_n; - wire fifo_A_pe_Sextans_4__write; - wire [256:0] fifo_A_pe_Sextans_5__dout; - wire fifo_A_pe_Sextans_5__empty_n; - wire fifo_A_pe_Sextans_5__read; - wire [256:0] fifo_A_pe_Sextans_5__din; - wire fifo_A_pe_Sextans_5__full_n; - wire fifo_A_pe_Sextans_5__write; - wire [256:0] fifo_A_pe_Sextans_6__dout; - wire fifo_A_pe_Sextans_6__empty_n; - wire fifo_A_pe_Sextans_6__read; - wire [256:0] fifo_A_pe_Sextans_6__din; - wire fifo_A_pe_Sextans_6__full_n; - wire fifo_A_pe_Sextans_6__write; - wire [256:0] fifo_A_pe_Sextans_7__dout; - wire fifo_A_pe_Sextans_7__empty_n; - wire fifo_A_pe_Sextans_7__read; - wire [256:0] fifo_A_pe_Sextans_7__din; - wire fifo_A_pe_Sextans_7__full_n; - wire fifo_A_pe_Sextans_7__write; - wire [256:0] fifo_A_pe_Sextans_8__dout; - wire fifo_A_pe_Sextans_8__empty_n; - wire fifo_A_pe_Sextans_8__read; - wire [256:0] fifo_A_pe_Sextans_8__din; - wire fifo_A_pe_Sextans_8__full_n; - wire fifo_A_pe_Sextans_8__write; - wire [256:0] fifo_A_pe_Sextans_9__dout; - wire fifo_A_pe_Sextans_9__empty_n; - wire fifo_A_pe_Sextans_9__read; - wire [256:0] fifo_A_pe_Sextans_9__din; - wire fifo_A_pe_Sextans_9__full_n; - wire fifo_A_pe_Sextans_9__write; - wire [512:0] fifo_B_pe_Sextans_0__dout; - wire fifo_B_pe_Sextans_0__empty_n; - wire fifo_B_pe_Sextans_0__read; - wire [512:0] fifo_B_pe_Sextans_0__din; - wire fifo_B_pe_Sextans_0__full_n; - wire fifo_B_pe_Sextans_0__write; - wire [512:0] fifo_B_pe_Sextans_10__dout; - wire fifo_B_pe_Sextans_10__empty_n; - wire fifo_B_pe_Sextans_10__read; - wire [512:0] fifo_B_pe_Sextans_10__din; - wire fifo_B_pe_Sextans_10__full_n; - wire fifo_B_pe_Sextans_10__write; - wire [512:0] fifo_B_pe_Sextans_11__dout; - wire fifo_B_pe_Sextans_11__empty_n; - wire fifo_B_pe_Sextans_11__read; - wire [512:0] fifo_B_pe_Sextans_11__din; - wire fifo_B_pe_Sextans_11__full_n; - wire fifo_B_pe_Sextans_11__write; - wire [512:0] fifo_B_pe_Sextans_12__dout; - wire fifo_B_pe_Sextans_12__empty_n; - wire fifo_B_pe_Sextans_12__read; - wire [512:0] fifo_B_pe_Sextans_12__din; - wire fifo_B_pe_Sextans_12__full_n; - wire fifo_B_pe_Sextans_12__write; - wire [512:0] fifo_B_pe_Sextans_13__dout; - wire fifo_B_pe_Sextans_13__empty_n; - wire fifo_B_pe_Sextans_13__read; - wire [512:0] fifo_B_pe_Sextans_13__din; - wire fifo_B_pe_Sextans_13__full_n; - wire fifo_B_pe_Sextans_13__write; - wire [512:0] fifo_B_pe_Sextans_14__dout; - wire fifo_B_pe_Sextans_14__empty_n; - wire fifo_B_pe_Sextans_14__read; - wire [512:0] fifo_B_pe_Sextans_14__din; - wire fifo_B_pe_Sextans_14__full_n; - wire fifo_B_pe_Sextans_14__write; - wire [512:0] fifo_B_pe_Sextans_15__dout; - wire fifo_B_pe_Sextans_15__empty_n; - wire fifo_B_pe_Sextans_15__read; - wire [512:0] fifo_B_pe_Sextans_15__din; - wire fifo_B_pe_Sextans_15__full_n; - wire fifo_B_pe_Sextans_15__write; - wire [512:0] fifo_B_pe_Sextans_16__dout; - wire fifo_B_pe_Sextans_16__empty_n; - wire fifo_B_pe_Sextans_16__read; - wire [512:0] fifo_B_pe_Sextans_16__din; - wire fifo_B_pe_Sextans_16__full_n; - wire fifo_B_pe_Sextans_16__write; - wire [512:0] fifo_B_pe_Sextans_17__dout; - wire fifo_B_pe_Sextans_17__empty_n; - wire fifo_B_pe_Sextans_17__read; - wire [512:0] fifo_B_pe_Sextans_17__din; - wire fifo_B_pe_Sextans_17__full_n; - wire fifo_B_pe_Sextans_17__write; - wire [512:0] fifo_B_pe_Sextans_18__dout; - wire fifo_B_pe_Sextans_18__empty_n; - wire fifo_B_pe_Sextans_18__read; - wire [512:0] fifo_B_pe_Sextans_18__din; - wire fifo_B_pe_Sextans_18__full_n; - wire fifo_B_pe_Sextans_18__write; - wire [512:0] fifo_B_pe_Sextans_19__dout; - wire fifo_B_pe_Sextans_19__empty_n; - wire fifo_B_pe_Sextans_19__read; - wire [512:0] fifo_B_pe_Sextans_19__din; - wire fifo_B_pe_Sextans_19__full_n; - wire fifo_B_pe_Sextans_19__write; - wire [512:0] fifo_B_pe_Sextans_1__dout; - wire fifo_B_pe_Sextans_1__empty_n; - wire fifo_B_pe_Sextans_1__read; - wire [512:0] fifo_B_pe_Sextans_1__din; - wire fifo_B_pe_Sextans_1__full_n; - wire fifo_B_pe_Sextans_1__write; - wire [512:0] fifo_B_pe_Sextans_20__dout; - wire fifo_B_pe_Sextans_20__empty_n; - wire fifo_B_pe_Sextans_20__read; - wire [512:0] fifo_B_pe_Sextans_20__din; - wire fifo_B_pe_Sextans_20__full_n; - wire fifo_B_pe_Sextans_20__write; - wire [512:0] fifo_B_pe_Sextans_21__dout; - wire fifo_B_pe_Sextans_21__empty_n; - wire fifo_B_pe_Sextans_21__read; - wire [512:0] fifo_B_pe_Sextans_21__din; - wire fifo_B_pe_Sextans_21__full_n; - wire fifo_B_pe_Sextans_21__write; - wire [512:0] fifo_B_pe_Sextans_22__dout; - wire fifo_B_pe_Sextans_22__empty_n; - wire fifo_B_pe_Sextans_22__read; - wire [512:0] fifo_B_pe_Sextans_22__din; - wire fifo_B_pe_Sextans_22__full_n; - wire fifo_B_pe_Sextans_22__write; - wire [512:0] fifo_B_pe_Sextans_23__dout; - wire fifo_B_pe_Sextans_23__empty_n; - wire fifo_B_pe_Sextans_23__read; - wire [512:0] fifo_B_pe_Sextans_23__din; - wire fifo_B_pe_Sextans_23__full_n; - wire fifo_B_pe_Sextans_23__write; - wire [512:0] fifo_B_pe_Sextans_24__dout; - wire fifo_B_pe_Sextans_24__empty_n; - wire fifo_B_pe_Sextans_24__read; - wire [512:0] fifo_B_pe_Sextans_24__din; - wire fifo_B_pe_Sextans_24__full_n; - wire fifo_B_pe_Sextans_24__write; - wire [512:0] fifo_B_pe_Sextans_25__dout; - wire fifo_B_pe_Sextans_25__empty_n; - wire fifo_B_pe_Sextans_25__read; - wire [512:0] fifo_B_pe_Sextans_25__din; - wire fifo_B_pe_Sextans_25__full_n; - wire fifo_B_pe_Sextans_25__write; - wire [512:0] fifo_B_pe_Sextans_26__dout; - wire fifo_B_pe_Sextans_26__empty_n; - wire fifo_B_pe_Sextans_26__read; - wire [512:0] fifo_B_pe_Sextans_26__din; - wire fifo_B_pe_Sextans_26__full_n; - wire fifo_B_pe_Sextans_26__write; - wire [512:0] fifo_B_pe_Sextans_27__dout; - wire fifo_B_pe_Sextans_27__empty_n; - wire fifo_B_pe_Sextans_27__read; - wire [512:0] fifo_B_pe_Sextans_27__din; - wire fifo_B_pe_Sextans_27__full_n; - wire fifo_B_pe_Sextans_27__write; - wire [512:0] fifo_B_pe_Sextans_28__dout; - wire fifo_B_pe_Sextans_28__empty_n; - wire fifo_B_pe_Sextans_28__read; - wire [512:0] fifo_B_pe_Sextans_28__din; - wire fifo_B_pe_Sextans_28__full_n; - wire fifo_B_pe_Sextans_28__write; - wire [512:0] fifo_B_pe_Sextans_29__dout; - wire fifo_B_pe_Sextans_29__empty_n; - wire fifo_B_pe_Sextans_29__read; - wire [512:0] fifo_B_pe_Sextans_29__din; - wire fifo_B_pe_Sextans_29__full_n; - wire fifo_B_pe_Sextans_29__write; - wire [512:0] fifo_B_pe_Sextans_2__dout; - wire fifo_B_pe_Sextans_2__empty_n; - wire fifo_B_pe_Sextans_2__read; - wire [512:0] fifo_B_pe_Sextans_2__din; - wire fifo_B_pe_Sextans_2__full_n; - wire fifo_B_pe_Sextans_2__write; - wire [512:0] fifo_B_pe_Sextans_30__dout; - wire fifo_B_pe_Sextans_30__empty_n; - wire fifo_B_pe_Sextans_30__read; - wire [512:0] fifo_B_pe_Sextans_30__din; - wire fifo_B_pe_Sextans_30__full_n; - wire fifo_B_pe_Sextans_30__write; - wire [512:0] fifo_B_pe_Sextans_31__dout; - wire fifo_B_pe_Sextans_31__empty_n; - wire fifo_B_pe_Sextans_31__read; - wire [512:0] fifo_B_pe_Sextans_31__din; - wire fifo_B_pe_Sextans_31__full_n; - wire fifo_B_pe_Sextans_31__write; - wire [512:0] fifo_B_pe_Sextans_32__dout; - wire fifo_B_pe_Sextans_32__empty_n; - wire fifo_B_pe_Sextans_32__read; - wire [512:0] fifo_B_pe_Sextans_32__din; - wire fifo_B_pe_Sextans_32__full_n; - wire fifo_B_pe_Sextans_32__write; - wire [512:0] fifo_B_pe_Sextans_33__dout; - wire fifo_B_pe_Sextans_33__empty_n; - wire fifo_B_pe_Sextans_33__read; - wire [512:0] fifo_B_pe_Sextans_33__din; - wire fifo_B_pe_Sextans_33__full_n; - wire fifo_B_pe_Sextans_33__write; - wire [512:0] fifo_B_pe_Sextans_34__dout; - wire fifo_B_pe_Sextans_34__empty_n; - wire fifo_B_pe_Sextans_34__read; - wire [512:0] fifo_B_pe_Sextans_34__din; - wire fifo_B_pe_Sextans_34__full_n; - wire fifo_B_pe_Sextans_34__write; - wire [512:0] fifo_B_pe_Sextans_35__dout; - wire fifo_B_pe_Sextans_35__empty_n; - wire fifo_B_pe_Sextans_35__read; - wire [512:0] fifo_B_pe_Sextans_35__din; - wire fifo_B_pe_Sextans_35__full_n; - wire fifo_B_pe_Sextans_35__write; - wire [512:0] fifo_B_pe_Sextans_36__dout; - wire fifo_B_pe_Sextans_36__empty_n; - wire fifo_B_pe_Sextans_36__read; - wire [512:0] fifo_B_pe_Sextans_36__din; - wire fifo_B_pe_Sextans_36__full_n; - wire fifo_B_pe_Sextans_36__write; - wire [512:0] fifo_B_pe_Sextans_37__dout; - wire fifo_B_pe_Sextans_37__empty_n; - wire fifo_B_pe_Sextans_37__read; - wire [512:0] fifo_B_pe_Sextans_37__din; - wire fifo_B_pe_Sextans_37__full_n; - wire fifo_B_pe_Sextans_37__write; - wire [512:0] fifo_B_pe_Sextans_38__dout; - wire fifo_B_pe_Sextans_38__empty_n; - wire fifo_B_pe_Sextans_38__read; - wire [512:0] fifo_B_pe_Sextans_38__din; - wire fifo_B_pe_Sextans_38__full_n; - wire fifo_B_pe_Sextans_38__write; - wire [512:0] fifo_B_pe_Sextans_39__dout; - wire fifo_B_pe_Sextans_39__empty_n; - wire fifo_B_pe_Sextans_39__read; - wire [512:0] fifo_B_pe_Sextans_39__din; - wire fifo_B_pe_Sextans_39__full_n; - wire fifo_B_pe_Sextans_39__write; - wire [512:0] fifo_B_pe_Sextans_3__dout; - wire fifo_B_pe_Sextans_3__empty_n; - wire fifo_B_pe_Sextans_3__read; - wire [512:0] fifo_B_pe_Sextans_3__din; - wire fifo_B_pe_Sextans_3__full_n; - wire fifo_B_pe_Sextans_3__write; - wire [512:0] fifo_B_pe_Sextans_40__dout; - wire fifo_B_pe_Sextans_40__empty_n; - wire fifo_B_pe_Sextans_40__read; - wire [512:0] fifo_B_pe_Sextans_40__din; - wire fifo_B_pe_Sextans_40__full_n; - wire fifo_B_pe_Sextans_40__write; - wire [512:0] fifo_B_pe_Sextans_41__dout; - wire fifo_B_pe_Sextans_41__empty_n; - wire fifo_B_pe_Sextans_41__read; - wire [512:0] fifo_B_pe_Sextans_41__din; - wire fifo_B_pe_Sextans_41__full_n; - wire fifo_B_pe_Sextans_41__write; - wire [512:0] fifo_B_pe_Sextans_42__dout; - wire fifo_B_pe_Sextans_42__empty_n; - wire fifo_B_pe_Sextans_42__read; - wire [512:0] fifo_B_pe_Sextans_42__din; - wire fifo_B_pe_Sextans_42__full_n; - wire fifo_B_pe_Sextans_42__write; - wire [512:0] fifo_B_pe_Sextans_43__dout; - wire fifo_B_pe_Sextans_43__empty_n; - wire fifo_B_pe_Sextans_43__read; - wire [512:0] fifo_B_pe_Sextans_43__din; - wire fifo_B_pe_Sextans_43__full_n; - wire fifo_B_pe_Sextans_43__write; - wire [512:0] fifo_B_pe_Sextans_44__dout; - wire fifo_B_pe_Sextans_44__empty_n; - wire fifo_B_pe_Sextans_44__read; - wire [512:0] fifo_B_pe_Sextans_44__din; - wire fifo_B_pe_Sextans_44__full_n; - wire fifo_B_pe_Sextans_44__write; - wire [512:0] fifo_B_pe_Sextans_45__dout; - wire fifo_B_pe_Sextans_45__empty_n; - wire fifo_B_pe_Sextans_45__read; - wire [512:0] fifo_B_pe_Sextans_45__din; - wire fifo_B_pe_Sextans_45__full_n; - wire fifo_B_pe_Sextans_45__write; - wire [512:0] fifo_B_pe_Sextans_46__dout; - wire fifo_B_pe_Sextans_46__empty_n; - wire fifo_B_pe_Sextans_46__read; - wire [512:0] fifo_B_pe_Sextans_46__din; - wire fifo_B_pe_Sextans_46__full_n; - wire fifo_B_pe_Sextans_46__write; - wire [512:0] fifo_B_pe_Sextans_47__dout; - wire fifo_B_pe_Sextans_47__empty_n; - wire fifo_B_pe_Sextans_47__read; - wire [512:0] fifo_B_pe_Sextans_47__din; - wire fifo_B_pe_Sextans_47__full_n; - wire fifo_B_pe_Sextans_47__write; - wire [512:0] fifo_B_pe_Sextans_48__dout; - wire fifo_B_pe_Sextans_48__empty_n; - wire fifo_B_pe_Sextans_48__read; - wire [512:0] fifo_B_pe_Sextans_48__din; - wire fifo_B_pe_Sextans_48__full_n; - wire fifo_B_pe_Sextans_48__write; - wire [512:0] fifo_B_pe_Sextans_49__dout; - wire fifo_B_pe_Sextans_49__empty_n; - wire fifo_B_pe_Sextans_49__read; - wire [512:0] fifo_B_pe_Sextans_49__din; - wire fifo_B_pe_Sextans_49__full_n; - wire fifo_B_pe_Sextans_49__write; - wire [512:0] fifo_B_pe_Sextans_4__dout; - wire fifo_B_pe_Sextans_4__empty_n; - wire fifo_B_pe_Sextans_4__read; - wire [512:0] fifo_B_pe_Sextans_4__din; - wire fifo_B_pe_Sextans_4__full_n; - wire fifo_B_pe_Sextans_4__write; - wire [512:0] fifo_B_pe_Sextans_50__dout; - wire fifo_B_pe_Sextans_50__empty_n; - wire fifo_B_pe_Sextans_50__read; - wire [512:0] fifo_B_pe_Sextans_50__din; - wire fifo_B_pe_Sextans_50__full_n; - wire fifo_B_pe_Sextans_50__write; - wire [512:0] fifo_B_pe_Sextans_51__dout; - wire fifo_B_pe_Sextans_51__empty_n; - wire fifo_B_pe_Sextans_51__read; - wire [512:0] fifo_B_pe_Sextans_51__din; - wire fifo_B_pe_Sextans_51__full_n; - wire fifo_B_pe_Sextans_51__write; - wire [512:0] fifo_B_pe_Sextans_52__dout; - wire fifo_B_pe_Sextans_52__empty_n; - wire fifo_B_pe_Sextans_52__read; - wire [512:0] fifo_B_pe_Sextans_52__din; - wire fifo_B_pe_Sextans_52__full_n; - wire fifo_B_pe_Sextans_52__write; - wire [512:0] fifo_B_pe_Sextans_53__dout; - wire fifo_B_pe_Sextans_53__empty_n; - wire fifo_B_pe_Sextans_53__read; - wire [512:0] fifo_B_pe_Sextans_53__din; - wire fifo_B_pe_Sextans_53__full_n; - wire fifo_B_pe_Sextans_53__write; - wire [512:0] fifo_B_pe_Sextans_54__dout; - wire fifo_B_pe_Sextans_54__empty_n; - wire fifo_B_pe_Sextans_54__read; - wire [512:0] fifo_B_pe_Sextans_54__din; - wire fifo_B_pe_Sextans_54__full_n; - wire fifo_B_pe_Sextans_54__write; - wire [512:0] fifo_B_pe_Sextans_55__dout; - wire fifo_B_pe_Sextans_55__empty_n; - wire fifo_B_pe_Sextans_55__read; - wire [512:0] fifo_B_pe_Sextans_55__din; - wire fifo_B_pe_Sextans_55__full_n; - wire fifo_B_pe_Sextans_55__write; - wire [512:0] fifo_B_pe_Sextans_56__dout; - wire fifo_B_pe_Sextans_56__empty_n; - wire fifo_B_pe_Sextans_56__read; - wire [512:0] fifo_B_pe_Sextans_56__din; - wire fifo_B_pe_Sextans_56__full_n; - wire fifo_B_pe_Sextans_56__write; - wire [512:0] fifo_B_pe_Sextans_57__dout; - wire fifo_B_pe_Sextans_57__empty_n; - wire fifo_B_pe_Sextans_57__read; - wire [512:0] fifo_B_pe_Sextans_57__din; - wire fifo_B_pe_Sextans_57__full_n; - wire fifo_B_pe_Sextans_57__write; - wire [512:0] fifo_B_pe_Sextans_58__dout; - wire fifo_B_pe_Sextans_58__empty_n; - wire fifo_B_pe_Sextans_58__read; - wire [512:0] fifo_B_pe_Sextans_58__din; - wire fifo_B_pe_Sextans_58__full_n; - wire fifo_B_pe_Sextans_58__write; - wire [512:0] fifo_B_pe_Sextans_59__dout; - wire fifo_B_pe_Sextans_59__empty_n; - wire fifo_B_pe_Sextans_59__read; - wire [512:0] fifo_B_pe_Sextans_59__din; - wire fifo_B_pe_Sextans_59__full_n; - wire fifo_B_pe_Sextans_59__write; - wire [512:0] fifo_B_pe_Sextans_5__dout; - wire fifo_B_pe_Sextans_5__empty_n; - wire fifo_B_pe_Sextans_5__read; - wire [512:0] fifo_B_pe_Sextans_5__din; - wire fifo_B_pe_Sextans_5__full_n; - wire fifo_B_pe_Sextans_5__write; - wire [512:0] fifo_B_pe_Sextans_60__dout; - wire fifo_B_pe_Sextans_60__empty_n; - wire fifo_B_pe_Sextans_60__read; - wire [512:0] fifo_B_pe_Sextans_60__din; - wire fifo_B_pe_Sextans_60__full_n; - wire fifo_B_pe_Sextans_60__write; - wire [512:0] fifo_B_pe_Sextans_61__dout; - wire fifo_B_pe_Sextans_61__empty_n; - wire fifo_B_pe_Sextans_61__read; - wire [512:0] fifo_B_pe_Sextans_61__din; - wire fifo_B_pe_Sextans_61__full_n; - wire fifo_B_pe_Sextans_61__write; - wire [512:0] fifo_B_pe_Sextans_62__dout; - wire fifo_B_pe_Sextans_62__empty_n; - wire fifo_B_pe_Sextans_62__read; - wire [512:0] fifo_B_pe_Sextans_62__din; - wire fifo_B_pe_Sextans_62__full_n; - wire fifo_B_pe_Sextans_62__write; - wire [512:0] fifo_B_pe_Sextans_63__dout; - wire fifo_B_pe_Sextans_63__empty_n; - wire fifo_B_pe_Sextans_63__read; - wire [512:0] fifo_B_pe_Sextans_63__din; - wire fifo_B_pe_Sextans_63__full_n; - wire fifo_B_pe_Sextans_63__write; - wire [512:0] fifo_B_pe_Sextans_64__dout; - wire fifo_B_pe_Sextans_64__empty_n; - wire fifo_B_pe_Sextans_64__read; - wire [512:0] fifo_B_pe_Sextans_64__din; - wire fifo_B_pe_Sextans_64__full_n; - wire fifo_B_pe_Sextans_64__write; - wire [512:0] fifo_B_pe_Sextans_65__dout; - wire fifo_B_pe_Sextans_65__empty_n; - wire fifo_B_pe_Sextans_65__read; - wire [512:0] fifo_B_pe_Sextans_65__din; - wire fifo_B_pe_Sextans_65__full_n; - wire fifo_B_pe_Sextans_65__write; - wire [512:0] fifo_B_pe_Sextans_66__dout; - wire fifo_B_pe_Sextans_66__empty_n; - wire fifo_B_pe_Sextans_66__read; - wire [512:0] fifo_B_pe_Sextans_66__din; - wire fifo_B_pe_Sextans_66__full_n; - wire fifo_B_pe_Sextans_66__write; - wire [512:0] fifo_B_pe_Sextans_67__dout; - wire fifo_B_pe_Sextans_67__empty_n; - wire fifo_B_pe_Sextans_67__read; - wire [512:0] fifo_B_pe_Sextans_67__din; - wire fifo_B_pe_Sextans_67__full_n; - wire fifo_B_pe_Sextans_67__write; - wire [512:0] fifo_B_pe_Sextans_6__dout; - wire fifo_B_pe_Sextans_6__empty_n; - wire fifo_B_pe_Sextans_6__read; - wire [512:0] fifo_B_pe_Sextans_6__din; - wire fifo_B_pe_Sextans_6__full_n; - wire fifo_B_pe_Sextans_6__write; - wire [512:0] fifo_B_pe_Sextans_7__dout; - wire fifo_B_pe_Sextans_7__empty_n; - wire fifo_B_pe_Sextans_7__read; - wire [512:0] fifo_B_pe_Sextans_7__din; - wire fifo_B_pe_Sextans_7__full_n; - wire fifo_B_pe_Sextans_7__write; - wire [512:0] fifo_B_pe_Sextans_8__dout; - wire fifo_B_pe_Sextans_8__empty_n; - wire fifo_B_pe_Sextans_8__read; - wire [512:0] fifo_B_pe_Sextans_8__din; - wire fifo_B_pe_Sextans_8__full_n; - wire fifo_B_pe_Sextans_8__write; - wire [512:0] fifo_B_pe_Sextans_9__dout; - wire fifo_B_pe_Sextans_9__empty_n; - wire fifo_B_pe_Sextans_9__read; - wire [512:0] fifo_B_pe_Sextans_9__din; - wire fifo_B_pe_Sextans_9__full_n; - wire fifo_B_pe_Sextans_9__write; - wire [512:0] fifo_C_ch_Sextans_0__dout; - wire fifo_C_ch_Sextans_0__empty_n; - wire fifo_C_ch_Sextans_0__read; - wire [512:0] fifo_C_ch_Sextans_0__din; - wire fifo_C_ch_Sextans_0__full_n; - wire fifo_C_ch_Sextans_0__write; - wire [512:0] fifo_C_ch_Sextans_1__dout; - wire fifo_C_ch_Sextans_1__empty_n; - wire fifo_C_ch_Sextans_1__read; - wire [512:0] fifo_C_ch_Sextans_1__din; - wire fifo_C_ch_Sextans_1__full_n; - wire fifo_C_ch_Sextans_1__write; - wire [512:0] fifo_C_ch_Sextans_2__dout; - wire fifo_C_ch_Sextans_2__empty_n; - wire fifo_C_ch_Sextans_2__read; - wire [512:0] fifo_C_ch_Sextans_2__din; - wire fifo_C_ch_Sextans_2__full_n; - wire fifo_C_ch_Sextans_2__write; - wire [512:0] fifo_C_ch_Sextans_3__dout; - wire fifo_C_ch_Sextans_3__empty_n; - wire fifo_C_ch_Sextans_3__read; - wire [512:0] fifo_C_ch_Sextans_3__din; - wire fifo_C_ch_Sextans_3__full_n; - wire fifo_C_ch_Sextans_3__write; - wire [512:0] fifo_C_ch_Sextans_4__dout; - wire fifo_C_ch_Sextans_4__empty_n; - wire fifo_C_ch_Sextans_4__read; - wire [512:0] fifo_C_ch_Sextans_4__din; - wire fifo_C_ch_Sextans_4__full_n; - wire fifo_C_ch_Sextans_4__write; - wire [512:0] fifo_C_ch_Sextans_5__dout; - wire fifo_C_ch_Sextans_5__empty_n; - wire fifo_C_ch_Sextans_5__read; - wire [512:0] fifo_C_ch_Sextans_5__din; - wire fifo_C_ch_Sextans_5__full_n; - wire fifo_C_ch_Sextans_5__write; - wire [512:0] fifo_C_ch_Sextans_6__dout; - wire fifo_C_ch_Sextans_6__empty_n; - wire fifo_C_ch_Sextans_6__read; - wire [512:0] fifo_C_ch_Sextans_6__din; - wire fifo_C_ch_Sextans_6__full_n; - wire fifo_C_ch_Sextans_6__write; - wire [512:0] fifo_C_ch_Sextans_7__dout; - wire fifo_C_ch_Sextans_7__empty_n; - wire fifo_C_ch_Sextans_7__read; - wire [512:0] fifo_C_ch_Sextans_7__din; - wire fifo_C_ch_Sextans_7__full_n; - wire fifo_C_ch_Sextans_7__write; - wire [512:0] fifo_C_ch_result_Sextans_0__dout; - wire fifo_C_ch_result_Sextans_0__empty_n; - wire fifo_C_ch_result_Sextans_0__read; - wire [512:0] fifo_C_ch_result_Sextans_0__din; - wire fifo_C_ch_result_Sextans_0__full_n; - wire fifo_C_ch_result_Sextans_0__write; - wire [512:0] fifo_C_ch_result_Sextans_1__dout; - wire fifo_C_ch_result_Sextans_1__empty_n; - wire fifo_C_ch_result_Sextans_1__read; - wire [512:0] fifo_C_ch_result_Sextans_1__din; - wire fifo_C_ch_result_Sextans_1__full_n; - wire fifo_C_ch_result_Sextans_1__write; - wire [512:0] fifo_C_ch_result_Sextans_2__dout; - wire fifo_C_ch_result_Sextans_2__empty_n; - wire fifo_C_ch_result_Sextans_2__read; - wire [512:0] fifo_C_ch_result_Sextans_2__din; - wire fifo_C_ch_result_Sextans_2__full_n; - wire fifo_C_ch_result_Sextans_2__write; - wire [512:0] fifo_C_ch_result_Sextans_3__dout; - wire fifo_C_ch_result_Sextans_3__empty_n; - wire fifo_C_ch_result_Sextans_3__read; - wire [512:0] fifo_C_ch_result_Sextans_3__din; - wire fifo_C_ch_result_Sextans_3__full_n; - wire fifo_C_ch_result_Sextans_3__write; - wire [512:0] fifo_C_ch_result_Sextans_4__dout; - wire fifo_C_ch_result_Sextans_4__empty_n; - wire fifo_C_ch_result_Sextans_4__read; - wire [512:0] fifo_C_ch_result_Sextans_4__din; - wire fifo_C_ch_result_Sextans_4__full_n; - wire fifo_C_ch_result_Sextans_4__write; - wire [512:0] fifo_C_ch_result_Sextans_5__dout; - wire fifo_C_ch_result_Sextans_5__empty_n; - wire fifo_C_ch_result_Sextans_5__read; - wire [512:0] fifo_C_ch_result_Sextans_5__din; - wire fifo_C_ch_result_Sextans_5__full_n; - wire fifo_C_ch_result_Sextans_5__write; - wire [512:0] fifo_C_ch_result_Sextans_6__dout; - wire fifo_C_ch_result_Sextans_6__empty_n; - wire fifo_C_ch_result_Sextans_6__read; - wire [512:0] fifo_C_ch_result_Sextans_6__din; - wire fifo_C_ch_result_Sextans_6__full_n; - wire fifo_C_ch_result_Sextans_6__write; - wire [512:0] fifo_C_ch_result_Sextans_7__dout; - wire fifo_C_ch_result_Sextans_7__empty_n; - wire fifo_C_ch_result_Sextans_7__read; - wire [512:0] fifo_C_ch_result_Sextans_7__din; - wire fifo_C_ch_result_Sextans_7__full_n; - wire fifo_C_ch_result_Sextans_7__write; - wire [512:0] fifo_C_ch_result_alpha_Sextans_0__dout; - wire fifo_C_ch_result_alpha_Sextans_0__empty_n; - wire fifo_C_ch_result_alpha_Sextans_0__read; - wire [512:0] fifo_C_ch_result_alpha_Sextans_0__din; - wire fifo_C_ch_result_alpha_Sextans_0__full_n; - wire fifo_C_ch_result_alpha_Sextans_0__write; - wire [512:0] fifo_C_ch_result_alpha_Sextans_1__dout; - wire fifo_C_ch_result_alpha_Sextans_1__empty_n; - wire fifo_C_ch_result_alpha_Sextans_1__read; - wire [512:0] fifo_C_ch_result_alpha_Sextans_1__din; - wire fifo_C_ch_result_alpha_Sextans_1__full_n; - wire fifo_C_ch_result_alpha_Sextans_1__write; - wire [512:0] fifo_C_ch_result_alpha_Sextans_2__dout; - wire fifo_C_ch_result_alpha_Sextans_2__empty_n; - wire fifo_C_ch_result_alpha_Sextans_2__read; - wire [512:0] fifo_C_ch_result_alpha_Sextans_2__din; - wire fifo_C_ch_result_alpha_Sextans_2__full_n; - wire fifo_C_ch_result_alpha_Sextans_2__write; - wire [512:0] fifo_C_ch_result_alpha_Sextans_3__dout; - wire fifo_C_ch_result_alpha_Sextans_3__empty_n; - wire fifo_C_ch_result_alpha_Sextans_3__read; - wire [512:0] fifo_C_ch_result_alpha_Sextans_3__din; - wire fifo_C_ch_result_alpha_Sextans_3__full_n; - wire fifo_C_ch_result_alpha_Sextans_3__write; - wire [512:0] fifo_C_ch_result_alpha_Sextans_4__dout; - wire fifo_C_ch_result_alpha_Sextans_4__empty_n; - wire fifo_C_ch_result_alpha_Sextans_4__read; - wire [512:0] fifo_C_ch_result_alpha_Sextans_4__din; - wire fifo_C_ch_result_alpha_Sextans_4__full_n; - wire fifo_C_ch_result_alpha_Sextans_4__write; - wire [512:0] fifo_C_ch_result_alpha_Sextans_5__dout; - wire fifo_C_ch_result_alpha_Sextans_5__empty_n; - wire fifo_C_ch_result_alpha_Sextans_5__read; - wire [512:0] fifo_C_ch_result_alpha_Sextans_5__din; - wire fifo_C_ch_result_alpha_Sextans_5__full_n; - wire fifo_C_ch_result_alpha_Sextans_5__write; - wire [512:0] fifo_C_ch_result_alpha_Sextans_6__dout; - wire fifo_C_ch_result_alpha_Sextans_6__empty_n; - wire fifo_C_ch_result_alpha_Sextans_6__read; - wire [512:0] fifo_C_ch_result_alpha_Sextans_6__din; - wire fifo_C_ch_result_alpha_Sextans_6__full_n; - wire fifo_C_ch_result_alpha_Sextans_6__write; - wire [512:0] fifo_C_ch_result_alpha_Sextans_7__dout; - wire fifo_C_ch_result_alpha_Sextans_7__empty_n; - wire fifo_C_ch_result_alpha_Sextans_7__read; - wire [512:0] fifo_C_ch_result_alpha_Sextans_7__din; - wire fifo_C_ch_result_alpha_Sextans_7__full_n; - wire fifo_C_ch_result_alpha_Sextans_7__write; - wire [256:0] fifo_C_pe_Sextans_0__dout; - wire fifo_C_pe_Sextans_0__empty_n; - wire fifo_C_pe_Sextans_0__read; - wire [256:0] fifo_C_pe_Sextans_0__din; - wire fifo_C_pe_Sextans_0__full_n; - wire fifo_C_pe_Sextans_0__write; - wire [256:0] fifo_C_pe_Sextans_10__dout; - wire fifo_C_pe_Sextans_10__empty_n; - wire fifo_C_pe_Sextans_10__read; - wire [256:0] fifo_C_pe_Sextans_10__din; - wire fifo_C_pe_Sextans_10__full_n; - wire fifo_C_pe_Sextans_10__write; - wire [256:0] fifo_C_pe_Sextans_11__dout; - wire fifo_C_pe_Sextans_11__empty_n; - wire fifo_C_pe_Sextans_11__read; - wire [256:0] fifo_C_pe_Sextans_11__din; - wire fifo_C_pe_Sextans_11__full_n; - wire fifo_C_pe_Sextans_11__write; - wire [256:0] fifo_C_pe_Sextans_12__dout; - wire fifo_C_pe_Sextans_12__empty_n; - wire fifo_C_pe_Sextans_12__read; - wire [256:0] fifo_C_pe_Sextans_12__din; - wire fifo_C_pe_Sextans_12__full_n; - wire fifo_C_pe_Sextans_12__write; - wire [256:0] fifo_C_pe_Sextans_13__dout; - wire fifo_C_pe_Sextans_13__empty_n; - wire fifo_C_pe_Sextans_13__read; - wire [256:0] fifo_C_pe_Sextans_13__din; - wire fifo_C_pe_Sextans_13__full_n; - wire fifo_C_pe_Sextans_13__write; - wire [256:0] fifo_C_pe_Sextans_14__dout; - wire fifo_C_pe_Sextans_14__empty_n; - wire fifo_C_pe_Sextans_14__read; - wire [256:0] fifo_C_pe_Sextans_14__din; - wire fifo_C_pe_Sextans_14__full_n; - wire fifo_C_pe_Sextans_14__write; - wire [256:0] fifo_C_pe_Sextans_15__dout; - wire fifo_C_pe_Sextans_15__empty_n; - wire fifo_C_pe_Sextans_15__read; - wire [256:0] fifo_C_pe_Sextans_15__din; - wire fifo_C_pe_Sextans_15__full_n; - wire fifo_C_pe_Sextans_15__write; - wire [256:0] fifo_C_pe_Sextans_1__dout; - wire fifo_C_pe_Sextans_1__empty_n; - wire fifo_C_pe_Sextans_1__read; - wire [256:0] fifo_C_pe_Sextans_1__din; - wire fifo_C_pe_Sextans_1__full_n; - wire fifo_C_pe_Sextans_1__write; - wire [256:0] fifo_C_pe_Sextans_2__dout; - wire fifo_C_pe_Sextans_2__empty_n; - wire fifo_C_pe_Sextans_2__read; - wire [256:0] fifo_C_pe_Sextans_2__din; - wire fifo_C_pe_Sextans_2__full_n; - wire fifo_C_pe_Sextans_2__write; - wire [256:0] fifo_C_pe_Sextans_3__dout; - wire fifo_C_pe_Sextans_3__empty_n; - wire fifo_C_pe_Sextans_3__read; - wire [256:0] fifo_C_pe_Sextans_3__din; - wire fifo_C_pe_Sextans_3__full_n; - wire fifo_C_pe_Sextans_3__write; - wire [256:0] fifo_C_pe_Sextans_4__dout; - wire fifo_C_pe_Sextans_4__empty_n; - wire fifo_C_pe_Sextans_4__read; - wire [256:0] fifo_C_pe_Sextans_4__din; - wire fifo_C_pe_Sextans_4__full_n; - wire fifo_C_pe_Sextans_4__write; - wire [256:0] fifo_C_pe_Sextans_5__dout; - wire fifo_C_pe_Sextans_5__empty_n; - wire fifo_C_pe_Sextans_5__read; - wire [256:0] fifo_C_pe_Sextans_5__din; - wire fifo_C_pe_Sextans_5__full_n; - wire fifo_C_pe_Sextans_5__write; - wire [256:0] fifo_C_pe_Sextans_6__dout; - wire fifo_C_pe_Sextans_6__empty_n; - wire fifo_C_pe_Sextans_6__read; - wire [256:0] fifo_C_pe_Sextans_6__din; - wire fifo_C_pe_Sextans_6__full_n; - wire fifo_C_pe_Sextans_6__write; - wire [256:0] fifo_C_pe_Sextans_7__dout; - wire fifo_C_pe_Sextans_7__empty_n; - wire fifo_C_pe_Sextans_7__read; - wire [256:0] fifo_C_pe_Sextans_7__din; - wire fifo_C_pe_Sextans_7__full_n; - wire fifo_C_pe_Sextans_7__write; - wire [256:0] fifo_C_pe_Sextans_8__dout; - wire fifo_C_pe_Sextans_8__empty_n; - wire fifo_C_pe_Sextans_8__read; - wire [256:0] fifo_C_pe_Sextans_8__din; - wire fifo_C_pe_Sextans_8__full_n; - wire fifo_C_pe_Sextans_8__write; - wire [256:0] fifo_C_pe_Sextans_9__dout; - wire fifo_C_pe_Sextans_9__empty_n; - wire fifo_C_pe_Sextans_9__read; - wire [256:0] fifo_C_pe_Sextans_9__din; - wire fifo_C_pe_Sextans_9__full_n; - wire fifo_C_pe_Sextans_9__write; - wire [512:0] fifo_C_read_in_Sextans_0__dout; - wire fifo_C_read_in_Sextans_0__empty_n; - wire fifo_C_read_in_Sextans_0__read; - wire [512:0] fifo_C_read_in_Sextans_0__din; - wire fifo_C_read_in_Sextans_0__full_n; - wire fifo_C_read_in_Sextans_0__write; - wire [512:0] fifo_C_read_in_Sextans_1__dout; - wire fifo_C_read_in_Sextans_1__empty_n; - wire fifo_C_read_in_Sextans_1__read; - wire [512:0] fifo_C_read_in_Sextans_1__din; - wire fifo_C_read_in_Sextans_1__full_n; - wire fifo_C_read_in_Sextans_1__write; - wire [512:0] fifo_C_read_in_Sextans_2__dout; - wire fifo_C_read_in_Sextans_2__empty_n; - wire fifo_C_read_in_Sextans_2__read; - wire [512:0] fifo_C_read_in_Sextans_2__din; - wire fifo_C_read_in_Sextans_2__full_n; - wire fifo_C_read_in_Sextans_2__write; - wire [512:0] fifo_C_read_in_Sextans_3__dout; - wire fifo_C_read_in_Sextans_3__empty_n; - wire fifo_C_read_in_Sextans_3__read; - wire [512:0] fifo_C_read_in_Sextans_3__din; - wire fifo_C_read_in_Sextans_3__full_n; - wire fifo_C_read_in_Sextans_3__write; - wire [512:0] fifo_C_read_in_Sextans_4__dout; - wire fifo_C_read_in_Sextans_4__empty_n; - wire fifo_C_read_in_Sextans_4__read; - wire [512:0] fifo_C_read_in_Sextans_4__din; - wire fifo_C_read_in_Sextans_4__full_n; - wire fifo_C_read_in_Sextans_4__write; - wire [512:0] fifo_C_read_in_Sextans_5__dout; - wire fifo_C_read_in_Sextans_5__empty_n; - wire fifo_C_read_in_Sextans_5__read; - wire [512:0] fifo_C_read_in_Sextans_5__din; - wire fifo_C_read_in_Sextans_5__full_n; - wire fifo_C_read_in_Sextans_5__write; - wire [512:0] fifo_C_read_in_Sextans_6__dout; - wire fifo_C_read_in_Sextans_6__empty_n; - wire fifo_C_read_in_Sextans_6__read; - wire [512:0] fifo_C_read_in_Sextans_6__din; - wire fifo_C_read_in_Sextans_6__full_n; - wire fifo_C_read_in_Sextans_6__write; - wire [512:0] fifo_C_read_in_Sextans_7__dout; - wire fifo_C_read_in_Sextans_7__empty_n; - wire fifo_C_read_in_Sextans_7__read; - wire [512:0] fifo_C_read_in_Sextans_7__din; - wire fifo_C_read_in_Sextans_7__full_n; - wire fifo_C_read_in_Sextans_7__write; - wire [512:0] fifo_C_read_in_beta_Sextans_0__dout; - wire fifo_C_read_in_beta_Sextans_0__empty_n; - wire fifo_C_read_in_beta_Sextans_0__read; - wire [512:0] fifo_C_read_in_beta_Sextans_0__din; - wire fifo_C_read_in_beta_Sextans_0__full_n; - wire fifo_C_read_in_beta_Sextans_0__write; - wire [512:0] fifo_C_read_in_beta_Sextans_1__dout; - wire fifo_C_read_in_beta_Sextans_1__empty_n; - wire fifo_C_read_in_beta_Sextans_1__read; - wire [512:0] fifo_C_read_in_beta_Sextans_1__din; - wire fifo_C_read_in_beta_Sextans_1__full_n; - wire fifo_C_read_in_beta_Sextans_1__write; - wire [512:0] fifo_C_read_in_beta_Sextans_2__dout; - wire fifo_C_read_in_beta_Sextans_2__empty_n; - wire fifo_C_read_in_beta_Sextans_2__read; - wire [512:0] fifo_C_read_in_beta_Sextans_2__din; - wire fifo_C_read_in_beta_Sextans_2__full_n; - wire fifo_C_read_in_beta_Sextans_2__write; - wire [512:0] fifo_C_read_in_beta_Sextans_3__dout; - wire fifo_C_read_in_beta_Sextans_3__empty_n; - wire fifo_C_read_in_beta_Sextans_3__read; - wire [512:0] fifo_C_read_in_beta_Sextans_3__din; - wire fifo_C_read_in_beta_Sextans_3__full_n; - wire fifo_C_read_in_beta_Sextans_3__write; - wire [512:0] fifo_C_read_in_beta_Sextans_4__dout; - wire fifo_C_read_in_beta_Sextans_4__empty_n; - wire fifo_C_read_in_beta_Sextans_4__read; - wire [512:0] fifo_C_read_in_beta_Sextans_4__din; - wire fifo_C_read_in_beta_Sextans_4__full_n; - wire fifo_C_read_in_beta_Sextans_4__write; - wire [512:0] fifo_C_read_in_beta_Sextans_5__dout; - wire fifo_C_read_in_beta_Sextans_5__empty_n; - wire fifo_C_read_in_beta_Sextans_5__read; - wire [512:0] fifo_C_read_in_beta_Sextans_5__din; - wire fifo_C_read_in_beta_Sextans_5__full_n; - wire fifo_C_read_in_beta_Sextans_5__write; - wire [512:0] fifo_C_read_in_beta_Sextans_6__dout; - wire fifo_C_read_in_beta_Sextans_6__empty_n; - wire fifo_C_read_in_beta_Sextans_6__read; - wire [512:0] fifo_C_read_in_beta_Sextans_6__din; - wire fifo_C_read_in_beta_Sextans_6__full_n; - wire fifo_C_read_in_beta_Sextans_6__write; - wire [512:0] fifo_C_read_in_beta_Sextans_7__dout; - wire fifo_C_read_in_beta_Sextans_7__empty_n; - wire fifo_C_read_in_beta_Sextans_7__read; - wire [512:0] fifo_C_read_in_beta_Sextans_7__din; - wire fifo_C_read_in_beta_Sextans_7__full_n; - wire fifo_C_read_in_beta_Sextans_7__write; - wire [274:0] fifo_aBvec_Sextans_0__dout; - wire fifo_aBvec_Sextans_0__empty_n; - wire fifo_aBvec_Sextans_0__read; - wire [274:0] fifo_aBvec_Sextans_0__din; - wire fifo_aBvec_Sextans_0__full_n; - wire fifo_aBvec_Sextans_0__write; - wire [274:0] fifo_aBvec_Sextans_10__dout; - wire fifo_aBvec_Sextans_10__empty_n; - wire fifo_aBvec_Sextans_10__read; - wire [274:0] fifo_aBvec_Sextans_10__din; - wire fifo_aBvec_Sextans_10__full_n; - wire fifo_aBvec_Sextans_10__write; - wire [274:0] fifo_aBvec_Sextans_11__dout; - wire fifo_aBvec_Sextans_11__empty_n; - wire fifo_aBvec_Sextans_11__read; - wire [274:0] fifo_aBvec_Sextans_11__din; - wire fifo_aBvec_Sextans_11__full_n; - wire fifo_aBvec_Sextans_11__write; - wire [274:0] fifo_aBvec_Sextans_12__dout; - wire fifo_aBvec_Sextans_12__empty_n; - wire fifo_aBvec_Sextans_12__read; - wire [274:0] fifo_aBvec_Sextans_12__din; - wire fifo_aBvec_Sextans_12__full_n; - wire fifo_aBvec_Sextans_12__write; - wire [274:0] fifo_aBvec_Sextans_13__dout; - wire fifo_aBvec_Sextans_13__empty_n; - wire fifo_aBvec_Sextans_13__read; - wire [274:0] fifo_aBvec_Sextans_13__din; - wire fifo_aBvec_Sextans_13__full_n; - wire fifo_aBvec_Sextans_13__write; - wire [274:0] fifo_aBvec_Sextans_14__dout; - wire fifo_aBvec_Sextans_14__empty_n; - wire fifo_aBvec_Sextans_14__read; - wire [274:0] fifo_aBvec_Sextans_14__din; - wire fifo_aBvec_Sextans_14__full_n; - wire fifo_aBvec_Sextans_14__write; - wire [274:0] fifo_aBvec_Sextans_15__dout; - wire fifo_aBvec_Sextans_15__empty_n; - wire fifo_aBvec_Sextans_15__read; - wire [274:0] fifo_aBvec_Sextans_15__din; - wire fifo_aBvec_Sextans_15__full_n; - wire fifo_aBvec_Sextans_15__write; - wire [274:0] fifo_aBvec_Sextans_16__dout; - wire fifo_aBvec_Sextans_16__empty_n; - wire fifo_aBvec_Sextans_16__read; - wire [274:0] fifo_aBvec_Sextans_16__din; - wire fifo_aBvec_Sextans_16__full_n; - wire fifo_aBvec_Sextans_16__write; - wire [274:0] fifo_aBvec_Sextans_17__dout; - wire fifo_aBvec_Sextans_17__empty_n; - wire fifo_aBvec_Sextans_17__read; - wire [274:0] fifo_aBvec_Sextans_17__din; - wire fifo_aBvec_Sextans_17__full_n; - wire fifo_aBvec_Sextans_17__write; - wire [274:0] fifo_aBvec_Sextans_18__dout; - wire fifo_aBvec_Sextans_18__empty_n; - wire fifo_aBvec_Sextans_18__read; - wire [274:0] fifo_aBvec_Sextans_18__din; - wire fifo_aBvec_Sextans_18__full_n; - wire fifo_aBvec_Sextans_18__write; - wire [274:0] fifo_aBvec_Sextans_19__dout; - wire fifo_aBvec_Sextans_19__empty_n; - wire fifo_aBvec_Sextans_19__read; - wire [274:0] fifo_aBvec_Sextans_19__din; - wire fifo_aBvec_Sextans_19__full_n; - wire fifo_aBvec_Sextans_19__write; - wire [274:0] fifo_aBvec_Sextans_1__dout; - wire fifo_aBvec_Sextans_1__empty_n; - wire fifo_aBvec_Sextans_1__read; - wire [274:0] fifo_aBvec_Sextans_1__din; - wire fifo_aBvec_Sextans_1__full_n; - wire fifo_aBvec_Sextans_1__write; - wire [274:0] fifo_aBvec_Sextans_20__dout; - wire fifo_aBvec_Sextans_20__empty_n; - wire fifo_aBvec_Sextans_20__read; - wire [274:0] fifo_aBvec_Sextans_20__din; - wire fifo_aBvec_Sextans_20__full_n; - wire fifo_aBvec_Sextans_20__write; - wire [274:0] fifo_aBvec_Sextans_21__dout; - wire fifo_aBvec_Sextans_21__empty_n; - wire fifo_aBvec_Sextans_21__read; - wire [274:0] fifo_aBvec_Sextans_21__din; - wire fifo_aBvec_Sextans_21__full_n; - wire fifo_aBvec_Sextans_21__write; - wire [274:0] fifo_aBvec_Sextans_22__dout; - wire fifo_aBvec_Sextans_22__empty_n; - wire fifo_aBvec_Sextans_22__read; - wire [274:0] fifo_aBvec_Sextans_22__din; - wire fifo_aBvec_Sextans_22__full_n; - wire fifo_aBvec_Sextans_22__write; - wire [274:0] fifo_aBvec_Sextans_23__dout; - wire fifo_aBvec_Sextans_23__empty_n; - wire fifo_aBvec_Sextans_23__read; - wire [274:0] fifo_aBvec_Sextans_23__din; - wire fifo_aBvec_Sextans_23__full_n; - wire fifo_aBvec_Sextans_23__write; - wire [274:0] fifo_aBvec_Sextans_24__dout; - wire fifo_aBvec_Sextans_24__empty_n; - wire fifo_aBvec_Sextans_24__read; - wire [274:0] fifo_aBvec_Sextans_24__din; - wire fifo_aBvec_Sextans_24__full_n; - wire fifo_aBvec_Sextans_24__write; - wire [274:0] fifo_aBvec_Sextans_25__dout; - wire fifo_aBvec_Sextans_25__empty_n; - wire fifo_aBvec_Sextans_25__read; - wire [274:0] fifo_aBvec_Sextans_25__din; - wire fifo_aBvec_Sextans_25__full_n; - wire fifo_aBvec_Sextans_25__write; - wire [274:0] fifo_aBvec_Sextans_26__dout; - wire fifo_aBvec_Sextans_26__empty_n; - wire fifo_aBvec_Sextans_26__read; - wire [274:0] fifo_aBvec_Sextans_26__din; - wire fifo_aBvec_Sextans_26__full_n; - wire fifo_aBvec_Sextans_26__write; - wire [274:0] fifo_aBvec_Sextans_27__dout; - wire fifo_aBvec_Sextans_27__empty_n; - wire fifo_aBvec_Sextans_27__read; - wire [274:0] fifo_aBvec_Sextans_27__din; - wire fifo_aBvec_Sextans_27__full_n; - wire fifo_aBvec_Sextans_27__write; - wire [274:0] fifo_aBvec_Sextans_28__dout; - wire fifo_aBvec_Sextans_28__empty_n; - wire fifo_aBvec_Sextans_28__read; - wire [274:0] fifo_aBvec_Sextans_28__din; - wire fifo_aBvec_Sextans_28__full_n; - wire fifo_aBvec_Sextans_28__write; - wire [274:0] fifo_aBvec_Sextans_29__dout; - wire fifo_aBvec_Sextans_29__empty_n; - wire fifo_aBvec_Sextans_29__read; - wire [274:0] fifo_aBvec_Sextans_29__din; - wire fifo_aBvec_Sextans_29__full_n; - wire fifo_aBvec_Sextans_29__write; - wire [274:0] fifo_aBvec_Sextans_2__dout; - wire fifo_aBvec_Sextans_2__empty_n; - wire fifo_aBvec_Sextans_2__read; - wire [274:0] fifo_aBvec_Sextans_2__din; - wire fifo_aBvec_Sextans_2__full_n; - wire fifo_aBvec_Sextans_2__write; - wire [274:0] fifo_aBvec_Sextans_30__dout; - wire fifo_aBvec_Sextans_30__empty_n; - wire fifo_aBvec_Sextans_30__read; - wire [274:0] fifo_aBvec_Sextans_30__din; - wire fifo_aBvec_Sextans_30__full_n; - wire fifo_aBvec_Sextans_30__write; - wire [274:0] fifo_aBvec_Sextans_31__dout; - wire fifo_aBvec_Sextans_31__empty_n; - wire fifo_aBvec_Sextans_31__read; - wire [274:0] fifo_aBvec_Sextans_31__din; - wire fifo_aBvec_Sextans_31__full_n; - wire fifo_aBvec_Sextans_31__write; - wire [274:0] fifo_aBvec_Sextans_32__dout; - wire fifo_aBvec_Sextans_32__empty_n; - wire fifo_aBvec_Sextans_32__read; - wire [274:0] fifo_aBvec_Sextans_32__din; - wire fifo_aBvec_Sextans_32__full_n; - wire fifo_aBvec_Sextans_32__write; - wire [274:0] fifo_aBvec_Sextans_33__dout; - wire fifo_aBvec_Sextans_33__empty_n; - wire fifo_aBvec_Sextans_33__read; - wire [274:0] fifo_aBvec_Sextans_33__din; - wire fifo_aBvec_Sextans_33__full_n; - wire fifo_aBvec_Sextans_33__write; - wire [274:0] fifo_aBvec_Sextans_34__dout; - wire fifo_aBvec_Sextans_34__empty_n; - wire fifo_aBvec_Sextans_34__read; - wire [274:0] fifo_aBvec_Sextans_34__din; - wire fifo_aBvec_Sextans_34__full_n; - wire fifo_aBvec_Sextans_34__write; - wire [274:0] fifo_aBvec_Sextans_35__dout; - wire fifo_aBvec_Sextans_35__empty_n; - wire fifo_aBvec_Sextans_35__read; - wire [274:0] fifo_aBvec_Sextans_35__din; - wire fifo_aBvec_Sextans_35__full_n; - wire fifo_aBvec_Sextans_35__write; - wire [274:0] fifo_aBvec_Sextans_36__dout; - wire fifo_aBvec_Sextans_36__empty_n; - wire fifo_aBvec_Sextans_36__read; - wire [274:0] fifo_aBvec_Sextans_36__din; - wire fifo_aBvec_Sextans_36__full_n; - wire fifo_aBvec_Sextans_36__write; - wire [274:0] fifo_aBvec_Sextans_37__dout; - wire fifo_aBvec_Sextans_37__empty_n; - wire fifo_aBvec_Sextans_37__read; - wire [274:0] fifo_aBvec_Sextans_37__din; - wire fifo_aBvec_Sextans_37__full_n; - wire fifo_aBvec_Sextans_37__write; - wire [274:0] fifo_aBvec_Sextans_38__dout; - wire fifo_aBvec_Sextans_38__empty_n; - wire fifo_aBvec_Sextans_38__read; - wire [274:0] fifo_aBvec_Sextans_38__din; - wire fifo_aBvec_Sextans_38__full_n; - wire fifo_aBvec_Sextans_38__write; - wire [274:0] fifo_aBvec_Sextans_39__dout; - wire fifo_aBvec_Sextans_39__empty_n; - wire fifo_aBvec_Sextans_39__read; - wire [274:0] fifo_aBvec_Sextans_39__din; - wire fifo_aBvec_Sextans_39__full_n; - wire fifo_aBvec_Sextans_39__write; - wire [274:0] fifo_aBvec_Sextans_3__dout; - wire fifo_aBvec_Sextans_3__empty_n; - wire fifo_aBvec_Sextans_3__read; - wire [274:0] fifo_aBvec_Sextans_3__din; - wire fifo_aBvec_Sextans_3__full_n; - wire fifo_aBvec_Sextans_3__write; - wire [274:0] fifo_aBvec_Sextans_40__dout; - wire fifo_aBvec_Sextans_40__empty_n; - wire fifo_aBvec_Sextans_40__read; - wire [274:0] fifo_aBvec_Sextans_40__din; - wire fifo_aBvec_Sextans_40__full_n; - wire fifo_aBvec_Sextans_40__write; - wire [274:0] fifo_aBvec_Sextans_41__dout; - wire fifo_aBvec_Sextans_41__empty_n; - wire fifo_aBvec_Sextans_41__read; - wire [274:0] fifo_aBvec_Sextans_41__din; - wire fifo_aBvec_Sextans_41__full_n; - wire fifo_aBvec_Sextans_41__write; - wire [274:0] fifo_aBvec_Sextans_42__dout; - wire fifo_aBvec_Sextans_42__empty_n; - wire fifo_aBvec_Sextans_42__read; - wire [274:0] fifo_aBvec_Sextans_42__din; - wire fifo_aBvec_Sextans_42__full_n; - wire fifo_aBvec_Sextans_42__write; - wire [274:0] fifo_aBvec_Sextans_43__dout; - wire fifo_aBvec_Sextans_43__empty_n; - wire fifo_aBvec_Sextans_43__read; - wire [274:0] fifo_aBvec_Sextans_43__din; - wire fifo_aBvec_Sextans_43__full_n; - wire fifo_aBvec_Sextans_43__write; - wire [274:0] fifo_aBvec_Sextans_44__dout; - wire fifo_aBvec_Sextans_44__empty_n; - wire fifo_aBvec_Sextans_44__read; - wire [274:0] fifo_aBvec_Sextans_44__din; - wire fifo_aBvec_Sextans_44__full_n; - wire fifo_aBvec_Sextans_44__write; - wire [274:0] fifo_aBvec_Sextans_45__dout; - wire fifo_aBvec_Sextans_45__empty_n; - wire fifo_aBvec_Sextans_45__read; - wire [274:0] fifo_aBvec_Sextans_45__din; - wire fifo_aBvec_Sextans_45__full_n; - wire fifo_aBvec_Sextans_45__write; - wire [274:0] fifo_aBvec_Sextans_46__dout; - wire fifo_aBvec_Sextans_46__empty_n; - wire fifo_aBvec_Sextans_46__read; - wire [274:0] fifo_aBvec_Sextans_46__din; - wire fifo_aBvec_Sextans_46__full_n; - wire fifo_aBvec_Sextans_46__write; - wire [274:0] fifo_aBvec_Sextans_47__dout; - wire fifo_aBvec_Sextans_47__empty_n; - wire fifo_aBvec_Sextans_47__read; - wire [274:0] fifo_aBvec_Sextans_47__din; - wire fifo_aBvec_Sextans_47__full_n; - wire fifo_aBvec_Sextans_47__write; - wire [274:0] fifo_aBvec_Sextans_48__dout; - wire fifo_aBvec_Sextans_48__empty_n; - wire fifo_aBvec_Sextans_48__read; - wire [274:0] fifo_aBvec_Sextans_48__din; - wire fifo_aBvec_Sextans_48__full_n; - wire fifo_aBvec_Sextans_48__write; - wire [274:0] fifo_aBvec_Sextans_49__dout; - wire fifo_aBvec_Sextans_49__empty_n; - wire fifo_aBvec_Sextans_49__read; - wire [274:0] fifo_aBvec_Sextans_49__din; - wire fifo_aBvec_Sextans_49__full_n; - wire fifo_aBvec_Sextans_49__write; - wire [274:0] fifo_aBvec_Sextans_4__dout; - wire fifo_aBvec_Sextans_4__empty_n; - wire fifo_aBvec_Sextans_4__read; - wire [274:0] fifo_aBvec_Sextans_4__din; - wire fifo_aBvec_Sextans_4__full_n; - wire fifo_aBvec_Sextans_4__write; - wire [274:0] fifo_aBvec_Sextans_50__dout; - wire fifo_aBvec_Sextans_50__empty_n; - wire fifo_aBvec_Sextans_50__read; - wire [274:0] fifo_aBvec_Sextans_50__din; - wire fifo_aBvec_Sextans_50__full_n; - wire fifo_aBvec_Sextans_50__write; - wire [274:0] fifo_aBvec_Sextans_51__dout; - wire fifo_aBvec_Sextans_51__empty_n; - wire fifo_aBvec_Sextans_51__read; - wire [274:0] fifo_aBvec_Sextans_51__din; - wire fifo_aBvec_Sextans_51__full_n; - wire fifo_aBvec_Sextans_51__write; - wire [274:0] fifo_aBvec_Sextans_52__dout; - wire fifo_aBvec_Sextans_52__empty_n; - wire fifo_aBvec_Sextans_52__read; - wire [274:0] fifo_aBvec_Sextans_52__din; - wire fifo_aBvec_Sextans_52__full_n; - wire fifo_aBvec_Sextans_52__write; - wire [274:0] fifo_aBvec_Sextans_53__dout; - wire fifo_aBvec_Sextans_53__empty_n; - wire fifo_aBvec_Sextans_53__read; - wire [274:0] fifo_aBvec_Sextans_53__din; - wire fifo_aBvec_Sextans_53__full_n; - wire fifo_aBvec_Sextans_53__write; - wire [274:0] fifo_aBvec_Sextans_54__dout; - wire fifo_aBvec_Sextans_54__empty_n; - wire fifo_aBvec_Sextans_54__read; - wire [274:0] fifo_aBvec_Sextans_54__din; - wire fifo_aBvec_Sextans_54__full_n; - wire fifo_aBvec_Sextans_54__write; - wire [274:0] fifo_aBvec_Sextans_55__dout; - wire fifo_aBvec_Sextans_55__empty_n; - wire fifo_aBvec_Sextans_55__read; - wire [274:0] fifo_aBvec_Sextans_55__din; - wire fifo_aBvec_Sextans_55__full_n; - wire fifo_aBvec_Sextans_55__write; - wire [274:0] fifo_aBvec_Sextans_56__dout; - wire fifo_aBvec_Sextans_56__empty_n; - wire fifo_aBvec_Sextans_56__read; - wire [274:0] fifo_aBvec_Sextans_56__din; - wire fifo_aBvec_Sextans_56__full_n; - wire fifo_aBvec_Sextans_56__write; - wire [274:0] fifo_aBvec_Sextans_57__dout; - wire fifo_aBvec_Sextans_57__empty_n; - wire fifo_aBvec_Sextans_57__read; - wire [274:0] fifo_aBvec_Sextans_57__din; - wire fifo_aBvec_Sextans_57__full_n; - wire fifo_aBvec_Sextans_57__write; - wire [274:0] fifo_aBvec_Sextans_58__dout; - wire fifo_aBvec_Sextans_58__empty_n; - wire fifo_aBvec_Sextans_58__read; - wire [274:0] fifo_aBvec_Sextans_58__din; - wire fifo_aBvec_Sextans_58__full_n; - wire fifo_aBvec_Sextans_58__write; - wire [274:0] fifo_aBvec_Sextans_59__dout; - wire fifo_aBvec_Sextans_59__empty_n; - wire fifo_aBvec_Sextans_59__read; - wire [274:0] fifo_aBvec_Sextans_59__din; - wire fifo_aBvec_Sextans_59__full_n; - wire fifo_aBvec_Sextans_59__write; - wire [274:0] fifo_aBvec_Sextans_5__dout; - wire fifo_aBvec_Sextans_5__empty_n; - wire fifo_aBvec_Sextans_5__read; - wire [274:0] fifo_aBvec_Sextans_5__din; - wire fifo_aBvec_Sextans_5__full_n; - wire fifo_aBvec_Sextans_5__write; - wire [274:0] fifo_aBvec_Sextans_60__dout; - wire fifo_aBvec_Sextans_60__empty_n; - wire fifo_aBvec_Sextans_60__read; - wire [274:0] fifo_aBvec_Sextans_60__din; - wire fifo_aBvec_Sextans_60__full_n; - wire fifo_aBvec_Sextans_60__write; - wire [274:0] fifo_aBvec_Sextans_61__dout; - wire fifo_aBvec_Sextans_61__empty_n; - wire fifo_aBvec_Sextans_61__read; - wire [274:0] fifo_aBvec_Sextans_61__din; - wire fifo_aBvec_Sextans_61__full_n; - wire fifo_aBvec_Sextans_61__write; - wire [274:0] fifo_aBvec_Sextans_62__dout; - wire fifo_aBvec_Sextans_62__empty_n; - wire fifo_aBvec_Sextans_62__read; - wire [274:0] fifo_aBvec_Sextans_62__din; - wire fifo_aBvec_Sextans_62__full_n; - wire fifo_aBvec_Sextans_62__write; - wire [274:0] fifo_aBvec_Sextans_63__dout; - wire fifo_aBvec_Sextans_63__empty_n; - wire fifo_aBvec_Sextans_63__read; - wire [274:0] fifo_aBvec_Sextans_63__din; - wire fifo_aBvec_Sextans_63__full_n; - wire fifo_aBvec_Sextans_63__write; - wire [274:0] fifo_aBvec_Sextans_6__dout; - wire fifo_aBvec_Sextans_6__empty_n; - wire fifo_aBvec_Sextans_6__read; - wire [274:0] fifo_aBvec_Sextans_6__din; - wire fifo_aBvec_Sextans_6__full_n; - wire fifo_aBvec_Sextans_6__write; - wire [274:0] fifo_aBvec_Sextans_7__dout; - wire fifo_aBvec_Sextans_7__empty_n; - wire fifo_aBvec_Sextans_7__read; - wire [274:0] fifo_aBvec_Sextans_7__din; - wire fifo_aBvec_Sextans_7__full_n; - wire fifo_aBvec_Sextans_7__write; - wire [274:0] fifo_aBvec_Sextans_8__dout; - wire fifo_aBvec_Sextans_8__empty_n; - wire fifo_aBvec_Sextans_8__read; - wire [274:0] fifo_aBvec_Sextans_8__din; - wire fifo_aBvec_Sextans_8__full_n; - wire fifo_aBvec_Sextans_8__write; - wire [274:0] fifo_aBvec_Sextans_9__dout; - wire fifo_aBvec_Sextans_9__empty_n; - wire fifo_aBvec_Sextans_9__read; - wire [274:0] fifo_aBvec_Sextans_9__din; - wire fifo_aBvec_Sextans_9__full_n; - wire fifo_aBvec_Sextans_9__write; - wire [32:0] fifo_edge_list_ptr_Sextans_0__dout; - wire fifo_edge_list_ptr_Sextans_0__empty_n; - wire fifo_edge_list_ptr_Sextans_0__read; - wire [32:0] fifo_edge_list_ptr_Sextans_0__din; - wire fifo_edge_list_ptr_Sextans_0__full_n; - wire fifo_edge_list_ptr_Sextans_0__write; - wire [32:0] fifo_edge_list_ptr_Sextans_10__dout; - wire fifo_edge_list_ptr_Sextans_10__empty_n; - wire fifo_edge_list_ptr_Sextans_10__read; - wire [32:0] fifo_edge_list_ptr_Sextans_10__din; - wire fifo_edge_list_ptr_Sextans_10__full_n; - wire fifo_edge_list_ptr_Sextans_10__write; - wire [32:0] fifo_edge_list_ptr_Sextans_11__dout; - wire fifo_edge_list_ptr_Sextans_11__empty_n; - wire fifo_edge_list_ptr_Sextans_11__read; - wire [32:0] fifo_edge_list_ptr_Sextans_11__din; - wire fifo_edge_list_ptr_Sextans_11__full_n; - wire fifo_edge_list_ptr_Sextans_11__write; - wire [32:0] fifo_edge_list_ptr_Sextans_12__dout; - wire fifo_edge_list_ptr_Sextans_12__empty_n; - wire fifo_edge_list_ptr_Sextans_12__read; - wire [32:0] fifo_edge_list_ptr_Sextans_12__din; - wire fifo_edge_list_ptr_Sextans_12__full_n; - wire fifo_edge_list_ptr_Sextans_12__write; - wire [32:0] fifo_edge_list_ptr_Sextans_13__dout; - wire fifo_edge_list_ptr_Sextans_13__empty_n; - wire fifo_edge_list_ptr_Sextans_13__read; - wire [32:0] fifo_edge_list_ptr_Sextans_13__din; - wire fifo_edge_list_ptr_Sextans_13__full_n; - wire fifo_edge_list_ptr_Sextans_13__write; - wire [32:0] fifo_edge_list_ptr_Sextans_14__dout; - wire fifo_edge_list_ptr_Sextans_14__empty_n; - wire fifo_edge_list_ptr_Sextans_14__read; - wire [32:0] fifo_edge_list_ptr_Sextans_14__din; - wire fifo_edge_list_ptr_Sextans_14__full_n; - wire fifo_edge_list_ptr_Sextans_14__write; - wire [32:0] fifo_edge_list_ptr_Sextans_15__dout; - wire fifo_edge_list_ptr_Sextans_15__empty_n; - wire fifo_edge_list_ptr_Sextans_15__read; - wire [32:0] fifo_edge_list_ptr_Sextans_15__din; - wire fifo_edge_list_ptr_Sextans_15__full_n; - wire fifo_edge_list_ptr_Sextans_15__write; - wire [32:0] fifo_edge_list_ptr_Sextans_16__dout; - wire fifo_edge_list_ptr_Sextans_16__empty_n; - wire fifo_edge_list_ptr_Sextans_16__read; - wire [32:0] fifo_edge_list_ptr_Sextans_16__din; - wire fifo_edge_list_ptr_Sextans_16__full_n; - wire fifo_edge_list_ptr_Sextans_16__write; - wire [32:0] fifo_edge_list_ptr_Sextans_1__dout; - wire fifo_edge_list_ptr_Sextans_1__empty_n; - wire fifo_edge_list_ptr_Sextans_1__read; - wire [32:0] fifo_edge_list_ptr_Sextans_1__din; - wire fifo_edge_list_ptr_Sextans_1__full_n; - wire fifo_edge_list_ptr_Sextans_1__write; - wire [32:0] fifo_edge_list_ptr_Sextans_2__dout; - wire fifo_edge_list_ptr_Sextans_2__empty_n; - wire fifo_edge_list_ptr_Sextans_2__read; - wire [32:0] fifo_edge_list_ptr_Sextans_2__din; - wire fifo_edge_list_ptr_Sextans_2__full_n; - wire fifo_edge_list_ptr_Sextans_2__write; - wire [32:0] fifo_edge_list_ptr_Sextans_3__dout; - wire fifo_edge_list_ptr_Sextans_3__empty_n; - wire fifo_edge_list_ptr_Sextans_3__read; - wire [32:0] fifo_edge_list_ptr_Sextans_3__din; - wire fifo_edge_list_ptr_Sextans_3__full_n; - wire fifo_edge_list_ptr_Sextans_3__write; - wire [32:0] fifo_edge_list_ptr_Sextans_4__dout; - wire fifo_edge_list_ptr_Sextans_4__empty_n; - wire fifo_edge_list_ptr_Sextans_4__read; - wire [32:0] fifo_edge_list_ptr_Sextans_4__din; - wire fifo_edge_list_ptr_Sextans_4__full_n; - wire fifo_edge_list_ptr_Sextans_4__write; - wire [32:0] fifo_edge_list_ptr_Sextans_5__dout; - wire fifo_edge_list_ptr_Sextans_5__empty_n; - wire fifo_edge_list_ptr_Sextans_5__read; - wire [32:0] fifo_edge_list_ptr_Sextans_5__din; - wire fifo_edge_list_ptr_Sextans_5__full_n; - wire fifo_edge_list_ptr_Sextans_5__write; - wire [32:0] fifo_edge_list_ptr_Sextans_6__dout; - wire fifo_edge_list_ptr_Sextans_6__empty_n; - wire fifo_edge_list_ptr_Sextans_6__read; - wire [32:0] fifo_edge_list_ptr_Sextans_6__din; - wire fifo_edge_list_ptr_Sextans_6__full_n; - wire fifo_edge_list_ptr_Sextans_6__write; - wire [32:0] fifo_edge_list_ptr_Sextans_7__dout; - wire fifo_edge_list_ptr_Sextans_7__empty_n; - wire fifo_edge_list_ptr_Sextans_7__read; - wire [32:0] fifo_edge_list_ptr_Sextans_7__din; - wire fifo_edge_list_ptr_Sextans_7__full_n; - wire fifo_edge_list_ptr_Sextans_7__write; - wire [32:0] fifo_edge_list_ptr_Sextans_8__dout; - wire fifo_edge_list_ptr_Sextans_8__empty_n; - wire fifo_edge_list_ptr_Sextans_8__read; - wire [32:0] fifo_edge_list_ptr_Sextans_8__din; - wire fifo_edge_list_ptr_Sextans_8__full_n; - wire fifo_edge_list_ptr_Sextans_8__write; - wire [32:0] fifo_edge_list_ptr_Sextans_9__dout; - wire fifo_edge_list_ptr_Sextans_9__empty_n; - wire fifo_edge_list_ptr_Sextans_9__read; - wire [32:0] fifo_edge_list_ptr_Sextans_9__din; - wire fifo_edge_list_ptr_Sextans_9__full_n; - wire fifo_edge_list_ptr_Sextans_9__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_0__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_0__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_0__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_0__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_0__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_0__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_10__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_10__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_10__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_10__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_10__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_10__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_11__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_11__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_11__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_11__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_11__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_11__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_12__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_12__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_12__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_12__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_12__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_12__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_13__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_13__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_13__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_13__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_13__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_13__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_14__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_14__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_14__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_14__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_14__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_14__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_15__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_15__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_15__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_15__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_15__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_15__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_1__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_1__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_1__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_1__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_1__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_1__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_2__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_2__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_2__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_2__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_2__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_2__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_3__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_3__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_3__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_3__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_3__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_3__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_4__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_4__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_4__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_4__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_4__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_4__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_5__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_5__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_5__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_5__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_5__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_5__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_6__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_6__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_6__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_6__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_6__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_6__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_7__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_7__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_7__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_7__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_7__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_7__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_8__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_8__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_8__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_8__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_8__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_8__write; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_9__dout; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_9__empty_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_9__read; - wire [32:0] fifo_edge_list_ptr_to_Cmtx_Sextans_9__din; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_9__full_n; - wire fifo_edge_list_ptr_to_Cmtx_Sextans_9__write; - wire [32:0] wrC_inst_Sextans_0__dout; - wire wrC_inst_Sextans_0__empty_n; - wire wrC_inst_Sextans_0__read; - wire [32:0] wrC_inst_Sextans_0__din; - wire wrC_inst_Sextans_0__full_n; - wire wrC_inst_Sextans_0__write; - wire [32:0] wrC_inst_Sextans_1__dout; - wire wrC_inst_Sextans_1__empty_n; - wire wrC_inst_Sextans_1__read; - wire [32:0] wrC_inst_Sextans_1__din; - wire wrC_inst_Sextans_1__full_n; - wire wrC_inst_Sextans_1__write; - wire [32:0] wrC_inst_Sextans_2__dout; - wire wrC_inst_Sextans_2__empty_n; - wire wrC_inst_Sextans_2__read; - wire [32:0] wrC_inst_Sextans_2__din; - wire wrC_inst_Sextans_2__full_n; - wire wrC_inst_Sextans_2__write; - wire [32:0] wrC_inst_Sextans_3__dout; - wire wrC_inst_Sextans_3__empty_n; - wire wrC_inst_Sextans_3__read; - wire [32:0] wrC_inst_Sextans_3__din; - wire wrC_inst_Sextans_3__full_n; - wire wrC_inst_Sextans_3__write; - wire [32:0] wrC_inst_Sextans_4__dout; - wire wrC_inst_Sextans_4__empty_n; - wire wrC_inst_Sextans_4__read; - wire [32:0] wrC_inst_Sextans_4__din; - wire wrC_inst_Sextans_4__full_n; - wire wrC_inst_Sextans_4__write; - wire [32:0] wrC_inst_Sextans_5__dout; - wire wrC_inst_Sextans_5__empty_n; - wire wrC_inst_Sextans_5__read; - wire [32:0] wrC_inst_Sextans_5__din; - wire wrC_inst_Sextans_5__full_n; - wire wrC_inst_Sextans_5__write; - wire [32:0] wrC_inst_Sextans_6__dout; - wire wrC_inst_Sextans_6__empty_n; - wire wrC_inst_Sextans_6__read; - wire [32:0] wrC_inst_Sextans_6__din; - wire wrC_inst_Sextans_6__full_n; - wire wrC_inst_Sextans_6__write; - wire [32:0] wrC_inst_Sextans_7__dout; - wire wrC_inst_Sextans_7__empty_n; - wire wrC_inst_Sextans_7__read; - wire [32:0] wrC_inst_Sextans_7__din; - wire wrC_inst_Sextans_7__full_n; - wire wrC_inst_Sextans_7__write; - wire FloatvAddFloatv_0__ap_start; - wire FloatvAddFloatv_1__ap_start; - wire FloatvAddFloatv_2__ap_start; - wire FloatvAddFloatv_3__ap_start; - wire FloatvAddFloatv_4__ap_start; - wire FloatvAddFloatv_5__ap_start; - wire FloatvAddFloatv_6__ap_start; - wire FloatvAddFloatv_7__ap_start; - wire [31:0] FloatvMultConst_0___M__q0; - wire [31:0] FloatvMultConst_0___P_N__q0; - wire [31:0] FloatvMultConst_0___beta_u__q0; - wire FloatvMultConst_0__ap_start; - wire FloatvMultConst_0__ap_ready; - wire FloatvMultConst_0__ap_done; - wire FloatvMultConst_0__ap_idle; - wire [31:0] FloatvMultConst_1___M__q0; - wire [31:0] FloatvMultConst_1___P_N__q0; - wire [31:0] FloatvMultConst_1___beta_u__q0; - wire FloatvMultConst_1__ap_start; - wire FloatvMultConst_1__ap_ready; - wire FloatvMultConst_1__ap_done; - wire FloatvMultConst_1__ap_idle; - wire [31:0] FloatvMultConst_2___M__q0; - wire [31:0] FloatvMultConst_2___P_N__q0; - wire [31:0] FloatvMultConst_2___beta_u__q0; - wire FloatvMultConst_2__ap_start; - wire FloatvMultConst_2__ap_ready; - wire FloatvMultConst_2__ap_done; - wire FloatvMultConst_2__ap_idle; - wire [31:0] FloatvMultConst_3___M__q0; - wire [31:0] FloatvMultConst_3___P_N__q0; - wire [31:0] FloatvMultConst_3___beta_u__q0; - wire FloatvMultConst_3__ap_start; - wire FloatvMultConst_3__ap_ready; - wire FloatvMultConst_3__ap_done; - wire FloatvMultConst_3__ap_idle; - wire [31:0] FloatvMultConst_4___M__q0; - wire [31:0] FloatvMultConst_4___P_N__q0; - wire [31:0] FloatvMultConst_4___beta_u__q0; - wire FloatvMultConst_4__ap_start; - wire FloatvMultConst_4__ap_ready; - wire FloatvMultConst_4__ap_done; - wire FloatvMultConst_4__ap_idle; - wire [31:0] FloatvMultConst_5___M__q0; - wire [31:0] FloatvMultConst_5___P_N__q0; - wire [31:0] FloatvMultConst_5___beta_u__q0; - wire FloatvMultConst_5__ap_start; - wire FloatvMultConst_5__ap_ready; - wire FloatvMultConst_5__ap_done; - wire FloatvMultConst_5__ap_idle; - wire [31:0] FloatvMultConst_6___M__q0; - wire [31:0] FloatvMultConst_6___P_N__q0; - wire [31:0] FloatvMultConst_6___beta_u__q0; - wire FloatvMultConst_6__ap_start; - wire FloatvMultConst_6__ap_ready; - wire FloatvMultConst_6__ap_done; - wire FloatvMultConst_6__ap_idle; - wire [31:0] FloatvMultConst_7___M__q0; - wire [31:0] FloatvMultConst_7___P_N__q0; - wire [31:0] FloatvMultConst_7___beta_u__q0; - wire FloatvMultConst_7__ap_start; - wire FloatvMultConst_7__ap_ready; - wire FloatvMultConst_7__ap_done; - wire FloatvMultConst_7__ap_idle; - wire [31:0] FloatvMultConst_8___M__q0; - wire [31:0] FloatvMultConst_8___P_N__q0; - wire [31:0] FloatvMultConst_8___alpha_u__q0; - wire FloatvMultConst_8__ap_start; - wire FloatvMultConst_8__ap_ready; - wire FloatvMultConst_8__ap_done; - wire FloatvMultConst_8__ap_idle; - wire [31:0] FloatvMultConst_9___M__q0; - wire [31:0] FloatvMultConst_9___P_N__q0; - wire [31:0] FloatvMultConst_9___alpha_u__q0; - wire FloatvMultConst_9__ap_start; - wire FloatvMultConst_9__ap_ready; - wire FloatvMultConst_9__ap_done; - wire FloatvMultConst_9__ap_idle; - wire [31:0] FloatvMultConst_10___M__q0; - wire [31:0] FloatvMultConst_10___P_N__q0; - wire [31:0] FloatvMultConst_10___alpha_u__q0; - wire FloatvMultConst_10__ap_start; - wire FloatvMultConst_10__ap_ready; - wire FloatvMultConst_10__ap_done; - wire FloatvMultConst_10__ap_idle; - wire [31:0] FloatvMultConst_11___M__q0; - wire [31:0] FloatvMultConst_11___P_N__q0; - wire [31:0] FloatvMultConst_11___alpha_u__q0; - wire FloatvMultConst_11__ap_start; - wire FloatvMultConst_11__ap_ready; - wire FloatvMultConst_11__ap_done; - wire FloatvMultConst_11__ap_idle; - wire [31:0] FloatvMultConst_12___M__q0; - wire [31:0] FloatvMultConst_12___P_N__q0; - wire [31:0] FloatvMultConst_12___alpha_u__q0; - wire FloatvMultConst_12__ap_start; - wire FloatvMultConst_12__ap_ready; - wire FloatvMultConst_12__ap_done; - wire FloatvMultConst_12__ap_idle; - wire [31:0] FloatvMultConst_13___M__q0; - wire [31:0] FloatvMultConst_13___P_N__q0; - wire [31:0] FloatvMultConst_13___alpha_u__q0; - wire FloatvMultConst_13__ap_start; - wire FloatvMultConst_13__ap_ready; - wire FloatvMultConst_13__ap_done; - wire FloatvMultConst_13__ap_idle; - wire [31:0] FloatvMultConst_14___M__q0; - wire [31:0] FloatvMultConst_14___P_N__q0; - wire [31:0] FloatvMultConst_14___alpha_u__q0; - wire FloatvMultConst_14__ap_start; - wire FloatvMultConst_14__ap_ready; - wire FloatvMultConst_14__ap_done; - wire FloatvMultConst_14__ap_idle; - wire [31:0] FloatvMultConst_15___M__q0; - wire [31:0] FloatvMultConst_15___P_N__q0; - wire [31:0] FloatvMultConst_15___alpha_u__q0; - wire FloatvMultConst_15__ap_start; - wire FloatvMultConst_15__ap_ready; - wire FloatvMultConst_15__ap_done; - wire FloatvMultConst_15__ap_idle; - wire Merger_0__ap_start; - wire Merger_1__ap_start; - wire Merger_2__ap_start; - wire Merger_3__ap_start; - wire Merger_4__ap_start; - wire Merger_5__ap_start; - wire Merger_6__ap_start; - wire Merger_7__ap_start; - wire PEG_Bmtx_0__ap_start; - wire PEG_Bmtx_0__ap_ready; - wire PEG_Bmtx_0__ap_done; - wire PEG_Bmtx_0__ap_idle; - wire PEG_Bmtx_1__ap_start; - wire PEG_Bmtx_1__ap_ready; - wire PEG_Bmtx_1__ap_done; - wire PEG_Bmtx_1__ap_idle; - wire PEG_Bmtx_2__ap_start; - wire PEG_Bmtx_2__ap_ready; - wire PEG_Bmtx_2__ap_done; - wire PEG_Bmtx_2__ap_idle; - wire PEG_Bmtx_3__ap_start; - wire PEG_Bmtx_3__ap_ready; - wire PEG_Bmtx_3__ap_done; - wire PEG_Bmtx_3__ap_idle; - wire PEG_Bmtx_4__ap_start; - wire PEG_Bmtx_4__ap_ready; - wire PEG_Bmtx_4__ap_done; - wire PEG_Bmtx_4__ap_idle; - wire PEG_Bmtx_5__ap_start; - wire PEG_Bmtx_5__ap_ready; - wire PEG_Bmtx_5__ap_done; - wire PEG_Bmtx_5__ap_idle; - wire PEG_Bmtx_6__ap_start; - wire PEG_Bmtx_6__ap_ready; - wire PEG_Bmtx_6__ap_done; - wire PEG_Bmtx_6__ap_idle; - wire PEG_Bmtx_7__ap_start; - wire PEG_Bmtx_7__ap_ready; - wire PEG_Bmtx_7__ap_done; - wire PEG_Bmtx_7__ap_idle; - wire PEG_Bmtx_8__ap_start; - wire PEG_Bmtx_8__ap_ready; - wire PEG_Bmtx_8__ap_done; - wire PEG_Bmtx_8__ap_idle; - wire PEG_Bmtx_9__ap_start; - wire PEG_Bmtx_9__ap_ready; - wire PEG_Bmtx_9__ap_done; - wire PEG_Bmtx_9__ap_idle; - wire PEG_Bmtx_10__ap_start; - wire PEG_Bmtx_10__ap_ready; - wire PEG_Bmtx_10__ap_done; - wire PEG_Bmtx_10__ap_idle; - wire PEG_Bmtx_11__ap_start; - wire PEG_Bmtx_11__ap_ready; - wire PEG_Bmtx_11__ap_done; - wire PEG_Bmtx_11__ap_idle; - wire PEG_Bmtx_12__ap_start; - wire PEG_Bmtx_12__ap_ready; - wire PEG_Bmtx_12__ap_done; - wire PEG_Bmtx_12__ap_idle; - wire PEG_Bmtx_13__ap_start; - wire PEG_Bmtx_13__ap_ready; - wire PEG_Bmtx_13__ap_done; - wire PEG_Bmtx_13__ap_idle; - wire PEG_Bmtx_14__ap_start; - wire PEG_Bmtx_14__ap_ready; - wire PEG_Bmtx_14__ap_done; - wire PEG_Bmtx_14__ap_idle; - wire PEG_Bmtx_15__ap_start; - wire PEG_Bmtx_15__ap_ready; - wire PEG_Bmtx_15__ap_done; - wire PEG_Bmtx_15__ap_idle; - wire PEG_Cmtx_0__ap_start; - wire PEG_Cmtx_0__ap_ready; - wire PEG_Cmtx_0__ap_done; - wire PEG_Cmtx_0__ap_idle; - wire PEG_Cmtx_1__ap_start; - wire PEG_Cmtx_1__ap_ready; - wire PEG_Cmtx_1__ap_done; - wire PEG_Cmtx_1__ap_idle; - wire PEG_Cmtx_2__ap_start; - wire PEG_Cmtx_2__ap_ready; - wire PEG_Cmtx_2__ap_done; - wire PEG_Cmtx_2__ap_idle; - wire PEG_Cmtx_3__ap_start; - wire PEG_Cmtx_3__ap_ready; - wire PEG_Cmtx_3__ap_done; - wire PEG_Cmtx_3__ap_idle; - wire PEG_Cmtx_4__ap_start; - wire PEG_Cmtx_4__ap_ready; - wire PEG_Cmtx_4__ap_done; - wire PEG_Cmtx_4__ap_idle; - wire PEG_Cmtx_5__ap_start; - wire PEG_Cmtx_5__ap_ready; - wire PEG_Cmtx_5__ap_done; - wire PEG_Cmtx_5__ap_idle; - wire PEG_Cmtx_6__ap_start; - wire PEG_Cmtx_6__ap_ready; - wire PEG_Cmtx_6__ap_done; - wire PEG_Cmtx_6__ap_idle; - wire PEG_Cmtx_7__ap_start; - wire PEG_Cmtx_7__ap_ready; - wire PEG_Cmtx_7__ap_done; - wire PEG_Cmtx_7__ap_idle; - wire PEG_Cmtx_8__ap_start; - wire PEG_Cmtx_8__ap_ready; - wire PEG_Cmtx_8__ap_done; - wire PEG_Cmtx_8__ap_idle; - wire PEG_Cmtx_9__ap_start; - wire PEG_Cmtx_9__ap_ready; - wire PEG_Cmtx_9__ap_done; - wire PEG_Cmtx_9__ap_idle; - wire PEG_Cmtx_10__ap_start; - wire PEG_Cmtx_10__ap_ready; - wire PEG_Cmtx_10__ap_done; - wire PEG_Cmtx_10__ap_idle; - wire PEG_Cmtx_11__ap_start; - wire PEG_Cmtx_11__ap_ready; - wire PEG_Cmtx_11__ap_done; - wire PEG_Cmtx_11__ap_idle; - wire PEG_Cmtx_12__ap_start; - wire PEG_Cmtx_12__ap_ready; - wire PEG_Cmtx_12__ap_done; - wire PEG_Cmtx_12__ap_idle; - wire PEG_Cmtx_13__ap_start; - wire PEG_Cmtx_13__ap_ready; - wire PEG_Cmtx_13__ap_done; - wire PEG_Cmtx_13__ap_idle; - wire PEG_Cmtx_14__ap_start; - wire PEG_Cmtx_14__ap_ready; - wire PEG_Cmtx_14__ap_done; - wire PEG_Cmtx_14__ap_idle; - wire PEG_Cmtx_15__ap_start; - wire PEG_Cmtx_15__ap_ready; - wire PEG_Cmtx_15__ap_done; - wire PEG_Cmtx_15__ap_idle; - wire Scatter_1_2_0__ap_start; - wire Scatter_1_2_1__ap_start; - wire Scatter_1_2_2__ap_start; - wire Scatter_1_2_3__ap_start; - wire Scatter_1_2_4__ap_start; - wire Scatter_1_2_5__ap_start; - wire Scatter_1_2_6__ap_start; - wire Scatter_1_2_7__ap_start; - wire black_hole_float_v16_0__ap_start; - wire black_hole_float_v16_1__ap_start; - wire black_hole_float_v16_2__ap_start; - wire black_hole_float_v16_3__ap_start; - wire black_hole_int_0__ap_start; - wire black_hole_int_1__ap_start; - wire [31:0] read_A_0___NUM_A_LEN__q0; - wire [31:0] read_A_0___P_N__q0; - wire [63:0] read_A_0___edge_list_ch_0__q0; - wire [63:0] edge_list_ch_0_read_addr__din; - wire edge_list_ch_0_read_addr__full_n; - wire edge_list_ch_0_read_addr__write; - wire [511:0] edge_list_ch_0_read_data__dout; - wire edge_list_ch_0_read_data__empty_n; - wire edge_list_ch_0_read_data__read; - wire [63:0] edge_list_ch_0_write_addr__din; - wire edge_list_ch_0_write_addr__full_n; - wire edge_list_ch_0_write_addr__write; - wire [511:0] edge_list_ch_0_write_data__din; - wire edge_list_ch_0_write_data__full_n; - wire edge_list_ch_0_write_data__write; - wire [7:0] edge_list_ch_0_write_resp__dout; - wire edge_list_ch_0_write_resp__empty_n; - wire edge_list_ch_0_write_resp__read; - wire read_A_0__ap_start; - wire read_A_0__ap_ready; - wire read_A_0__ap_done; - wire read_A_0__ap_idle; - wire [31:0] read_A_1___NUM_A_LEN__q0; - wire [31:0] read_A_1___P_N__q0; - wire [63:0] read_A_1___edge_list_ch_1__q0; - wire [63:0] edge_list_ch_1_read_addr__din; - wire edge_list_ch_1_read_addr__full_n; - wire edge_list_ch_1_read_addr__write; - wire [511:0] edge_list_ch_1_read_data__dout; - wire edge_list_ch_1_read_data__empty_n; - wire edge_list_ch_1_read_data__read; - wire [63:0] edge_list_ch_1_write_addr__din; - wire edge_list_ch_1_write_addr__full_n; - wire edge_list_ch_1_write_addr__write; - wire [511:0] edge_list_ch_1_write_data__din; - wire edge_list_ch_1_write_data__full_n; - wire edge_list_ch_1_write_data__write; - wire [7:0] edge_list_ch_1_write_resp__dout; - wire edge_list_ch_1_write_resp__empty_n; - wire edge_list_ch_1_write_resp__read; - wire read_A_1__ap_start; - wire read_A_1__ap_ready; - wire read_A_1__ap_done; - wire read_A_1__ap_idle; - wire [31:0] read_A_2___NUM_A_LEN__q0; - wire [31:0] read_A_2___P_N__q0; - wire [63:0] read_A_2___edge_list_ch_2__q0; - wire [63:0] edge_list_ch_2_read_addr__din; - wire edge_list_ch_2_read_addr__full_n; - wire edge_list_ch_2_read_addr__write; - wire [511:0] edge_list_ch_2_read_data__dout; - wire edge_list_ch_2_read_data__empty_n; - wire edge_list_ch_2_read_data__read; - wire [63:0] edge_list_ch_2_write_addr__din; - wire edge_list_ch_2_write_addr__full_n; - wire edge_list_ch_2_write_addr__write; - wire [511:0] edge_list_ch_2_write_data__din; - wire edge_list_ch_2_write_data__full_n; - wire edge_list_ch_2_write_data__write; - wire [7:0] edge_list_ch_2_write_resp__dout; - wire edge_list_ch_2_write_resp__empty_n; - wire edge_list_ch_2_write_resp__read; - wire read_A_2__ap_start; - wire read_A_2__ap_ready; - wire read_A_2__ap_done; - wire read_A_2__ap_idle; - wire [31:0] read_A_3___NUM_A_LEN__q0; - wire [31:0] read_A_3___P_N__q0; - wire [63:0] read_A_3___edge_list_ch_3__q0; - wire [63:0] edge_list_ch_3_read_addr__din; - wire edge_list_ch_3_read_addr__full_n; - wire edge_list_ch_3_read_addr__write; - wire [511:0] edge_list_ch_3_read_data__dout; - wire edge_list_ch_3_read_data__empty_n; - wire edge_list_ch_3_read_data__read; - wire [63:0] edge_list_ch_3_write_addr__din; - wire edge_list_ch_3_write_addr__full_n; - wire edge_list_ch_3_write_addr__write; - wire [511:0] edge_list_ch_3_write_data__din; - wire edge_list_ch_3_write_data__full_n; - wire edge_list_ch_3_write_data__write; - wire [7:0] edge_list_ch_3_write_resp__dout; - wire edge_list_ch_3_write_resp__empty_n; - wire edge_list_ch_3_write_resp__read; - wire read_A_3__ap_start; - wire read_A_3__ap_ready; - wire read_A_3__ap_done; - wire read_A_3__ap_idle; - wire [31:0] read_A_4___NUM_A_LEN__q0; - wire [31:0] read_A_4___P_N__q0; - wire [63:0] read_A_4___edge_list_ch_4__q0; - wire [63:0] edge_list_ch_4_read_addr__din; - wire edge_list_ch_4_read_addr__full_n; - wire edge_list_ch_4_read_addr__write; - wire [511:0] edge_list_ch_4_read_data__dout; - wire edge_list_ch_4_read_data__empty_n; - wire edge_list_ch_4_read_data__read; - wire [63:0] edge_list_ch_4_write_addr__din; - wire edge_list_ch_4_write_addr__full_n; - wire edge_list_ch_4_write_addr__write; - wire [511:0] edge_list_ch_4_write_data__din; - wire edge_list_ch_4_write_data__full_n; - wire edge_list_ch_4_write_data__write; - wire [7:0] edge_list_ch_4_write_resp__dout; - wire edge_list_ch_4_write_resp__empty_n; - wire edge_list_ch_4_write_resp__read; - wire read_A_4__ap_start; - wire read_A_4__ap_ready; - wire read_A_4__ap_done; - wire read_A_4__ap_idle; - wire [31:0] read_A_5___NUM_A_LEN__q0; - wire [31:0] read_A_5___P_N__q0; - wire [63:0] read_A_5___edge_list_ch_5__q0; - wire [63:0] edge_list_ch_5_read_addr__din; - wire edge_list_ch_5_read_addr__full_n; - wire edge_list_ch_5_read_addr__write; - wire [511:0] edge_list_ch_5_read_data__dout; - wire edge_list_ch_5_read_data__empty_n; - wire edge_list_ch_5_read_data__read; - wire [63:0] edge_list_ch_5_write_addr__din; - wire edge_list_ch_5_write_addr__full_n; - wire edge_list_ch_5_write_addr__write; - wire [511:0] edge_list_ch_5_write_data__din; - wire edge_list_ch_5_write_data__full_n; - wire edge_list_ch_5_write_data__write; - wire [7:0] edge_list_ch_5_write_resp__dout; - wire edge_list_ch_5_write_resp__empty_n; - wire edge_list_ch_5_write_resp__read; - wire read_A_5__ap_start; - wire read_A_5__ap_ready; - wire read_A_5__ap_done; - wire read_A_5__ap_idle; - wire [31:0] read_A_6___NUM_A_LEN__q0; - wire [31:0] read_A_6___P_N__q0; - wire [63:0] read_A_6___edge_list_ch_6__q0; - wire [63:0] edge_list_ch_6_read_addr__din; - wire edge_list_ch_6_read_addr__full_n; - wire edge_list_ch_6_read_addr__write; - wire [511:0] edge_list_ch_6_read_data__dout; - wire edge_list_ch_6_read_data__empty_n; - wire edge_list_ch_6_read_data__read; - wire [63:0] edge_list_ch_6_write_addr__din; - wire edge_list_ch_6_write_addr__full_n; - wire edge_list_ch_6_write_addr__write; - wire [511:0] edge_list_ch_6_write_data__din; - wire edge_list_ch_6_write_data__full_n; - wire edge_list_ch_6_write_data__write; - wire [7:0] edge_list_ch_6_write_resp__dout; - wire edge_list_ch_6_write_resp__empty_n; - wire edge_list_ch_6_write_resp__read; - wire read_A_6__ap_start; - wire read_A_6__ap_ready; - wire read_A_6__ap_done; - wire read_A_6__ap_idle; - wire [31:0] read_A_7___NUM_A_LEN__q0; - wire [31:0] read_A_7___P_N__q0; - wire [63:0] read_A_7___edge_list_ch_7__q0; - wire [63:0] edge_list_ch_7_read_addr__din; - wire edge_list_ch_7_read_addr__full_n; - wire edge_list_ch_7_read_addr__write; - wire [511:0] edge_list_ch_7_read_data__dout; - wire edge_list_ch_7_read_data__empty_n; - wire edge_list_ch_7_read_data__read; - wire [63:0] edge_list_ch_7_write_addr__din; - wire edge_list_ch_7_write_addr__full_n; - wire edge_list_ch_7_write_addr__write; - wire [511:0] edge_list_ch_7_write_data__din; - wire edge_list_ch_7_write_data__full_n; - wire edge_list_ch_7_write_data__write; - wire [7:0] edge_list_ch_7_write_resp__dout; - wire edge_list_ch_7_write_resp__empty_n; - wire edge_list_ch_7_write_resp__read; - wire read_A_7__ap_start; - wire read_A_7__ap_ready; - wire read_A_7__ap_done; - wire read_A_7__ap_idle; - wire [31:0] read_B_0___K__q0; - wire [31:0] read_B_0___P_N__q0; - wire [63:0] read_B_0___mat_B_ch_0__q0; - wire [63:0] mat_B_ch_0_read_addr__din; - wire mat_B_ch_0_read_addr__full_n; - wire mat_B_ch_0_read_addr__write; - wire [511:0] mat_B_ch_0_read_data__dout; - wire mat_B_ch_0_read_data__empty_n; - wire mat_B_ch_0_read_data__read; - wire [63:0] mat_B_ch_0_write_addr__din; - wire mat_B_ch_0_write_addr__full_n; - wire mat_B_ch_0_write_addr__write; - wire [511:0] mat_B_ch_0_write_data__din; - wire mat_B_ch_0_write_data__full_n; - wire mat_B_ch_0_write_data__write; - wire [7:0] mat_B_ch_0_write_resp__dout; - wire mat_B_ch_0_write_resp__empty_n; - wire mat_B_ch_0_write_resp__read; - wire read_B_0__ap_start; - wire read_B_0__ap_ready; - wire read_B_0__ap_done; - wire read_B_0__ap_idle; - wire [31:0] read_B_1___K__q0; - wire [31:0] read_B_1___P_N__q0; - wire [63:0] read_B_1___mat_B_ch_1__q0; - wire [63:0] mat_B_ch_1_read_addr__din; - wire mat_B_ch_1_read_addr__full_n; - wire mat_B_ch_1_read_addr__write; - wire [511:0] mat_B_ch_1_read_data__dout; - wire mat_B_ch_1_read_data__empty_n; - wire mat_B_ch_1_read_data__read; - wire [63:0] mat_B_ch_1_write_addr__din; - wire mat_B_ch_1_write_addr__full_n; - wire mat_B_ch_1_write_addr__write; - wire [511:0] mat_B_ch_1_write_data__din; - wire mat_B_ch_1_write_data__full_n; - wire mat_B_ch_1_write_data__write; - wire [7:0] mat_B_ch_1_write_resp__dout; - wire mat_B_ch_1_write_resp__empty_n; - wire mat_B_ch_1_write_resp__read; - wire read_B_1__ap_start; - wire read_B_1__ap_ready; - wire read_B_1__ap_done; - wire read_B_1__ap_idle; - wire [31:0] read_B_2___K__q0; - wire [31:0] read_B_2___P_N__q0; - wire [63:0] read_B_2___mat_B_ch_2__q0; - wire [63:0] mat_B_ch_2_read_addr__din; - wire mat_B_ch_2_read_addr__full_n; - wire mat_B_ch_2_read_addr__write; - wire [511:0] mat_B_ch_2_read_data__dout; - wire mat_B_ch_2_read_data__empty_n; - wire mat_B_ch_2_read_data__read; - wire [63:0] mat_B_ch_2_write_addr__din; - wire mat_B_ch_2_write_addr__full_n; - wire mat_B_ch_2_write_addr__write; - wire [511:0] mat_B_ch_2_write_data__din; - wire mat_B_ch_2_write_data__full_n; - wire mat_B_ch_2_write_data__write; - wire [7:0] mat_B_ch_2_write_resp__dout; - wire mat_B_ch_2_write_resp__empty_n; - wire mat_B_ch_2_write_resp__read; - wire read_B_2__ap_start; - wire read_B_2__ap_ready; - wire read_B_2__ap_done; - wire read_B_2__ap_idle; - wire [31:0] read_B_3___K__q0; - wire [31:0] read_B_3___P_N__q0; - wire [63:0] read_B_3___mat_B_ch_3__q0; - wire [63:0] mat_B_ch_3_read_addr__din; - wire mat_B_ch_3_read_addr__full_n; - wire mat_B_ch_3_read_addr__write; - wire [511:0] mat_B_ch_3_read_data__dout; - wire mat_B_ch_3_read_data__empty_n; - wire mat_B_ch_3_read_data__read; - wire [63:0] mat_B_ch_3_write_addr__din; - wire mat_B_ch_3_write_addr__full_n; - wire mat_B_ch_3_write_addr__write; - wire [511:0] mat_B_ch_3_write_data__din; - wire mat_B_ch_3_write_data__full_n; - wire mat_B_ch_3_write_data__write; - wire [7:0] mat_B_ch_3_write_resp__dout; - wire mat_B_ch_3_write_resp__empty_n; - wire mat_B_ch_3_write_resp__read; - wire read_B_3__ap_start; - wire read_B_3__ap_ready; - wire read_B_3__ap_done; - wire read_B_3__ap_idle; - wire [31:0] read_C_0___M__q0; - wire [31:0] read_C_0___P_N__q0; - wire [63:0] read_C_0___mat_C_ch_in_0__q0; - wire [63:0] mat_C_ch_in_0_read_addr__din; - wire mat_C_ch_in_0_read_addr__full_n; - wire mat_C_ch_in_0_read_addr__write; - wire [511:0] mat_C_ch_in_0_read_data__dout; - wire mat_C_ch_in_0_read_data__empty_n; - wire mat_C_ch_in_0_read_data__read; - wire [63:0] mat_C_ch_in_0_write_addr__din; - wire mat_C_ch_in_0_write_addr__full_n; - wire mat_C_ch_in_0_write_addr__write; - wire [511:0] mat_C_ch_in_0_write_data__din; - wire mat_C_ch_in_0_write_data__full_n; - wire mat_C_ch_in_0_write_data__write; - wire [7:0] mat_C_ch_in_0_write_resp__dout; - wire mat_C_ch_in_0_write_resp__empty_n; - wire mat_C_ch_in_0_write_resp__read; - wire read_C_0__ap_start; - wire read_C_0__ap_ready; - wire read_C_0__ap_done; - wire read_C_0__ap_idle; - wire [31:0] read_C_1___M__q0; - wire [31:0] read_C_1___P_N__q0; - wire [63:0] read_C_1___mat_C_ch_in_1__q0; - wire [63:0] mat_C_ch_in_1_read_addr__din; - wire mat_C_ch_in_1_read_addr__full_n; - wire mat_C_ch_in_1_read_addr__write; - wire [511:0] mat_C_ch_in_1_read_data__dout; - wire mat_C_ch_in_1_read_data__empty_n; - wire mat_C_ch_in_1_read_data__read; - wire [63:0] mat_C_ch_in_1_write_addr__din; - wire mat_C_ch_in_1_write_addr__full_n; - wire mat_C_ch_in_1_write_addr__write; - wire [511:0] mat_C_ch_in_1_write_data__din; - wire mat_C_ch_in_1_write_data__full_n; - wire mat_C_ch_in_1_write_data__write; - wire [7:0] mat_C_ch_in_1_write_resp__dout; - wire mat_C_ch_in_1_write_resp__empty_n; - wire mat_C_ch_in_1_write_resp__read; - wire read_C_1__ap_start; - wire read_C_1__ap_ready; - wire read_C_1__ap_done; - wire read_C_1__ap_idle; - wire [31:0] read_C_2___M__q0; - wire [31:0] read_C_2___P_N__q0; - wire [63:0] read_C_2___mat_C_ch_in_2__q0; - wire [63:0] mat_C_ch_in_2_read_addr__din; - wire mat_C_ch_in_2_read_addr__full_n; - wire mat_C_ch_in_2_read_addr__write; - wire [511:0] mat_C_ch_in_2_read_data__dout; - wire mat_C_ch_in_2_read_data__empty_n; - wire mat_C_ch_in_2_read_data__read; - wire [63:0] mat_C_ch_in_2_write_addr__din; - wire mat_C_ch_in_2_write_addr__full_n; - wire mat_C_ch_in_2_write_addr__write; - wire [511:0] mat_C_ch_in_2_write_data__din; - wire mat_C_ch_in_2_write_data__full_n; - wire mat_C_ch_in_2_write_data__write; - wire [7:0] mat_C_ch_in_2_write_resp__dout; - wire mat_C_ch_in_2_write_resp__empty_n; - wire mat_C_ch_in_2_write_resp__read; - wire read_C_2__ap_start; - wire read_C_2__ap_ready; - wire read_C_2__ap_done; - wire read_C_2__ap_idle; - wire [31:0] read_C_3___M__q0; - wire [31:0] read_C_3___P_N__q0; - wire [63:0] read_C_3___mat_C_ch_in_3__q0; - wire [63:0] mat_C_ch_in_3_read_addr__din; - wire mat_C_ch_in_3_read_addr__full_n; - wire mat_C_ch_in_3_read_addr__write; - wire [511:0] mat_C_ch_in_3_read_data__dout; - wire mat_C_ch_in_3_read_data__empty_n; - wire mat_C_ch_in_3_read_data__read; - wire [63:0] mat_C_ch_in_3_write_addr__din; - wire mat_C_ch_in_3_write_addr__full_n; - wire mat_C_ch_in_3_write_addr__write; - wire [511:0] mat_C_ch_in_3_write_data__din; - wire mat_C_ch_in_3_write_data__full_n; - wire mat_C_ch_in_3_write_data__write; - wire [7:0] mat_C_ch_in_3_write_resp__dout; - wire mat_C_ch_in_3_write_resp__empty_n; - wire mat_C_ch_in_3_write_resp__read; - wire read_C_3__ap_start; - wire read_C_3__ap_ready; - wire read_C_3__ap_done; - wire read_C_3__ap_idle; - wire [31:0] read_C_4___M__q0; - wire [31:0] read_C_4___P_N__q0; - wire [63:0] read_C_4___mat_C_ch_in_4__q0; - wire [63:0] mat_C_ch_in_4_read_addr__din; - wire mat_C_ch_in_4_read_addr__full_n; - wire mat_C_ch_in_4_read_addr__write; - wire [511:0] mat_C_ch_in_4_read_data__dout; - wire mat_C_ch_in_4_read_data__empty_n; - wire mat_C_ch_in_4_read_data__read; - wire [63:0] mat_C_ch_in_4_write_addr__din; - wire mat_C_ch_in_4_write_addr__full_n; - wire mat_C_ch_in_4_write_addr__write; - wire [511:0] mat_C_ch_in_4_write_data__din; - wire mat_C_ch_in_4_write_data__full_n; - wire mat_C_ch_in_4_write_data__write; - wire [7:0] mat_C_ch_in_4_write_resp__dout; - wire mat_C_ch_in_4_write_resp__empty_n; - wire mat_C_ch_in_4_write_resp__read; - wire read_C_4__ap_start; - wire read_C_4__ap_ready; - wire read_C_4__ap_done; - wire read_C_4__ap_idle; - wire [31:0] read_C_5___M__q0; - wire [31:0] read_C_5___P_N__q0; - wire [63:0] read_C_5___mat_C_ch_in_5__q0; - wire [63:0] mat_C_ch_in_5_read_addr__din; - wire mat_C_ch_in_5_read_addr__full_n; - wire mat_C_ch_in_5_read_addr__write; - wire [511:0] mat_C_ch_in_5_read_data__dout; - wire mat_C_ch_in_5_read_data__empty_n; - wire mat_C_ch_in_5_read_data__read; - wire [63:0] mat_C_ch_in_5_write_addr__din; - wire mat_C_ch_in_5_write_addr__full_n; - wire mat_C_ch_in_5_write_addr__write; - wire [511:0] mat_C_ch_in_5_write_data__din; - wire mat_C_ch_in_5_write_data__full_n; - wire mat_C_ch_in_5_write_data__write; - wire [7:0] mat_C_ch_in_5_write_resp__dout; - wire mat_C_ch_in_5_write_resp__empty_n; - wire mat_C_ch_in_5_write_resp__read; - wire read_C_5__ap_start; - wire read_C_5__ap_ready; - wire read_C_5__ap_done; - wire read_C_5__ap_idle; - wire [31:0] read_C_6___M__q0; - wire [31:0] read_C_6___P_N__q0; - wire [63:0] read_C_6___mat_C_ch_in_6__q0; - wire [63:0] mat_C_ch_in_6_read_addr__din; - wire mat_C_ch_in_6_read_addr__full_n; - wire mat_C_ch_in_6_read_addr__write; - wire [511:0] mat_C_ch_in_6_read_data__dout; - wire mat_C_ch_in_6_read_data__empty_n; - wire mat_C_ch_in_6_read_data__read; - wire [63:0] mat_C_ch_in_6_write_addr__din; - wire mat_C_ch_in_6_write_addr__full_n; - wire mat_C_ch_in_6_write_addr__write; - wire [511:0] mat_C_ch_in_6_write_data__din; - wire mat_C_ch_in_6_write_data__full_n; - wire mat_C_ch_in_6_write_data__write; - wire [7:0] mat_C_ch_in_6_write_resp__dout; - wire mat_C_ch_in_6_write_resp__empty_n; - wire mat_C_ch_in_6_write_resp__read; - wire read_C_6__ap_start; - wire read_C_6__ap_ready; - wire read_C_6__ap_done; - wire read_C_6__ap_idle; - wire [31:0] read_C_7___M__q0; - wire [31:0] read_C_7___P_N__q0; - wire [63:0] read_C_7___mat_C_ch_in_7__q0; - wire [63:0] mat_C_ch_in_7_read_addr__din; - wire mat_C_ch_in_7_read_addr__full_n; - wire mat_C_ch_in_7_read_addr__write; - wire [511:0] mat_C_ch_in_7_read_data__dout; - wire mat_C_ch_in_7_read_data__empty_n; - wire mat_C_ch_in_7_read_data__read; - wire [63:0] mat_C_ch_in_7_write_addr__din; - wire mat_C_ch_in_7_write_addr__full_n; - wire mat_C_ch_in_7_write_addr__write; - wire [511:0] mat_C_ch_in_7_write_data__din; - wire mat_C_ch_in_7_write_data__full_n; - wire mat_C_ch_in_7_write_data__write; - wire [7:0] mat_C_ch_in_7_write_resp__dout; - wire mat_C_ch_in_7_write_resp__empty_n; - wire mat_C_ch_in_7_write_resp__read; - wire read_C_7__ap_start; - wire read_C_7__ap_ready; - wire read_C_7__ap_done; - wire read_C_7__ap_idle; - wire [31:0] read_edge_list_ptr_0___K__q0; - wire [31:0] read_edge_list_ptr_0___M__q0; - wire [31:0] read_edge_list_ptr_0___NUM_ITE__q0; - wire [31:0] read_edge_list_ptr_0___P_N__q0; - wire [63:0] read_edge_list_ptr_0___edge_list_ptr__q0; - wire [63:0] edge_list_ptr_read_addr__din; - wire edge_list_ptr_read_addr__full_n; - wire edge_list_ptr_read_addr__write; - wire [31:0] edge_list_ptr_read_data__dout; - wire edge_list_ptr_read_data__empty_n; - wire edge_list_ptr_read_data__read; - wire [63:0] edge_list_ptr_write_addr__din; - wire edge_list_ptr_write_addr__full_n; - wire edge_list_ptr_write_addr__write; - wire [31:0] edge_list_ptr_write_data__din; - wire edge_list_ptr_write_data__full_n; - wire edge_list_ptr_write_data__write; - wire [7:0] edge_list_ptr_write_resp__dout; - wire edge_list_ptr_write_resp__empty_n; - wire edge_list_ptr_write_resp__read; - wire read_edge_list_ptr_0__ap_start; - wire read_edge_list_ptr_0__ap_ready; - wire read_edge_list_ptr_0__ap_done; - wire read_edge_list_ptr_0__ap_idle; - wire [63:0] write_C_0___mat_C_ch_0__q0; - wire [63:0] mat_C_ch_0_read_addr__din; - wire mat_C_ch_0_read_addr__full_n; - wire mat_C_ch_0_read_addr__write; - wire [511:0] mat_C_ch_0_read_data__dout; - wire mat_C_ch_0_read_data__empty_n; - wire mat_C_ch_0_read_data__read; - wire [63:0] mat_C_ch_0_write_addr__din; - wire mat_C_ch_0_write_addr__full_n; - wire mat_C_ch_0_write_addr__write; - wire [511:0] mat_C_ch_0_write_data__din; - wire mat_C_ch_0_write_data__full_n; - wire mat_C_ch_0_write_data__write; - wire [7:0] mat_C_ch_0_write_resp__dout; - wire mat_C_ch_0_write_resp__empty_n; - wire mat_C_ch_0_write_resp__read; - wire write_C_0__ap_start; - wire write_C_0__ap_ready; - wire write_C_0__ap_done; - wire write_C_0__ap_idle; - wire [63:0] write_C_1___mat_C_ch_1__q0; - wire [63:0] mat_C_ch_1_read_addr__din; - wire mat_C_ch_1_read_addr__full_n; - wire mat_C_ch_1_read_addr__write; - wire [511:0] mat_C_ch_1_read_data__dout; - wire mat_C_ch_1_read_data__empty_n; - wire mat_C_ch_1_read_data__read; - wire [63:0] mat_C_ch_1_write_addr__din; - wire mat_C_ch_1_write_addr__full_n; - wire mat_C_ch_1_write_addr__write; - wire [511:0] mat_C_ch_1_write_data__din; - wire mat_C_ch_1_write_data__full_n; - wire mat_C_ch_1_write_data__write; - wire [7:0] mat_C_ch_1_write_resp__dout; - wire mat_C_ch_1_write_resp__empty_n; - wire mat_C_ch_1_write_resp__read; - wire write_C_1__ap_start; - wire write_C_1__ap_ready; - wire write_C_1__ap_done; - wire write_C_1__ap_idle; - wire [63:0] write_C_2___mat_C_ch_2__q0; - wire [63:0] mat_C_ch_2_read_addr__din; - wire mat_C_ch_2_read_addr__full_n; - wire mat_C_ch_2_read_addr__write; - wire [511:0] mat_C_ch_2_read_data__dout; - wire mat_C_ch_2_read_data__empty_n; - wire mat_C_ch_2_read_data__read; - wire [63:0] mat_C_ch_2_write_addr__din; - wire mat_C_ch_2_write_addr__full_n; - wire mat_C_ch_2_write_addr__write; - wire [511:0] mat_C_ch_2_write_data__din; - wire mat_C_ch_2_write_data__full_n; - wire mat_C_ch_2_write_data__write; - wire [7:0] mat_C_ch_2_write_resp__dout; - wire mat_C_ch_2_write_resp__empty_n; - wire mat_C_ch_2_write_resp__read; - wire write_C_2__ap_start; - wire write_C_2__ap_ready; - wire write_C_2__ap_done; - wire write_C_2__ap_idle; - wire [63:0] write_C_3___mat_C_ch_3__q0; - wire [63:0] mat_C_ch_3_read_addr__din; - wire mat_C_ch_3_read_addr__full_n; - wire mat_C_ch_3_read_addr__write; - wire [511:0] mat_C_ch_3_read_data__dout; - wire mat_C_ch_3_read_data__empty_n; - wire mat_C_ch_3_read_data__read; - wire [63:0] mat_C_ch_3_write_addr__din; - wire mat_C_ch_3_write_addr__full_n; - wire mat_C_ch_3_write_addr__write; - wire [511:0] mat_C_ch_3_write_data__din; - wire mat_C_ch_3_write_data__full_n; - wire mat_C_ch_3_write_data__write; - wire [7:0] mat_C_ch_3_write_resp__dout; - wire mat_C_ch_3_write_resp__empty_n; - wire mat_C_ch_3_write_resp__read; - wire write_C_3__ap_start; - wire write_C_3__ap_ready; - wire write_C_3__ap_done; - wire write_C_3__ap_idle; - wire [63:0] write_C_4___mat_C_ch_4__q0; - wire [63:0] mat_C_ch_4_read_addr__din; - wire mat_C_ch_4_read_addr__full_n; - wire mat_C_ch_4_read_addr__write; - wire [511:0] mat_C_ch_4_read_data__dout; - wire mat_C_ch_4_read_data__empty_n; - wire mat_C_ch_4_read_data__read; - wire [63:0] mat_C_ch_4_write_addr__din; - wire mat_C_ch_4_write_addr__full_n; - wire mat_C_ch_4_write_addr__write; - wire [511:0] mat_C_ch_4_write_data__din; - wire mat_C_ch_4_write_data__full_n; - wire mat_C_ch_4_write_data__write; - wire [7:0] mat_C_ch_4_write_resp__dout; - wire mat_C_ch_4_write_resp__empty_n; - wire mat_C_ch_4_write_resp__read; - wire write_C_4__ap_start; - wire write_C_4__ap_ready; - wire write_C_4__ap_done; - wire write_C_4__ap_idle; - wire [63:0] write_C_5___mat_C_ch_5__q0; - wire [63:0] mat_C_ch_5_read_addr__din; - wire mat_C_ch_5_read_addr__full_n; - wire mat_C_ch_5_read_addr__write; - wire [511:0] mat_C_ch_5_read_data__dout; - wire mat_C_ch_5_read_data__empty_n; - wire mat_C_ch_5_read_data__read; - wire [63:0] mat_C_ch_5_write_addr__din; - wire mat_C_ch_5_write_addr__full_n; - wire mat_C_ch_5_write_addr__write; - wire [511:0] mat_C_ch_5_write_data__din; - wire mat_C_ch_5_write_data__full_n; - wire mat_C_ch_5_write_data__write; - wire [7:0] mat_C_ch_5_write_resp__dout; - wire mat_C_ch_5_write_resp__empty_n; - wire mat_C_ch_5_write_resp__read; - wire write_C_5__ap_start; - wire write_C_5__ap_ready; - wire write_C_5__ap_done; - wire write_C_5__ap_idle; - wire [63:0] write_C_6___mat_C_ch_6__q0; - wire [63:0] mat_C_ch_6_read_addr__din; - wire mat_C_ch_6_read_addr__full_n; - wire mat_C_ch_6_read_addr__write; - wire [511:0] mat_C_ch_6_read_data__dout; - wire mat_C_ch_6_read_data__empty_n; - wire mat_C_ch_6_read_data__read; - wire [63:0] mat_C_ch_6_write_addr__din; - wire mat_C_ch_6_write_addr__full_n; - wire mat_C_ch_6_write_addr__write; - wire [511:0] mat_C_ch_6_write_data__din; - wire mat_C_ch_6_write_data__full_n; - wire mat_C_ch_6_write_data__write; - wire [7:0] mat_C_ch_6_write_resp__dout; - wire mat_C_ch_6_write_resp__empty_n; - wire mat_C_ch_6_write_resp__read; - wire write_C_6__ap_start; - wire write_C_6__ap_ready; - wire write_C_6__ap_done; - wire write_C_6__ap_idle; - wire [63:0] write_C_7___mat_C_ch_7__q0; - wire [63:0] mat_C_ch_7_read_addr__din; - wire mat_C_ch_7_read_addr__full_n; - wire mat_C_ch_7_read_addr__write; - wire [511:0] mat_C_ch_7_read_data__dout; - wire mat_C_ch_7_read_data__empty_n; - wire mat_C_ch_7_read_data__read; - wire [63:0] mat_C_ch_7_write_addr__din; - wire mat_C_ch_7_write_addr__full_n; - wire mat_C_ch_7_write_addr__write; - wire [511:0] mat_C_ch_7_write_data__din; - wire mat_C_ch_7_write_data__full_n; - wire mat_C_ch_7_write_data__write; - wire [7:0] mat_C_ch_7_write_resp__dout; - wire mat_C_ch_7_write_resp__empty_n; - wire mat_C_ch_7_write_resp__read; - wire write_C_7__ap_start; - wire write_C_7__ap_ready; - wire write_C_7__ap_done; - wire write_C_7__ap_idle; - wire ap_rst_n_inv; - wire ap_done; - wire ap_idle; - wire ap_ready; - - Sextans_control_s_axi - #( - .C_S_AXI_ADDR_WIDTH(C_S_AXI_CONTROL_ADDR_WIDTH), - .C_S_AXI_DATA_WIDTH(C_S_AXI_CONTROL_DATA_WIDTH) - ) - control_s_axi_U - ( - .AWVALID(s_axi_control_AWVALID), - .AWREADY(s_axi_control_AWREADY), - .AWADDR(s_axi_control_AWADDR), - .WVALID(s_axi_control_WVALID), - .WREADY(s_axi_control_WREADY), - .WDATA(s_axi_control_WDATA), - .WSTRB(s_axi_control_WSTRB), - .ARVALID(s_axi_control_ARVALID), - .ARREADY(s_axi_control_ARREADY), - .ARADDR(s_axi_control_ARADDR), - .RVALID(s_axi_control_RVALID), - .RREADY(s_axi_control_RREADY), - .RDATA(s_axi_control_RDATA), - .RRESP(s_axi_control_RRESP), - .BVALID(s_axi_control_BVALID), - .BREADY(s_axi_control_BREADY), - .BRESP(s_axi_control_BRESP), - .ACLK(ap_clk), - .ARESET(ap_rst_n_inv), - .ACLK_EN(1'b1), - .edge_list_ptr(edge_list_ptr), - .edge_list_ch_0(edge_list_ch_0), - .edge_list_ch_1(edge_list_ch_1), - .edge_list_ch_2(edge_list_ch_2), - .edge_list_ch_3(edge_list_ch_3), - .edge_list_ch_4(edge_list_ch_4), - .edge_list_ch_5(edge_list_ch_5), - .edge_list_ch_6(edge_list_ch_6), - .edge_list_ch_7(edge_list_ch_7), - .mat_B_ch_0(mat_B_ch_0), - .mat_B_ch_1(mat_B_ch_1), - .mat_B_ch_2(mat_B_ch_2), - .mat_B_ch_3(mat_B_ch_3), - .mat_C_ch_in_0(mat_C_ch_in_0), - .mat_C_ch_in_1(mat_C_ch_in_1), - .mat_C_ch_in_2(mat_C_ch_in_2), - .mat_C_ch_in_3(mat_C_ch_in_3), - .mat_C_ch_in_4(mat_C_ch_in_4), - .mat_C_ch_in_5(mat_C_ch_in_5), - .mat_C_ch_in_6(mat_C_ch_in_6), - .mat_C_ch_in_7(mat_C_ch_in_7), - .mat_C_ch_0(mat_C_ch_0), - .mat_C_ch_1(mat_C_ch_1), - .mat_C_ch_2(mat_C_ch_2), - .mat_C_ch_3(mat_C_ch_3), - .mat_C_ch_4(mat_C_ch_4), - .mat_C_ch_5(mat_C_ch_5), - .mat_C_ch_6(mat_C_ch_6), - .mat_C_ch_7(mat_C_ch_7), - .NUM_ITE(NUM_ITE), - .NUM_A_LEN(NUM_A_LEN), - .M(M), - .K(K), - .P_N(P_N), - .alpha_u(alpha_u), - .beta_u(beta_u), - .ap_start(ap_start), - .interrupt(interrupt), - .ap_ready(ap_ready), - .ap_done(ap_done), - .ap_idle(ap_idle) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_0 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_0__dout), - .if_empty_n(PE_inst_Sextans_0__empty_n), - .if_read(PE_inst_Sextans_0__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_0__din), - .if_full_n(PE_inst_Sextans_0__full_n), - .if_write(PE_inst_Sextans_0__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_10 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_10__dout), - .if_empty_n(PE_inst_Sextans_10__empty_n), - .if_read(PE_inst_Sextans_10__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_10__din), - .if_full_n(PE_inst_Sextans_10__full_n), - .if_write(PE_inst_Sextans_10__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_11 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_11__dout), - .if_empty_n(PE_inst_Sextans_11__empty_n), - .if_read(PE_inst_Sextans_11__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_11__din), - .if_full_n(PE_inst_Sextans_11__full_n), - .if_write(PE_inst_Sextans_11__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_12 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_12__dout), - .if_empty_n(PE_inst_Sextans_12__empty_n), - .if_read(PE_inst_Sextans_12__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_12__din), - .if_full_n(PE_inst_Sextans_12__full_n), - .if_write(PE_inst_Sextans_12__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_13 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_13__dout), - .if_empty_n(PE_inst_Sextans_13__empty_n), - .if_read(PE_inst_Sextans_13__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_13__din), - .if_full_n(PE_inst_Sextans_13__full_n), - .if_write(PE_inst_Sextans_13__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_14 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_14__dout), - .if_empty_n(PE_inst_Sextans_14__empty_n), - .if_read(PE_inst_Sextans_14__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_14__din), - .if_full_n(PE_inst_Sextans_14__full_n), - .if_write(PE_inst_Sextans_14__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_15 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_15__dout), - .if_empty_n(PE_inst_Sextans_15__empty_n), - .if_read(PE_inst_Sextans_15__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_15__din), - .if_full_n(PE_inst_Sextans_15__full_n), - .if_write(PE_inst_Sextans_15__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_16 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_16__dout), - .if_empty_n(PE_inst_Sextans_16__empty_n), - .if_read(PE_inst_Sextans_16__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_16__din), - .if_full_n(PE_inst_Sextans_16__full_n), - .if_write(PE_inst_Sextans_16__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_1 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_1__dout), - .if_empty_n(PE_inst_Sextans_1__empty_n), - .if_read(PE_inst_Sextans_1__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_1__din), - .if_full_n(PE_inst_Sextans_1__full_n), - .if_write(PE_inst_Sextans_1__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_2 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_2__dout), - .if_empty_n(PE_inst_Sextans_2__empty_n), - .if_read(PE_inst_Sextans_2__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_2__din), - .if_full_n(PE_inst_Sextans_2__full_n), - .if_write(PE_inst_Sextans_2__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_3 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_3__dout), - .if_empty_n(PE_inst_Sextans_3__empty_n), - .if_read(PE_inst_Sextans_3__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_3__din), - .if_full_n(PE_inst_Sextans_3__full_n), - .if_write(PE_inst_Sextans_3__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_4 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_4__dout), - .if_empty_n(PE_inst_Sextans_4__empty_n), - .if_read(PE_inst_Sextans_4__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_4__din), - .if_full_n(PE_inst_Sextans_4__full_n), - .if_write(PE_inst_Sextans_4__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_5 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_5__dout), - .if_empty_n(PE_inst_Sextans_5__empty_n), - .if_read(PE_inst_Sextans_5__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_5__din), - .if_full_n(PE_inst_Sextans_5__full_n), - .if_write(PE_inst_Sextans_5__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_6 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_6__dout), - .if_empty_n(PE_inst_Sextans_6__empty_n), - .if_read(PE_inst_Sextans_6__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_6__din), - .if_full_n(PE_inst_Sextans_6__full_n), - .if_write(PE_inst_Sextans_6__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_7 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_7__dout), - .if_empty_n(PE_inst_Sextans_7__empty_n), - .if_read(PE_inst_Sextans_7__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_7__din), - .if_full_n(PE_inst_Sextans_7__full_n), - .if_write(PE_inst_Sextans_7__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_8 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_8__dout), - .if_empty_n(PE_inst_Sextans_8__empty_n), - .if_read(PE_inst_Sextans_8__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_8__din), - .if_full_n(PE_inst_Sextans_8__full_n), - .if_write(PE_inst_Sextans_8__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_Sextans_9 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_Sextans_9__dout), - .if_empty_n(PE_inst_Sextans_9__empty_n), - .if_read(PE_inst_Sextans_9__read), - .if_read_ce(1'b1), - .if_din(PE_inst_Sextans_9__din), - .if_full_n(PE_inst_Sextans_9__full_n), - .if_write(PE_inst_Sextans_9__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_0 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_0__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_0__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_0__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_0__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_0__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_0__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_10 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_10__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_10__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_10__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_10__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_10__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_10__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_11 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_11__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_11__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_11__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_11__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_11__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_11__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_12 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_12__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_12__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_12__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_12__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_12__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_12__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_13 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_13__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_13__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_13__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_13__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_13__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_13__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_14 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_14__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_14__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_14__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_14__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_14__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_14__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_15 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_15__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_15__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_15__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_15__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_15__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_15__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_1 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_1__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_1__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_1__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_1__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_1__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_1__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_2 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_2__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_2__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_2__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_2__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_2__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_2__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_3 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_3__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_3__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_3__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_3__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_3__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_3__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_4 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_4__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_4__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_4__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_4__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_4__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_4__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_5 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_5__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_5__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_5__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_5__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_5__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_5__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_6 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_6__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_6__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_6__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_6__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_6__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_6__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_7 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_7__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_7__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_7__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_7__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_7__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_7__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_8 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_8__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_8__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_8__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_8__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_8__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_8__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - PE_inst_to_Cmtx_Sextans_9 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(PE_inst_to_Cmtx_Sextans_9__dout), - .if_empty_n(PE_inst_to_Cmtx_Sextans_9__empty_n), - .if_read(PE_inst_to_Cmtx_Sextans_9__read), - .if_read_ce(1'b1), - .if_din(PE_inst_to_Cmtx_Sextans_9__din), - .if_full_n(PE_inst_to_Cmtx_Sextans_9__full_n), - .if_write(PE_inst_to_Cmtx_Sextans_9__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_Sextans_0 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_Sextans_0__dout), - .if_empty_n(fifo_A_Sextans_0__empty_n), - .if_read(fifo_A_Sextans_0__read), - .if_read_ce(1'b1), - .if_din(fifo_A_Sextans_0__din), - .if_full_n(fifo_A_Sextans_0__full_n), - .if_write(fifo_A_Sextans_0__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_Sextans_1 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_Sextans_1__dout), - .if_empty_n(fifo_A_Sextans_1__empty_n), - .if_read(fifo_A_Sextans_1__read), - .if_read_ce(1'b1), - .if_din(fifo_A_Sextans_1__din), - .if_full_n(fifo_A_Sextans_1__full_n), - .if_write(fifo_A_Sextans_1__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_Sextans_2 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_Sextans_2__dout), - .if_empty_n(fifo_A_Sextans_2__empty_n), - .if_read(fifo_A_Sextans_2__read), - .if_read_ce(1'b1), - .if_din(fifo_A_Sextans_2__din), - .if_full_n(fifo_A_Sextans_2__full_n), - .if_write(fifo_A_Sextans_2__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_Sextans_3 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_Sextans_3__dout), - .if_empty_n(fifo_A_Sextans_3__empty_n), - .if_read(fifo_A_Sextans_3__read), - .if_read_ce(1'b1), - .if_din(fifo_A_Sextans_3__din), - .if_full_n(fifo_A_Sextans_3__full_n), - .if_write(fifo_A_Sextans_3__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_Sextans_4 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_Sextans_4__dout), - .if_empty_n(fifo_A_Sextans_4__empty_n), - .if_read(fifo_A_Sextans_4__read), - .if_read_ce(1'b1), - .if_din(fifo_A_Sextans_4__din), - .if_full_n(fifo_A_Sextans_4__full_n), - .if_write(fifo_A_Sextans_4__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_Sextans_5 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_Sextans_5__dout), - .if_empty_n(fifo_A_Sextans_5__empty_n), - .if_read(fifo_A_Sextans_5__read), - .if_read_ce(1'b1), - .if_din(fifo_A_Sextans_5__din), - .if_full_n(fifo_A_Sextans_5__full_n), - .if_write(fifo_A_Sextans_5__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_Sextans_6 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_Sextans_6__dout), - .if_empty_n(fifo_A_Sextans_6__empty_n), - .if_read(fifo_A_Sextans_6__read), - .if_read_ce(1'b1), - .if_din(fifo_A_Sextans_6__din), - .if_full_n(fifo_A_Sextans_6__full_n), - .if_write(fifo_A_Sextans_6__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_Sextans_7 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_Sextans_7__dout), - .if_empty_n(fifo_A_Sextans_7__empty_n), - .if_read(fifo_A_Sextans_7__read), - .if_read_ce(1'b1), - .if_din(fifo_A_Sextans_7__din), - .if_full_n(fifo_A_Sextans_7__full_n), - .if_write(fifo_A_Sextans_7__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_0 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_0__dout), - .if_empty_n(fifo_A_pe_Sextans_0__empty_n), - .if_read(fifo_A_pe_Sextans_0__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_0__din), - .if_full_n(fifo_A_pe_Sextans_0__full_n), - .if_write(fifo_A_pe_Sextans_0__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_10 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_10__dout), - .if_empty_n(fifo_A_pe_Sextans_10__empty_n), - .if_read(fifo_A_pe_Sextans_10__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_10__din), - .if_full_n(fifo_A_pe_Sextans_10__full_n), - .if_write(fifo_A_pe_Sextans_10__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_11 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_11__dout), - .if_empty_n(fifo_A_pe_Sextans_11__empty_n), - .if_read(fifo_A_pe_Sextans_11__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_11__din), - .if_full_n(fifo_A_pe_Sextans_11__full_n), - .if_write(fifo_A_pe_Sextans_11__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_12 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_12__dout), - .if_empty_n(fifo_A_pe_Sextans_12__empty_n), - .if_read(fifo_A_pe_Sextans_12__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_12__din), - .if_full_n(fifo_A_pe_Sextans_12__full_n), - .if_write(fifo_A_pe_Sextans_12__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_13 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_13__dout), - .if_empty_n(fifo_A_pe_Sextans_13__empty_n), - .if_read(fifo_A_pe_Sextans_13__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_13__din), - .if_full_n(fifo_A_pe_Sextans_13__full_n), - .if_write(fifo_A_pe_Sextans_13__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_14 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_14__dout), - .if_empty_n(fifo_A_pe_Sextans_14__empty_n), - .if_read(fifo_A_pe_Sextans_14__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_14__din), - .if_full_n(fifo_A_pe_Sextans_14__full_n), - .if_write(fifo_A_pe_Sextans_14__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_15 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_15__dout), - .if_empty_n(fifo_A_pe_Sextans_15__empty_n), - .if_read(fifo_A_pe_Sextans_15__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_15__din), - .if_full_n(fifo_A_pe_Sextans_15__full_n), - .if_write(fifo_A_pe_Sextans_15__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_1 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_1__dout), - .if_empty_n(fifo_A_pe_Sextans_1__empty_n), - .if_read(fifo_A_pe_Sextans_1__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_1__din), - .if_full_n(fifo_A_pe_Sextans_1__full_n), - .if_write(fifo_A_pe_Sextans_1__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_2 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_2__dout), - .if_empty_n(fifo_A_pe_Sextans_2__empty_n), - .if_read(fifo_A_pe_Sextans_2__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_2__din), - .if_full_n(fifo_A_pe_Sextans_2__full_n), - .if_write(fifo_A_pe_Sextans_2__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_3 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_3__dout), - .if_empty_n(fifo_A_pe_Sextans_3__empty_n), - .if_read(fifo_A_pe_Sextans_3__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_3__din), - .if_full_n(fifo_A_pe_Sextans_3__full_n), - .if_write(fifo_A_pe_Sextans_3__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_4 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_4__dout), - .if_empty_n(fifo_A_pe_Sextans_4__empty_n), - .if_read(fifo_A_pe_Sextans_4__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_4__din), - .if_full_n(fifo_A_pe_Sextans_4__full_n), - .if_write(fifo_A_pe_Sextans_4__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_5 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_5__dout), - .if_empty_n(fifo_A_pe_Sextans_5__empty_n), - .if_read(fifo_A_pe_Sextans_5__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_5__din), - .if_full_n(fifo_A_pe_Sextans_5__full_n), - .if_write(fifo_A_pe_Sextans_5__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_6 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_6__dout), - .if_empty_n(fifo_A_pe_Sextans_6__empty_n), - .if_read(fifo_A_pe_Sextans_6__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_6__din), - .if_full_n(fifo_A_pe_Sextans_6__full_n), - .if_write(fifo_A_pe_Sextans_6__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_7 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_7__dout), - .if_empty_n(fifo_A_pe_Sextans_7__empty_n), - .if_read(fifo_A_pe_Sextans_7__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_7__din), - .if_full_n(fifo_A_pe_Sextans_7__full_n), - .if_write(fifo_A_pe_Sextans_7__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_8 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_8__dout), - .if_empty_n(fifo_A_pe_Sextans_8__empty_n), - .if_read(fifo_A_pe_Sextans_8__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_8__din), - .if_full_n(fifo_A_pe_Sextans_8__full_n), - .if_write(fifo_A_pe_Sextans_8__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_A_pe_Sextans_9 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_A_pe_Sextans_9__dout), - .if_empty_n(fifo_A_pe_Sextans_9__empty_n), - .if_read(fifo_A_pe_Sextans_9__read), - .if_read_ce(1'b1), - .if_din(fifo_A_pe_Sextans_9__din), - .if_full_n(fifo_A_pe_Sextans_9__full_n), - .if_write(fifo_A_pe_Sextans_9__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_0 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_0__dout), - .if_empty_n(fifo_B_pe_Sextans_0__empty_n), - .if_read(fifo_B_pe_Sextans_0__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_0__din), - .if_full_n(fifo_B_pe_Sextans_0__full_n), - .if_write(fifo_B_pe_Sextans_0__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_10 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_10__dout), - .if_empty_n(fifo_B_pe_Sextans_10__empty_n), - .if_read(fifo_B_pe_Sextans_10__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_10__din), - .if_full_n(fifo_B_pe_Sextans_10__full_n), - .if_write(fifo_B_pe_Sextans_10__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_11 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_11__dout), - .if_empty_n(fifo_B_pe_Sextans_11__empty_n), - .if_read(fifo_B_pe_Sextans_11__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_11__din), - .if_full_n(fifo_B_pe_Sextans_11__full_n), - .if_write(fifo_B_pe_Sextans_11__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_12 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_12__dout), - .if_empty_n(fifo_B_pe_Sextans_12__empty_n), - .if_read(fifo_B_pe_Sextans_12__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_12__din), - .if_full_n(fifo_B_pe_Sextans_12__full_n), - .if_write(fifo_B_pe_Sextans_12__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_13 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_13__dout), - .if_empty_n(fifo_B_pe_Sextans_13__empty_n), - .if_read(fifo_B_pe_Sextans_13__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_13__din), - .if_full_n(fifo_B_pe_Sextans_13__full_n), - .if_write(fifo_B_pe_Sextans_13__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_14 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_14__dout), - .if_empty_n(fifo_B_pe_Sextans_14__empty_n), - .if_read(fifo_B_pe_Sextans_14__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_14__din), - .if_full_n(fifo_B_pe_Sextans_14__full_n), - .if_write(fifo_B_pe_Sextans_14__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_15 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_15__dout), - .if_empty_n(fifo_B_pe_Sextans_15__empty_n), - .if_read(fifo_B_pe_Sextans_15__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_15__din), - .if_full_n(fifo_B_pe_Sextans_15__full_n), - .if_write(fifo_B_pe_Sextans_15__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_16 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_16__dout), - .if_empty_n(fifo_B_pe_Sextans_16__empty_n), - .if_read(fifo_B_pe_Sextans_16__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_16__din), - .if_full_n(fifo_B_pe_Sextans_16__full_n), - .if_write(fifo_B_pe_Sextans_16__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_17 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_17__dout), - .if_empty_n(fifo_B_pe_Sextans_17__empty_n), - .if_read(fifo_B_pe_Sextans_17__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_17__din), - .if_full_n(fifo_B_pe_Sextans_17__full_n), - .if_write(fifo_B_pe_Sextans_17__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_18 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_18__dout), - .if_empty_n(fifo_B_pe_Sextans_18__empty_n), - .if_read(fifo_B_pe_Sextans_18__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_18__din), - .if_full_n(fifo_B_pe_Sextans_18__full_n), - .if_write(fifo_B_pe_Sextans_18__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_19 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_19__dout), - .if_empty_n(fifo_B_pe_Sextans_19__empty_n), - .if_read(fifo_B_pe_Sextans_19__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_19__din), - .if_full_n(fifo_B_pe_Sextans_19__full_n), - .if_write(fifo_B_pe_Sextans_19__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_1 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_1__dout), - .if_empty_n(fifo_B_pe_Sextans_1__empty_n), - .if_read(fifo_B_pe_Sextans_1__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_1__din), - .if_full_n(fifo_B_pe_Sextans_1__full_n), - .if_write(fifo_B_pe_Sextans_1__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_20 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_20__dout), - .if_empty_n(fifo_B_pe_Sextans_20__empty_n), - .if_read(fifo_B_pe_Sextans_20__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_20__din), - .if_full_n(fifo_B_pe_Sextans_20__full_n), - .if_write(fifo_B_pe_Sextans_20__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_21 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_21__dout), - .if_empty_n(fifo_B_pe_Sextans_21__empty_n), - .if_read(fifo_B_pe_Sextans_21__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_21__din), - .if_full_n(fifo_B_pe_Sextans_21__full_n), - .if_write(fifo_B_pe_Sextans_21__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_22 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_22__dout), - .if_empty_n(fifo_B_pe_Sextans_22__empty_n), - .if_read(fifo_B_pe_Sextans_22__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_22__din), - .if_full_n(fifo_B_pe_Sextans_22__full_n), - .if_write(fifo_B_pe_Sextans_22__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_23 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_23__dout), - .if_empty_n(fifo_B_pe_Sextans_23__empty_n), - .if_read(fifo_B_pe_Sextans_23__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_23__din), - .if_full_n(fifo_B_pe_Sextans_23__full_n), - .if_write(fifo_B_pe_Sextans_23__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_24 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_24__dout), - .if_empty_n(fifo_B_pe_Sextans_24__empty_n), - .if_read(fifo_B_pe_Sextans_24__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_24__din), - .if_full_n(fifo_B_pe_Sextans_24__full_n), - .if_write(fifo_B_pe_Sextans_24__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_25 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_25__dout), - .if_empty_n(fifo_B_pe_Sextans_25__empty_n), - .if_read(fifo_B_pe_Sextans_25__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_25__din), - .if_full_n(fifo_B_pe_Sextans_25__full_n), - .if_write(fifo_B_pe_Sextans_25__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_26 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_26__dout), - .if_empty_n(fifo_B_pe_Sextans_26__empty_n), - .if_read(fifo_B_pe_Sextans_26__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_26__din), - .if_full_n(fifo_B_pe_Sextans_26__full_n), - .if_write(fifo_B_pe_Sextans_26__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_27 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_27__dout), - .if_empty_n(fifo_B_pe_Sextans_27__empty_n), - .if_read(fifo_B_pe_Sextans_27__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_27__din), - .if_full_n(fifo_B_pe_Sextans_27__full_n), - .if_write(fifo_B_pe_Sextans_27__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_28 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_28__dout), - .if_empty_n(fifo_B_pe_Sextans_28__empty_n), - .if_read(fifo_B_pe_Sextans_28__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_28__din), - .if_full_n(fifo_B_pe_Sextans_28__full_n), - .if_write(fifo_B_pe_Sextans_28__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_29 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_29__dout), - .if_empty_n(fifo_B_pe_Sextans_29__empty_n), - .if_read(fifo_B_pe_Sextans_29__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_29__din), - .if_full_n(fifo_B_pe_Sextans_29__full_n), - .if_write(fifo_B_pe_Sextans_29__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_2 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_2__dout), - .if_empty_n(fifo_B_pe_Sextans_2__empty_n), - .if_read(fifo_B_pe_Sextans_2__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_2__din), - .if_full_n(fifo_B_pe_Sextans_2__full_n), - .if_write(fifo_B_pe_Sextans_2__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_30 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_30__dout), - .if_empty_n(fifo_B_pe_Sextans_30__empty_n), - .if_read(fifo_B_pe_Sextans_30__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_30__din), - .if_full_n(fifo_B_pe_Sextans_30__full_n), - .if_write(fifo_B_pe_Sextans_30__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_31 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_31__dout), - .if_empty_n(fifo_B_pe_Sextans_31__empty_n), - .if_read(fifo_B_pe_Sextans_31__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_31__din), - .if_full_n(fifo_B_pe_Sextans_31__full_n), - .if_write(fifo_B_pe_Sextans_31__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_32 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_32__dout), - .if_empty_n(fifo_B_pe_Sextans_32__empty_n), - .if_read(fifo_B_pe_Sextans_32__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_32__din), - .if_full_n(fifo_B_pe_Sextans_32__full_n), - .if_write(fifo_B_pe_Sextans_32__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_33 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_33__dout), - .if_empty_n(fifo_B_pe_Sextans_33__empty_n), - .if_read(fifo_B_pe_Sextans_33__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_33__din), - .if_full_n(fifo_B_pe_Sextans_33__full_n), - .if_write(fifo_B_pe_Sextans_33__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_34 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_34__dout), - .if_empty_n(fifo_B_pe_Sextans_34__empty_n), - .if_read(fifo_B_pe_Sextans_34__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_34__din), - .if_full_n(fifo_B_pe_Sextans_34__full_n), - .if_write(fifo_B_pe_Sextans_34__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_35 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_35__dout), - .if_empty_n(fifo_B_pe_Sextans_35__empty_n), - .if_read(fifo_B_pe_Sextans_35__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_35__din), - .if_full_n(fifo_B_pe_Sextans_35__full_n), - .if_write(fifo_B_pe_Sextans_35__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_36 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_36__dout), - .if_empty_n(fifo_B_pe_Sextans_36__empty_n), - .if_read(fifo_B_pe_Sextans_36__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_36__din), - .if_full_n(fifo_B_pe_Sextans_36__full_n), - .if_write(fifo_B_pe_Sextans_36__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_37 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_37__dout), - .if_empty_n(fifo_B_pe_Sextans_37__empty_n), - .if_read(fifo_B_pe_Sextans_37__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_37__din), - .if_full_n(fifo_B_pe_Sextans_37__full_n), - .if_write(fifo_B_pe_Sextans_37__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_38 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_38__dout), - .if_empty_n(fifo_B_pe_Sextans_38__empty_n), - .if_read(fifo_B_pe_Sextans_38__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_38__din), - .if_full_n(fifo_B_pe_Sextans_38__full_n), - .if_write(fifo_B_pe_Sextans_38__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_39 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_39__dout), - .if_empty_n(fifo_B_pe_Sextans_39__empty_n), - .if_read(fifo_B_pe_Sextans_39__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_39__din), - .if_full_n(fifo_B_pe_Sextans_39__full_n), - .if_write(fifo_B_pe_Sextans_39__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_3 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_3__dout), - .if_empty_n(fifo_B_pe_Sextans_3__empty_n), - .if_read(fifo_B_pe_Sextans_3__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_3__din), - .if_full_n(fifo_B_pe_Sextans_3__full_n), - .if_write(fifo_B_pe_Sextans_3__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_40 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_40__dout), - .if_empty_n(fifo_B_pe_Sextans_40__empty_n), - .if_read(fifo_B_pe_Sextans_40__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_40__din), - .if_full_n(fifo_B_pe_Sextans_40__full_n), - .if_write(fifo_B_pe_Sextans_40__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_41 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_41__dout), - .if_empty_n(fifo_B_pe_Sextans_41__empty_n), - .if_read(fifo_B_pe_Sextans_41__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_41__din), - .if_full_n(fifo_B_pe_Sextans_41__full_n), - .if_write(fifo_B_pe_Sextans_41__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_42 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_42__dout), - .if_empty_n(fifo_B_pe_Sextans_42__empty_n), - .if_read(fifo_B_pe_Sextans_42__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_42__din), - .if_full_n(fifo_B_pe_Sextans_42__full_n), - .if_write(fifo_B_pe_Sextans_42__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_43 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_43__dout), - .if_empty_n(fifo_B_pe_Sextans_43__empty_n), - .if_read(fifo_B_pe_Sextans_43__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_43__din), - .if_full_n(fifo_B_pe_Sextans_43__full_n), - .if_write(fifo_B_pe_Sextans_43__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_44 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_44__dout), - .if_empty_n(fifo_B_pe_Sextans_44__empty_n), - .if_read(fifo_B_pe_Sextans_44__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_44__din), - .if_full_n(fifo_B_pe_Sextans_44__full_n), - .if_write(fifo_B_pe_Sextans_44__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_45 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_45__dout), - .if_empty_n(fifo_B_pe_Sextans_45__empty_n), - .if_read(fifo_B_pe_Sextans_45__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_45__din), - .if_full_n(fifo_B_pe_Sextans_45__full_n), - .if_write(fifo_B_pe_Sextans_45__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_46 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_46__dout), - .if_empty_n(fifo_B_pe_Sextans_46__empty_n), - .if_read(fifo_B_pe_Sextans_46__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_46__din), - .if_full_n(fifo_B_pe_Sextans_46__full_n), - .if_write(fifo_B_pe_Sextans_46__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_47 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_47__dout), - .if_empty_n(fifo_B_pe_Sextans_47__empty_n), - .if_read(fifo_B_pe_Sextans_47__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_47__din), - .if_full_n(fifo_B_pe_Sextans_47__full_n), - .if_write(fifo_B_pe_Sextans_47__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_48 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_48__dout), - .if_empty_n(fifo_B_pe_Sextans_48__empty_n), - .if_read(fifo_B_pe_Sextans_48__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_48__din), - .if_full_n(fifo_B_pe_Sextans_48__full_n), - .if_write(fifo_B_pe_Sextans_48__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_49 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_49__dout), - .if_empty_n(fifo_B_pe_Sextans_49__empty_n), - .if_read(fifo_B_pe_Sextans_49__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_49__din), - .if_full_n(fifo_B_pe_Sextans_49__full_n), - .if_write(fifo_B_pe_Sextans_49__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_4 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_4__dout), - .if_empty_n(fifo_B_pe_Sextans_4__empty_n), - .if_read(fifo_B_pe_Sextans_4__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_4__din), - .if_full_n(fifo_B_pe_Sextans_4__full_n), - .if_write(fifo_B_pe_Sextans_4__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_50 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_50__dout), - .if_empty_n(fifo_B_pe_Sextans_50__empty_n), - .if_read(fifo_B_pe_Sextans_50__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_50__din), - .if_full_n(fifo_B_pe_Sextans_50__full_n), - .if_write(fifo_B_pe_Sextans_50__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_51 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_51__dout), - .if_empty_n(fifo_B_pe_Sextans_51__empty_n), - .if_read(fifo_B_pe_Sextans_51__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_51__din), - .if_full_n(fifo_B_pe_Sextans_51__full_n), - .if_write(fifo_B_pe_Sextans_51__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_52 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_52__dout), - .if_empty_n(fifo_B_pe_Sextans_52__empty_n), - .if_read(fifo_B_pe_Sextans_52__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_52__din), - .if_full_n(fifo_B_pe_Sextans_52__full_n), - .if_write(fifo_B_pe_Sextans_52__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_53 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_53__dout), - .if_empty_n(fifo_B_pe_Sextans_53__empty_n), - .if_read(fifo_B_pe_Sextans_53__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_53__din), - .if_full_n(fifo_B_pe_Sextans_53__full_n), - .if_write(fifo_B_pe_Sextans_53__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_54 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_54__dout), - .if_empty_n(fifo_B_pe_Sextans_54__empty_n), - .if_read(fifo_B_pe_Sextans_54__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_54__din), - .if_full_n(fifo_B_pe_Sextans_54__full_n), - .if_write(fifo_B_pe_Sextans_54__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_55 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_55__dout), - .if_empty_n(fifo_B_pe_Sextans_55__empty_n), - .if_read(fifo_B_pe_Sextans_55__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_55__din), - .if_full_n(fifo_B_pe_Sextans_55__full_n), - .if_write(fifo_B_pe_Sextans_55__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_56 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_56__dout), - .if_empty_n(fifo_B_pe_Sextans_56__empty_n), - .if_read(fifo_B_pe_Sextans_56__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_56__din), - .if_full_n(fifo_B_pe_Sextans_56__full_n), - .if_write(fifo_B_pe_Sextans_56__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_57 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_57__dout), - .if_empty_n(fifo_B_pe_Sextans_57__empty_n), - .if_read(fifo_B_pe_Sextans_57__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_57__din), - .if_full_n(fifo_B_pe_Sextans_57__full_n), - .if_write(fifo_B_pe_Sextans_57__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_58 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_58__dout), - .if_empty_n(fifo_B_pe_Sextans_58__empty_n), - .if_read(fifo_B_pe_Sextans_58__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_58__din), - .if_full_n(fifo_B_pe_Sextans_58__full_n), - .if_write(fifo_B_pe_Sextans_58__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_59 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_59__dout), - .if_empty_n(fifo_B_pe_Sextans_59__empty_n), - .if_read(fifo_B_pe_Sextans_59__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_59__din), - .if_full_n(fifo_B_pe_Sextans_59__full_n), - .if_write(fifo_B_pe_Sextans_59__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_5 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_5__dout), - .if_empty_n(fifo_B_pe_Sextans_5__empty_n), - .if_read(fifo_B_pe_Sextans_5__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_5__din), - .if_full_n(fifo_B_pe_Sextans_5__full_n), - .if_write(fifo_B_pe_Sextans_5__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_60 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_60__dout), - .if_empty_n(fifo_B_pe_Sextans_60__empty_n), - .if_read(fifo_B_pe_Sextans_60__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_60__din), - .if_full_n(fifo_B_pe_Sextans_60__full_n), - .if_write(fifo_B_pe_Sextans_60__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_61 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_61__dout), - .if_empty_n(fifo_B_pe_Sextans_61__empty_n), - .if_read(fifo_B_pe_Sextans_61__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_61__din), - .if_full_n(fifo_B_pe_Sextans_61__full_n), - .if_write(fifo_B_pe_Sextans_61__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_62 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_62__dout), - .if_empty_n(fifo_B_pe_Sextans_62__empty_n), - .if_read(fifo_B_pe_Sextans_62__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_62__din), - .if_full_n(fifo_B_pe_Sextans_62__full_n), - .if_write(fifo_B_pe_Sextans_62__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_63 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_63__dout), - .if_empty_n(fifo_B_pe_Sextans_63__empty_n), - .if_read(fifo_B_pe_Sextans_63__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_63__din), - .if_full_n(fifo_B_pe_Sextans_63__full_n), - .if_write(fifo_B_pe_Sextans_63__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_64 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_64__dout), - .if_empty_n(fifo_B_pe_Sextans_64__empty_n), - .if_read(fifo_B_pe_Sextans_64__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_64__din), - .if_full_n(fifo_B_pe_Sextans_64__full_n), - .if_write(fifo_B_pe_Sextans_64__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_65 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_65__dout), - .if_empty_n(fifo_B_pe_Sextans_65__empty_n), - .if_read(fifo_B_pe_Sextans_65__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_65__din), - .if_full_n(fifo_B_pe_Sextans_65__full_n), - .if_write(fifo_B_pe_Sextans_65__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_66 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_66__dout), - .if_empty_n(fifo_B_pe_Sextans_66__empty_n), - .if_read(fifo_B_pe_Sextans_66__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_66__din), - .if_full_n(fifo_B_pe_Sextans_66__full_n), - .if_write(fifo_B_pe_Sextans_66__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_67 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_67__dout), - .if_empty_n(fifo_B_pe_Sextans_67__empty_n), - .if_read(fifo_B_pe_Sextans_67__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_67__din), - .if_full_n(fifo_B_pe_Sextans_67__full_n), - .if_write(fifo_B_pe_Sextans_67__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_6 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_6__dout), - .if_empty_n(fifo_B_pe_Sextans_6__empty_n), - .if_read(fifo_B_pe_Sextans_6__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_6__din), - .if_full_n(fifo_B_pe_Sextans_6__full_n), - .if_write(fifo_B_pe_Sextans_6__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_7 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_7__dout), - .if_empty_n(fifo_B_pe_Sextans_7__empty_n), - .if_read(fifo_B_pe_Sextans_7__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_7__din), - .if_full_n(fifo_B_pe_Sextans_7__full_n), - .if_write(fifo_B_pe_Sextans_7__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_8 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_8__dout), - .if_empty_n(fifo_B_pe_Sextans_8__empty_n), - .if_read(fifo_B_pe_Sextans_8__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_8__din), - .if_full_n(fifo_B_pe_Sextans_8__full_n), - .if_write(fifo_B_pe_Sextans_8__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_B_pe_Sextans_9 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_B_pe_Sextans_9__dout), - .if_empty_n(fifo_B_pe_Sextans_9__empty_n), - .if_read(fifo_B_pe_Sextans_9__read), - .if_read_ce(1'b1), - .if_din(fifo_B_pe_Sextans_9__din), - .if_full_n(fifo_B_pe_Sextans_9__full_n), - .if_write(fifo_B_pe_Sextans_9__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_Sextans_0 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_Sextans_0__dout), - .if_empty_n(fifo_C_ch_Sextans_0__empty_n), - .if_read(fifo_C_ch_Sextans_0__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_Sextans_0__din), - .if_full_n(fifo_C_ch_Sextans_0__full_n), - .if_write(fifo_C_ch_Sextans_0__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_Sextans_1 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_Sextans_1__dout), - .if_empty_n(fifo_C_ch_Sextans_1__empty_n), - .if_read(fifo_C_ch_Sextans_1__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_Sextans_1__din), - .if_full_n(fifo_C_ch_Sextans_1__full_n), - .if_write(fifo_C_ch_Sextans_1__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_Sextans_2 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_Sextans_2__dout), - .if_empty_n(fifo_C_ch_Sextans_2__empty_n), - .if_read(fifo_C_ch_Sextans_2__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_Sextans_2__din), - .if_full_n(fifo_C_ch_Sextans_2__full_n), - .if_write(fifo_C_ch_Sextans_2__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_Sextans_3 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_Sextans_3__dout), - .if_empty_n(fifo_C_ch_Sextans_3__empty_n), - .if_read(fifo_C_ch_Sextans_3__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_Sextans_3__din), - .if_full_n(fifo_C_ch_Sextans_3__full_n), - .if_write(fifo_C_ch_Sextans_3__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_Sextans_4 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_Sextans_4__dout), - .if_empty_n(fifo_C_ch_Sextans_4__empty_n), - .if_read(fifo_C_ch_Sextans_4__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_Sextans_4__din), - .if_full_n(fifo_C_ch_Sextans_4__full_n), - .if_write(fifo_C_ch_Sextans_4__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_Sextans_5 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_Sextans_5__dout), - .if_empty_n(fifo_C_ch_Sextans_5__empty_n), - .if_read(fifo_C_ch_Sextans_5__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_Sextans_5__din), - .if_full_n(fifo_C_ch_Sextans_5__full_n), - .if_write(fifo_C_ch_Sextans_5__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_Sextans_6 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_Sextans_6__dout), - .if_empty_n(fifo_C_ch_Sextans_6__empty_n), - .if_read(fifo_C_ch_Sextans_6__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_Sextans_6__din), - .if_full_n(fifo_C_ch_Sextans_6__full_n), - .if_write(fifo_C_ch_Sextans_6__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_Sextans_7 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_Sextans_7__dout), - .if_empty_n(fifo_C_ch_Sextans_7__empty_n), - .if_read(fifo_C_ch_Sextans_7__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_Sextans_7__din), - .if_full_n(fifo_C_ch_Sextans_7__full_n), - .if_write(fifo_C_ch_Sextans_7__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_Sextans_0 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_Sextans_0__dout), - .if_empty_n(fifo_C_ch_result_Sextans_0__empty_n), - .if_read(fifo_C_ch_result_Sextans_0__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_Sextans_0__din), - .if_full_n(fifo_C_ch_result_Sextans_0__full_n), - .if_write(fifo_C_ch_result_Sextans_0__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_Sextans_1 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_Sextans_1__dout), - .if_empty_n(fifo_C_ch_result_Sextans_1__empty_n), - .if_read(fifo_C_ch_result_Sextans_1__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_Sextans_1__din), - .if_full_n(fifo_C_ch_result_Sextans_1__full_n), - .if_write(fifo_C_ch_result_Sextans_1__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_Sextans_2 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_Sextans_2__dout), - .if_empty_n(fifo_C_ch_result_Sextans_2__empty_n), - .if_read(fifo_C_ch_result_Sextans_2__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_Sextans_2__din), - .if_full_n(fifo_C_ch_result_Sextans_2__full_n), - .if_write(fifo_C_ch_result_Sextans_2__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_Sextans_3 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_Sextans_3__dout), - .if_empty_n(fifo_C_ch_result_Sextans_3__empty_n), - .if_read(fifo_C_ch_result_Sextans_3__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_Sextans_3__din), - .if_full_n(fifo_C_ch_result_Sextans_3__full_n), - .if_write(fifo_C_ch_result_Sextans_3__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_Sextans_4 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_Sextans_4__dout), - .if_empty_n(fifo_C_ch_result_Sextans_4__empty_n), - .if_read(fifo_C_ch_result_Sextans_4__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_Sextans_4__din), - .if_full_n(fifo_C_ch_result_Sextans_4__full_n), - .if_write(fifo_C_ch_result_Sextans_4__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_Sextans_5 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_Sextans_5__dout), - .if_empty_n(fifo_C_ch_result_Sextans_5__empty_n), - .if_read(fifo_C_ch_result_Sextans_5__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_Sextans_5__din), - .if_full_n(fifo_C_ch_result_Sextans_5__full_n), - .if_write(fifo_C_ch_result_Sextans_5__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_Sextans_6 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_Sextans_6__dout), - .if_empty_n(fifo_C_ch_result_Sextans_6__empty_n), - .if_read(fifo_C_ch_result_Sextans_6__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_Sextans_6__din), - .if_full_n(fifo_C_ch_result_Sextans_6__full_n), - .if_write(fifo_C_ch_result_Sextans_6__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_Sextans_7 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_Sextans_7__dout), - .if_empty_n(fifo_C_ch_result_Sextans_7__empty_n), - .if_read(fifo_C_ch_result_Sextans_7__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_Sextans_7__din), - .if_full_n(fifo_C_ch_result_Sextans_7__full_n), - .if_write(fifo_C_ch_result_Sextans_7__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_alpha_Sextans_0 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_alpha_Sextans_0__dout), - .if_empty_n(fifo_C_ch_result_alpha_Sextans_0__empty_n), - .if_read(fifo_C_ch_result_alpha_Sextans_0__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_alpha_Sextans_0__din), - .if_full_n(fifo_C_ch_result_alpha_Sextans_0__full_n), - .if_write(fifo_C_ch_result_alpha_Sextans_0__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_alpha_Sextans_1 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_alpha_Sextans_1__dout), - .if_empty_n(fifo_C_ch_result_alpha_Sextans_1__empty_n), - .if_read(fifo_C_ch_result_alpha_Sextans_1__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_alpha_Sextans_1__din), - .if_full_n(fifo_C_ch_result_alpha_Sextans_1__full_n), - .if_write(fifo_C_ch_result_alpha_Sextans_1__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_alpha_Sextans_2 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_alpha_Sextans_2__dout), - .if_empty_n(fifo_C_ch_result_alpha_Sextans_2__empty_n), - .if_read(fifo_C_ch_result_alpha_Sextans_2__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_alpha_Sextans_2__din), - .if_full_n(fifo_C_ch_result_alpha_Sextans_2__full_n), - .if_write(fifo_C_ch_result_alpha_Sextans_2__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_alpha_Sextans_3 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_alpha_Sextans_3__dout), - .if_empty_n(fifo_C_ch_result_alpha_Sextans_3__empty_n), - .if_read(fifo_C_ch_result_alpha_Sextans_3__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_alpha_Sextans_3__din), - .if_full_n(fifo_C_ch_result_alpha_Sextans_3__full_n), - .if_write(fifo_C_ch_result_alpha_Sextans_3__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_alpha_Sextans_4 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_alpha_Sextans_4__dout), - .if_empty_n(fifo_C_ch_result_alpha_Sextans_4__empty_n), - .if_read(fifo_C_ch_result_alpha_Sextans_4__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_alpha_Sextans_4__din), - .if_full_n(fifo_C_ch_result_alpha_Sextans_4__full_n), - .if_write(fifo_C_ch_result_alpha_Sextans_4__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_alpha_Sextans_5 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_alpha_Sextans_5__dout), - .if_empty_n(fifo_C_ch_result_alpha_Sextans_5__empty_n), - .if_read(fifo_C_ch_result_alpha_Sextans_5__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_alpha_Sextans_5__din), - .if_full_n(fifo_C_ch_result_alpha_Sextans_5__full_n), - .if_write(fifo_C_ch_result_alpha_Sextans_5__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_alpha_Sextans_6 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_alpha_Sextans_6__dout), - .if_empty_n(fifo_C_ch_result_alpha_Sextans_6__empty_n), - .if_read(fifo_C_ch_result_alpha_Sextans_6__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_alpha_Sextans_6__din), - .if_full_n(fifo_C_ch_result_alpha_Sextans_6__full_n), - .if_write(fifo_C_ch_result_alpha_Sextans_6__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_ch_result_alpha_Sextans_7 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_ch_result_alpha_Sextans_7__dout), - .if_empty_n(fifo_C_ch_result_alpha_Sextans_7__empty_n), - .if_read(fifo_C_ch_result_alpha_Sextans_7__read), - .if_read_ce(1'b1), - .if_din(fifo_C_ch_result_alpha_Sextans_7__din), - .if_full_n(fifo_C_ch_result_alpha_Sextans_7__full_n), - .if_write(fifo_C_ch_result_alpha_Sextans_7__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_0 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_0__dout), - .if_empty_n(fifo_C_pe_Sextans_0__empty_n), - .if_read(fifo_C_pe_Sextans_0__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_0__din), - .if_full_n(fifo_C_pe_Sextans_0__full_n), - .if_write(fifo_C_pe_Sextans_0__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_10 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_10__dout), - .if_empty_n(fifo_C_pe_Sextans_10__empty_n), - .if_read(fifo_C_pe_Sextans_10__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_10__din), - .if_full_n(fifo_C_pe_Sextans_10__full_n), - .if_write(fifo_C_pe_Sextans_10__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_11 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_11__dout), - .if_empty_n(fifo_C_pe_Sextans_11__empty_n), - .if_read(fifo_C_pe_Sextans_11__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_11__din), - .if_full_n(fifo_C_pe_Sextans_11__full_n), - .if_write(fifo_C_pe_Sextans_11__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_12 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_12__dout), - .if_empty_n(fifo_C_pe_Sextans_12__empty_n), - .if_read(fifo_C_pe_Sextans_12__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_12__din), - .if_full_n(fifo_C_pe_Sextans_12__full_n), - .if_write(fifo_C_pe_Sextans_12__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_13 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_13__dout), - .if_empty_n(fifo_C_pe_Sextans_13__empty_n), - .if_read(fifo_C_pe_Sextans_13__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_13__din), - .if_full_n(fifo_C_pe_Sextans_13__full_n), - .if_write(fifo_C_pe_Sextans_13__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_14 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_14__dout), - .if_empty_n(fifo_C_pe_Sextans_14__empty_n), - .if_read(fifo_C_pe_Sextans_14__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_14__din), - .if_full_n(fifo_C_pe_Sextans_14__full_n), - .if_write(fifo_C_pe_Sextans_14__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_15 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_15__dout), - .if_empty_n(fifo_C_pe_Sextans_15__empty_n), - .if_read(fifo_C_pe_Sextans_15__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_15__din), - .if_full_n(fifo_C_pe_Sextans_15__full_n), - .if_write(fifo_C_pe_Sextans_15__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_1 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_1__dout), - .if_empty_n(fifo_C_pe_Sextans_1__empty_n), - .if_read(fifo_C_pe_Sextans_1__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_1__din), - .if_full_n(fifo_C_pe_Sextans_1__full_n), - .if_write(fifo_C_pe_Sextans_1__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_2 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_2__dout), - .if_empty_n(fifo_C_pe_Sextans_2__empty_n), - .if_read(fifo_C_pe_Sextans_2__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_2__din), - .if_full_n(fifo_C_pe_Sextans_2__full_n), - .if_write(fifo_C_pe_Sextans_2__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_3 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_3__dout), - .if_empty_n(fifo_C_pe_Sextans_3__empty_n), - .if_read(fifo_C_pe_Sextans_3__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_3__din), - .if_full_n(fifo_C_pe_Sextans_3__full_n), - .if_write(fifo_C_pe_Sextans_3__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_4 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_4__dout), - .if_empty_n(fifo_C_pe_Sextans_4__empty_n), - .if_read(fifo_C_pe_Sextans_4__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_4__din), - .if_full_n(fifo_C_pe_Sextans_4__full_n), - .if_write(fifo_C_pe_Sextans_4__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_5 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_5__dout), - .if_empty_n(fifo_C_pe_Sextans_5__empty_n), - .if_read(fifo_C_pe_Sextans_5__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_5__din), - .if_full_n(fifo_C_pe_Sextans_5__full_n), - .if_write(fifo_C_pe_Sextans_5__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_6 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_6__dout), - .if_empty_n(fifo_C_pe_Sextans_6__empty_n), - .if_read(fifo_C_pe_Sextans_6__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_6__din), - .if_full_n(fifo_C_pe_Sextans_6__full_n), - .if_write(fifo_C_pe_Sextans_6__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_7 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_7__dout), - .if_empty_n(fifo_C_pe_Sextans_7__empty_n), - .if_read(fifo_C_pe_Sextans_7__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_7__din), - .if_full_n(fifo_C_pe_Sextans_7__full_n), - .if_write(fifo_C_pe_Sextans_7__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_8 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_8__dout), - .if_empty_n(fifo_C_pe_Sextans_8__empty_n), - .if_read(fifo_C_pe_Sextans_8__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_8__din), - .if_full_n(fifo_C_pe_Sextans_8__full_n), - .if_write(fifo_C_pe_Sextans_8__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(257), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_pe_Sextans_9 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_pe_Sextans_9__dout), - .if_empty_n(fifo_C_pe_Sextans_9__empty_n), - .if_read(fifo_C_pe_Sextans_9__read), - .if_read_ce(1'b1), - .if_din(fifo_C_pe_Sextans_9__din), - .if_full_n(fifo_C_pe_Sextans_9__full_n), - .if_write(fifo_C_pe_Sextans_9__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_Sextans_0 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_Sextans_0__dout), - .if_empty_n(fifo_C_read_in_Sextans_0__empty_n), - .if_read(fifo_C_read_in_Sextans_0__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_Sextans_0__din), - .if_full_n(fifo_C_read_in_Sextans_0__full_n), - .if_write(fifo_C_read_in_Sextans_0__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_Sextans_1 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_Sextans_1__dout), - .if_empty_n(fifo_C_read_in_Sextans_1__empty_n), - .if_read(fifo_C_read_in_Sextans_1__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_Sextans_1__din), - .if_full_n(fifo_C_read_in_Sextans_1__full_n), - .if_write(fifo_C_read_in_Sextans_1__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_Sextans_2 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_Sextans_2__dout), - .if_empty_n(fifo_C_read_in_Sextans_2__empty_n), - .if_read(fifo_C_read_in_Sextans_2__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_Sextans_2__din), - .if_full_n(fifo_C_read_in_Sextans_2__full_n), - .if_write(fifo_C_read_in_Sextans_2__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_Sextans_3 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_Sextans_3__dout), - .if_empty_n(fifo_C_read_in_Sextans_3__empty_n), - .if_read(fifo_C_read_in_Sextans_3__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_Sextans_3__din), - .if_full_n(fifo_C_read_in_Sextans_3__full_n), - .if_write(fifo_C_read_in_Sextans_3__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_Sextans_4 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_Sextans_4__dout), - .if_empty_n(fifo_C_read_in_Sextans_4__empty_n), - .if_read(fifo_C_read_in_Sextans_4__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_Sextans_4__din), - .if_full_n(fifo_C_read_in_Sextans_4__full_n), - .if_write(fifo_C_read_in_Sextans_4__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_Sextans_5 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_Sextans_5__dout), - .if_empty_n(fifo_C_read_in_Sextans_5__empty_n), - .if_read(fifo_C_read_in_Sextans_5__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_Sextans_5__din), - .if_full_n(fifo_C_read_in_Sextans_5__full_n), - .if_write(fifo_C_read_in_Sextans_5__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_Sextans_6 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_Sextans_6__dout), - .if_empty_n(fifo_C_read_in_Sextans_6__empty_n), - .if_read(fifo_C_read_in_Sextans_6__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_Sextans_6__din), - .if_full_n(fifo_C_read_in_Sextans_6__full_n), - .if_write(fifo_C_read_in_Sextans_6__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_Sextans_7 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_Sextans_7__dout), - .if_empty_n(fifo_C_read_in_Sextans_7__empty_n), - .if_read(fifo_C_read_in_Sextans_7__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_Sextans_7__din), - .if_full_n(fifo_C_read_in_Sextans_7__full_n), - .if_write(fifo_C_read_in_Sextans_7__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_beta_Sextans_0 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_beta_Sextans_0__dout), - .if_empty_n(fifo_C_read_in_beta_Sextans_0__empty_n), - .if_read(fifo_C_read_in_beta_Sextans_0__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_beta_Sextans_0__din), - .if_full_n(fifo_C_read_in_beta_Sextans_0__full_n), - .if_write(fifo_C_read_in_beta_Sextans_0__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_beta_Sextans_1 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_beta_Sextans_1__dout), - .if_empty_n(fifo_C_read_in_beta_Sextans_1__empty_n), - .if_read(fifo_C_read_in_beta_Sextans_1__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_beta_Sextans_1__din), - .if_full_n(fifo_C_read_in_beta_Sextans_1__full_n), - .if_write(fifo_C_read_in_beta_Sextans_1__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_beta_Sextans_2 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_beta_Sextans_2__dout), - .if_empty_n(fifo_C_read_in_beta_Sextans_2__empty_n), - .if_read(fifo_C_read_in_beta_Sextans_2__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_beta_Sextans_2__din), - .if_full_n(fifo_C_read_in_beta_Sextans_2__full_n), - .if_write(fifo_C_read_in_beta_Sextans_2__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_beta_Sextans_3 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_beta_Sextans_3__dout), - .if_empty_n(fifo_C_read_in_beta_Sextans_3__empty_n), - .if_read(fifo_C_read_in_beta_Sextans_3__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_beta_Sextans_3__din), - .if_full_n(fifo_C_read_in_beta_Sextans_3__full_n), - .if_write(fifo_C_read_in_beta_Sextans_3__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_beta_Sextans_4 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_beta_Sextans_4__dout), - .if_empty_n(fifo_C_read_in_beta_Sextans_4__empty_n), - .if_read(fifo_C_read_in_beta_Sextans_4__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_beta_Sextans_4__din), - .if_full_n(fifo_C_read_in_beta_Sextans_4__full_n), - .if_write(fifo_C_read_in_beta_Sextans_4__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_beta_Sextans_5 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_beta_Sextans_5__dout), - .if_empty_n(fifo_C_read_in_beta_Sextans_5__empty_n), - .if_read(fifo_C_read_in_beta_Sextans_5__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_beta_Sextans_5__din), - .if_full_n(fifo_C_read_in_beta_Sextans_5__full_n), - .if_write(fifo_C_read_in_beta_Sextans_5__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_beta_Sextans_6 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_beta_Sextans_6__dout), - .if_empty_n(fifo_C_read_in_beta_Sextans_6__empty_n), - .if_read(fifo_C_read_in_beta_Sextans_6__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_beta_Sextans_6__din), - .if_full_n(fifo_C_read_in_beta_Sextans_6__full_n), - .if_write(fifo_C_read_in_beta_Sextans_6__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(513), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_C_read_in_beta_Sextans_7 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_C_read_in_beta_Sextans_7__dout), - .if_empty_n(fifo_C_read_in_beta_Sextans_7__empty_n), - .if_read(fifo_C_read_in_beta_Sextans_7__read), - .if_read_ce(1'b1), - .if_din(fifo_C_read_in_beta_Sextans_7__din), - .if_full_n(fifo_C_read_in_beta_Sextans_7__full_n), - .if_write(fifo_C_read_in_beta_Sextans_7__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_0 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_0__dout), - .if_empty_n(fifo_aBvec_Sextans_0__empty_n), - .if_read(fifo_aBvec_Sextans_0__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_0__din), - .if_full_n(fifo_aBvec_Sextans_0__full_n), - .if_write(fifo_aBvec_Sextans_0__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_10 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_10__dout), - .if_empty_n(fifo_aBvec_Sextans_10__empty_n), - .if_read(fifo_aBvec_Sextans_10__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_10__din), - .if_full_n(fifo_aBvec_Sextans_10__full_n), - .if_write(fifo_aBvec_Sextans_10__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_11 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_11__dout), - .if_empty_n(fifo_aBvec_Sextans_11__empty_n), - .if_read(fifo_aBvec_Sextans_11__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_11__din), - .if_full_n(fifo_aBvec_Sextans_11__full_n), - .if_write(fifo_aBvec_Sextans_11__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_12 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_12__dout), - .if_empty_n(fifo_aBvec_Sextans_12__empty_n), - .if_read(fifo_aBvec_Sextans_12__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_12__din), - .if_full_n(fifo_aBvec_Sextans_12__full_n), - .if_write(fifo_aBvec_Sextans_12__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_13 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_13__dout), - .if_empty_n(fifo_aBvec_Sextans_13__empty_n), - .if_read(fifo_aBvec_Sextans_13__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_13__din), - .if_full_n(fifo_aBvec_Sextans_13__full_n), - .if_write(fifo_aBvec_Sextans_13__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_14 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_14__dout), - .if_empty_n(fifo_aBvec_Sextans_14__empty_n), - .if_read(fifo_aBvec_Sextans_14__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_14__din), - .if_full_n(fifo_aBvec_Sextans_14__full_n), - .if_write(fifo_aBvec_Sextans_14__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_15 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_15__dout), - .if_empty_n(fifo_aBvec_Sextans_15__empty_n), - .if_read(fifo_aBvec_Sextans_15__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_15__din), - .if_full_n(fifo_aBvec_Sextans_15__full_n), - .if_write(fifo_aBvec_Sextans_15__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_16 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_16__dout), - .if_empty_n(fifo_aBvec_Sextans_16__empty_n), - .if_read(fifo_aBvec_Sextans_16__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_16__din), - .if_full_n(fifo_aBvec_Sextans_16__full_n), - .if_write(fifo_aBvec_Sextans_16__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_17 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_17__dout), - .if_empty_n(fifo_aBvec_Sextans_17__empty_n), - .if_read(fifo_aBvec_Sextans_17__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_17__din), - .if_full_n(fifo_aBvec_Sextans_17__full_n), - .if_write(fifo_aBvec_Sextans_17__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_18 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_18__dout), - .if_empty_n(fifo_aBvec_Sextans_18__empty_n), - .if_read(fifo_aBvec_Sextans_18__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_18__din), - .if_full_n(fifo_aBvec_Sextans_18__full_n), - .if_write(fifo_aBvec_Sextans_18__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_19 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_19__dout), - .if_empty_n(fifo_aBvec_Sextans_19__empty_n), - .if_read(fifo_aBvec_Sextans_19__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_19__din), - .if_full_n(fifo_aBvec_Sextans_19__full_n), - .if_write(fifo_aBvec_Sextans_19__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_1 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_1__dout), - .if_empty_n(fifo_aBvec_Sextans_1__empty_n), - .if_read(fifo_aBvec_Sextans_1__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_1__din), - .if_full_n(fifo_aBvec_Sextans_1__full_n), - .if_write(fifo_aBvec_Sextans_1__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_20 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_20__dout), - .if_empty_n(fifo_aBvec_Sextans_20__empty_n), - .if_read(fifo_aBvec_Sextans_20__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_20__din), - .if_full_n(fifo_aBvec_Sextans_20__full_n), - .if_write(fifo_aBvec_Sextans_20__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_21 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_21__dout), - .if_empty_n(fifo_aBvec_Sextans_21__empty_n), - .if_read(fifo_aBvec_Sextans_21__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_21__din), - .if_full_n(fifo_aBvec_Sextans_21__full_n), - .if_write(fifo_aBvec_Sextans_21__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_22 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_22__dout), - .if_empty_n(fifo_aBvec_Sextans_22__empty_n), - .if_read(fifo_aBvec_Sextans_22__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_22__din), - .if_full_n(fifo_aBvec_Sextans_22__full_n), - .if_write(fifo_aBvec_Sextans_22__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_23 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_23__dout), - .if_empty_n(fifo_aBvec_Sextans_23__empty_n), - .if_read(fifo_aBvec_Sextans_23__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_23__din), - .if_full_n(fifo_aBvec_Sextans_23__full_n), - .if_write(fifo_aBvec_Sextans_23__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_24 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_24__dout), - .if_empty_n(fifo_aBvec_Sextans_24__empty_n), - .if_read(fifo_aBvec_Sextans_24__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_24__din), - .if_full_n(fifo_aBvec_Sextans_24__full_n), - .if_write(fifo_aBvec_Sextans_24__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_25 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_25__dout), - .if_empty_n(fifo_aBvec_Sextans_25__empty_n), - .if_read(fifo_aBvec_Sextans_25__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_25__din), - .if_full_n(fifo_aBvec_Sextans_25__full_n), - .if_write(fifo_aBvec_Sextans_25__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_26 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_26__dout), - .if_empty_n(fifo_aBvec_Sextans_26__empty_n), - .if_read(fifo_aBvec_Sextans_26__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_26__din), - .if_full_n(fifo_aBvec_Sextans_26__full_n), - .if_write(fifo_aBvec_Sextans_26__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_27 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_27__dout), - .if_empty_n(fifo_aBvec_Sextans_27__empty_n), - .if_read(fifo_aBvec_Sextans_27__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_27__din), - .if_full_n(fifo_aBvec_Sextans_27__full_n), - .if_write(fifo_aBvec_Sextans_27__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_28 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_28__dout), - .if_empty_n(fifo_aBvec_Sextans_28__empty_n), - .if_read(fifo_aBvec_Sextans_28__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_28__din), - .if_full_n(fifo_aBvec_Sextans_28__full_n), - .if_write(fifo_aBvec_Sextans_28__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_29 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_29__dout), - .if_empty_n(fifo_aBvec_Sextans_29__empty_n), - .if_read(fifo_aBvec_Sextans_29__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_29__din), - .if_full_n(fifo_aBvec_Sextans_29__full_n), - .if_write(fifo_aBvec_Sextans_29__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_2 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_2__dout), - .if_empty_n(fifo_aBvec_Sextans_2__empty_n), - .if_read(fifo_aBvec_Sextans_2__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_2__din), - .if_full_n(fifo_aBvec_Sextans_2__full_n), - .if_write(fifo_aBvec_Sextans_2__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_30 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_30__dout), - .if_empty_n(fifo_aBvec_Sextans_30__empty_n), - .if_read(fifo_aBvec_Sextans_30__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_30__din), - .if_full_n(fifo_aBvec_Sextans_30__full_n), - .if_write(fifo_aBvec_Sextans_30__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_31 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_31__dout), - .if_empty_n(fifo_aBvec_Sextans_31__empty_n), - .if_read(fifo_aBvec_Sextans_31__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_31__din), - .if_full_n(fifo_aBvec_Sextans_31__full_n), - .if_write(fifo_aBvec_Sextans_31__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_32 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_32__dout), - .if_empty_n(fifo_aBvec_Sextans_32__empty_n), - .if_read(fifo_aBvec_Sextans_32__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_32__din), - .if_full_n(fifo_aBvec_Sextans_32__full_n), - .if_write(fifo_aBvec_Sextans_32__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_33 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_33__dout), - .if_empty_n(fifo_aBvec_Sextans_33__empty_n), - .if_read(fifo_aBvec_Sextans_33__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_33__din), - .if_full_n(fifo_aBvec_Sextans_33__full_n), - .if_write(fifo_aBvec_Sextans_33__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_34 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_34__dout), - .if_empty_n(fifo_aBvec_Sextans_34__empty_n), - .if_read(fifo_aBvec_Sextans_34__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_34__din), - .if_full_n(fifo_aBvec_Sextans_34__full_n), - .if_write(fifo_aBvec_Sextans_34__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_35 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_35__dout), - .if_empty_n(fifo_aBvec_Sextans_35__empty_n), - .if_read(fifo_aBvec_Sextans_35__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_35__din), - .if_full_n(fifo_aBvec_Sextans_35__full_n), - .if_write(fifo_aBvec_Sextans_35__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_36 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_36__dout), - .if_empty_n(fifo_aBvec_Sextans_36__empty_n), - .if_read(fifo_aBvec_Sextans_36__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_36__din), - .if_full_n(fifo_aBvec_Sextans_36__full_n), - .if_write(fifo_aBvec_Sextans_36__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_37 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_37__dout), - .if_empty_n(fifo_aBvec_Sextans_37__empty_n), - .if_read(fifo_aBvec_Sextans_37__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_37__din), - .if_full_n(fifo_aBvec_Sextans_37__full_n), - .if_write(fifo_aBvec_Sextans_37__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_38 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_38__dout), - .if_empty_n(fifo_aBvec_Sextans_38__empty_n), - .if_read(fifo_aBvec_Sextans_38__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_38__din), - .if_full_n(fifo_aBvec_Sextans_38__full_n), - .if_write(fifo_aBvec_Sextans_38__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_39 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_39__dout), - .if_empty_n(fifo_aBvec_Sextans_39__empty_n), - .if_read(fifo_aBvec_Sextans_39__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_39__din), - .if_full_n(fifo_aBvec_Sextans_39__full_n), - .if_write(fifo_aBvec_Sextans_39__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_3 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_3__dout), - .if_empty_n(fifo_aBvec_Sextans_3__empty_n), - .if_read(fifo_aBvec_Sextans_3__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_3__din), - .if_full_n(fifo_aBvec_Sextans_3__full_n), - .if_write(fifo_aBvec_Sextans_3__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_40 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_40__dout), - .if_empty_n(fifo_aBvec_Sextans_40__empty_n), - .if_read(fifo_aBvec_Sextans_40__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_40__din), - .if_full_n(fifo_aBvec_Sextans_40__full_n), - .if_write(fifo_aBvec_Sextans_40__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_41 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_41__dout), - .if_empty_n(fifo_aBvec_Sextans_41__empty_n), - .if_read(fifo_aBvec_Sextans_41__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_41__din), - .if_full_n(fifo_aBvec_Sextans_41__full_n), - .if_write(fifo_aBvec_Sextans_41__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_42 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_42__dout), - .if_empty_n(fifo_aBvec_Sextans_42__empty_n), - .if_read(fifo_aBvec_Sextans_42__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_42__din), - .if_full_n(fifo_aBvec_Sextans_42__full_n), - .if_write(fifo_aBvec_Sextans_42__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_43 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_43__dout), - .if_empty_n(fifo_aBvec_Sextans_43__empty_n), - .if_read(fifo_aBvec_Sextans_43__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_43__din), - .if_full_n(fifo_aBvec_Sextans_43__full_n), - .if_write(fifo_aBvec_Sextans_43__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_44 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_44__dout), - .if_empty_n(fifo_aBvec_Sextans_44__empty_n), - .if_read(fifo_aBvec_Sextans_44__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_44__din), - .if_full_n(fifo_aBvec_Sextans_44__full_n), - .if_write(fifo_aBvec_Sextans_44__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_45 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_45__dout), - .if_empty_n(fifo_aBvec_Sextans_45__empty_n), - .if_read(fifo_aBvec_Sextans_45__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_45__din), - .if_full_n(fifo_aBvec_Sextans_45__full_n), - .if_write(fifo_aBvec_Sextans_45__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_46 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_46__dout), - .if_empty_n(fifo_aBvec_Sextans_46__empty_n), - .if_read(fifo_aBvec_Sextans_46__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_46__din), - .if_full_n(fifo_aBvec_Sextans_46__full_n), - .if_write(fifo_aBvec_Sextans_46__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_47 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_47__dout), - .if_empty_n(fifo_aBvec_Sextans_47__empty_n), - .if_read(fifo_aBvec_Sextans_47__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_47__din), - .if_full_n(fifo_aBvec_Sextans_47__full_n), - .if_write(fifo_aBvec_Sextans_47__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_48 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_48__dout), - .if_empty_n(fifo_aBvec_Sextans_48__empty_n), - .if_read(fifo_aBvec_Sextans_48__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_48__din), - .if_full_n(fifo_aBvec_Sextans_48__full_n), - .if_write(fifo_aBvec_Sextans_48__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_49 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_49__dout), - .if_empty_n(fifo_aBvec_Sextans_49__empty_n), - .if_read(fifo_aBvec_Sextans_49__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_49__din), - .if_full_n(fifo_aBvec_Sextans_49__full_n), - .if_write(fifo_aBvec_Sextans_49__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_4 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_4__dout), - .if_empty_n(fifo_aBvec_Sextans_4__empty_n), - .if_read(fifo_aBvec_Sextans_4__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_4__din), - .if_full_n(fifo_aBvec_Sextans_4__full_n), - .if_write(fifo_aBvec_Sextans_4__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_50 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_50__dout), - .if_empty_n(fifo_aBvec_Sextans_50__empty_n), - .if_read(fifo_aBvec_Sextans_50__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_50__din), - .if_full_n(fifo_aBvec_Sextans_50__full_n), - .if_write(fifo_aBvec_Sextans_50__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_51 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_51__dout), - .if_empty_n(fifo_aBvec_Sextans_51__empty_n), - .if_read(fifo_aBvec_Sextans_51__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_51__din), - .if_full_n(fifo_aBvec_Sextans_51__full_n), - .if_write(fifo_aBvec_Sextans_51__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_52 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_52__dout), - .if_empty_n(fifo_aBvec_Sextans_52__empty_n), - .if_read(fifo_aBvec_Sextans_52__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_52__din), - .if_full_n(fifo_aBvec_Sextans_52__full_n), - .if_write(fifo_aBvec_Sextans_52__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_53 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_53__dout), - .if_empty_n(fifo_aBvec_Sextans_53__empty_n), - .if_read(fifo_aBvec_Sextans_53__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_53__din), - .if_full_n(fifo_aBvec_Sextans_53__full_n), - .if_write(fifo_aBvec_Sextans_53__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_54 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_54__dout), - .if_empty_n(fifo_aBvec_Sextans_54__empty_n), - .if_read(fifo_aBvec_Sextans_54__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_54__din), - .if_full_n(fifo_aBvec_Sextans_54__full_n), - .if_write(fifo_aBvec_Sextans_54__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_55 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_55__dout), - .if_empty_n(fifo_aBvec_Sextans_55__empty_n), - .if_read(fifo_aBvec_Sextans_55__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_55__din), - .if_full_n(fifo_aBvec_Sextans_55__full_n), - .if_write(fifo_aBvec_Sextans_55__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_56 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_56__dout), - .if_empty_n(fifo_aBvec_Sextans_56__empty_n), - .if_read(fifo_aBvec_Sextans_56__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_56__din), - .if_full_n(fifo_aBvec_Sextans_56__full_n), - .if_write(fifo_aBvec_Sextans_56__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_57 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_57__dout), - .if_empty_n(fifo_aBvec_Sextans_57__empty_n), - .if_read(fifo_aBvec_Sextans_57__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_57__din), - .if_full_n(fifo_aBvec_Sextans_57__full_n), - .if_write(fifo_aBvec_Sextans_57__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_58 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_58__dout), - .if_empty_n(fifo_aBvec_Sextans_58__empty_n), - .if_read(fifo_aBvec_Sextans_58__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_58__din), - .if_full_n(fifo_aBvec_Sextans_58__full_n), - .if_write(fifo_aBvec_Sextans_58__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_59 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_59__dout), - .if_empty_n(fifo_aBvec_Sextans_59__empty_n), - .if_read(fifo_aBvec_Sextans_59__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_59__din), - .if_full_n(fifo_aBvec_Sextans_59__full_n), - .if_write(fifo_aBvec_Sextans_59__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_5 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_5__dout), - .if_empty_n(fifo_aBvec_Sextans_5__empty_n), - .if_read(fifo_aBvec_Sextans_5__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_5__din), - .if_full_n(fifo_aBvec_Sextans_5__full_n), - .if_write(fifo_aBvec_Sextans_5__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_60 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_60__dout), - .if_empty_n(fifo_aBvec_Sextans_60__empty_n), - .if_read(fifo_aBvec_Sextans_60__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_60__din), - .if_full_n(fifo_aBvec_Sextans_60__full_n), - .if_write(fifo_aBvec_Sextans_60__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_61 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_61__dout), - .if_empty_n(fifo_aBvec_Sextans_61__empty_n), - .if_read(fifo_aBvec_Sextans_61__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_61__din), - .if_full_n(fifo_aBvec_Sextans_61__full_n), - .if_write(fifo_aBvec_Sextans_61__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_62 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_62__dout), - .if_empty_n(fifo_aBvec_Sextans_62__empty_n), - .if_read(fifo_aBvec_Sextans_62__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_62__din), - .if_full_n(fifo_aBvec_Sextans_62__full_n), - .if_write(fifo_aBvec_Sextans_62__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_63 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_63__dout), - .if_empty_n(fifo_aBvec_Sextans_63__empty_n), - .if_read(fifo_aBvec_Sextans_63__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_63__din), - .if_full_n(fifo_aBvec_Sextans_63__full_n), - .if_write(fifo_aBvec_Sextans_63__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_6 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_6__dout), - .if_empty_n(fifo_aBvec_Sextans_6__empty_n), - .if_read(fifo_aBvec_Sextans_6__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_6__din), - .if_full_n(fifo_aBvec_Sextans_6__full_n), - .if_write(fifo_aBvec_Sextans_6__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_7 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_7__dout), - .if_empty_n(fifo_aBvec_Sextans_7__empty_n), - .if_read(fifo_aBvec_Sextans_7__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_7__din), - .if_full_n(fifo_aBvec_Sextans_7__full_n), - .if_write(fifo_aBvec_Sextans_7__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_8 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_8__dout), - .if_empty_n(fifo_aBvec_Sextans_8__empty_n), - .if_read(fifo_aBvec_Sextans_8__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_8__din), - .if_full_n(fifo_aBvec_Sextans_8__full_n), - .if_write(fifo_aBvec_Sextans_8__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(275), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_aBvec_Sextans_9 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_aBvec_Sextans_9__dout), - .if_empty_n(fifo_aBvec_Sextans_9__empty_n), - .if_read(fifo_aBvec_Sextans_9__read), - .if_read_ce(1'b1), - .if_din(fifo_aBvec_Sextans_9__din), - .if_full_n(fifo_aBvec_Sextans_9__full_n), - .if_write(fifo_aBvec_Sextans_9__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_0 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_0__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_0__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_0__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_0__din), - .if_full_n(fifo_edge_list_ptr_Sextans_0__full_n), - .if_write(fifo_edge_list_ptr_Sextans_0__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_10 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_10__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_10__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_10__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_10__din), - .if_full_n(fifo_edge_list_ptr_Sextans_10__full_n), - .if_write(fifo_edge_list_ptr_Sextans_10__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_11 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_11__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_11__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_11__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_11__din), - .if_full_n(fifo_edge_list_ptr_Sextans_11__full_n), - .if_write(fifo_edge_list_ptr_Sextans_11__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_12 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_12__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_12__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_12__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_12__din), - .if_full_n(fifo_edge_list_ptr_Sextans_12__full_n), - .if_write(fifo_edge_list_ptr_Sextans_12__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_13 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_13__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_13__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_13__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_13__din), - .if_full_n(fifo_edge_list_ptr_Sextans_13__full_n), - .if_write(fifo_edge_list_ptr_Sextans_13__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_14 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_14__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_14__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_14__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_14__din), - .if_full_n(fifo_edge_list_ptr_Sextans_14__full_n), - .if_write(fifo_edge_list_ptr_Sextans_14__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_15 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_15__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_15__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_15__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_15__din), - .if_full_n(fifo_edge_list_ptr_Sextans_15__full_n), - .if_write(fifo_edge_list_ptr_Sextans_15__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_16 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_16__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_16__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_16__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_16__din), - .if_full_n(fifo_edge_list_ptr_Sextans_16__full_n), - .if_write(fifo_edge_list_ptr_Sextans_16__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_1 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_1__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_1__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_1__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_1__din), - .if_full_n(fifo_edge_list_ptr_Sextans_1__full_n), - .if_write(fifo_edge_list_ptr_Sextans_1__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_2 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_2__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_2__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_2__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_2__din), - .if_full_n(fifo_edge_list_ptr_Sextans_2__full_n), - .if_write(fifo_edge_list_ptr_Sextans_2__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_3 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_3__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_3__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_3__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_3__din), - .if_full_n(fifo_edge_list_ptr_Sextans_3__full_n), - .if_write(fifo_edge_list_ptr_Sextans_3__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_4 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_4__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_4__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_4__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_4__din), - .if_full_n(fifo_edge_list_ptr_Sextans_4__full_n), - .if_write(fifo_edge_list_ptr_Sextans_4__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_5 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_5__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_5__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_5__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_5__din), - .if_full_n(fifo_edge_list_ptr_Sextans_5__full_n), - .if_write(fifo_edge_list_ptr_Sextans_5__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_6 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_6__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_6__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_6__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_6__din), - .if_full_n(fifo_edge_list_ptr_Sextans_6__full_n), - .if_write(fifo_edge_list_ptr_Sextans_6__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_7 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_7__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_7__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_7__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_7__din), - .if_full_n(fifo_edge_list_ptr_Sextans_7__full_n), - .if_write(fifo_edge_list_ptr_Sextans_7__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_8 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_8__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_8__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_8__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_8__din), - .if_full_n(fifo_edge_list_ptr_Sextans_8__full_n), - .if_write(fifo_edge_list_ptr_Sextans_8__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_Sextans_9 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_Sextans_9__dout), - .if_empty_n(fifo_edge_list_ptr_Sextans_9__empty_n), - .if_read(fifo_edge_list_ptr_Sextans_9__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_Sextans_9__din), - .if_full_n(fifo_edge_list_ptr_Sextans_9__full_n), - .if_write(fifo_edge_list_ptr_Sextans_9__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_0 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_0__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_0__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_0__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_0__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_0__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_0__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_10 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_10__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_10__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_10__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_10__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_10__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_10__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_11 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_11__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_11__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_11__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_11__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_11__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_11__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_12 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_12__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_12__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_12__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_12__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_12__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_12__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_13 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_13__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_13__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_13__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_13__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_13__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_13__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_14 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_14__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_14__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_14__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_14__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_14__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_14__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_15 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_15__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_15__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_15__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_15__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_15__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_15__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_1 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_1__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_1__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_1__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_1__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_1__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_1__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_2 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_2__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_2__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_2__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_2__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_2__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_2__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_3 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_3__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_3__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_3__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_3__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_3__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_3__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_4 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_4__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_4__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_4__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_4__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_4__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_4__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_5 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_5__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_5__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_5__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_5__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_5__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_5__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_6 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_6__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_6__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_6__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_6__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_6__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_6__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_7 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_7__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_7__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_7__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_7__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_7__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_7__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_8 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_8__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_8__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_8__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_8__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_8__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_8__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - fifo_edge_list_ptr_to_Cmtx_Sextans_9 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_9__dout), - .if_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_9__empty_n), - .if_read(fifo_edge_list_ptr_to_Cmtx_Sextans_9__read), - .if_read_ce(1'b1), - .if_din(fifo_edge_list_ptr_to_Cmtx_Sextans_9__din), - .if_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_9__full_n), - .if_write(fifo_edge_list_ptr_to_Cmtx_Sextans_9__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - wrC_inst_Sextans_0 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(wrC_inst_Sextans_0__dout), - .if_empty_n(wrC_inst_Sextans_0__empty_n), - .if_read(wrC_inst_Sextans_0__read), - .if_read_ce(1'b1), - .if_din(wrC_inst_Sextans_0__din), - .if_full_n(wrC_inst_Sextans_0__full_n), - .if_write(wrC_inst_Sextans_0__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - wrC_inst_Sextans_1 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(wrC_inst_Sextans_1__dout), - .if_empty_n(wrC_inst_Sextans_1__empty_n), - .if_read(wrC_inst_Sextans_1__read), - .if_read_ce(1'b1), - .if_din(wrC_inst_Sextans_1__din), - .if_full_n(wrC_inst_Sextans_1__full_n), - .if_write(wrC_inst_Sextans_1__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - wrC_inst_Sextans_2 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(wrC_inst_Sextans_2__dout), - .if_empty_n(wrC_inst_Sextans_2__empty_n), - .if_read(wrC_inst_Sextans_2__read), - .if_read_ce(1'b1), - .if_din(wrC_inst_Sextans_2__din), - .if_full_n(wrC_inst_Sextans_2__full_n), - .if_write(wrC_inst_Sextans_2__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - wrC_inst_Sextans_3 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(wrC_inst_Sextans_3__dout), - .if_empty_n(wrC_inst_Sextans_3__empty_n), - .if_read(wrC_inst_Sextans_3__read), - .if_read_ce(1'b1), - .if_din(wrC_inst_Sextans_3__din), - .if_full_n(wrC_inst_Sextans_3__full_n), - .if_write(wrC_inst_Sextans_3__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - wrC_inst_Sextans_4 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(wrC_inst_Sextans_4__dout), - .if_empty_n(wrC_inst_Sextans_4__empty_n), - .if_read(wrC_inst_Sextans_4__read), - .if_read_ce(1'b1), - .if_din(wrC_inst_Sextans_4__din), - .if_full_n(wrC_inst_Sextans_4__full_n), - .if_write(wrC_inst_Sextans_4__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - wrC_inst_Sextans_5 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(wrC_inst_Sextans_5__dout), - .if_empty_n(wrC_inst_Sextans_5__empty_n), - .if_read(wrC_inst_Sextans_5__read), - .if_read_ce(1'b1), - .if_din(wrC_inst_Sextans_5__din), - .if_full_n(wrC_inst_Sextans_5__full_n), - .if_write(wrC_inst_Sextans_5__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - wrC_inst_Sextans_6 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(wrC_inst_Sextans_6__dout), - .if_empty_n(wrC_inst_Sextans_6__empty_n), - .if_read(wrC_inst_Sextans_6__read), - .if_read_ce(1'b1), - .if_din(wrC_inst_Sextans_6__din), - .if_full_n(wrC_inst_Sextans_6__full_n), - .if_write(wrC_inst_Sextans_6__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) fifo - #( - .DATA_WIDTH(33), - .ADDR_WIDTH(1), - .DEPTH(2) - ) - wrC_inst_Sextans_7 - ( - .clk(ap_clk), - .reset(~ap_rst_n), - .if_dout(wrC_inst_Sextans_7__dout), - .if_empty_n(wrC_inst_Sextans_7__empty_n), - .if_read(wrC_inst_Sextans_7__read), - .if_read_ce(1'b1), - .if_din(wrC_inst_Sextans_7__din), - .if_full_n(wrC_inst_Sextans_7__full_n), - .if_write(wrC_inst_Sextans_7__write), - .if_write_ce(1'b1) - ); - - - (* keep_hierarchy = "yes" *) FloatvAddFloatv - FloatvAddFloatv_0 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvAddFloatv_0__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_Sextans_0__din), - .fifo_out_full_n(fifo_C_ch_Sextans_0__full_n), - .fifo_out_write(fifo_C_ch_Sextans_0__write), - .fifo_in0_s_dout(fifo_C_ch_result_alpha_Sextans_0__dout), - .fifo_in0_peek_dout(fifo_C_ch_result_alpha_Sextans_0__dout), - .fifo_in0_s_empty_n(fifo_C_ch_result_alpha_Sextans_0__empty_n), - .fifo_in0_peek_empty_n(fifo_C_ch_result_alpha_Sextans_0__empty_n), - .fifo_in0_s_read(fifo_C_ch_result_alpha_Sextans_0__read), - .fifo_in0_peek_read(), - .fifo_in1_s_dout(fifo_C_read_in_beta_Sextans_0__dout), - .fifo_in1_peek_dout(fifo_C_read_in_beta_Sextans_0__dout), - .fifo_in1_s_empty_n(fifo_C_read_in_beta_Sextans_0__empty_n), - .fifo_in1_peek_empty_n(fifo_C_read_in_beta_Sextans_0__empty_n), - .fifo_in1_s_read(fifo_C_read_in_beta_Sextans_0__read), - .fifo_in1_peek_read() - ); - - - (* keep_hierarchy = "yes" *) FloatvAddFloatv - FloatvAddFloatv_1 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvAddFloatv_1__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_Sextans_1__din), - .fifo_out_full_n(fifo_C_ch_Sextans_1__full_n), - .fifo_out_write(fifo_C_ch_Sextans_1__write), - .fifo_in0_s_dout(fifo_C_ch_result_alpha_Sextans_1__dout), - .fifo_in0_peek_dout(fifo_C_ch_result_alpha_Sextans_1__dout), - .fifo_in0_s_empty_n(fifo_C_ch_result_alpha_Sextans_1__empty_n), - .fifo_in0_peek_empty_n(fifo_C_ch_result_alpha_Sextans_1__empty_n), - .fifo_in0_s_read(fifo_C_ch_result_alpha_Sextans_1__read), - .fifo_in0_peek_read(), - .fifo_in1_s_dout(fifo_C_read_in_beta_Sextans_1__dout), - .fifo_in1_peek_dout(fifo_C_read_in_beta_Sextans_1__dout), - .fifo_in1_s_empty_n(fifo_C_read_in_beta_Sextans_1__empty_n), - .fifo_in1_peek_empty_n(fifo_C_read_in_beta_Sextans_1__empty_n), - .fifo_in1_s_read(fifo_C_read_in_beta_Sextans_1__read), - .fifo_in1_peek_read() - ); - - - (* keep_hierarchy = "yes" *) FloatvAddFloatv - FloatvAddFloatv_2 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvAddFloatv_2__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_Sextans_2__din), - .fifo_out_full_n(fifo_C_ch_Sextans_2__full_n), - .fifo_out_write(fifo_C_ch_Sextans_2__write), - .fifo_in0_s_dout(fifo_C_ch_result_alpha_Sextans_2__dout), - .fifo_in0_peek_dout(fifo_C_ch_result_alpha_Sextans_2__dout), - .fifo_in0_s_empty_n(fifo_C_ch_result_alpha_Sextans_2__empty_n), - .fifo_in0_peek_empty_n(fifo_C_ch_result_alpha_Sextans_2__empty_n), - .fifo_in0_s_read(fifo_C_ch_result_alpha_Sextans_2__read), - .fifo_in0_peek_read(), - .fifo_in1_s_dout(fifo_C_read_in_beta_Sextans_2__dout), - .fifo_in1_peek_dout(fifo_C_read_in_beta_Sextans_2__dout), - .fifo_in1_s_empty_n(fifo_C_read_in_beta_Sextans_2__empty_n), - .fifo_in1_peek_empty_n(fifo_C_read_in_beta_Sextans_2__empty_n), - .fifo_in1_s_read(fifo_C_read_in_beta_Sextans_2__read), - .fifo_in1_peek_read() - ); - - - (* keep_hierarchy = "yes" *) FloatvAddFloatv - FloatvAddFloatv_3 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvAddFloatv_3__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_Sextans_3__din), - .fifo_out_full_n(fifo_C_ch_Sextans_3__full_n), - .fifo_out_write(fifo_C_ch_Sextans_3__write), - .fifo_in0_s_dout(fifo_C_ch_result_alpha_Sextans_3__dout), - .fifo_in0_peek_dout(fifo_C_ch_result_alpha_Sextans_3__dout), - .fifo_in0_s_empty_n(fifo_C_ch_result_alpha_Sextans_3__empty_n), - .fifo_in0_peek_empty_n(fifo_C_ch_result_alpha_Sextans_3__empty_n), - .fifo_in0_s_read(fifo_C_ch_result_alpha_Sextans_3__read), - .fifo_in0_peek_read(), - .fifo_in1_s_dout(fifo_C_read_in_beta_Sextans_3__dout), - .fifo_in1_peek_dout(fifo_C_read_in_beta_Sextans_3__dout), - .fifo_in1_s_empty_n(fifo_C_read_in_beta_Sextans_3__empty_n), - .fifo_in1_peek_empty_n(fifo_C_read_in_beta_Sextans_3__empty_n), - .fifo_in1_s_read(fifo_C_read_in_beta_Sextans_3__read), - .fifo_in1_peek_read() - ); - - - (* keep_hierarchy = "yes" *) FloatvAddFloatv - FloatvAddFloatv_4 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvAddFloatv_4__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_Sextans_4__din), - .fifo_out_full_n(fifo_C_ch_Sextans_4__full_n), - .fifo_out_write(fifo_C_ch_Sextans_4__write), - .fifo_in0_s_dout(fifo_C_ch_result_alpha_Sextans_4__dout), - .fifo_in0_peek_dout(fifo_C_ch_result_alpha_Sextans_4__dout), - .fifo_in0_s_empty_n(fifo_C_ch_result_alpha_Sextans_4__empty_n), - .fifo_in0_peek_empty_n(fifo_C_ch_result_alpha_Sextans_4__empty_n), - .fifo_in0_s_read(fifo_C_ch_result_alpha_Sextans_4__read), - .fifo_in0_peek_read(), - .fifo_in1_s_dout(fifo_C_read_in_beta_Sextans_4__dout), - .fifo_in1_peek_dout(fifo_C_read_in_beta_Sextans_4__dout), - .fifo_in1_s_empty_n(fifo_C_read_in_beta_Sextans_4__empty_n), - .fifo_in1_peek_empty_n(fifo_C_read_in_beta_Sextans_4__empty_n), - .fifo_in1_s_read(fifo_C_read_in_beta_Sextans_4__read), - .fifo_in1_peek_read() - ); - - - (* keep_hierarchy = "yes" *) FloatvAddFloatv - FloatvAddFloatv_5 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvAddFloatv_5__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_Sextans_5__din), - .fifo_out_full_n(fifo_C_ch_Sextans_5__full_n), - .fifo_out_write(fifo_C_ch_Sextans_5__write), - .fifo_in0_s_dout(fifo_C_ch_result_alpha_Sextans_5__dout), - .fifo_in0_peek_dout(fifo_C_ch_result_alpha_Sextans_5__dout), - .fifo_in0_s_empty_n(fifo_C_ch_result_alpha_Sextans_5__empty_n), - .fifo_in0_peek_empty_n(fifo_C_ch_result_alpha_Sextans_5__empty_n), - .fifo_in0_s_read(fifo_C_ch_result_alpha_Sextans_5__read), - .fifo_in0_peek_read(), - .fifo_in1_s_dout(fifo_C_read_in_beta_Sextans_5__dout), - .fifo_in1_peek_dout(fifo_C_read_in_beta_Sextans_5__dout), - .fifo_in1_s_empty_n(fifo_C_read_in_beta_Sextans_5__empty_n), - .fifo_in1_peek_empty_n(fifo_C_read_in_beta_Sextans_5__empty_n), - .fifo_in1_s_read(fifo_C_read_in_beta_Sextans_5__read), - .fifo_in1_peek_read() - ); - - - (* keep_hierarchy = "yes" *) FloatvAddFloatv - FloatvAddFloatv_6 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvAddFloatv_6__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_Sextans_6__din), - .fifo_out_full_n(fifo_C_ch_Sextans_6__full_n), - .fifo_out_write(fifo_C_ch_Sextans_6__write), - .fifo_in0_s_dout(fifo_C_ch_result_alpha_Sextans_6__dout), - .fifo_in0_peek_dout(fifo_C_ch_result_alpha_Sextans_6__dout), - .fifo_in0_s_empty_n(fifo_C_ch_result_alpha_Sextans_6__empty_n), - .fifo_in0_peek_empty_n(fifo_C_ch_result_alpha_Sextans_6__empty_n), - .fifo_in0_s_read(fifo_C_ch_result_alpha_Sextans_6__read), - .fifo_in0_peek_read(), - .fifo_in1_s_dout(fifo_C_read_in_beta_Sextans_6__dout), - .fifo_in1_peek_dout(fifo_C_read_in_beta_Sextans_6__dout), - .fifo_in1_s_empty_n(fifo_C_read_in_beta_Sextans_6__empty_n), - .fifo_in1_peek_empty_n(fifo_C_read_in_beta_Sextans_6__empty_n), - .fifo_in1_s_read(fifo_C_read_in_beta_Sextans_6__read), - .fifo_in1_peek_read() - ); - - - (* keep_hierarchy = "yes" *) FloatvAddFloatv - FloatvAddFloatv_7 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvAddFloatv_7__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_Sextans_7__din), - .fifo_out_full_n(fifo_C_ch_Sextans_7__full_n), - .fifo_out_write(fifo_C_ch_Sextans_7__write), - .fifo_in0_s_dout(fifo_C_ch_result_alpha_Sextans_7__dout), - .fifo_in0_peek_dout(fifo_C_ch_result_alpha_Sextans_7__dout), - .fifo_in0_s_empty_n(fifo_C_ch_result_alpha_Sextans_7__empty_n), - .fifo_in0_peek_empty_n(fifo_C_ch_result_alpha_Sextans_7__empty_n), - .fifo_in0_s_read(fifo_C_ch_result_alpha_Sextans_7__read), - .fifo_in0_peek_read(), - .fifo_in1_s_dout(fifo_C_read_in_beta_Sextans_7__dout), - .fifo_in1_peek_dout(fifo_C_read_in_beta_Sextans_7__dout), - .fifo_in1_s_empty_n(fifo_C_read_in_beta_Sextans_7__empty_n), - .fifo_in1_peek_empty_n(fifo_C_read_in_beta_Sextans_7__empty_n), - .fifo_in1_s_read(fifo_C_read_in_beta_Sextans_7__read), - .fifo_in1_peek_read() - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_0 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_0__ap_start), - .ap_done(FloatvMultConst_0__ap_done), - .ap_idle(FloatvMultConst_0__ap_idle), - .ap_ready(FloatvMultConst_0__ap_ready), - .M(FloatvMultConst_0___M__q0), - .P_N(FloatvMultConst_0___P_N__q0), - .alpha_u(FloatvMultConst_0___beta_u__q0), - .fifo_in_s_dout(fifo_C_read_in_Sextans_0__dout), - .fifo_in_peek_dout(fifo_C_read_in_Sextans_0__dout), - .fifo_in_s_empty_n(fifo_C_read_in_Sextans_0__empty_n), - .fifo_in_peek_empty_n(fifo_C_read_in_Sextans_0__empty_n), - .fifo_in_s_read(fifo_C_read_in_Sextans_0__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_read_in_beta_Sextans_0__din), - .fifo_out_full_n(fifo_C_read_in_beta_Sextans_0__full_n), - .fifo_out_write(fifo_C_read_in_beta_Sextans_0__write) - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_1 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_1__ap_start), - .ap_done(FloatvMultConst_1__ap_done), - .ap_idle(FloatvMultConst_1__ap_idle), - .ap_ready(FloatvMultConst_1__ap_ready), - .M(FloatvMultConst_1___M__q0), - .P_N(FloatvMultConst_1___P_N__q0), - .alpha_u(FloatvMultConst_1___beta_u__q0), - .fifo_in_s_dout(fifo_C_read_in_Sextans_1__dout), - .fifo_in_peek_dout(fifo_C_read_in_Sextans_1__dout), - .fifo_in_s_empty_n(fifo_C_read_in_Sextans_1__empty_n), - .fifo_in_peek_empty_n(fifo_C_read_in_Sextans_1__empty_n), - .fifo_in_s_read(fifo_C_read_in_Sextans_1__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_read_in_beta_Sextans_1__din), - .fifo_out_full_n(fifo_C_read_in_beta_Sextans_1__full_n), - .fifo_out_write(fifo_C_read_in_beta_Sextans_1__write) - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_2 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_2__ap_start), - .ap_done(FloatvMultConst_2__ap_done), - .ap_idle(FloatvMultConst_2__ap_idle), - .ap_ready(FloatvMultConst_2__ap_ready), - .M(FloatvMultConst_2___M__q0), - .P_N(FloatvMultConst_2___P_N__q0), - .alpha_u(FloatvMultConst_2___beta_u__q0), - .fifo_in_s_dout(fifo_C_read_in_Sextans_2__dout), - .fifo_in_peek_dout(fifo_C_read_in_Sextans_2__dout), - .fifo_in_s_empty_n(fifo_C_read_in_Sextans_2__empty_n), - .fifo_in_peek_empty_n(fifo_C_read_in_Sextans_2__empty_n), - .fifo_in_s_read(fifo_C_read_in_Sextans_2__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_read_in_beta_Sextans_2__din), - .fifo_out_full_n(fifo_C_read_in_beta_Sextans_2__full_n), - .fifo_out_write(fifo_C_read_in_beta_Sextans_2__write) - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_3 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_3__ap_start), - .ap_done(FloatvMultConst_3__ap_done), - .ap_idle(FloatvMultConst_3__ap_idle), - .ap_ready(FloatvMultConst_3__ap_ready), - .M(FloatvMultConst_3___M__q0), - .P_N(FloatvMultConst_3___P_N__q0), - .alpha_u(FloatvMultConst_3___beta_u__q0), - .fifo_in_s_dout(fifo_C_read_in_Sextans_3__dout), - .fifo_in_peek_dout(fifo_C_read_in_Sextans_3__dout), - .fifo_in_s_empty_n(fifo_C_read_in_Sextans_3__empty_n), - .fifo_in_peek_empty_n(fifo_C_read_in_Sextans_3__empty_n), - .fifo_in_s_read(fifo_C_read_in_Sextans_3__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_read_in_beta_Sextans_3__din), - .fifo_out_full_n(fifo_C_read_in_beta_Sextans_3__full_n), - .fifo_out_write(fifo_C_read_in_beta_Sextans_3__write) - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_4 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_4__ap_start), - .ap_done(FloatvMultConst_4__ap_done), - .ap_idle(FloatvMultConst_4__ap_idle), - .ap_ready(FloatvMultConst_4__ap_ready), - .M(FloatvMultConst_4___M__q0), - .P_N(FloatvMultConst_4___P_N__q0), - .alpha_u(FloatvMultConst_4___beta_u__q0), - .fifo_in_s_dout(fifo_C_read_in_Sextans_4__dout), - .fifo_in_peek_dout(fifo_C_read_in_Sextans_4__dout), - .fifo_in_s_empty_n(fifo_C_read_in_Sextans_4__empty_n), - .fifo_in_peek_empty_n(fifo_C_read_in_Sextans_4__empty_n), - .fifo_in_s_read(fifo_C_read_in_Sextans_4__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_read_in_beta_Sextans_4__din), - .fifo_out_full_n(fifo_C_read_in_beta_Sextans_4__full_n), - .fifo_out_write(fifo_C_read_in_beta_Sextans_4__write) - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_5 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_5__ap_start), - .ap_done(FloatvMultConst_5__ap_done), - .ap_idle(FloatvMultConst_5__ap_idle), - .ap_ready(FloatvMultConst_5__ap_ready), - .M(FloatvMultConst_5___M__q0), - .P_N(FloatvMultConst_5___P_N__q0), - .alpha_u(FloatvMultConst_5___beta_u__q0), - .fifo_in_s_dout(fifo_C_read_in_Sextans_5__dout), - .fifo_in_peek_dout(fifo_C_read_in_Sextans_5__dout), - .fifo_in_s_empty_n(fifo_C_read_in_Sextans_5__empty_n), - .fifo_in_peek_empty_n(fifo_C_read_in_Sextans_5__empty_n), - .fifo_in_s_read(fifo_C_read_in_Sextans_5__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_read_in_beta_Sextans_5__din), - .fifo_out_full_n(fifo_C_read_in_beta_Sextans_5__full_n), - .fifo_out_write(fifo_C_read_in_beta_Sextans_5__write) - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_6 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_6__ap_start), - .ap_done(FloatvMultConst_6__ap_done), - .ap_idle(FloatvMultConst_6__ap_idle), - .ap_ready(FloatvMultConst_6__ap_ready), - .M(FloatvMultConst_6___M__q0), - .P_N(FloatvMultConst_6___P_N__q0), - .alpha_u(FloatvMultConst_6___beta_u__q0), - .fifo_in_s_dout(fifo_C_read_in_Sextans_6__dout), - .fifo_in_peek_dout(fifo_C_read_in_Sextans_6__dout), - .fifo_in_s_empty_n(fifo_C_read_in_Sextans_6__empty_n), - .fifo_in_peek_empty_n(fifo_C_read_in_Sextans_6__empty_n), - .fifo_in_s_read(fifo_C_read_in_Sextans_6__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_read_in_beta_Sextans_6__din), - .fifo_out_full_n(fifo_C_read_in_beta_Sextans_6__full_n), - .fifo_out_write(fifo_C_read_in_beta_Sextans_6__write) - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_7 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_7__ap_start), - .ap_done(FloatvMultConst_7__ap_done), - .ap_idle(FloatvMultConst_7__ap_idle), - .ap_ready(FloatvMultConst_7__ap_ready), - .M(FloatvMultConst_7___M__q0), - .P_N(FloatvMultConst_7___P_N__q0), - .alpha_u(FloatvMultConst_7___beta_u__q0), - .fifo_in_s_dout(fifo_C_read_in_Sextans_7__dout), - .fifo_in_peek_dout(fifo_C_read_in_Sextans_7__dout), - .fifo_in_s_empty_n(fifo_C_read_in_Sextans_7__empty_n), - .fifo_in_peek_empty_n(fifo_C_read_in_Sextans_7__empty_n), - .fifo_in_s_read(fifo_C_read_in_Sextans_7__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_read_in_beta_Sextans_7__din), - .fifo_out_full_n(fifo_C_read_in_beta_Sextans_7__full_n), - .fifo_out_write(fifo_C_read_in_beta_Sextans_7__write) - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_8 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_8__ap_start), - .ap_done(FloatvMultConst_8__ap_done), - .ap_idle(FloatvMultConst_8__ap_idle), - .ap_ready(FloatvMultConst_8__ap_ready), - .M(FloatvMultConst_8___M__q0), - .P_N(FloatvMultConst_8___P_N__q0), - .alpha_u(FloatvMultConst_8___alpha_u__q0), - .fifo_in_s_dout(fifo_C_ch_result_Sextans_0__dout), - .fifo_in_peek_dout(fifo_C_ch_result_Sextans_0__dout), - .fifo_in_s_empty_n(fifo_C_ch_result_Sextans_0__empty_n), - .fifo_in_peek_empty_n(fifo_C_ch_result_Sextans_0__empty_n), - .fifo_in_s_read(fifo_C_ch_result_Sextans_0__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_ch_result_alpha_Sextans_0__din), - .fifo_out_full_n(fifo_C_ch_result_alpha_Sextans_0__full_n), - .fifo_out_write(fifo_C_ch_result_alpha_Sextans_0__write) - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_9 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_9__ap_start), - .ap_done(FloatvMultConst_9__ap_done), - .ap_idle(FloatvMultConst_9__ap_idle), - .ap_ready(FloatvMultConst_9__ap_ready), - .M(FloatvMultConst_9___M__q0), - .P_N(FloatvMultConst_9___P_N__q0), - .alpha_u(FloatvMultConst_9___alpha_u__q0), - .fifo_in_s_dout(fifo_C_ch_result_Sextans_1__dout), - .fifo_in_peek_dout(fifo_C_ch_result_Sextans_1__dout), - .fifo_in_s_empty_n(fifo_C_ch_result_Sextans_1__empty_n), - .fifo_in_peek_empty_n(fifo_C_ch_result_Sextans_1__empty_n), - .fifo_in_s_read(fifo_C_ch_result_Sextans_1__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_ch_result_alpha_Sextans_1__din), - .fifo_out_full_n(fifo_C_ch_result_alpha_Sextans_1__full_n), - .fifo_out_write(fifo_C_ch_result_alpha_Sextans_1__write) - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_10 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_10__ap_start), - .ap_done(FloatvMultConst_10__ap_done), - .ap_idle(FloatvMultConst_10__ap_idle), - .ap_ready(FloatvMultConst_10__ap_ready), - .M(FloatvMultConst_10___M__q0), - .P_N(FloatvMultConst_10___P_N__q0), - .alpha_u(FloatvMultConst_10___alpha_u__q0), - .fifo_in_s_dout(fifo_C_ch_result_Sextans_2__dout), - .fifo_in_peek_dout(fifo_C_ch_result_Sextans_2__dout), - .fifo_in_s_empty_n(fifo_C_ch_result_Sextans_2__empty_n), - .fifo_in_peek_empty_n(fifo_C_ch_result_Sextans_2__empty_n), - .fifo_in_s_read(fifo_C_ch_result_Sextans_2__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_ch_result_alpha_Sextans_2__din), - .fifo_out_full_n(fifo_C_ch_result_alpha_Sextans_2__full_n), - .fifo_out_write(fifo_C_ch_result_alpha_Sextans_2__write) - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_11 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_11__ap_start), - .ap_done(FloatvMultConst_11__ap_done), - .ap_idle(FloatvMultConst_11__ap_idle), - .ap_ready(FloatvMultConst_11__ap_ready), - .M(FloatvMultConst_11___M__q0), - .P_N(FloatvMultConst_11___P_N__q0), - .alpha_u(FloatvMultConst_11___alpha_u__q0), - .fifo_in_s_dout(fifo_C_ch_result_Sextans_3__dout), - .fifo_in_peek_dout(fifo_C_ch_result_Sextans_3__dout), - .fifo_in_s_empty_n(fifo_C_ch_result_Sextans_3__empty_n), - .fifo_in_peek_empty_n(fifo_C_ch_result_Sextans_3__empty_n), - .fifo_in_s_read(fifo_C_ch_result_Sextans_3__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_ch_result_alpha_Sextans_3__din), - .fifo_out_full_n(fifo_C_ch_result_alpha_Sextans_3__full_n), - .fifo_out_write(fifo_C_ch_result_alpha_Sextans_3__write) - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_12 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_12__ap_start), - .ap_done(FloatvMultConst_12__ap_done), - .ap_idle(FloatvMultConst_12__ap_idle), - .ap_ready(FloatvMultConst_12__ap_ready), - .M(FloatvMultConst_12___M__q0), - .P_N(FloatvMultConst_12___P_N__q0), - .alpha_u(FloatvMultConst_12___alpha_u__q0), - .fifo_in_s_dout(fifo_C_ch_result_Sextans_4__dout), - .fifo_in_peek_dout(fifo_C_ch_result_Sextans_4__dout), - .fifo_in_s_empty_n(fifo_C_ch_result_Sextans_4__empty_n), - .fifo_in_peek_empty_n(fifo_C_ch_result_Sextans_4__empty_n), - .fifo_in_s_read(fifo_C_ch_result_Sextans_4__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_ch_result_alpha_Sextans_4__din), - .fifo_out_full_n(fifo_C_ch_result_alpha_Sextans_4__full_n), - .fifo_out_write(fifo_C_ch_result_alpha_Sextans_4__write) - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_13 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_13__ap_start), - .ap_done(FloatvMultConst_13__ap_done), - .ap_idle(FloatvMultConst_13__ap_idle), - .ap_ready(FloatvMultConst_13__ap_ready), - .M(FloatvMultConst_13___M__q0), - .P_N(FloatvMultConst_13___P_N__q0), - .alpha_u(FloatvMultConst_13___alpha_u__q0), - .fifo_in_s_dout(fifo_C_ch_result_Sextans_5__dout), - .fifo_in_peek_dout(fifo_C_ch_result_Sextans_5__dout), - .fifo_in_s_empty_n(fifo_C_ch_result_Sextans_5__empty_n), - .fifo_in_peek_empty_n(fifo_C_ch_result_Sextans_5__empty_n), - .fifo_in_s_read(fifo_C_ch_result_Sextans_5__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_ch_result_alpha_Sextans_5__din), - .fifo_out_full_n(fifo_C_ch_result_alpha_Sextans_5__full_n), - .fifo_out_write(fifo_C_ch_result_alpha_Sextans_5__write) - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_14 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_14__ap_start), - .ap_done(FloatvMultConst_14__ap_done), - .ap_idle(FloatvMultConst_14__ap_idle), - .ap_ready(FloatvMultConst_14__ap_ready), - .M(FloatvMultConst_14___M__q0), - .P_N(FloatvMultConst_14___P_N__q0), - .alpha_u(FloatvMultConst_14___alpha_u__q0), - .fifo_in_s_dout(fifo_C_ch_result_Sextans_6__dout), - .fifo_in_peek_dout(fifo_C_ch_result_Sextans_6__dout), - .fifo_in_s_empty_n(fifo_C_ch_result_Sextans_6__empty_n), - .fifo_in_peek_empty_n(fifo_C_ch_result_Sextans_6__empty_n), - .fifo_in_s_read(fifo_C_ch_result_Sextans_6__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_ch_result_alpha_Sextans_6__din), - .fifo_out_full_n(fifo_C_ch_result_alpha_Sextans_6__full_n), - .fifo_out_write(fifo_C_ch_result_alpha_Sextans_6__write) - ); - - - (* keep_hierarchy = "yes" *) FloatvMultConst - FloatvMultConst_15 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(FloatvMultConst_15__ap_start), - .ap_done(FloatvMultConst_15__ap_done), - .ap_idle(FloatvMultConst_15__ap_idle), - .ap_ready(FloatvMultConst_15__ap_ready), - .M(FloatvMultConst_15___M__q0), - .P_N(FloatvMultConst_15___P_N__q0), - .alpha_u(FloatvMultConst_15___alpha_u__q0), - .fifo_in_s_dout(fifo_C_ch_result_Sextans_7__dout), - .fifo_in_peek_dout(fifo_C_ch_result_Sextans_7__dout), - .fifo_in_s_empty_n(fifo_C_ch_result_Sextans_7__empty_n), - .fifo_in_peek_empty_n(fifo_C_ch_result_Sextans_7__empty_n), - .fifo_in_s_read(fifo_C_ch_result_Sextans_7__read), - .fifo_in_peek_read(), - .fifo_out_din(fifo_C_ch_result_alpha_Sextans_7__din), - .fifo_out_full_n(fifo_C_ch_result_alpha_Sextans_7__full_n), - .fifo_out_write(fifo_C_ch_result_alpha_Sextans_7__write) - ); - - - (* keep_hierarchy = "yes" *) Merger - Merger_0 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Merger_0__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_result_Sextans_0__din), - .fifo_out_full_n(fifo_C_ch_result_Sextans_0__full_n), - .fifo_out_write(fifo_C_ch_result_Sextans_0__write), - .fifo_in_0_dout(fifo_C_pe_Sextans_0__dout), - .fifo_in_peek_0_dout(fifo_C_pe_Sextans_0__dout), - .fifo_in_0_empty_n(fifo_C_pe_Sextans_0__empty_n), - .fifo_in_peek_0_empty_n(fifo_C_pe_Sextans_0__empty_n), - .fifo_in_0_read(fifo_C_pe_Sextans_0__read), - .fifo_in_peek_0_read(), - .fifo_in_1_dout(fifo_C_pe_Sextans_1__dout), - .fifo_in_peek_1_dout(fifo_C_pe_Sextans_1__dout), - .fifo_in_1_empty_n(fifo_C_pe_Sextans_1__empty_n), - .fifo_in_peek_1_empty_n(fifo_C_pe_Sextans_1__empty_n), - .fifo_in_1_read(fifo_C_pe_Sextans_1__read), - .fifo_in_peek_1_read() - ); - - - (* keep_hierarchy = "yes" *) Merger - Merger_1 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Merger_1__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_result_Sextans_1__din), - .fifo_out_full_n(fifo_C_ch_result_Sextans_1__full_n), - .fifo_out_write(fifo_C_ch_result_Sextans_1__write), - .fifo_in_0_dout(fifo_C_pe_Sextans_2__dout), - .fifo_in_peek_0_dout(fifo_C_pe_Sextans_2__dout), - .fifo_in_0_empty_n(fifo_C_pe_Sextans_2__empty_n), - .fifo_in_peek_0_empty_n(fifo_C_pe_Sextans_2__empty_n), - .fifo_in_0_read(fifo_C_pe_Sextans_2__read), - .fifo_in_peek_0_read(), - .fifo_in_1_dout(fifo_C_pe_Sextans_3__dout), - .fifo_in_peek_1_dout(fifo_C_pe_Sextans_3__dout), - .fifo_in_1_empty_n(fifo_C_pe_Sextans_3__empty_n), - .fifo_in_peek_1_empty_n(fifo_C_pe_Sextans_3__empty_n), - .fifo_in_1_read(fifo_C_pe_Sextans_3__read), - .fifo_in_peek_1_read() - ); - - - (* keep_hierarchy = "yes" *) Merger - Merger_2 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Merger_2__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_result_Sextans_2__din), - .fifo_out_full_n(fifo_C_ch_result_Sextans_2__full_n), - .fifo_out_write(fifo_C_ch_result_Sextans_2__write), - .fifo_in_0_dout(fifo_C_pe_Sextans_4__dout), - .fifo_in_peek_0_dout(fifo_C_pe_Sextans_4__dout), - .fifo_in_0_empty_n(fifo_C_pe_Sextans_4__empty_n), - .fifo_in_peek_0_empty_n(fifo_C_pe_Sextans_4__empty_n), - .fifo_in_0_read(fifo_C_pe_Sextans_4__read), - .fifo_in_peek_0_read(), - .fifo_in_1_dout(fifo_C_pe_Sextans_5__dout), - .fifo_in_peek_1_dout(fifo_C_pe_Sextans_5__dout), - .fifo_in_1_empty_n(fifo_C_pe_Sextans_5__empty_n), - .fifo_in_peek_1_empty_n(fifo_C_pe_Sextans_5__empty_n), - .fifo_in_1_read(fifo_C_pe_Sextans_5__read), - .fifo_in_peek_1_read() - ); - - - (* keep_hierarchy = "yes" *) Merger - Merger_3 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Merger_3__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_result_Sextans_3__din), - .fifo_out_full_n(fifo_C_ch_result_Sextans_3__full_n), - .fifo_out_write(fifo_C_ch_result_Sextans_3__write), - .fifo_in_0_dout(fifo_C_pe_Sextans_6__dout), - .fifo_in_peek_0_dout(fifo_C_pe_Sextans_6__dout), - .fifo_in_0_empty_n(fifo_C_pe_Sextans_6__empty_n), - .fifo_in_peek_0_empty_n(fifo_C_pe_Sextans_6__empty_n), - .fifo_in_0_read(fifo_C_pe_Sextans_6__read), - .fifo_in_peek_0_read(), - .fifo_in_1_dout(fifo_C_pe_Sextans_7__dout), - .fifo_in_peek_1_dout(fifo_C_pe_Sextans_7__dout), - .fifo_in_1_empty_n(fifo_C_pe_Sextans_7__empty_n), - .fifo_in_peek_1_empty_n(fifo_C_pe_Sextans_7__empty_n), - .fifo_in_1_read(fifo_C_pe_Sextans_7__read), - .fifo_in_peek_1_read() - ); - - - (* keep_hierarchy = "yes" *) Merger - Merger_4 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Merger_4__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_result_Sextans_4__din), - .fifo_out_full_n(fifo_C_ch_result_Sextans_4__full_n), - .fifo_out_write(fifo_C_ch_result_Sextans_4__write), - .fifo_in_0_dout(fifo_C_pe_Sextans_8__dout), - .fifo_in_peek_0_dout(fifo_C_pe_Sextans_8__dout), - .fifo_in_0_empty_n(fifo_C_pe_Sextans_8__empty_n), - .fifo_in_peek_0_empty_n(fifo_C_pe_Sextans_8__empty_n), - .fifo_in_0_read(fifo_C_pe_Sextans_8__read), - .fifo_in_peek_0_read(), - .fifo_in_1_dout(fifo_C_pe_Sextans_9__dout), - .fifo_in_peek_1_dout(fifo_C_pe_Sextans_9__dout), - .fifo_in_1_empty_n(fifo_C_pe_Sextans_9__empty_n), - .fifo_in_peek_1_empty_n(fifo_C_pe_Sextans_9__empty_n), - .fifo_in_1_read(fifo_C_pe_Sextans_9__read), - .fifo_in_peek_1_read() - ); - - - (* keep_hierarchy = "yes" *) Merger - Merger_5 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Merger_5__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_result_Sextans_5__din), - .fifo_out_full_n(fifo_C_ch_result_Sextans_5__full_n), - .fifo_out_write(fifo_C_ch_result_Sextans_5__write), - .fifo_in_0_dout(fifo_C_pe_Sextans_10__dout), - .fifo_in_peek_0_dout(fifo_C_pe_Sextans_10__dout), - .fifo_in_0_empty_n(fifo_C_pe_Sextans_10__empty_n), - .fifo_in_peek_0_empty_n(fifo_C_pe_Sextans_10__empty_n), - .fifo_in_0_read(fifo_C_pe_Sextans_10__read), - .fifo_in_peek_0_read(), - .fifo_in_1_dout(fifo_C_pe_Sextans_11__dout), - .fifo_in_peek_1_dout(fifo_C_pe_Sextans_11__dout), - .fifo_in_1_empty_n(fifo_C_pe_Sextans_11__empty_n), - .fifo_in_peek_1_empty_n(fifo_C_pe_Sextans_11__empty_n), - .fifo_in_1_read(fifo_C_pe_Sextans_11__read), - .fifo_in_peek_1_read() - ); - - - (* keep_hierarchy = "yes" *) Merger - Merger_6 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Merger_6__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_result_Sextans_6__din), - .fifo_out_full_n(fifo_C_ch_result_Sextans_6__full_n), - .fifo_out_write(fifo_C_ch_result_Sextans_6__write), - .fifo_in_0_dout(fifo_C_pe_Sextans_12__dout), - .fifo_in_peek_0_dout(fifo_C_pe_Sextans_12__dout), - .fifo_in_0_empty_n(fifo_C_pe_Sextans_12__empty_n), - .fifo_in_peek_0_empty_n(fifo_C_pe_Sextans_12__empty_n), - .fifo_in_0_read(fifo_C_pe_Sextans_12__read), - .fifo_in_peek_0_read(), - .fifo_in_1_dout(fifo_C_pe_Sextans_13__dout), - .fifo_in_peek_1_dout(fifo_C_pe_Sextans_13__dout), - .fifo_in_1_empty_n(fifo_C_pe_Sextans_13__empty_n), - .fifo_in_peek_1_empty_n(fifo_C_pe_Sextans_13__empty_n), - .fifo_in_1_read(fifo_C_pe_Sextans_13__read), - .fifo_in_peek_1_read() - ); - - - (* keep_hierarchy = "yes" *) Merger - Merger_7 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Merger_7__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_out_din(fifo_C_ch_result_Sextans_7__din), - .fifo_out_full_n(fifo_C_ch_result_Sextans_7__full_n), - .fifo_out_write(fifo_C_ch_result_Sextans_7__write), - .fifo_in_0_dout(fifo_C_pe_Sextans_14__dout), - .fifo_in_peek_0_dout(fifo_C_pe_Sextans_14__dout), - .fifo_in_0_empty_n(fifo_C_pe_Sextans_14__empty_n), - .fifo_in_peek_0_empty_n(fifo_C_pe_Sextans_14__empty_n), - .fifo_in_0_read(fifo_C_pe_Sextans_14__read), - .fifo_in_peek_0_read(), - .fifo_in_1_dout(fifo_C_pe_Sextans_15__dout), - .fifo_in_peek_1_dout(fifo_C_pe_Sextans_15__dout), - .fifo_in_1_empty_n(fifo_C_pe_Sextans_15__empty_n), - .fifo_in_peek_1_empty_n(fifo_C_pe_Sextans_15__empty_n), - .fifo_in_1_read(fifo_C_pe_Sextans_15__read), - .fifo_in_peek_1_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_0 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_0__ap_start), - .ap_done(PEG_Bmtx_0__ap_done), - .ap_idle(PEG_Bmtx_0__ap_idle), - .ap_ready(PEG_Bmtx_0__ap_ready), - .PE_inst_in_s_dout(PE_inst_Sextans_0__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_0__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_0__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_0__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_0__read), - .PE_inst_in_peek_read(), - .PE_inst_out_din(PE_inst_Sextans_1__din), - .PE_inst_out_full_n(PE_inst_Sextans_1__full_n), - .PE_inst_out_write(PE_inst_Sextans_1__write), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_0__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_0__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_0__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_0__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_0__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_0__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_0__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_0__read), - .fifo_A_peek_read(), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_0__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_0__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_0__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_0__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_0__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_1__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_1__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_1__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_1__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_1__read), - .fifo_B_in_peek_1_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_2__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_2__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_2__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_2__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_2__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_3__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_3__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_3__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_3__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_3__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_4__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_4__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_4__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_5__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_5__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_5__write), - .fifo_B_out_2_din(fifo_B_pe_Sextans_6__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_6__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_6__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_7__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_7__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_7__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_0__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_0__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_0__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_1__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_1__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_1__write), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_2__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_2__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_2__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_3__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_3__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_3__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_0__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_0__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_0__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_0__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_0__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_1__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_1__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_1__write), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_0__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_0__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_0__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_1 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_1__ap_start), - .ap_done(PEG_Bmtx_1__ap_done), - .ap_idle(PEG_Bmtx_1__ap_idle), - .ap_ready(PEG_Bmtx_1__ap_ready), - .PE_inst_in_s_dout(PE_inst_Sextans_1__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_1__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_1__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_1__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_1__read), - .PE_inst_in_peek_read(), - .PE_inst_out_din(PE_inst_Sextans_2__din), - .PE_inst_out_full_n(PE_inst_Sextans_2__full_n), - .PE_inst_out_write(PE_inst_Sextans_2__write), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_1__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_1__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_1__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_1__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_1__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_1__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_1__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_1__read), - .fifo_A_peek_read(), - .fifo_B_out_2_din(fifo_B_pe_Sextans_10__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_10__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_10__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_11__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_11__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_11__write), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_4__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_4__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_4__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_4__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_4__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_5__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_5__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_5__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_5__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_5__read), - .fifo_B_in_peek_1_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_6__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_6__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_6__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_6__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_6__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_7__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_7__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_7__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_7__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_7__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_8__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_8__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_8__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_9__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_9__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_9__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_4__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_4__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_4__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_5__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_5__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_5__write), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_6__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_6__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_6__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_7__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_7__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_7__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_1__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_1__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_1__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_1__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_1__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_2__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_2__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_2__write), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_1__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_1__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_1__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_2 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_2__ap_start), - .ap_done(PEG_Bmtx_2__ap_done), - .ap_idle(PEG_Bmtx_2__ap_idle), - .ap_ready(PEG_Bmtx_2__ap_ready), - .PE_inst_in_s_dout(PE_inst_Sextans_2__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_2__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_2__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_2__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_2__read), - .PE_inst_in_peek_read(), - .PE_inst_out_din(PE_inst_Sextans_3__din), - .PE_inst_out_full_n(PE_inst_Sextans_3__full_n), - .PE_inst_out_write(PE_inst_Sextans_3__write), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_2__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_2__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_2__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_2__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_2__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_2__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_2__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_2__read), - .fifo_A_peek_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_10__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_10__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_10__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_10__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_10__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_11__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_11__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_11__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_11__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_11__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_12__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_12__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_12__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_13__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_13__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_13__write), - .fifo_B_out_2_din(fifo_B_pe_Sextans_14__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_14__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_14__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_15__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_15__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_15__write), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_8__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_8__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_8__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_8__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_8__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_9__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_9__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_9__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_9__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_9__read), - .fifo_B_in_peek_1_read(), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_10__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_10__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_10__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_11__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_11__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_11__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_8__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_8__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_8__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_9__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_9__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_9__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_2__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_2__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_2__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_2__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_2__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_3__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_3__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_3__write), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_2__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_2__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_2__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_3 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_3__ap_start), - .ap_done(PEG_Bmtx_3__ap_done), - .ap_idle(PEG_Bmtx_3__ap_idle), - .ap_ready(PEG_Bmtx_3__ap_ready), - .PE_inst_in_s_dout(PE_inst_Sextans_3__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_3__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_3__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_3__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_3__read), - .PE_inst_in_peek_read(), - .PE_inst_out_din(PE_inst_Sextans_4__din), - .PE_inst_out_full_n(PE_inst_Sextans_4__full_n), - .PE_inst_out_write(PE_inst_Sextans_4__write), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_3__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_3__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_3__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_3__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_3__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_3__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_3__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_3__read), - .fifo_A_peek_read(), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_12__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_12__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_12__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_12__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_12__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_13__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_13__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_13__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_13__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_13__read), - .fifo_B_in_peek_1_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_14__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_14__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_14__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_14__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_14__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_15__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_15__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_15__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_15__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_15__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_16__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_16__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_16__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_17__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_17__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_17__write), - .fifo_B_out_2_din(fifo_B_pe_Sextans_18__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_18__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_18__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_19__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_19__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_19__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_12__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_12__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_12__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_13__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_13__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_13__write), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_14__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_14__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_14__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_15__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_15__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_15__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_3__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_3__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_3__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_3__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_3__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_4__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_4__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_4__write), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_3__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_3__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_3__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_4 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_4__ap_start), - .ap_done(PEG_Bmtx_4__ap_done), - .ap_idle(PEG_Bmtx_4__ap_idle), - .ap_ready(PEG_Bmtx_4__ap_ready), - .PE_inst_in_s_dout(PE_inst_Sextans_4__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_4__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_4__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_4__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_4__read), - .PE_inst_in_peek_read(), - .PE_inst_out_din(PE_inst_Sextans_5__din), - .PE_inst_out_full_n(PE_inst_Sextans_5__full_n), - .PE_inst_out_write(PE_inst_Sextans_5__write), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_4__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_4__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_4__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_4__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_4__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_4__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_4__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_4__read), - .fifo_A_peek_read(), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_16__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_16__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_16__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_16__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_16__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_17__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_17__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_17__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_17__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_17__read), - .fifo_B_in_peek_1_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_18__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_18__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_18__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_18__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_18__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_19__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_19__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_19__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_19__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_19__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_20__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_20__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_20__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_21__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_21__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_21__write), - .fifo_B_out_2_din(fifo_B_pe_Sextans_22__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_22__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_22__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_23__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_23__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_23__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_16__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_16__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_16__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_17__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_17__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_17__write), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_18__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_18__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_18__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_19__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_19__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_19__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_4__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_4__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_4__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_4__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_4__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_5__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_5__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_5__write), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_4__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_4__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_4__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_5 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_5__ap_start), - .ap_done(PEG_Bmtx_5__ap_done), - .ap_idle(PEG_Bmtx_5__ap_idle), - .ap_ready(PEG_Bmtx_5__ap_ready), - .PE_inst_in_s_dout(PE_inst_Sextans_5__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_5__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_5__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_5__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_5__read), - .PE_inst_in_peek_read(), - .PE_inst_out_din(PE_inst_Sextans_6__din), - .PE_inst_out_full_n(PE_inst_Sextans_6__full_n), - .PE_inst_out_write(PE_inst_Sextans_6__write), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_5__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_5__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_5__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_5__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_5__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_5__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_5__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_5__read), - .fifo_A_peek_read(), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_20__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_20__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_20__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_20__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_20__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_21__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_21__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_21__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_21__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_21__read), - .fifo_B_in_peek_1_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_22__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_22__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_22__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_22__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_22__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_23__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_23__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_23__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_23__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_23__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_24__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_24__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_24__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_25__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_25__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_25__write), - .fifo_B_out_2_din(fifo_B_pe_Sextans_26__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_26__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_26__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_27__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_27__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_27__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_20__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_20__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_20__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_21__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_21__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_21__write), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_22__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_22__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_22__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_23__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_23__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_23__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_5__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_5__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_5__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_5__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_5__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_6__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_6__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_6__write), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_5__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_5__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_5__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_6 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_6__ap_start), - .ap_done(PEG_Bmtx_6__ap_done), - .ap_idle(PEG_Bmtx_6__ap_idle), - .ap_ready(PEG_Bmtx_6__ap_ready), - .PE_inst_in_s_dout(PE_inst_Sextans_6__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_6__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_6__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_6__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_6__read), - .PE_inst_in_peek_read(), - .PE_inst_out_din(PE_inst_Sextans_7__din), - .PE_inst_out_full_n(PE_inst_Sextans_7__full_n), - .PE_inst_out_write(PE_inst_Sextans_7__write), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_6__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_6__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_6__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_6__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_6__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_6__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_6__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_6__read), - .fifo_A_peek_read(), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_24__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_24__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_24__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_24__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_24__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_25__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_25__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_25__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_25__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_25__read), - .fifo_B_in_peek_1_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_26__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_26__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_26__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_26__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_26__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_27__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_27__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_27__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_27__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_27__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_28__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_28__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_28__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_29__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_29__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_29__write), - .fifo_B_out_2_din(fifo_B_pe_Sextans_30__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_30__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_30__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_31__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_31__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_31__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_24__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_24__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_24__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_25__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_25__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_25__write), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_26__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_26__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_26__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_27__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_27__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_27__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_6__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_6__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_6__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_6__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_6__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_7__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_7__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_7__write), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_6__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_6__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_6__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_7 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_7__ap_start), - .ap_done(PEG_Bmtx_7__ap_done), - .ap_idle(PEG_Bmtx_7__ap_idle), - .ap_ready(PEG_Bmtx_7__ap_ready), - .PE_inst_in_s_dout(PE_inst_Sextans_7__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_7__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_7__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_7__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_7__read), - .PE_inst_in_peek_read(), - .PE_inst_out_din(PE_inst_Sextans_8__din), - .PE_inst_out_full_n(PE_inst_Sextans_8__full_n), - .PE_inst_out_write(PE_inst_Sextans_8__write), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_7__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_7__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_7__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_7__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_7__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_7__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_7__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_7__read), - .fifo_A_peek_read(), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_28__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_28__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_28__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_28__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_28__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_29__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_29__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_29__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_29__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_29__read), - .fifo_B_in_peek_1_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_30__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_30__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_30__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_30__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_30__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_31__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_31__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_31__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_31__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_31__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_32__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_32__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_32__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_33__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_33__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_33__write), - .fifo_B_out_2_din(fifo_B_pe_Sextans_34__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_34__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_34__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_35__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_35__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_35__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_28__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_28__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_28__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_29__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_29__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_29__write), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_30__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_30__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_30__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_31__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_31__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_31__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_7__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_7__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_7__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_7__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_7__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_8__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_8__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_8__write), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_7__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_7__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_7__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_8 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_8__ap_start), - .ap_done(PEG_Bmtx_8__ap_done), - .ap_idle(PEG_Bmtx_8__ap_idle), - .ap_ready(PEG_Bmtx_8__ap_ready), - .PE_inst_in_s_dout(PE_inst_Sextans_8__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_8__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_8__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_8__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_8__read), - .PE_inst_in_peek_read(), - .PE_inst_out_din(PE_inst_Sextans_9__din), - .PE_inst_out_full_n(PE_inst_Sextans_9__full_n), - .PE_inst_out_write(PE_inst_Sextans_9__write), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_8__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_8__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_8__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_8__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_8__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_8__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_8__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_8__read), - .fifo_A_peek_read(), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_32__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_32__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_32__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_32__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_32__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_33__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_33__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_33__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_33__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_33__read), - .fifo_B_in_peek_1_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_34__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_34__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_34__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_34__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_34__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_35__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_35__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_35__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_35__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_35__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_36__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_36__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_36__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_37__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_37__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_37__write), - .fifo_B_out_2_din(fifo_B_pe_Sextans_38__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_38__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_38__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_39__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_39__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_39__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_32__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_32__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_32__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_33__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_33__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_33__write), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_34__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_34__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_34__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_35__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_35__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_35__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_8__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_8__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_8__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_8__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_8__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_9__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_9__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_9__write), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_8__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_8__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_8__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_9 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_9__ap_start), - .ap_done(PEG_Bmtx_9__ap_done), - .ap_idle(PEG_Bmtx_9__ap_idle), - .ap_ready(PEG_Bmtx_9__ap_ready), - .PE_inst_out_din(PE_inst_Sextans_10__din), - .PE_inst_out_full_n(PE_inst_Sextans_10__full_n), - .PE_inst_out_write(PE_inst_Sextans_10__write), - .PE_inst_in_s_dout(PE_inst_Sextans_9__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_9__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_9__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_9__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_9__read), - .PE_inst_in_peek_read(), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_9__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_9__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_9__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_9__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_9__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_9__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_9__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_9__read), - .fifo_A_peek_read(), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_36__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_36__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_36__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_36__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_36__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_37__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_37__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_37__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_37__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_37__read), - .fifo_B_in_peek_1_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_38__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_38__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_38__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_38__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_38__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_39__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_39__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_39__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_39__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_39__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_40__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_40__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_40__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_41__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_41__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_41__write), - .fifo_B_out_2_din(fifo_B_pe_Sextans_42__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_42__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_42__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_43__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_43__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_43__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_36__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_36__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_36__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_37__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_37__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_37__write), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_38__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_38__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_38__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_39__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_39__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_39__write), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_10__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_10__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_10__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_9__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_9__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_9__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_9__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_9__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_9__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_9__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_9__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_10 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_10__ap_start), - .ap_done(PEG_Bmtx_10__ap_done), - .ap_idle(PEG_Bmtx_10__ap_idle), - .ap_ready(PEG_Bmtx_10__ap_ready), - .PE_inst_in_s_dout(PE_inst_Sextans_10__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_10__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_10__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_10__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_10__read), - .PE_inst_in_peek_read(), - .PE_inst_out_din(PE_inst_Sextans_11__din), - .PE_inst_out_full_n(PE_inst_Sextans_11__full_n), - .PE_inst_out_write(PE_inst_Sextans_11__write), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_10__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_10__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_10__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_10__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_10__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_10__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_10__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_10__read), - .fifo_A_peek_read(), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_40__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_40__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_40__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_40__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_40__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_41__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_41__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_41__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_41__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_41__read), - .fifo_B_in_peek_1_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_42__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_42__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_42__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_42__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_42__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_43__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_43__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_43__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_43__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_43__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_44__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_44__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_44__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_45__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_45__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_45__write), - .fifo_B_out_2_din(fifo_B_pe_Sextans_46__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_46__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_46__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_47__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_47__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_47__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_40__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_40__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_40__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_41__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_41__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_41__write), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_42__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_42__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_42__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_43__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_43__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_43__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_10__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_10__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_10__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_10__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_10__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_11__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_11__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_11__write), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_10__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_10__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_10__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_11 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_11__ap_start), - .ap_done(PEG_Bmtx_11__ap_done), - .ap_idle(PEG_Bmtx_11__ap_idle), - .ap_ready(PEG_Bmtx_11__ap_ready), - .PE_inst_in_s_dout(PE_inst_Sextans_11__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_11__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_11__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_11__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_11__read), - .PE_inst_in_peek_read(), - .PE_inst_out_din(PE_inst_Sextans_12__din), - .PE_inst_out_full_n(PE_inst_Sextans_12__full_n), - .PE_inst_out_write(PE_inst_Sextans_12__write), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_11__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_11__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_11__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_11__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_11__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_11__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_11__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_11__read), - .fifo_A_peek_read(), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_44__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_44__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_44__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_44__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_44__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_45__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_45__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_45__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_45__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_45__read), - .fifo_B_in_peek_1_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_46__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_46__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_46__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_46__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_46__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_47__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_47__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_47__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_47__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_47__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_48__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_48__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_48__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_49__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_49__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_49__write), - .fifo_B_out_2_din(fifo_B_pe_Sextans_50__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_50__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_50__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_51__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_51__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_51__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_44__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_44__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_44__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_45__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_45__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_45__write), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_46__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_46__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_46__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_47__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_47__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_47__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_11__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_11__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_11__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_11__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_11__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_12__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_12__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_12__write), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_11__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_11__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_11__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_12 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_12__ap_start), - .ap_done(PEG_Bmtx_12__ap_done), - .ap_idle(PEG_Bmtx_12__ap_idle), - .ap_ready(PEG_Bmtx_12__ap_ready), - .PE_inst_in_s_dout(PE_inst_Sextans_12__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_12__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_12__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_12__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_12__read), - .PE_inst_in_peek_read(), - .PE_inst_out_din(PE_inst_Sextans_13__din), - .PE_inst_out_full_n(PE_inst_Sextans_13__full_n), - .PE_inst_out_write(PE_inst_Sextans_13__write), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_12__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_12__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_12__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_12__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_12__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_12__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_12__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_12__read), - .fifo_A_peek_read(), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_48__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_48__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_48__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_48__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_48__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_49__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_49__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_49__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_49__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_49__read), - .fifo_B_in_peek_1_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_50__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_50__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_50__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_50__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_50__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_51__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_51__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_51__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_51__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_51__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_52__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_52__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_52__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_53__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_53__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_53__write), - .fifo_B_out_2_din(fifo_B_pe_Sextans_54__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_54__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_54__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_55__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_55__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_55__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_48__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_48__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_48__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_49__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_49__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_49__write), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_50__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_50__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_50__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_51__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_51__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_51__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_12__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_12__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_12__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_12__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_12__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_13__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_13__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_13__write), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_12__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_12__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_12__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_13 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_13__ap_start), - .ap_done(PEG_Bmtx_13__ap_done), - .ap_idle(PEG_Bmtx_13__ap_idle), - .ap_ready(PEG_Bmtx_13__ap_ready), - .PE_inst_in_s_dout(PE_inst_Sextans_13__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_13__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_13__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_13__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_13__read), - .PE_inst_in_peek_read(), - .PE_inst_out_din(PE_inst_Sextans_14__din), - .PE_inst_out_full_n(PE_inst_Sextans_14__full_n), - .PE_inst_out_write(PE_inst_Sextans_14__write), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_13__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_13__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_13__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_13__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_13__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_13__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_13__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_13__read), - .fifo_A_peek_read(), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_52__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_52__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_52__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_52__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_52__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_53__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_53__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_53__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_53__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_53__read), - .fifo_B_in_peek_1_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_54__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_54__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_54__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_54__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_54__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_55__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_55__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_55__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_55__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_55__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_56__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_56__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_56__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_57__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_57__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_57__write), - .fifo_B_out_2_din(fifo_B_pe_Sextans_58__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_58__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_58__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_59__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_59__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_59__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_52__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_52__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_52__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_53__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_53__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_53__write), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_54__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_54__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_54__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_55__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_55__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_55__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_13__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_13__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_13__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_13__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_13__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_14__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_14__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_14__write), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_13__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_13__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_13__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_14 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_14__ap_start), - .ap_done(PEG_Bmtx_14__ap_done), - .ap_idle(PEG_Bmtx_14__ap_idle), - .ap_ready(PEG_Bmtx_14__ap_ready), - .PE_inst_in_s_dout(PE_inst_Sextans_14__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_14__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_14__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_14__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_14__read), - .PE_inst_in_peek_read(), - .PE_inst_out_din(PE_inst_Sextans_15__din), - .PE_inst_out_full_n(PE_inst_Sextans_15__full_n), - .PE_inst_out_write(PE_inst_Sextans_15__write), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_14__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_14__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_14__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_14__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_14__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_14__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_14__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_14__read), - .fifo_A_peek_read(), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_56__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_56__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_56__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_56__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_56__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_57__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_57__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_57__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_57__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_57__read), - .fifo_B_in_peek_1_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_58__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_58__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_58__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_58__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_58__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_59__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_59__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_59__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_59__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_59__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_60__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_60__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_60__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_61__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_61__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_61__write), - .fifo_B_out_2_din(fifo_B_pe_Sextans_62__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_62__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_62__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_63__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_63__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_63__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_56__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_56__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_56__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_57__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_57__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_57__write), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_58__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_58__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_58__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_59__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_59__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_59__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_14__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_14__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_14__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_14__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_14__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_15__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_15__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_15__write), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_14__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_14__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_14__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Bmtx - PEG_Bmtx_15 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Bmtx_15__ap_start), - .ap_done(PEG_Bmtx_15__ap_done), - .ap_idle(PEG_Bmtx_15__ap_idle), - .ap_ready(PEG_Bmtx_15__ap_ready), - .PE_inst_in_s_dout(PE_inst_Sextans_15__dout), - .PE_inst_in_peek_dout(PE_inst_Sextans_15__dout), - .PE_inst_in_s_empty_n(PE_inst_Sextans_15__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_Sextans_15__empty_n), - .PE_inst_in_s_read(PE_inst_Sextans_15__read), - .PE_inst_in_peek_read(), - .PE_inst_out_din(PE_inst_Sextans_16__din), - .PE_inst_out_full_n(PE_inst_Sextans_16__full_n), - .PE_inst_out_write(PE_inst_Sextans_16__write), - .PE_inst_to_Cmtx_din(PE_inst_to_Cmtx_Sextans_15__din), - .PE_inst_to_Cmtx_full_n(PE_inst_to_Cmtx_Sextans_15__full_n), - .PE_inst_to_Cmtx_write(PE_inst_to_Cmtx_Sextans_15__write), - .fifo_A_s_dout(fifo_A_pe_Sextans_15__dout), - .fifo_A_peek_dout(fifo_A_pe_Sextans_15__dout), - .fifo_A_s_empty_n(fifo_A_pe_Sextans_15__empty_n), - .fifo_A_peek_empty_n(fifo_A_pe_Sextans_15__empty_n), - .fifo_A_s_read(fifo_A_pe_Sextans_15__read), - .fifo_A_peek_read(), - .fifo_B_in_0_dout(fifo_B_pe_Sextans_60__dout), - .fifo_B_in_peek_0_dout(fifo_B_pe_Sextans_60__dout), - .fifo_B_in_0_empty_n(fifo_B_pe_Sextans_60__empty_n), - .fifo_B_in_peek_0_empty_n(fifo_B_pe_Sextans_60__empty_n), - .fifo_B_in_0_read(fifo_B_pe_Sextans_60__read), - .fifo_B_in_peek_0_read(), - .fifo_B_in_1_dout(fifo_B_pe_Sextans_61__dout), - .fifo_B_in_peek_1_dout(fifo_B_pe_Sextans_61__dout), - .fifo_B_in_1_empty_n(fifo_B_pe_Sextans_61__empty_n), - .fifo_B_in_peek_1_empty_n(fifo_B_pe_Sextans_61__empty_n), - .fifo_B_in_1_read(fifo_B_pe_Sextans_61__read), - .fifo_B_in_peek_1_read(), - .fifo_B_in_2_dout(fifo_B_pe_Sextans_62__dout), - .fifo_B_in_peek_2_dout(fifo_B_pe_Sextans_62__dout), - .fifo_B_in_2_empty_n(fifo_B_pe_Sextans_62__empty_n), - .fifo_B_in_peek_2_empty_n(fifo_B_pe_Sextans_62__empty_n), - .fifo_B_in_2_read(fifo_B_pe_Sextans_62__read), - .fifo_B_in_peek_2_read(), - .fifo_B_in_3_dout(fifo_B_pe_Sextans_63__dout), - .fifo_B_in_peek_3_dout(fifo_B_pe_Sextans_63__dout), - .fifo_B_in_3_empty_n(fifo_B_pe_Sextans_63__empty_n), - .fifo_B_in_peek_3_empty_n(fifo_B_pe_Sextans_63__empty_n), - .fifo_B_in_3_read(fifo_B_pe_Sextans_63__read), - .fifo_B_in_peek_3_read(), - .fifo_B_out_0_din(fifo_B_pe_Sextans_64__din), - .fifo_B_out_0_full_n(fifo_B_pe_Sextans_64__full_n), - .fifo_B_out_0_write(fifo_B_pe_Sextans_64__write), - .fifo_B_out_1_din(fifo_B_pe_Sextans_65__din), - .fifo_B_out_1_full_n(fifo_B_pe_Sextans_65__full_n), - .fifo_B_out_1_write(fifo_B_pe_Sextans_65__write), - .fifo_B_out_2_din(fifo_B_pe_Sextans_66__din), - .fifo_B_out_2_full_n(fifo_B_pe_Sextans_66__full_n), - .fifo_B_out_2_write(fifo_B_pe_Sextans_66__write), - .fifo_B_out_3_din(fifo_B_pe_Sextans_67__din), - .fifo_B_out_3_full_n(fifo_B_pe_Sextans_67__full_n), - .fifo_B_out_3_write(fifo_B_pe_Sextans_67__write), - .fifo_aBvec_0_din(fifo_aBvec_Sextans_60__din), - .fifo_aBvec_0_full_n(fifo_aBvec_Sextans_60__full_n), - .fifo_aBvec_0_write(fifo_aBvec_Sextans_60__write), - .fifo_aBvec_1_din(fifo_aBvec_Sextans_61__din), - .fifo_aBvec_1_full_n(fifo_aBvec_Sextans_61__full_n), - .fifo_aBvec_1_write(fifo_aBvec_Sextans_61__write), - .fifo_aBvec_2_din(fifo_aBvec_Sextans_62__din), - .fifo_aBvec_2_full_n(fifo_aBvec_Sextans_62__full_n), - .fifo_aBvec_2_write(fifo_aBvec_Sextans_62__write), - .fifo_aBvec_3_din(fifo_aBvec_Sextans_63__din), - .fifo_aBvec_3_full_n(fifo_aBvec_Sextans_63__full_n), - .fifo_aBvec_3_write(fifo_aBvec_Sextans_63__write), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_Sextans_15__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_Sextans_15__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_Sextans_15__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_Sextans_15__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_Sextans_15__read), - .fifo_inst_in_peek_read(), - .fifo_inst_out_din(fifo_edge_list_ptr_Sextans_16__din), - .fifo_inst_out_full_n(fifo_edge_list_ptr_Sextans_16__full_n), - .fifo_inst_out_write(fifo_edge_list_ptr_Sextans_16__write), - .fifo_inst_out_to_Cmtx_din(fifo_edge_list_ptr_to_Cmtx_Sextans_15__din), - .fifo_inst_out_to_Cmtx_full_n(fifo_edge_list_ptr_to_Cmtx_Sextans_15__full_n), - .fifo_inst_out_to_Cmtx_write(fifo_edge_list_ptr_to_Cmtx_Sextans_15__write) - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_0 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_0__ap_start), - .ap_done(PEG_Cmtx_0__ap_done), - .ap_idle(PEG_Cmtx_0__ap_idle), - .ap_ready(PEG_Cmtx_0__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_0__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_0__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_0__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_0__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_0__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_0__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_0__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_0__write), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_0__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_0__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_0__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_0__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_0__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_1__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_1__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_1__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_1__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_1__read), - .fifo_aBvec_peek_1_read(), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_2__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_2__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_2__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_2__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_2__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_3__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_3__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_3__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_3__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_3__read), - .fifo_aBvec_peek_3_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_0__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_0__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_0__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_0__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_0__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_1 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_1__ap_start), - .ap_done(PEG_Cmtx_1__ap_done), - .ap_idle(PEG_Cmtx_1__ap_idle), - .ap_ready(PEG_Cmtx_1__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_1__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_1__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_1__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_1__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_1__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_1__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_1__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_1__write), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_4__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_4__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_4__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_4__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_4__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_5__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_5__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_5__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_5__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_5__read), - .fifo_aBvec_peek_1_read(), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_6__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_6__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_6__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_6__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_6__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_7__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_7__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_7__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_7__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_7__read), - .fifo_aBvec_peek_3_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_1__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_1__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_1__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_1__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_1__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_2 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_2__ap_start), - .ap_done(PEG_Cmtx_2__ap_done), - .ap_idle(PEG_Cmtx_2__ap_idle), - .ap_ready(PEG_Cmtx_2__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_2__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_2__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_2__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_2__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_2__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_2__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_2__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_2__write), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_10__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_10__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_10__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_10__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_10__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_11__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_11__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_11__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_11__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_11__read), - .fifo_aBvec_peek_3_read(), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_8__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_8__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_8__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_8__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_8__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_9__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_9__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_9__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_9__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_9__read), - .fifo_aBvec_peek_1_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_2__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_2__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_2__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_2__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_2__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_3 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_3__ap_start), - .ap_done(PEG_Cmtx_3__ap_done), - .ap_idle(PEG_Cmtx_3__ap_idle), - .ap_ready(PEG_Cmtx_3__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_3__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_3__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_3__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_3__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_3__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_3__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_3__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_3__write), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_12__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_12__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_12__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_12__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_12__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_13__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_13__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_13__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_13__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_13__read), - .fifo_aBvec_peek_1_read(), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_14__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_14__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_14__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_14__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_14__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_15__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_15__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_15__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_15__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_15__read), - .fifo_aBvec_peek_3_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_3__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_3__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_3__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_3__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_3__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_4 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_4__ap_start), - .ap_done(PEG_Cmtx_4__ap_done), - .ap_idle(PEG_Cmtx_4__ap_idle), - .ap_ready(PEG_Cmtx_4__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_4__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_4__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_4__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_4__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_4__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_4__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_4__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_4__write), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_16__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_16__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_16__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_16__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_16__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_17__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_17__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_17__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_17__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_17__read), - .fifo_aBvec_peek_1_read(), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_18__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_18__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_18__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_18__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_18__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_19__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_19__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_19__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_19__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_19__read), - .fifo_aBvec_peek_3_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_4__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_4__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_4__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_4__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_4__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_5 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_5__ap_start), - .ap_done(PEG_Cmtx_5__ap_done), - .ap_idle(PEG_Cmtx_5__ap_idle), - .ap_ready(PEG_Cmtx_5__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_5__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_5__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_5__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_5__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_5__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_5__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_5__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_5__write), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_20__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_20__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_20__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_20__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_20__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_21__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_21__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_21__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_21__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_21__read), - .fifo_aBvec_peek_1_read(), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_22__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_22__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_22__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_22__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_22__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_23__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_23__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_23__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_23__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_23__read), - .fifo_aBvec_peek_3_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_5__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_5__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_5__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_5__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_5__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_6 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_6__ap_start), - .ap_done(PEG_Cmtx_6__ap_done), - .ap_idle(PEG_Cmtx_6__ap_idle), - .ap_ready(PEG_Cmtx_6__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_6__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_6__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_6__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_6__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_6__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_6__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_6__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_6__write), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_24__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_24__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_24__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_24__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_24__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_25__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_25__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_25__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_25__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_25__read), - .fifo_aBvec_peek_1_read(), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_26__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_26__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_26__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_26__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_26__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_27__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_27__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_27__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_27__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_27__read), - .fifo_aBvec_peek_3_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_6__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_6__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_6__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_6__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_6__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_7 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_7__ap_start), - .ap_done(PEG_Cmtx_7__ap_done), - .ap_idle(PEG_Cmtx_7__ap_idle), - .ap_ready(PEG_Cmtx_7__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_7__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_7__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_7__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_7__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_7__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_7__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_7__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_7__write), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_28__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_28__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_28__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_28__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_28__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_29__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_29__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_29__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_29__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_29__read), - .fifo_aBvec_peek_1_read(), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_30__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_30__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_30__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_30__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_30__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_31__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_31__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_31__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_31__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_31__read), - .fifo_aBvec_peek_3_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_7__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_7__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_7__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_7__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_7__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_8 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_8__ap_start), - .ap_done(PEG_Cmtx_8__ap_done), - .ap_idle(PEG_Cmtx_8__ap_idle), - .ap_ready(PEG_Cmtx_8__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_8__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_8__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_8__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_8__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_8__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_8__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_8__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_8__write), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_32__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_32__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_32__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_32__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_32__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_33__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_33__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_33__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_33__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_33__read), - .fifo_aBvec_peek_1_read(), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_34__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_34__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_34__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_34__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_34__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_35__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_35__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_35__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_35__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_35__read), - .fifo_aBvec_peek_3_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_8__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_8__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_8__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_8__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_8__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_9 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_9__ap_start), - .ap_done(PEG_Cmtx_9__ap_done), - .ap_idle(PEG_Cmtx_9__ap_idle), - .ap_ready(PEG_Cmtx_9__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_9__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_9__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_9__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_9__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_9__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_9__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_9__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_9__write), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_36__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_36__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_36__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_36__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_36__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_37__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_37__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_37__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_37__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_37__read), - .fifo_aBvec_peek_1_read(), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_38__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_38__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_38__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_38__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_38__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_39__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_39__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_39__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_39__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_39__read), - .fifo_aBvec_peek_3_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_9__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_9__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_9__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_9__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_9__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_10 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_10__ap_start), - .ap_done(PEG_Cmtx_10__ap_done), - .ap_idle(PEG_Cmtx_10__ap_idle), - .ap_ready(PEG_Cmtx_10__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_10__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_10__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_10__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_10__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_10__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_10__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_10__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_10__write), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_40__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_40__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_40__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_40__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_40__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_41__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_41__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_41__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_41__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_41__read), - .fifo_aBvec_peek_1_read(), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_42__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_42__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_42__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_42__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_42__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_43__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_43__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_43__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_43__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_43__read), - .fifo_aBvec_peek_3_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_10__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_10__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_10__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_10__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_10__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_11 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_11__ap_start), - .ap_done(PEG_Cmtx_11__ap_done), - .ap_idle(PEG_Cmtx_11__ap_idle), - .ap_ready(PEG_Cmtx_11__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_11__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_11__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_11__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_11__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_11__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_11__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_11__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_11__write), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_44__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_44__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_44__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_44__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_44__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_45__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_45__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_45__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_45__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_45__read), - .fifo_aBvec_peek_1_read(), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_46__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_46__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_46__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_46__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_46__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_47__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_47__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_47__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_47__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_47__read), - .fifo_aBvec_peek_3_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_11__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_11__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_11__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_11__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_11__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_12 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_12__ap_start), - .ap_done(PEG_Cmtx_12__ap_done), - .ap_idle(PEG_Cmtx_12__ap_idle), - .ap_ready(PEG_Cmtx_12__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_12__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_12__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_12__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_12__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_12__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_12__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_12__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_12__write), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_48__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_48__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_48__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_48__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_48__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_49__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_49__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_49__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_49__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_49__read), - .fifo_aBvec_peek_1_read(), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_50__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_50__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_50__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_50__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_50__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_51__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_51__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_51__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_51__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_51__read), - .fifo_aBvec_peek_3_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_12__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_12__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_12__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_12__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_12__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_13 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_13__ap_start), - .ap_done(PEG_Cmtx_13__ap_done), - .ap_idle(PEG_Cmtx_13__ap_idle), - .ap_ready(PEG_Cmtx_13__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_13__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_13__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_13__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_13__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_13__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_13__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_13__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_13__write), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_52__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_52__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_52__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_52__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_52__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_53__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_53__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_53__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_53__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_53__read), - .fifo_aBvec_peek_1_read(), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_54__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_54__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_54__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_54__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_54__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_55__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_55__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_55__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_55__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_55__read), - .fifo_aBvec_peek_3_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_13__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_13__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_13__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_13__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_13__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_14 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_14__ap_start), - .ap_done(PEG_Cmtx_14__ap_done), - .ap_idle(PEG_Cmtx_14__ap_idle), - .ap_ready(PEG_Cmtx_14__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_14__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_14__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_14__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_14__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_14__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_14__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_14__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_14__write), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_56__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_56__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_56__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_56__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_56__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_57__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_57__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_57__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_57__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_57__read), - .fifo_aBvec_peek_1_read(), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_58__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_58__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_58__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_58__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_58__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_59__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_59__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_59__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_59__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_59__read), - .fifo_aBvec_peek_3_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_14__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_14__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_14__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_14__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_14__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) PEG_Cmtx - PEG_Cmtx_15 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(PEG_Cmtx_15__ap_start), - .ap_done(PEG_Cmtx_15__ap_done), - .ap_idle(PEG_Cmtx_15__ap_idle), - .ap_ready(PEG_Cmtx_15__ap_ready), - .PE_inst_in_s_dout(PE_inst_to_Cmtx_Sextans_15__dout), - .PE_inst_in_peek_dout(PE_inst_to_Cmtx_Sextans_15__dout), - .PE_inst_in_s_empty_n(PE_inst_to_Cmtx_Sextans_15__empty_n), - .PE_inst_in_peek_empty_n(PE_inst_to_Cmtx_Sextans_15__empty_n), - .PE_inst_in_s_read(PE_inst_to_Cmtx_Sextans_15__read), - .PE_inst_in_peek_read(), - .fifo_C_out_din(fifo_C_pe_Sextans_15__din), - .fifo_C_out_full_n(fifo_C_pe_Sextans_15__full_n), - .fifo_C_out_write(fifo_C_pe_Sextans_15__write), - .fifo_aBvec_0_dout(fifo_aBvec_Sextans_60__dout), - .fifo_aBvec_peek_0_dout(fifo_aBvec_Sextans_60__dout), - .fifo_aBvec_0_empty_n(fifo_aBvec_Sextans_60__empty_n), - .fifo_aBvec_peek_0_empty_n(fifo_aBvec_Sextans_60__empty_n), - .fifo_aBvec_0_read(fifo_aBvec_Sextans_60__read), - .fifo_aBvec_peek_0_read(), - .fifo_aBvec_1_dout(fifo_aBvec_Sextans_61__dout), - .fifo_aBvec_peek_1_dout(fifo_aBvec_Sextans_61__dout), - .fifo_aBvec_1_empty_n(fifo_aBvec_Sextans_61__empty_n), - .fifo_aBvec_peek_1_empty_n(fifo_aBvec_Sextans_61__empty_n), - .fifo_aBvec_1_read(fifo_aBvec_Sextans_61__read), - .fifo_aBvec_peek_1_read(), - .fifo_aBvec_2_dout(fifo_aBvec_Sextans_62__dout), - .fifo_aBvec_peek_2_dout(fifo_aBvec_Sextans_62__dout), - .fifo_aBvec_2_empty_n(fifo_aBvec_Sextans_62__empty_n), - .fifo_aBvec_peek_2_empty_n(fifo_aBvec_Sextans_62__empty_n), - .fifo_aBvec_2_read(fifo_aBvec_Sextans_62__read), - .fifo_aBvec_peek_2_read(), - .fifo_aBvec_3_dout(fifo_aBvec_Sextans_63__dout), - .fifo_aBvec_peek_3_dout(fifo_aBvec_Sextans_63__dout), - .fifo_aBvec_3_empty_n(fifo_aBvec_Sextans_63__empty_n), - .fifo_aBvec_peek_3_empty_n(fifo_aBvec_Sextans_63__empty_n), - .fifo_aBvec_3_read(fifo_aBvec_Sextans_63__read), - .fifo_aBvec_peek_3_read(), - .fifo_inst_in_s_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_15__dout), - .fifo_inst_in_peek_dout(fifo_edge_list_ptr_to_Cmtx_Sextans_15__dout), - .fifo_inst_in_s_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_15__empty_n), - .fifo_inst_in_peek_empty_n(fifo_edge_list_ptr_to_Cmtx_Sextans_15__empty_n), - .fifo_inst_in_s_read(fifo_edge_list_ptr_to_Cmtx_Sextans_15__read), - .fifo_inst_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) Scatter_1_2 - Scatter_1_2_0 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Scatter_1_2_0__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_in_s_dout(fifo_A_Sextans_0__dout), - .fifo_in_peek_dout(fifo_A_Sextans_0__dout), - .fifo_in_s_empty_n(fifo_A_Sextans_0__empty_n), - .fifo_in_peek_empty_n(fifo_A_Sextans_0__empty_n), - .fifo_in_s_read(fifo_A_Sextans_0__read), - .fifo_in_peek_read(), - .fifo_out_0_din(fifo_A_pe_Sextans_0__din), - .fifo_out_0_full_n(fifo_A_pe_Sextans_0__full_n), - .fifo_out_0_write(fifo_A_pe_Sextans_0__write), - .fifo_out_1_din(fifo_A_pe_Sextans_1__din), - .fifo_out_1_full_n(fifo_A_pe_Sextans_1__full_n), - .fifo_out_1_write(fifo_A_pe_Sextans_1__write) - ); - - - (* keep_hierarchy = "yes" *) Scatter_1_2 - Scatter_1_2_1 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Scatter_1_2_1__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_in_s_dout(fifo_A_Sextans_1__dout), - .fifo_in_peek_dout(fifo_A_Sextans_1__dout), - .fifo_in_s_empty_n(fifo_A_Sextans_1__empty_n), - .fifo_in_peek_empty_n(fifo_A_Sextans_1__empty_n), - .fifo_in_s_read(fifo_A_Sextans_1__read), - .fifo_in_peek_read(), - .fifo_out_0_din(fifo_A_pe_Sextans_2__din), - .fifo_out_0_full_n(fifo_A_pe_Sextans_2__full_n), - .fifo_out_0_write(fifo_A_pe_Sextans_2__write), - .fifo_out_1_din(fifo_A_pe_Sextans_3__din), - .fifo_out_1_full_n(fifo_A_pe_Sextans_3__full_n), - .fifo_out_1_write(fifo_A_pe_Sextans_3__write) - ); - - - (* keep_hierarchy = "yes" *) Scatter_1_2 - Scatter_1_2_2 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Scatter_1_2_2__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_in_s_dout(fifo_A_Sextans_2__dout), - .fifo_in_peek_dout(fifo_A_Sextans_2__dout), - .fifo_in_s_empty_n(fifo_A_Sextans_2__empty_n), - .fifo_in_peek_empty_n(fifo_A_Sextans_2__empty_n), - .fifo_in_s_read(fifo_A_Sextans_2__read), - .fifo_in_peek_read(), - .fifo_out_0_din(fifo_A_pe_Sextans_4__din), - .fifo_out_0_full_n(fifo_A_pe_Sextans_4__full_n), - .fifo_out_0_write(fifo_A_pe_Sextans_4__write), - .fifo_out_1_din(fifo_A_pe_Sextans_5__din), - .fifo_out_1_full_n(fifo_A_pe_Sextans_5__full_n), - .fifo_out_1_write(fifo_A_pe_Sextans_5__write) - ); - - - (* keep_hierarchy = "yes" *) Scatter_1_2 - Scatter_1_2_3 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Scatter_1_2_3__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_in_s_dout(fifo_A_Sextans_3__dout), - .fifo_in_peek_dout(fifo_A_Sextans_3__dout), - .fifo_in_s_empty_n(fifo_A_Sextans_3__empty_n), - .fifo_in_peek_empty_n(fifo_A_Sextans_3__empty_n), - .fifo_in_s_read(fifo_A_Sextans_3__read), - .fifo_in_peek_read(), - .fifo_out_0_din(fifo_A_pe_Sextans_6__din), - .fifo_out_0_full_n(fifo_A_pe_Sextans_6__full_n), - .fifo_out_0_write(fifo_A_pe_Sextans_6__write), - .fifo_out_1_din(fifo_A_pe_Sextans_7__din), - .fifo_out_1_full_n(fifo_A_pe_Sextans_7__full_n), - .fifo_out_1_write(fifo_A_pe_Sextans_7__write) - ); - - - (* keep_hierarchy = "yes" *) Scatter_1_2 - Scatter_1_2_4 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Scatter_1_2_4__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_in_s_dout(fifo_A_Sextans_4__dout), - .fifo_in_peek_dout(fifo_A_Sextans_4__dout), - .fifo_in_s_empty_n(fifo_A_Sextans_4__empty_n), - .fifo_in_peek_empty_n(fifo_A_Sextans_4__empty_n), - .fifo_in_s_read(fifo_A_Sextans_4__read), - .fifo_in_peek_read(), - .fifo_out_0_din(fifo_A_pe_Sextans_8__din), - .fifo_out_0_full_n(fifo_A_pe_Sextans_8__full_n), - .fifo_out_0_write(fifo_A_pe_Sextans_8__write), - .fifo_out_1_din(fifo_A_pe_Sextans_9__din), - .fifo_out_1_full_n(fifo_A_pe_Sextans_9__full_n), - .fifo_out_1_write(fifo_A_pe_Sextans_9__write) - ); - - - (* keep_hierarchy = "yes" *) Scatter_1_2 - Scatter_1_2_5 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Scatter_1_2_5__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_in_s_dout(fifo_A_Sextans_5__dout), - .fifo_in_peek_dout(fifo_A_Sextans_5__dout), - .fifo_in_s_empty_n(fifo_A_Sextans_5__empty_n), - .fifo_in_peek_empty_n(fifo_A_Sextans_5__empty_n), - .fifo_in_s_read(fifo_A_Sextans_5__read), - .fifo_in_peek_read(), - .fifo_out_0_din(fifo_A_pe_Sextans_10__din), - .fifo_out_0_full_n(fifo_A_pe_Sextans_10__full_n), - .fifo_out_0_write(fifo_A_pe_Sextans_10__write), - .fifo_out_1_din(fifo_A_pe_Sextans_11__din), - .fifo_out_1_full_n(fifo_A_pe_Sextans_11__full_n), - .fifo_out_1_write(fifo_A_pe_Sextans_11__write) - ); - - - (* keep_hierarchy = "yes" *) Scatter_1_2 - Scatter_1_2_6 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Scatter_1_2_6__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_in_s_dout(fifo_A_Sextans_6__dout), - .fifo_in_peek_dout(fifo_A_Sextans_6__dout), - .fifo_in_s_empty_n(fifo_A_Sextans_6__empty_n), - .fifo_in_peek_empty_n(fifo_A_Sextans_6__empty_n), - .fifo_in_s_read(fifo_A_Sextans_6__read), - .fifo_in_peek_read(), - .fifo_out_0_din(fifo_A_pe_Sextans_12__din), - .fifo_out_0_full_n(fifo_A_pe_Sextans_12__full_n), - .fifo_out_0_write(fifo_A_pe_Sextans_12__write), - .fifo_out_1_din(fifo_A_pe_Sextans_13__din), - .fifo_out_1_full_n(fifo_A_pe_Sextans_13__full_n), - .fifo_out_1_write(fifo_A_pe_Sextans_13__write) - ); - - - (* keep_hierarchy = "yes" *) Scatter_1_2 - Scatter_1_2_7 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(Scatter_1_2_7__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_in_s_dout(fifo_A_Sextans_7__dout), - .fifo_in_peek_dout(fifo_A_Sextans_7__dout), - .fifo_in_s_empty_n(fifo_A_Sextans_7__empty_n), - .fifo_in_peek_empty_n(fifo_A_Sextans_7__empty_n), - .fifo_in_s_read(fifo_A_Sextans_7__read), - .fifo_in_peek_read(), - .fifo_out_0_din(fifo_A_pe_Sextans_14__din), - .fifo_out_0_full_n(fifo_A_pe_Sextans_14__full_n), - .fifo_out_0_write(fifo_A_pe_Sextans_14__write), - .fifo_out_1_din(fifo_A_pe_Sextans_15__din), - .fifo_out_1_full_n(fifo_A_pe_Sextans_15__full_n), - .fifo_out_1_write(fifo_A_pe_Sextans_15__write) - ); - - - (* keep_hierarchy = "yes" *) black_hole_float_v16 - black_hole_float_v16_0 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(black_hole_float_v16_0__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_in_s_dout(fifo_B_pe_Sextans_64__dout), - .fifo_in_peek_dout(fifo_B_pe_Sextans_64__dout), - .fifo_in_s_empty_n(fifo_B_pe_Sextans_64__empty_n), - .fifo_in_peek_empty_n(fifo_B_pe_Sextans_64__empty_n), - .fifo_in_s_read(fifo_B_pe_Sextans_64__read), - .fifo_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) black_hole_float_v16 - black_hole_float_v16_1 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(black_hole_float_v16_1__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_in_s_dout(fifo_B_pe_Sextans_65__dout), - .fifo_in_peek_dout(fifo_B_pe_Sextans_65__dout), - .fifo_in_s_empty_n(fifo_B_pe_Sextans_65__empty_n), - .fifo_in_peek_empty_n(fifo_B_pe_Sextans_65__empty_n), - .fifo_in_s_read(fifo_B_pe_Sextans_65__read), - .fifo_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) black_hole_float_v16 - black_hole_float_v16_2 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(black_hole_float_v16_2__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_in_s_dout(fifo_B_pe_Sextans_66__dout), - .fifo_in_peek_dout(fifo_B_pe_Sextans_66__dout), - .fifo_in_s_empty_n(fifo_B_pe_Sextans_66__empty_n), - .fifo_in_peek_empty_n(fifo_B_pe_Sextans_66__empty_n), - .fifo_in_s_read(fifo_B_pe_Sextans_66__read), - .fifo_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) black_hole_float_v16 - black_hole_float_v16_3 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(black_hole_float_v16_3__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_in_s_dout(fifo_B_pe_Sextans_67__dout), - .fifo_in_peek_dout(fifo_B_pe_Sextans_67__dout), - .fifo_in_s_empty_n(fifo_B_pe_Sextans_67__empty_n), - .fifo_in_peek_empty_n(fifo_B_pe_Sextans_67__empty_n), - .fifo_in_s_read(fifo_B_pe_Sextans_67__read), - .fifo_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) black_hole_int - black_hole_int_0 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(black_hole_int_0__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_in_s_dout(PE_inst_Sextans_16__dout), - .fifo_in_peek_dout(PE_inst_Sextans_16__dout), - .fifo_in_s_empty_n(PE_inst_Sextans_16__empty_n), - .fifo_in_peek_empty_n(PE_inst_Sextans_16__empty_n), - .fifo_in_s_read(PE_inst_Sextans_16__read), - .fifo_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) black_hole_int - black_hole_int_1 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(black_hole_int_1__ap_start), - .ap_done(), - .ap_idle(), - .ap_ready(), - .fifo_in_s_dout(fifo_edge_list_ptr_Sextans_16__dout), - .fifo_in_peek_dout(fifo_edge_list_ptr_Sextans_16__dout), - .fifo_in_s_empty_n(fifo_edge_list_ptr_Sextans_16__empty_n), - .fifo_in_peek_empty_n(fifo_edge_list_ptr_Sextans_16__empty_n), - .fifo_in_s_read(fifo_edge_list_ptr_Sextans_16__read), - .fifo_in_peek_read() - ); - - - (* keep_hierarchy = "yes" *) read_A - read_A_0 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_A_0__ap_start), - .ap_done(read_A_0__ap_done), - .ap_idle(read_A_0__ap_idle), - .ap_ready(read_A_0__ap_ready), - .A_len(read_A_0___NUM_A_LEN__q0), - .P_N(read_A_0___P_N__q0), - .A_read_addr_din(edge_list_ch_0_read_addr__din), - .A_read_addr_full_n(edge_list_ch_0_read_addr__full_n), - .A_read_addr_write(edge_list_ch_0_read_addr__write), - .A_read_data_s_dout({1'b0, edge_list_ch_0_read_data__dout}), - .A_read_data_peek_dout({1'b0, edge_list_ch_0_read_data__dout}), - .A_read_data_s_empty_n(edge_list_ch_0_read_data__empty_n), - .A_read_data_peek_empty_n(edge_list_ch_0_read_data__empty_n), - .A_read_data_s_read(edge_list_ch_0_read_data__read), - .A_read_data_peek_read(), - .A_write_addr_din(edge_list_ch_0_write_addr__din), - .A_write_addr_full_n(edge_list_ch_0_write_addr__full_n), - .A_write_addr_write(edge_list_ch_0_write_addr__write), - .A_write_data_din(edge_list_ch_0_write_data__din), - .A_write_data_full_n(edge_list_ch_0_write_data__full_n), - .A_write_data_write(edge_list_ch_0_write_data__write), - .A_write_resp_s_dout({1'b0, edge_list_ch_0_write_resp__dout}), - .A_write_resp_peek_dout({1'b0, edge_list_ch_0_write_resp__dout}), - .A_write_resp_s_empty_n(edge_list_ch_0_write_resp__empty_n), - .A_write_resp_peek_empty_n(edge_list_ch_0_write_resp__empty_n), - .A_write_resp_s_read(edge_list_ch_0_write_resp__read), - .A_write_resp_peek_read(), - .fifo_A_din(fifo_A_Sextans_0__din), - .fifo_A_full_n(fifo_A_Sextans_0__full_n), - .fifo_A_write(fifo_A_Sextans_0__write) - ); - - - (* keep_hierarchy = "yes" *) read_A - read_A_1 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_A_1__ap_start), - .ap_done(read_A_1__ap_done), - .ap_idle(read_A_1__ap_idle), - .ap_ready(read_A_1__ap_ready), - .A_len(read_A_1___NUM_A_LEN__q0), - .P_N(read_A_1___P_N__q0), - .A_read_addr_din(edge_list_ch_1_read_addr__din), - .A_read_addr_full_n(edge_list_ch_1_read_addr__full_n), - .A_read_addr_write(edge_list_ch_1_read_addr__write), - .A_read_data_s_dout({1'b0, edge_list_ch_1_read_data__dout}), - .A_read_data_peek_dout({1'b0, edge_list_ch_1_read_data__dout}), - .A_read_data_s_empty_n(edge_list_ch_1_read_data__empty_n), - .A_read_data_peek_empty_n(edge_list_ch_1_read_data__empty_n), - .A_read_data_s_read(edge_list_ch_1_read_data__read), - .A_read_data_peek_read(), - .A_write_addr_din(edge_list_ch_1_write_addr__din), - .A_write_addr_full_n(edge_list_ch_1_write_addr__full_n), - .A_write_addr_write(edge_list_ch_1_write_addr__write), - .A_write_data_din(edge_list_ch_1_write_data__din), - .A_write_data_full_n(edge_list_ch_1_write_data__full_n), - .A_write_data_write(edge_list_ch_1_write_data__write), - .A_write_resp_s_dout({1'b0, edge_list_ch_1_write_resp__dout}), - .A_write_resp_peek_dout({1'b0, edge_list_ch_1_write_resp__dout}), - .A_write_resp_s_empty_n(edge_list_ch_1_write_resp__empty_n), - .A_write_resp_peek_empty_n(edge_list_ch_1_write_resp__empty_n), - .A_write_resp_s_read(edge_list_ch_1_write_resp__read), - .A_write_resp_peek_read(), - .fifo_A_din(fifo_A_Sextans_1__din), - .fifo_A_full_n(fifo_A_Sextans_1__full_n), - .fifo_A_write(fifo_A_Sextans_1__write) - ); - - - (* keep_hierarchy = "yes" *) read_A - read_A_2 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_A_2__ap_start), - .ap_done(read_A_2__ap_done), - .ap_idle(read_A_2__ap_idle), - .ap_ready(read_A_2__ap_ready), - .A_len(read_A_2___NUM_A_LEN__q0), - .P_N(read_A_2___P_N__q0), - .A_read_addr_din(edge_list_ch_2_read_addr__din), - .A_read_addr_full_n(edge_list_ch_2_read_addr__full_n), - .A_read_addr_write(edge_list_ch_2_read_addr__write), - .A_read_data_s_dout({1'b0, edge_list_ch_2_read_data__dout}), - .A_read_data_peek_dout({1'b0, edge_list_ch_2_read_data__dout}), - .A_read_data_s_empty_n(edge_list_ch_2_read_data__empty_n), - .A_read_data_peek_empty_n(edge_list_ch_2_read_data__empty_n), - .A_read_data_s_read(edge_list_ch_2_read_data__read), - .A_read_data_peek_read(), - .A_write_addr_din(edge_list_ch_2_write_addr__din), - .A_write_addr_full_n(edge_list_ch_2_write_addr__full_n), - .A_write_addr_write(edge_list_ch_2_write_addr__write), - .A_write_data_din(edge_list_ch_2_write_data__din), - .A_write_data_full_n(edge_list_ch_2_write_data__full_n), - .A_write_data_write(edge_list_ch_2_write_data__write), - .A_write_resp_s_dout({1'b0, edge_list_ch_2_write_resp__dout}), - .A_write_resp_peek_dout({1'b0, edge_list_ch_2_write_resp__dout}), - .A_write_resp_s_empty_n(edge_list_ch_2_write_resp__empty_n), - .A_write_resp_peek_empty_n(edge_list_ch_2_write_resp__empty_n), - .A_write_resp_s_read(edge_list_ch_2_write_resp__read), - .A_write_resp_peek_read(), - .fifo_A_din(fifo_A_Sextans_2__din), - .fifo_A_full_n(fifo_A_Sextans_2__full_n), - .fifo_A_write(fifo_A_Sextans_2__write) - ); - - - (* keep_hierarchy = "yes" *) read_A - read_A_3 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_A_3__ap_start), - .ap_done(read_A_3__ap_done), - .ap_idle(read_A_3__ap_idle), - .ap_ready(read_A_3__ap_ready), - .A_len(read_A_3___NUM_A_LEN__q0), - .P_N(read_A_3___P_N__q0), - .A_read_addr_din(edge_list_ch_3_read_addr__din), - .A_read_addr_full_n(edge_list_ch_3_read_addr__full_n), - .A_read_addr_write(edge_list_ch_3_read_addr__write), - .A_read_data_s_dout({1'b0, edge_list_ch_3_read_data__dout}), - .A_read_data_peek_dout({1'b0, edge_list_ch_3_read_data__dout}), - .A_read_data_s_empty_n(edge_list_ch_3_read_data__empty_n), - .A_read_data_peek_empty_n(edge_list_ch_3_read_data__empty_n), - .A_read_data_s_read(edge_list_ch_3_read_data__read), - .A_read_data_peek_read(), - .A_write_addr_din(edge_list_ch_3_write_addr__din), - .A_write_addr_full_n(edge_list_ch_3_write_addr__full_n), - .A_write_addr_write(edge_list_ch_3_write_addr__write), - .A_write_data_din(edge_list_ch_3_write_data__din), - .A_write_data_full_n(edge_list_ch_3_write_data__full_n), - .A_write_data_write(edge_list_ch_3_write_data__write), - .A_write_resp_s_dout({1'b0, edge_list_ch_3_write_resp__dout}), - .A_write_resp_peek_dout({1'b0, edge_list_ch_3_write_resp__dout}), - .A_write_resp_s_empty_n(edge_list_ch_3_write_resp__empty_n), - .A_write_resp_peek_empty_n(edge_list_ch_3_write_resp__empty_n), - .A_write_resp_s_read(edge_list_ch_3_write_resp__read), - .A_write_resp_peek_read(), - .fifo_A_din(fifo_A_Sextans_3__din), - .fifo_A_full_n(fifo_A_Sextans_3__full_n), - .fifo_A_write(fifo_A_Sextans_3__write) - ); - - - (* keep_hierarchy = "yes" *) read_A - read_A_4 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_A_4__ap_start), - .ap_done(read_A_4__ap_done), - .ap_idle(read_A_4__ap_idle), - .ap_ready(read_A_4__ap_ready), - .A_len(read_A_4___NUM_A_LEN__q0), - .P_N(read_A_4___P_N__q0), - .A_read_addr_din(edge_list_ch_4_read_addr__din), - .A_read_addr_full_n(edge_list_ch_4_read_addr__full_n), - .A_read_addr_write(edge_list_ch_4_read_addr__write), - .A_read_data_s_dout({1'b0, edge_list_ch_4_read_data__dout}), - .A_read_data_peek_dout({1'b0, edge_list_ch_4_read_data__dout}), - .A_read_data_s_empty_n(edge_list_ch_4_read_data__empty_n), - .A_read_data_peek_empty_n(edge_list_ch_4_read_data__empty_n), - .A_read_data_s_read(edge_list_ch_4_read_data__read), - .A_read_data_peek_read(), - .A_write_addr_din(edge_list_ch_4_write_addr__din), - .A_write_addr_full_n(edge_list_ch_4_write_addr__full_n), - .A_write_addr_write(edge_list_ch_4_write_addr__write), - .A_write_data_din(edge_list_ch_4_write_data__din), - .A_write_data_full_n(edge_list_ch_4_write_data__full_n), - .A_write_data_write(edge_list_ch_4_write_data__write), - .A_write_resp_s_dout({1'b0, edge_list_ch_4_write_resp__dout}), - .A_write_resp_peek_dout({1'b0, edge_list_ch_4_write_resp__dout}), - .A_write_resp_s_empty_n(edge_list_ch_4_write_resp__empty_n), - .A_write_resp_peek_empty_n(edge_list_ch_4_write_resp__empty_n), - .A_write_resp_s_read(edge_list_ch_4_write_resp__read), - .A_write_resp_peek_read(), - .fifo_A_din(fifo_A_Sextans_4__din), - .fifo_A_full_n(fifo_A_Sextans_4__full_n), - .fifo_A_write(fifo_A_Sextans_4__write) - ); - - - (* keep_hierarchy = "yes" *) read_A - read_A_5 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_A_5__ap_start), - .ap_done(read_A_5__ap_done), - .ap_idle(read_A_5__ap_idle), - .ap_ready(read_A_5__ap_ready), - .A_len(read_A_5___NUM_A_LEN__q0), - .P_N(read_A_5___P_N__q0), - .A_read_addr_din(edge_list_ch_5_read_addr__din), - .A_read_addr_full_n(edge_list_ch_5_read_addr__full_n), - .A_read_addr_write(edge_list_ch_5_read_addr__write), - .A_read_data_s_dout({1'b0, edge_list_ch_5_read_data__dout}), - .A_read_data_peek_dout({1'b0, edge_list_ch_5_read_data__dout}), - .A_read_data_s_empty_n(edge_list_ch_5_read_data__empty_n), - .A_read_data_peek_empty_n(edge_list_ch_5_read_data__empty_n), - .A_read_data_s_read(edge_list_ch_5_read_data__read), - .A_read_data_peek_read(), - .A_write_addr_din(edge_list_ch_5_write_addr__din), - .A_write_addr_full_n(edge_list_ch_5_write_addr__full_n), - .A_write_addr_write(edge_list_ch_5_write_addr__write), - .A_write_data_din(edge_list_ch_5_write_data__din), - .A_write_data_full_n(edge_list_ch_5_write_data__full_n), - .A_write_data_write(edge_list_ch_5_write_data__write), - .A_write_resp_s_dout({1'b0, edge_list_ch_5_write_resp__dout}), - .A_write_resp_peek_dout({1'b0, edge_list_ch_5_write_resp__dout}), - .A_write_resp_s_empty_n(edge_list_ch_5_write_resp__empty_n), - .A_write_resp_peek_empty_n(edge_list_ch_5_write_resp__empty_n), - .A_write_resp_s_read(edge_list_ch_5_write_resp__read), - .A_write_resp_peek_read(), - .fifo_A_din(fifo_A_Sextans_5__din), - .fifo_A_full_n(fifo_A_Sextans_5__full_n), - .fifo_A_write(fifo_A_Sextans_5__write) - ); - - - (* keep_hierarchy = "yes" *) read_A - read_A_6 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_A_6__ap_start), - .ap_done(read_A_6__ap_done), - .ap_idle(read_A_6__ap_idle), - .ap_ready(read_A_6__ap_ready), - .A_len(read_A_6___NUM_A_LEN__q0), - .P_N(read_A_6___P_N__q0), - .A_read_addr_din(edge_list_ch_6_read_addr__din), - .A_read_addr_full_n(edge_list_ch_6_read_addr__full_n), - .A_read_addr_write(edge_list_ch_6_read_addr__write), - .A_read_data_s_dout({1'b0, edge_list_ch_6_read_data__dout}), - .A_read_data_peek_dout({1'b0, edge_list_ch_6_read_data__dout}), - .A_read_data_s_empty_n(edge_list_ch_6_read_data__empty_n), - .A_read_data_peek_empty_n(edge_list_ch_6_read_data__empty_n), - .A_read_data_s_read(edge_list_ch_6_read_data__read), - .A_read_data_peek_read(), - .A_write_addr_din(edge_list_ch_6_write_addr__din), - .A_write_addr_full_n(edge_list_ch_6_write_addr__full_n), - .A_write_addr_write(edge_list_ch_6_write_addr__write), - .A_write_data_din(edge_list_ch_6_write_data__din), - .A_write_data_full_n(edge_list_ch_6_write_data__full_n), - .A_write_data_write(edge_list_ch_6_write_data__write), - .A_write_resp_s_dout({1'b0, edge_list_ch_6_write_resp__dout}), - .A_write_resp_peek_dout({1'b0, edge_list_ch_6_write_resp__dout}), - .A_write_resp_s_empty_n(edge_list_ch_6_write_resp__empty_n), - .A_write_resp_peek_empty_n(edge_list_ch_6_write_resp__empty_n), - .A_write_resp_s_read(edge_list_ch_6_write_resp__read), - .A_write_resp_peek_read(), - .fifo_A_din(fifo_A_Sextans_6__din), - .fifo_A_full_n(fifo_A_Sextans_6__full_n), - .fifo_A_write(fifo_A_Sextans_6__write) - ); - - - (* keep_hierarchy = "yes" *) read_A - read_A_7 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_A_7__ap_start), - .ap_done(read_A_7__ap_done), - .ap_idle(read_A_7__ap_idle), - .ap_ready(read_A_7__ap_ready), - .A_len(read_A_7___NUM_A_LEN__q0), - .P_N(read_A_7___P_N__q0), - .A_read_addr_din(edge_list_ch_7_read_addr__din), - .A_read_addr_full_n(edge_list_ch_7_read_addr__full_n), - .A_read_addr_write(edge_list_ch_7_read_addr__write), - .A_read_data_s_dout({1'b0, edge_list_ch_7_read_data__dout}), - .A_read_data_peek_dout({1'b0, edge_list_ch_7_read_data__dout}), - .A_read_data_s_empty_n(edge_list_ch_7_read_data__empty_n), - .A_read_data_peek_empty_n(edge_list_ch_7_read_data__empty_n), - .A_read_data_s_read(edge_list_ch_7_read_data__read), - .A_read_data_peek_read(), - .A_write_addr_din(edge_list_ch_7_write_addr__din), - .A_write_addr_full_n(edge_list_ch_7_write_addr__full_n), - .A_write_addr_write(edge_list_ch_7_write_addr__write), - .A_write_data_din(edge_list_ch_7_write_data__din), - .A_write_data_full_n(edge_list_ch_7_write_data__full_n), - .A_write_data_write(edge_list_ch_7_write_data__write), - .A_write_resp_s_dout({1'b0, edge_list_ch_7_write_resp__dout}), - .A_write_resp_peek_dout({1'b0, edge_list_ch_7_write_resp__dout}), - .A_write_resp_s_empty_n(edge_list_ch_7_write_resp__empty_n), - .A_write_resp_peek_empty_n(edge_list_ch_7_write_resp__empty_n), - .A_write_resp_s_read(edge_list_ch_7_write_resp__read), - .A_write_resp_peek_read(), - .fifo_A_din(fifo_A_Sextans_7__din), - .fifo_A_full_n(fifo_A_Sextans_7__full_n), - .fifo_A_write(fifo_A_Sextans_7__write) - ); - - - (* keep_hierarchy = "yes" *) read_B - read_B_0 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_B_0__ap_start), - .ap_done(read_B_0__ap_done), - .ap_idle(read_B_0__ap_idle), - .ap_ready(read_B_0__ap_ready), - .K(read_B_0___K__q0), - .P_N(read_B_0___P_N__q0), - .fifo_B_din(fifo_B_pe_Sextans_0__din), - .fifo_B_full_n(fifo_B_pe_Sextans_0__full_n), - .fifo_B_write(fifo_B_pe_Sextans_0__write), - .B_read_addr_din(mat_B_ch_0_read_addr__din), - .B_read_addr_full_n(mat_B_ch_0_read_addr__full_n), - .B_read_addr_write(mat_B_ch_0_read_addr__write), - .B_read_data_s_dout({1'b0, mat_B_ch_0_read_data__dout}), - .B_read_data_peek_dout({1'b0, mat_B_ch_0_read_data__dout}), - .B_read_data_s_empty_n(mat_B_ch_0_read_data__empty_n), - .B_read_data_peek_empty_n(mat_B_ch_0_read_data__empty_n), - .B_read_data_s_read(mat_B_ch_0_read_data__read), - .B_read_data_peek_read(), - .B_write_addr_din(mat_B_ch_0_write_addr__din), - .B_write_addr_full_n(mat_B_ch_0_write_addr__full_n), - .B_write_addr_write(mat_B_ch_0_write_addr__write), - .B_write_data_din(mat_B_ch_0_write_data__din), - .B_write_data_full_n(mat_B_ch_0_write_data__full_n), - .B_write_data_write(mat_B_ch_0_write_data__write), - .B_write_resp_s_dout({1'b0, mat_B_ch_0_write_resp__dout}), - .B_write_resp_peek_dout({1'b0, mat_B_ch_0_write_resp__dout}), - .B_write_resp_s_empty_n(mat_B_ch_0_write_resp__empty_n), - .B_write_resp_peek_empty_n(mat_B_ch_0_write_resp__empty_n), - .B_write_resp_s_read(mat_B_ch_0_write_resp__read), - .B_write_resp_peek_read() - ); - - - (* keep_hierarchy = "yes" *) read_B - read_B_1 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_B_1__ap_start), - .ap_done(read_B_1__ap_done), - .ap_idle(read_B_1__ap_idle), - .ap_ready(read_B_1__ap_ready), - .K(read_B_1___K__q0), - .P_N(read_B_1___P_N__q0), - .fifo_B_din(fifo_B_pe_Sextans_1__din), - .fifo_B_full_n(fifo_B_pe_Sextans_1__full_n), - .fifo_B_write(fifo_B_pe_Sextans_1__write), - .B_read_addr_din(mat_B_ch_1_read_addr__din), - .B_read_addr_full_n(mat_B_ch_1_read_addr__full_n), - .B_read_addr_write(mat_B_ch_1_read_addr__write), - .B_read_data_s_dout({1'b0, mat_B_ch_1_read_data__dout}), - .B_read_data_peek_dout({1'b0, mat_B_ch_1_read_data__dout}), - .B_read_data_s_empty_n(mat_B_ch_1_read_data__empty_n), - .B_read_data_peek_empty_n(mat_B_ch_1_read_data__empty_n), - .B_read_data_s_read(mat_B_ch_1_read_data__read), - .B_read_data_peek_read(), - .B_write_addr_din(mat_B_ch_1_write_addr__din), - .B_write_addr_full_n(mat_B_ch_1_write_addr__full_n), - .B_write_addr_write(mat_B_ch_1_write_addr__write), - .B_write_data_din(mat_B_ch_1_write_data__din), - .B_write_data_full_n(mat_B_ch_1_write_data__full_n), - .B_write_data_write(mat_B_ch_1_write_data__write), - .B_write_resp_s_dout({1'b0, mat_B_ch_1_write_resp__dout}), - .B_write_resp_peek_dout({1'b0, mat_B_ch_1_write_resp__dout}), - .B_write_resp_s_empty_n(mat_B_ch_1_write_resp__empty_n), - .B_write_resp_peek_empty_n(mat_B_ch_1_write_resp__empty_n), - .B_write_resp_s_read(mat_B_ch_1_write_resp__read), - .B_write_resp_peek_read() - ); - - - (* keep_hierarchy = "yes" *) read_B - read_B_2 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_B_2__ap_start), - .ap_done(read_B_2__ap_done), - .ap_idle(read_B_2__ap_idle), - .ap_ready(read_B_2__ap_ready), - .K(read_B_2___K__q0), - .P_N(read_B_2___P_N__q0), - .fifo_B_din(fifo_B_pe_Sextans_2__din), - .fifo_B_full_n(fifo_B_pe_Sextans_2__full_n), - .fifo_B_write(fifo_B_pe_Sextans_2__write), - .B_read_addr_din(mat_B_ch_2_read_addr__din), - .B_read_addr_full_n(mat_B_ch_2_read_addr__full_n), - .B_read_addr_write(mat_B_ch_2_read_addr__write), - .B_read_data_s_dout({1'b0, mat_B_ch_2_read_data__dout}), - .B_read_data_peek_dout({1'b0, mat_B_ch_2_read_data__dout}), - .B_read_data_s_empty_n(mat_B_ch_2_read_data__empty_n), - .B_read_data_peek_empty_n(mat_B_ch_2_read_data__empty_n), - .B_read_data_s_read(mat_B_ch_2_read_data__read), - .B_read_data_peek_read(), - .B_write_addr_din(mat_B_ch_2_write_addr__din), - .B_write_addr_full_n(mat_B_ch_2_write_addr__full_n), - .B_write_addr_write(mat_B_ch_2_write_addr__write), - .B_write_data_din(mat_B_ch_2_write_data__din), - .B_write_data_full_n(mat_B_ch_2_write_data__full_n), - .B_write_data_write(mat_B_ch_2_write_data__write), - .B_write_resp_s_dout({1'b0, mat_B_ch_2_write_resp__dout}), - .B_write_resp_peek_dout({1'b0, mat_B_ch_2_write_resp__dout}), - .B_write_resp_s_empty_n(mat_B_ch_2_write_resp__empty_n), - .B_write_resp_peek_empty_n(mat_B_ch_2_write_resp__empty_n), - .B_write_resp_s_read(mat_B_ch_2_write_resp__read), - .B_write_resp_peek_read() - ); - - - (* keep_hierarchy = "yes" *) read_B - read_B_3 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_B_3__ap_start), - .ap_done(read_B_3__ap_done), - .ap_idle(read_B_3__ap_idle), - .ap_ready(read_B_3__ap_ready), - .K(read_B_3___K__q0), - .P_N(read_B_3___P_N__q0), - .fifo_B_din(fifo_B_pe_Sextans_3__din), - .fifo_B_full_n(fifo_B_pe_Sextans_3__full_n), - .fifo_B_write(fifo_B_pe_Sextans_3__write), - .B_read_addr_din(mat_B_ch_3_read_addr__din), - .B_read_addr_full_n(mat_B_ch_3_read_addr__full_n), - .B_read_addr_write(mat_B_ch_3_read_addr__write), - .B_read_data_s_dout({1'b0, mat_B_ch_3_read_data__dout}), - .B_read_data_peek_dout({1'b0, mat_B_ch_3_read_data__dout}), - .B_read_data_s_empty_n(mat_B_ch_3_read_data__empty_n), - .B_read_data_peek_empty_n(mat_B_ch_3_read_data__empty_n), - .B_read_data_s_read(mat_B_ch_3_read_data__read), - .B_read_data_peek_read(), - .B_write_addr_din(mat_B_ch_3_write_addr__din), - .B_write_addr_full_n(mat_B_ch_3_write_addr__full_n), - .B_write_addr_write(mat_B_ch_3_write_addr__write), - .B_write_data_din(mat_B_ch_3_write_data__din), - .B_write_data_full_n(mat_B_ch_3_write_data__full_n), - .B_write_data_write(mat_B_ch_3_write_data__write), - .B_write_resp_s_dout({1'b0, mat_B_ch_3_write_resp__dout}), - .B_write_resp_peek_dout({1'b0, mat_B_ch_3_write_resp__dout}), - .B_write_resp_s_empty_n(mat_B_ch_3_write_resp__empty_n), - .B_write_resp_peek_empty_n(mat_B_ch_3_write_resp__empty_n), - .B_write_resp_s_read(mat_B_ch_3_write_resp__read), - .B_write_resp_peek_read() - ); - - - (* keep_hierarchy = "yes" *) read_C - read_C_0 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_C_0__ap_start), - .ap_done(read_C_0__ap_done), - .ap_idle(read_C_0__ap_idle), - .ap_ready(read_C_0__ap_ready), - .M(read_C_0___M__q0), - .P_N(read_C_0___P_N__q0), - .fifo_C_din(fifo_C_read_in_Sextans_0__din), - .fifo_C_full_n(fifo_C_read_in_Sextans_0__full_n), - .fifo_C_write(fifo_C_read_in_Sextans_0__write), - .C_read_addr_din(mat_C_ch_in_0_read_addr__din), - .C_read_addr_full_n(mat_C_ch_in_0_read_addr__full_n), - .C_read_addr_write(mat_C_ch_in_0_read_addr__write), - .C_read_data_s_dout({1'b0, mat_C_ch_in_0_read_data__dout}), - .C_read_data_peek_dout({1'b0, mat_C_ch_in_0_read_data__dout}), - .C_read_data_s_empty_n(mat_C_ch_in_0_read_data__empty_n), - .C_read_data_peek_empty_n(mat_C_ch_in_0_read_data__empty_n), - .C_read_data_s_read(mat_C_ch_in_0_read_data__read), - .C_read_data_peek_read(), - .C_write_addr_din(mat_C_ch_in_0_write_addr__din), - .C_write_addr_full_n(mat_C_ch_in_0_write_addr__full_n), - .C_write_addr_write(mat_C_ch_in_0_write_addr__write), - .C_write_data_din(mat_C_ch_in_0_write_data__din), - .C_write_data_full_n(mat_C_ch_in_0_write_data__full_n), - .C_write_data_write(mat_C_ch_in_0_write_data__write), - .C_write_resp_s_dout({1'b0, mat_C_ch_in_0_write_resp__dout}), - .C_write_resp_peek_dout({1'b0, mat_C_ch_in_0_write_resp__dout}), - .C_write_resp_s_empty_n(mat_C_ch_in_0_write_resp__empty_n), - .C_write_resp_peek_empty_n(mat_C_ch_in_0_write_resp__empty_n), - .C_write_resp_s_read(mat_C_ch_in_0_write_resp__read), - .C_write_resp_peek_read(), - .wrC_inst_din(wrC_inst_Sextans_0__din), - .wrC_inst_full_n(wrC_inst_Sextans_0__full_n), - .wrC_inst_write(wrC_inst_Sextans_0__write) - ); - - - (* keep_hierarchy = "yes" *) read_C - read_C_1 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_C_1__ap_start), - .ap_done(read_C_1__ap_done), - .ap_idle(read_C_1__ap_idle), - .ap_ready(read_C_1__ap_ready), - .M(read_C_1___M__q0), - .P_N(read_C_1___P_N__q0), - .fifo_C_din(fifo_C_read_in_Sextans_1__din), - .fifo_C_full_n(fifo_C_read_in_Sextans_1__full_n), - .fifo_C_write(fifo_C_read_in_Sextans_1__write), - .C_read_addr_din(mat_C_ch_in_1_read_addr__din), - .C_read_addr_full_n(mat_C_ch_in_1_read_addr__full_n), - .C_read_addr_write(mat_C_ch_in_1_read_addr__write), - .C_read_data_s_dout({1'b0, mat_C_ch_in_1_read_data__dout}), - .C_read_data_peek_dout({1'b0, mat_C_ch_in_1_read_data__dout}), - .C_read_data_s_empty_n(mat_C_ch_in_1_read_data__empty_n), - .C_read_data_peek_empty_n(mat_C_ch_in_1_read_data__empty_n), - .C_read_data_s_read(mat_C_ch_in_1_read_data__read), - .C_read_data_peek_read(), - .C_write_addr_din(mat_C_ch_in_1_write_addr__din), - .C_write_addr_full_n(mat_C_ch_in_1_write_addr__full_n), - .C_write_addr_write(mat_C_ch_in_1_write_addr__write), - .C_write_data_din(mat_C_ch_in_1_write_data__din), - .C_write_data_full_n(mat_C_ch_in_1_write_data__full_n), - .C_write_data_write(mat_C_ch_in_1_write_data__write), - .C_write_resp_s_dout({1'b0, mat_C_ch_in_1_write_resp__dout}), - .C_write_resp_peek_dout({1'b0, mat_C_ch_in_1_write_resp__dout}), - .C_write_resp_s_empty_n(mat_C_ch_in_1_write_resp__empty_n), - .C_write_resp_peek_empty_n(mat_C_ch_in_1_write_resp__empty_n), - .C_write_resp_s_read(mat_C_ch_in_1_write_resp__read), - .C_write_resp_peek_read(), - .wrC_inst_din(wrC_inst_Sextans_1__din), - .wrC_inst_full_n(wrC_inst_Sextans_1__full_n), - .wrC_inst_write(wrC_inst_Sextans_1__write) - ); - - - (* keep_hierarchy = "yes" *) read_C - read_C_2 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_C_2__ap_start), - .ap_done(read_C_2__ap_done), - .ap_idle(read_C_2__ap_idle), - .ap_ready(read_C_2__ap_ready), - .M(read_C_2___M__q0), - .P_N(read_C_2___P_N__q0), - .fifo_C_din(fifo_C_read_in_Sextans_2__din), - .fifo_C_full_n(fifo_C_read_in_Sextans_2__full_n), - .fifo_C_write(fifo_C_read_in_Sextans_2__write), - .C_read_addr_din(mat_C_ch_in_2_read_addr__din), - .C_read_addr_full_n(mat_C_ch_in_2_read_addr__full_n), - .C_read_addr_write(mat_C_ch_in_2_read_addr__write), - .C_read_data_s_dout({1'b0, mat_C_ch_in_2_read_data__dout}), - .C_read_data_peek_dout({1'b0, mat_C_ch_in_2_read_data__dout}), - .C_read_data_s_empty_n(mat_C_ch_in_2_read_data__empty_n), - .C_read_data_peek_empty_n(mat_C_ch_in_2_read_data__empty_n), - .C_read_data_s_read(mat_C_ch_in_2_read_data__read), - .C_read_data_peek_read(), - .C_write_addr_din(mat_C_ch_in_2_write_addr__din), - .C_write_addr_full_n(mat_C_ch_in_2_write_addr__full_n), - .C_write_addr_write(mat_C_ch_in_2_write_addr__write), - .C_write_data_din(mat_C_ch_in_2_write_data__din), - .C_write_data_full_n(mat_C_ch_in_2_write_data__full_n), - .C_write_data_write(mat_C_ch_in_2_write_data__write), - .C_write_resp_s_dout({1'b0, mat_C_ch_in_2_write_resp__dout}), - .C_write_resp_peek_dout({1'b0, mat_C_ch_in_2_write_resp__dout}), - .C_write_resp_s_empty_n(mat_C_ch_in_2_write_resp__empty_n), - .C_write_resp_peek_empty_n(mat_C_ch_in_2_write_resp__empty_n), - .C_write_resp_s_read(mat_C_ch_in_2_write_resp__read), - .C_write_resp_peek_read(), - .wrC_inst_din(wrC_inst_Sextans_2__din), - .wrC_inst_full_n(wrC_inst_Sextans_2__full_n), - .wrC_inst_write(wrC_inst_Sextans_2__write) - ); - - - (* keep_hierarchy = "yes" *) read_C - read_C_3 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_C_3__ap_start), - .ap_done(read_C_3__ap_done), - .ap_idle(read_C_3__ap_idle), - .ap_ready(read_C_3__ap_ready), - .M(read_C_3___M__q0), - .P_N(read_C_3___P_N__q0), - .fifo_C_din(fifo_C_read_in_Sextans_3__din), - .fifo_C_full_n(fifo_C_read_in_Sextans_3__full_n), - .fifo_C_write(fifo_C_read_in_Sextans_3__write), - .C_read_addr_din(mat_C_ch_in_3_read_addr__din), - .C_read_addr_full_n(mat_C_ch_in_3_read_addr__full_n), - .C_read_addr_write(mat_C_ch_in_3_read_addr__write), - .C_read_data_s_dout({1'b0, mat_C_ch_in_3_read_data__dout}), - .C_read_data_peek_dout({1'b0, mat_C_ch_in_3_read_data__dout}), - .C_read_data_s_empty_n(mat_C_ch_in_3_read_data__empty_n), - .C_read_data_peek_empty_n(mat_C_ch_in_3_read_data__empty_n), - .C_read_data_s_read(mat_C_ch_in_3_read_data__read), - .C_read_data_peek_read(), - .C_write_addr_din(mat_C_ch_in_3_write_addr__din), - .C_write_addr_full_n(mat_C_ch_in_3_write_addr__full_n), - .C_write_addr_write(mat_C_ch_in_3_write_addr__write), - .C_write_data_din(mat_C_ch_in_3_write_data__din), - .C_write_data_full_n(mat_C_ch_in_3_write_data__full_n), - .C_write_data_write(mat_C_ch_in_3_write_data__write), - .C_write_resp_s_dout({1'b0, mat_C_ch_in_3_write_resp__dout}), - .C_write_resp_peek_dout({1'b0, mat_C_ch_in_3_write_resp__dout}), - .C_write_resp_s_empty_n(mat_C_ch_in_3_write_resp__empty_n), - .C_write_resp_peek_empty_n(mat_C_ch_in_3_write_resp__empty_n), - .C_write_resp_s_read(mat_C_ch_in_3_write_resp__read), - .C_write_resp_peek_read(), - .wrC_inst_din(wrC_inst_Sextans_3__din), - .wrC_inst_full_n(wrC_inst_Sextans_3__full_n), - .wrC_inst_write(wrC_inst_Sextans_3__write) - ); - - - (* keep_hierarchy = "yes" *) read_C - read_C_4 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_C_4__ap_start), - .ap_done(read_C_4__ap_done), - .ap_idle(read_C_4__ap_idle), - .ap_ready(read_C_4__ap_ready), - .M(read_C_4___M__q0), - .P_N(read_C_4___P_N__q0), - .fifo_C_din(fifo_C_read_in_Sextans_4__din), - .fifo_C_full_n(fifo_C_read_in_Sextans_4__full_n), - .fifo_C_write(fifo_C_read_in_Sextans_4__write), - .C_read_addr_din(mat_C_ch_in_4_read_addr__din), - .C_read_addr_full_n(mat_C_ch_in_4_read_addr__full_n), - .C_read_addr_write(mat_C_ch_in_4_read_addr__write), - .C_read_data_s_dout({1'b0, mat_C_ch_in_4_read_data__dout}), - .C_read_data_peek_dout({1'b0, mat_C_ch_in_4_read_data__dout}), - .C_read_data_s_empty_n(mat_C_ch_in_4_read_data__empty_n), - .C_read_data_peek_empty_n(mat_C_ch_in_4_read_data__empty_n), - .C_read_data_s_read(mat_C_ch_in_4_read_data__read), - .C_read_data_peek_read(), - .C_write_addr_din(mat_C_ch_in_4_write_addr__din), - .C_write_addr_full_n(mat_C_ch_in_4_write_addr__full_n), - .C_write_addr_write(mat_C_ch_in_4_write_addr__write), - .C_write_data_din(mat_C_ch_in_4_write_data__din), - .C_write_data_full_n(mat_C_ch_in_4_write_data__full_n), - .C_write_data_write(mat_C_ch_in_4_write_data__write), - .C_write_resp_s_dout({1'b0, mat_C_ch_in_4_write_resp__dout}), - .C_write_resp_peek_dout({1'b0, mat_C_ch_in_4_write_resp__dout}), - .C_write_resp_s_empty_n(mat_C_ch_in_4_write_resp__empty_n), - .C_write_resp_peek_empty_n(mat_C_ch_in_4_write_resp__empty_n), - .C_write_resp_s_read(mat_C_ch_in_4_write_resp__read), - .C_write_resp_peek_read(), - .wrC_inst_din(wrC_inst_Sextans_4__din), - .wrC_inst_full_n(wrC_inst_Sextans_4__full_n), - .wrC_inst_write(wrC_inst_Sextans_4__write) - ); - - - (* keep_hierarchy = "yes" *) read_C - read_C_5 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_C_5__ap_start), - .ap_done(read_C_5__ap_done), - .ap_idle(read_C_5__ap_idle), - .ap_ready(read_C_5__ap_ready), - .M(read_C_5___M__q0), - .P_N(read_C_5___P_N__q0), - .fifo_C_din(fifo_C_read_in_Sextans_5__din), - .fifo_C_full_n(fifo_C_read_in_Sextans_5__full_n), - .fifo_C_write(fifo_C_read_in_Sextans_5__write), - .C_read_addr_din(mat_C_ch_in_5_read_addr__din), - .C_read_addr_full_n(mat_C_ch_in_5_read_addr__full_n), - .C_read_addr_write(mat_C_ch_in_5_read_addr__write), - .C_read_data_s_dout({1'b0, mat_C_ch_in_5_read_data__dout}), - .C_read_data_peek_dout({1'b0, mat_C_ch_in_5_read_data__dout}), - .C_read_data_s_empty_n(mat_C_ch_in_5_read_data__empty_n), - .C_read_data_peek_empty_n(mat_C_ch_in_5_read_data__empty_n), - .C_read_data_s_read(mat_C_ch_in_5_read_data__read), - .C_read_data_peek_read(), - .C_write_addr_din(mat_C_ch_in_5_write_addr__din), - .C_write_addr_full_n(mat_C_ch_in_5_write_addr__full_n), - .C_write_addr_write(mat_C_ch_in_5_write_addr__write), - .C_write_data_din(mat_C_ch_in_5_write_data__din), - .C_write_data_full_n(mat_C_ch_in_5_write_data__full_n), - .C_write_data_write(mat_C_ch_in_5_write_data__write), - .C_write_resp_s_dout({1'b0, mat_C_ch_in_5_write_resp__dout}), - .C_write_resp_peek_dout({1'b0, mat_C_ch_in_5_write_resp__dout}), - .C_write_resp_s_empty_n(mat_C_ch_in_5_write_resp__empty_n), - .C_write_resp_peek_empty_n(mat_C_ch_in_5_write_resp__empty_n), - .C_write_resp_s_read(mat_C_ch_in_5_write_resp__read), - .C_write_resp_peek_read(), - .wrC_inst_din(wrC_inst_Sextans_5__din), - .wrC_inst_full_n(wrC_inst_Sextans_5__full_n), - .wrC_inst_write(wrC_inst_Sextans_5__write) - ); - - - (* keep_hierarchy = "yes" *) read_C - read_C_6 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_C_6__ap_start), - .ap_done(read_C_6__ap_done), - .ap_idle(read_C_6__ap_idle), - .ap_ready(read_C_6__ap_ready), - .M(read_C_6___M__q0), - .P_N(read_C_6___P_N__q0), - .fifo_C_din(fifo_C_read_in_Sextans_6__din), - .fifo_C_full_n(fifo_C_read_in_Sextans_6__full_n), - .fifo_C_write(fifo_C_read_in_Sextans_6__write), - .C_read_addr_din(mat_C_ch_in_6_read_addr__din), - .C_read_addr_full_n(mat_C_ch_in_6_read_addr__full_n), - .C_read_addr_write(mat_C_ch_in_6_read_addr__write), - .C_read_data_s_dout({1'b0, mat_C_ch_in_6_read_data__dout}), - .C_read_data_peek_dout({1'b0, mat_C_ch_in_6_read_data__dout}), - .C_read_data_s_empty_n(mat_C_ch_in_6_read_data__empty_n), - .C_read_data_peek_empty_n(mat_C_ch_in_6_read_data__empty_n), - .C_read_data_s_read(mat_C_ch_in_6_read_data__read), - .C_read_data_peek_read(), - .C_write_addr_din(mat_C_ch_in_6_write_addr__din), - .C_write_addr_full_n(mat_C_ch_in_6_write_addr__full_n), - .C_write_addr_write(mat_C_ch_in_6_write_addr__write), - .C_write_data_din(mat_C_ch_in_6_write_data__din), - .C_write_data_full_n(mat_C_ch_in_6_write_data__full_n), - .C_write_data_write(mat_C_ch_in_6_write_data__write), - .C_write_resp_s_dout({1'b0, mat_C_ch_in_6_write_resp__dout}), - .C_write_resp_peek_dout({1'b0, mat_C_ch_in_6_write_resp__dout}), - .C_write_resp_s_empty_n(mat_C_ch_in_6_write_resp__empty_n), - .C_write_resp_peek_empty_n(mat_C_ch_in_6_write_resp__empty_n), - .C_write_resp_s_read(mat_C_ch_in_6_write_resp__read), - .C_write_resp_peek_read(), - .wrC_inst_din(wrC_inst_Sextans_6__din), - .wrC_inst_full_n(wrC_inst_Sextans_6__full_n), - .wrC_inst_write(wrC_inst_Sextans_6__write) - ); - - - (* keep_hierarchy = "yes" *) read_C - read_C_7 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_C_7__ap_start), - .ap_done(read_C_7__ap_done), - .ap_idle(read_C_7__ap_idle), - .ap_ready(read_C_7__ap_ready), - .M(read_C_7___M__q0), - .P_N(read_C_7___P_N__q0), - .fifo_C_din(fifo_C_read_in_Sextans_7__din), - .fifo_C_full_n(fifo_C_read_in_Sextans_7__full_n), - .fifo_C_write(fifo_C_read_in_Sextans_7__write), - .C_read_addr_din(mat_C_ch_in_7_read_addr__din), - .C_read_addr_full_n(mat_C_ch_in_7_read_addr__full_n), - .C_read_addr_write(mat_C_ch_in_7_read_addr__write), - .C_read_data_s_dout({1'b0, mat_C_ch_in_7_read_data__dout}), - .C_read_data_peek_dout({1'b0, mat_C_ch_in_7_read_data__dout}), - .C_read_data_s_empty_n(mat_C_ch_in_7_read_data__empty_n), - .C_read_data_peek_empty_n(mat_C_ch_in_7_read_data__empty_n), - .C_read_data_s_read(mat_C_ch_in_7_read_data__read), - .C_read_data_peek_read(), - .C_write_addr_din(mat_C_ch_in_7_write_addr__din), - .C_write_addr_full_n(mat_C_ch_in_7_write_addr__full_n), - .C_write_addr_write(mat_C_ch_in_7_write_addr__write), - .C_write_data_din(mat_C_ch_in_7_write_data__din), - .C_write_data_full_n(mat_C_ch_in_7_write_data__full_n), - .C_write_data_write(mat_C_ch_in_7_write_data__write), - .C_write_resp_s_dout({1'b0, mat_C_ch_in_7_write_resp__dout}), - .C_write_resp_peek_dout({1'b0, mat_C_ch_in_7_write_resp__dout}), - .C_write_resp_s_empty_n(mat_C_ch_in_7_write_resp__empty_n), - .C_write_resp_peek_empty_n(mat_C_ch_in_7_write_resp__empty_n), - .C_write_resp_s_read(mat_C_ch_in_7_write_resp__read), - .C_write_resp_peek_read(), - .wrC_inst_din(wrC_inst_Sextans_7__din), - .wrC_inst_full_n(wrC_inst_Sextans_7__full_n), - .wrC_inst_write(wrC_inst_Sextans_7__write) - ); - - - (* keep_hierarchy = "yes" *) read_edge_list_ptr - read_edge_list_ptr_0 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(read_edge_list_ptr_0__ap_start), - .ap_done(read_edge_list_ptr_0__ap_done), - .ap_idle(read_edge_list_ptr_0__ap_idle), - .ap_ready(read_edge_list_ptr_0__ap_ready), - .K(read_edge_list_ptr_0___K__q0), - .M(read_edge_list_ptr_0___M__q0), - .num_ite(read_edge_list_ptr_0___NUM_ITE__q0), - .PE_inst_din(PE_inst_Sextans_0__din), - .PE_inst_full_n(PE_inst_Sextans_0__full_n), - .PE_inst_write(PE_inst_Sextans_0__write), - .P_N(read_edge_list_ptr_0___P_N__q0), - .edge_list_ptr_read_addr_din(edge_list_ptr_read_addr__din), - .edge_list_ptr_read_addr_full_n(edge_list_ptr_read_addr__full_n), - .edge_list_ptr_read_addr_write(edge_list_ptr_read_addr__write), - .edge_list_ptr_read_data_s_dout({1'b0, edge_list_ptr_read_data__dout}), - .edge_list_ptr_read_data_peek_dout({1'b0, edge_list_ptr_read_data__dout}), - .edge_list_ptr_read_data_s_empty_n(edge_list_ptr_read_data__empty_n), - .edge_list_ptr_read_data_peek_empty_n(edge_list_ptr_read_data__empty_n), - .edge_list_ptr_read_data_s_read(edge_list_ptr_read_data__read), - .edge_list_ptr_read_data_peek_read(), - .edge_list_ptr_write_addr_din(edge_list_ptr_write_addr__din), - .edge_list_ptr_write_addr_full_n(edge_list_ptr_write_addr__full_n), - .edge_list_ptr_write_addr_write(edge_list_ptr_write_addr__write), - .edge_list_ptr_write_data_din(edge_list_ptr_write_data__din), - .edge_list_ptr_write_data_full_n(edge_list_ptr_write_data__full_n), - .edge_list_ptr_write_data_write(edge_list_ptr_write_data__write), - .edge_list_ptr_write_resp_s_dout({1'b0, edge_list_ptr_write_resp__dout}), - .edge_list_ptr_write_resp_peek_dout({1'b0, edge_list_ptr_write_resp__dout}), - .edge_list_ptr_write_resp_s_empty_n(edge_list_ptr_write_resp__empty_n), - .edge_list_ptr_write_resp_peek_empty_n(edge_list_ptr_write_resp__empty_n), - .edge_list_ptr_write_resp_s_read(edge_list_ptr_write_resp__read), - .edge_list_ptr_write_resp_peek_read(), - .fifo_edge_list_ptr_din(fifo_edge_list_ptr_Sextans_0__din), - .fifo_edge_list_ptr_full_n(fifo_edge_list_ptr_Sextans_0__full_n), - .fifo_edge_list_ptr_write(fifo_edge_list_ptr_Sextans_0__write) - ); - - - (* keep_hierarchy = "yes" *) write_C - write_C_0 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(write_C_0__ap_start), - .ap_done(write_C_0__ap_done), - .ap_idle(write_C_0__ap_idle), - .ap_ready(write_C_0__ap_ready), - .fifo_C_s_dout(fifo_C_ch_Sextans_0__dout), - .fifo_C_peek_dout(fifo_C_ch_Sextans_0__dout), - .fifo_C_s_empty_n(fifo_C_ch_Sextans_0__empty_n), - .fifo_C_peek_empty_n(fifo_C_ch_Sextans_0__empty_n), - .fifo_C_s_read(fifo_C_ch_Sextans_0__read), - .fifo_C_peek_read(), - .C_out_read_addr_din(mat_C_ch_0_read_addr__din), - .C_out_read_addr_full_n(mat_C_ch_0_read_addr__full_n), - .C_out_read_addr_write(mat_C_ch_0_read_addr__write), - .C_out_read_data_s_dout({1'b0, mat_C_ch_0_read_data__dout}), - .C_out_read_data_peek_dout({1'b0, mat_C_ch_0_read_data__dout}), - .C_out_read_data_s_empty_n(mat_C_ch_0_read_data__empty_n), - .C_out_read_data_peek_empty_n(mat_C_ch_0_read_data__empty_n), - .C_out_read_data_s_read(mat_C_ch_0_read_data__read), - .C_out_read_data_peek_read(), - .C_out_write_addr_din(mat_C_ch_0_write_addr__din), - .C_out_write_addr_full_n(mat_C_ch_0_write_addr__full_n), - .C_out_write_addr_write(mat_C_ch_0_write_addr__write), - .C_out_write_data_din(mat_C_ch_0_write_data__din), - .C_out_write_data_full_n(mat_C_ch_0_write_data__full_n), - .C_out_write_data_write(mat_C_ch_0_write_data__write), - .C_out_write_resp_s_dout({1'b0, mat_C_ch_0_write_resp__dout}), - .C_out_write_resp_peek_dout({1'b0, mat_C_ch_0_write_resp__dout}), - .C_out_write_resp_s_empty_n(mat_C_ch_0_write_resp__empty_n), - .C_out_write_resp_peek_empty_n(mat_C_ch_0_write_resp__empty_n), - .C_out_write_resp_s_read(mat_C_ch_0_write_resp__read), - .C_out_write_resp_peek_read(), - .wrC_inst_s_dout(wrC_inst_Sextans_0__dout), - .wrC_inst_peek_dout(wrC_inst_Sextans_0__dout), - .wrC_inst_s_empty_n(wrC_inst_Sextans_0__empty_n), - .wrC_inst_peek_empty_n(wrC_inst_Sextans_0__empty_n), - .wrC_inst_s_read(wrC_inst_Sextans_0__read), - .wrC_inst_peek_read() - ); - - - (* keep_hierarchy = "yes" *) write_C - write_C_1 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(write_C_1__ap_start), - .ap_done(write_C_1__ap_done), - .ap_idle(write_C_1__ap_idle), - .ap_ready(write_C_1__ap_ready), - .fifo_C_s_dout(fifo_C_ch_Sextans_1__dout), - .fifo_C_peek_dout(fifo_C_ch_Sextans_1__dout), - .fifo_C_s_empty_n(fifo_C_ch_Sextans_1__empty_n), - .fifo_C_peek_empty_n(fifo_C_ch_Sextans_1__empty_n), - .fifo_C_s_read(fifo_C_ch_Sextans_1__read), - .fifo_C_peek_read(), - .C_out_read_addr_din(mat_C_ch_1_read_addr__din), - .C_out_read_addr_full_n(mat_C_ch_1_read_addr__full_n), - .C_out_read_addr_write(mat_C_ch_1_read_addr__write), - .C_out_read_data_s_dout({1'b0, mat_C_ch_1_read_data__dout}), - .C_out_read_data_peek_dout({1'b0, mat_C_ch_1_read_data__dout}), - .C_out_read_data_s_empty_n(mat_C_ch_1_read_data__empty_n), - .C_out_read_data_peek_empty_n(mat_C_ch_1_read_data__empty_n), - .C_out_read_data_s_read(mat_C_ch_1_read_data__read), - .C_out_read_data_peek_read(), - .C_out_write_addr_din(mat_C_ch_1_write_addr__din), - .C_out_write_addr_full_n(mat_C_ch_1_write_addr__full_n), - .C_out_write_addr_write(mat_C_ch_1_write_addr__write), - .C_out_write_data_din(mat_C_ch_1_write_data__din), - .C_out_write_data_full_n(mat_C_ch_1_write_data__full_n), - .C_out_write_data_write(mat_C_ch_1_write_data__write), - .C_out_write_resp_s_dout({1'b0, mat_C_ch_1_write_resp__dout}), - .C_out_write_resp_peek_dout({1'b0, mat_C_ch_1_write_resp__dout}), - .C_out_write_resp_s_empty_n(mat_C_ch_1_write_resp__empty_n), - .C_out_write_resp_peek_empty_n(mat_C_ch_1_write_resp__empty_n), - .C_out_write_resp_s_read(mat_C_ch_1_write_resp__read), - .C_out_write_resp_peek_read(), - .wrC_inst_s_dout(wrC_inst_Sextans_1__dout), - .wrC_inst_peek_dout(wrC_inst_Sextans_1__dout), - .wrC_inst_s_empty_n(wrC_inst_Sextans_1__empty_n), - .wrC_inst_peek_empty_n(wrC_inst_Sextans_1__empty_n), - .wrC_inst_s_read(wrC_inst_Sextans_1__read), - .wrC_inst_peek_read() - ); - - - (* keep_hierarchy = "yes" *) write_C - write_C_2 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(write_C_2__ap_start), - .ap_done(write_C_2__ap_done), - .ap_idle(write_C_2__ap_idle), - .ap_ready(write_C_2__ap_ready), - .fifo_C_s_dout(fifo_C_ch_Sextans_2__dout), - .fifo_C_peek_dout(fifo_C_ch_Sextans_2__dout), - .fifo_C_s_empty_n(fifo_C_ch_Sextans_2__empty_n), - .fifo_C_peek_empty_n(fifo_C_ch_Sextans_2__empty_n), - .fifo_C_s_read(fifo_C_ch_Sextans_2__read), - .fifo_C_peek_read(), - .C_out_read_addr_din(mat_C_ch_2_read_addr__din), - .C_out_read_addr_full_n(mat_C_ch_2_read_addr__full_n), - .C_out_read_addr_write(mat_C_ch_2_read_addr__write), - .C_out_read_data_s_dout({1'b0, mat_C_ch_2_read_data__dout}), - .C_out_read_data_peek_dout({1'b0, mat_C_ch_2_read_data__dout}), - .C_out_read_data_s_empty_n(mat_C_ch_2_read_data__empty_n), - .C_out_read_data_peek_empty_n(mat_C_ch_2_read_data__empty_n), - .C_out_read_data_s_read(mat_C_ch_2_read_data__read), - .C_out_read_data_peek_read(), - .C_out_write_addr_din(mat_C_ch_2_write_addr__din), - .C_out_write_addr_full_n(mat_C_ch_2_write_addr__full_n), - .C_out_write_addr_write(mat_C_ch_2_write_addr__write), - .C_out_write_data_din(mat_C_ch_2_write_data__din), - .C_out_write_data_full_n(mat_C_ch_2_write_data__full_n), - .C_out_write_data_write(mat_C_ch_2_write_data__write), - .C_out_write_resp_s_dout({1'b0, mat_C_ch_2_write_resp__dout}), - .C_out_write_resp_peek_dout({1'b0, mat_C_ch_2_write_resp__dout}), - .C_out_write_resp_s_empty_n(mat_C_ch_2_write_resp__empty_n), - .C_out_write_resp_peek_empty_n(mat_C_ch_2_write_resp__empty_n), - .C_out_write_resp_s_read(mat_C_ch_2_write_resp__read), - .C_out_write_resp_peek_read(), - .wrC_inst_s_dout(wrC_inst_Sextans_2__dout), - .wrC_inst_peek_dout(wrC_inst_Sextans_2__dout), - .wrC_inst_s_empty_n(wrC_inst_Sextans_2__empty_n), - .wrC_inst_peek_empty_n(wrC_inst_Sextans_2__empty_n), - .wrC_inst_s_read(wrC_inst_Sextans_2__read), - .wrC_inst_peek_read() - ); - - - (* keep_hierarchy = "yes" *) write_C - write_C_3 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(write_C_3__ap_start), - .ap_done(write_C_3__ap_done), - .ap_idle(write_C_3__ap_idle), - .ap_ready(write_C_3__ap_ready), - .fifo_C_s_dout(fifo_C_ch_Sextans_3__dout), - .fifo_C_peek_dout(fifo_C_ch_Sextans_3__dout), - .fifo_C_s_empty_n(fifo_C_ch_Sextans_3__empty_n), - .fifo_C_peek_empty_n(fifo_C_ch_Sextans_3__empty_n), - .fifo_C_s_read(fifo_C_ch_Sextans_3__read), - .fifo_C_peek_read(), - .C_out_read_addr_din(mat_C_ch_3_read_addr__din), - .C_out_read_addr_full_n(mat_C_ch_3_read_addr__full_n), - .C_out_read_addr_write(mat_C_ch_3_read_addr__write), - .C_out_read_data_s_dout({1'b0, mat_C_ch_3_read_data__dout}), - .C_out_read_data_peek_dout({1'b0, mat_C_ch_3_read_data__dout}), - .C_out_read_data_s_empty_n(mat_C_ch_3_read_data__empty_n), - .C_out_read_data_peek_empty_n(mat_C_ch_3_read_data__empty_n), - .C_out_read_data_s_read(mat_C_ch_3_read_data__read), - .C_out_read_data_peek_read(), - .C_out_write_addr_din(mat_C_ch_3_write_addr__din), - .C_out_write_addr_full_n(mat_C_ch_3_write_addr__full_n), - .C_out_write_addr_write(mat_C_ch_3_write_addr__write), - .C_out_write_data_din(mat_C_ch_3_write_data__din), - .C_out_write_data_full_n(mat_C_ch_3_write_data__full_n), - .C_out_write_data_write(mat_C_ch_3_write_data__write), - .C_out_write_resp_s_dout({1'b0, mat_C_ch_3_write_resp__dout}), - .C_out_write_resp_peek_dout({1'b0, mat_C_ch_3_write_resp__dout}), - .C_out_write_resp_s_empty_n(mat_C_ch_3_write_resp__empty_n), - .C_out_write_resp_peek_empty_n(mat_C_ch_3_write_resp__empty_n), - .C_out_write_resp_s_read(mat_C_ch_3_write_resp__read), - .C_out_write_resp_peek_read(), - .wrC_inst_s_dout(wrC_inst_Sextans_3__dout), - .wrC_inst_peek_dout(wrC_inst_Sextans_3__dout), - .wrC_inst_s_empty_n(wrC_inst_Sextans_3__empty_n), - .wrC_inst_peek_empty_n(wrC_inst_Sextans_3__empty_n), - .wrC_inst_s_read(wrC_inst_Sextans_3__read), - .wrC_inst_peek_read() - ); - - - (* keep_hierarchy = "yes" *) write_C - write_C_4 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(write_C_4__ap_start), - .ap_done(write_C_4__ap_done), - .ap_idle(write_C_4__ap_idle), - .ap_ready(write_C_4__ap_ready), - .fifo_C_s_dout(fifo_C_ch_Sextans_4__dout), - .fifo_C_peek_dout(fifo_C_ch_Sextans_4__dout), - .fifo_C_s_empty_n(fifo_C_ch_Sextans_4__empty_n), - .fifo_C_peek_empty_n(fifo_C_ch_Sextans_4__empty_n), - .fifo_C_s_read(fifo_C_ch_Sextans_4__read), - .fifo_C_peek_read(), - .C_out_read_addr_din(mat_C_ch_4_read_addr__din), - .C_out_read_addr_full_n(mat_C_ch_4_read_addr__full_n), - .C_out_read_addr_write(mat_C_ch_4_read_addr__write), - .C_out_read_data_s_dout({1'b0, mat_C_ch_4_read_data__dout}), - .C_out_read_data_peek_dout({1'b0, mat_C_ch_4_read_data__dout}), - .C_out_read_data_s_empty_n(mat_C_ch_4_read_data__empty_n), - .C_out_read_data_peek_empty_n(mat_C_ch_4_read_data__empty_n), - .C_out_read_data_s_read(mat_C_ch_4_read_data__read), - .C_out_read_data_peek_read(), - .C_out_write_addr_din(mat_C_ch_4_write_addr__din), - .C_out_write_addr_full_n(mat_C_ch_4_write_addr__full_n), - .C_out_write_addr_write(mat_C_ch_4_write_addr__write), - .C_out_write_data_din(mat_C_ch_4_write_data__din), - .C_out_write_data_full_n(mat_C_ch_4_write_data__full_n), - .C_out_write_data_write(mat_C_ch_4_write_data__write), - .C_out_write_resp_s_dout({1'b0, mat_C_ch_4_write_resp__dout}), - .C_out_write_resp_peek_dout({1'b0, mat_C_ch_4_write_resp__dout}), - .C_out_write_resp_s_empty_n(mat_C_ch_4_write_resp__empty_n), - .C_out_write_resp_peek_empty_n(mat_C_ch_4_write_resp__empty_n), - .C_out_write_resp_s_read(mat_C_ch_4_write_resp__read), - .C_out_write_resp_peek_read(), - .wrC_inst_s_dout(wrC_inst_Sextans_4__dout), - .wrC_inst_peek_dout(wrC_inst_Sextans_4__dout), - .wrC_inst_s_empty_n(wrC_inst_Sextans_4__empty_n), - .wrC_inst_peek_empty_n(wrC_inst_Sextans_4__empty_n), - .wrC_inst_s_read(wrC_inst_Sextans_4__read), - .wrC_inst_peek_read() - ); - - - (* keep_hierarchy = "yes" *) write_C - write_C_5 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(write_C_5__ap_start), - .ap_done(write_C_5__ap_done), - .ap_idle(write_C_5__ap_idle), - .ap_ready(write_C_5__ap_ready), - .fifo_C_s_dout(fifo_C_ch_Sextans_5__dout), - .fifo_C_peek_dout(fifo_C_ch_Sextans_5__dout), - .fifo_C_s_empty_n(fifo_C_ch_Sextans_5__empty_n), - .fifo_C_peek_empty_n(fifo_C_ch_Sextans_5__empty_n), - .fifo_C_s_read(fifo_C_ch_Sextans_5__read), - .fifo_C_peek_read(), - .C_out_read_addr_din(mat_C_ch_5_read_addr__din), - .C_out_read_addr_full_n(mat_C_ch_5_read_addr__full_n), - .C_out_read_addr_write(mat_C_ch_5_read_addr__write), - .C_out_read_data_s_dout({1'b0, mat_C_ch_5_read_data__dout}), - .C_out_read_data_peek_dout({1'b0, mat_C_ch_5_read_data__dout}), - .C_out_read_data_s_empty_n(mat_C_ch_5_read_data__empty_n), - .C_out_read_data_peek_empty_n(mat_C_ch_5_read_data__empty_n), - .C_out_read_data_s_read(mat_C_ch_5_read_data__read), - .C_out_read_data_peek_read(), - .C_out_write_addr_din(mat_C_ch_5_write_addr__din), - .C_out_write_addr_full_n(mat_C_ch_5_write_addr__full_n), - .C_out_write_addr_write(mat_C_ch_5_write_addr__write), - .C_out_write_data_din(mat_C_ch_5_write_data__din), - .C_out_write_data_full_n(mat_C_ch_5_write_data__full_n), - .C_out_write_data_write(mat_C_ch_5_write_data__write), - .C_out_write_resp_s_dout({1'b0, mat_C_ch_5_write_resp__dout}), - .C_out_write_resp_peek_dout({1'b0, mat_C_ch_5_write_resp__dout}), - .C_out_write_resp_s_empty_n(mat_C_ch_5_write_resp__empty_n), - .C_out_write_resp_peek_empty_n(mat_C_ch_5_write_resp__empty_n), - .C_out_write_resp_s_read(mat_C_ch_5_write_resp__read), - .C_out_write_resp_peek_read(), - .wrC_inst_s_dout(wrC_inst_Sextans_5__dout), - .wrC_inst_peek_dout(wrC_inst_Sextans_5__dout), - .wrC_inst_s_empty_n(wrC_inst_Sextans_5__empty_n), - .wrC_inst_peek_empty_n(wrC_inst_Sextans_5__empty_n), - .wrC_inst_s_read(wrC_inst_Sextans_5__read), - .wrC_inst_peek_read() - ); - - - (* keep_hierarchy = "yes" *) write_C - write_C_6 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(write_C_6__ap_start), - .ap_done(write_C_6__ap_done), - .ap_idle(write_C_6__ap_idle), - .ap_ready(write_C_6__ap_ready), - .fifo_C_s_dout(fifo_C_ch_Sextans_6__dout), - .fifo_C_peek_dout(fifo_C_ch_Sextans_6__dout), - .fifo_C_s_empty_n(fifo_C_ch_Sextans_6__empty_n), - .fifo_C_peek_empty_n(fifo_C_ch_Sextans_6__empty_n), - .fifo_C_s_read(fifo_C_ch_Sextans_6__read), - .fifo_C_peek_read(), - .C_out_read_addr_din(mat_C_ch_6_read_addr__din), - .C_out_read_addr_full_n(mat_C_ch_6_read_addr__full_n), - .C_out_read_addr_write(mat_C_ch_6_read_addr__write), - .C_out_read_data_s_dout({1'b0, mat_C_ch_6_read_data__dout}), - .C_out_read_data_peek_dout({1'b0, mat_C_ch_6_read_data__dout}), - .C_out_read_data_s_empty_n(mat_C_ch_6_read_data__empty_n), - .C_out_read_data_peek_empty_n(mat_C_ch_6_read_data__empty_n), - .C_out_read_data_s_read(mat_C_ch_6_read_data__read), - .C_out_read_data_peek_read(), - .C_out_write_addr_din(mat_C_ch_6_write_addr__din), - .C_out_write_addr_full_n(mat_C_ch_6_write_addr__full_n), - .C_out_write_addr_write(mat_C_ch_6_write_addr__write), - .C_out_write_data_din(mat_C_ch_6_write_data__din), - .C_out_write_data_full_n(mat_C_ch_6_write_data__full_n), - .C_out_write_data_write(mat_C_ch_6_write_data__write), - .C_out_write_resp_s_dout({1'b0, mat_C_ch_6_write_resp__dout}), - .C_out_write_resp_peek_dout({1'b0, mat_C_ch_6_write_resp__dout}), - .C_out_write_resp_s_empty_n(mat_C_ch_6_write_resp__empty_n), - .C_out_write_resp_peek_empty_n(mat_C_ch_6_write_resp__empty_n), - .C_out_write_resp_s_read(mat_C_ch_6_write_resp__read), - .C_out_write_resp_peek_read(), - .wrC_inst_s_dout(wrC_inst_Sextans_6__dout), - .wrC_inst_peek_dout(wrC_inst_Sextans_6__dout), - .wrC_inst_s_empty_n(wrC_inst_Sextans_6__empty_n), - .wrC_inst_peek_empty_n(wrC_inst_Sextans_6__empty_n), - .wrC_inst_s_read(wrC_inst_Sextans_6__read), - .wrC_inst_peek_read() - ); - - - (* keep_hierarchy = "yes" *) write_C - write_C_7 - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(write_C_7__ap_start), - .ap_done(write_C_7__ap_done), - .ap_idle(write_C_7__ap_idle), - .ap_ready(write_C_7__ap_ready), - .fifo_C_s_dout(fifo_C_ch_Sextans_7__dout), - .fifo_C_peek_dout(fifo_C_ch_Sextans_7__dout), - .fifo_C_s_empty_n(fifo_C_ch_Sextans_7__empty_n), - .fifo_C_peek_empty_n(fifo_C_ch_Sextans_7__empty_n), - .fifo_C_s_read(fifo_C_ch_Sextans_7__read), - .fifo_C_peek_read(), - .C_out_read_addr_din(mat_C_ch_7_read_addr__din), - .C_out_read_addr_full_n(mat_C_ch_7_read_addr__full_n), - .C_out_read_addr_write(mat_C_ch_7_read_addr__write), - .C_out_read_data_s_dout({1'b0, mat_C_ch_7_read_data__dout}), - .C_out_read_data_peek_dout({1'b0, mat_C_ch_7_read_data__dout}), - .C_out_read_data_s_empty_n(mat_C_ch_7_read_data__empty_n), - .C_out_read_data_peek_empty_n(mat_C_ch_7_read_data__empty_n), - .C_out_read_data_s_read(mat_C_ch_7_read_data__read), - .C_out_read_data_peek_read(), - .C_out_write_addr_din(mat_C_ch_7_write_addr__din), - .C_out_write_addr_full_n(mat_C_ch_7_write_addr__full_n), - .C_out_write_addr_write(mat_C_ch_7_write_addr__write), - .C_out_write_data_din(mat_C_ch_7_write_data__din), - .C_out_write_data_full_n(mat_C_ch_7_write_data__full_n), - .C_out_write_data_write(mat_C_ch_7_write_data__write), - .C_out_write_resp_s_dout({1'b0, mat_C_ch_7_write_resp__dout}), - .C_out_write_resp_peek_dout({1'b0, mat_C_ch_7_write_resp__dout}), - .C_out_write_resp_s_empty_n(mat_C_ch_7_write_resp__empty_n), - .C_out_write_resp_peek_empty_n(mat_C_ch_7_write_resp__empty_n), - .C_out_write_resp_s_read(mat_C_ch_7_write_resp__read), - .C_out_write_resp_peek_read(), - .wrC_inst_s_dout(wrC_inst_Sextans_7__dout), - .wrC_inst_peek_dout(wrC_inst_Sextans_7__dout), - .wrC_inst_s_empty_n(wrC_inst_Sextans_7__empty_n), - .wrC_inst_peek_empty_n(wrC_inst_Sextans_7__empty_n), - .wrC_inst_s_read(wrC_inst_Sextans_7__read), - .wrC_inst_peek_read() - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - edge_list_ch_0__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_A_0___edge_list_ch_0__q0), - .m_axi_ARADDR(m_axi_edge_list_ch_0_ARADDR), - .m_axi_ARBURST(m_axi_edge_list_ch_0_ARBURST), - .m_axi_ARCACHE(m_axi_edge_list_ch_0_ARCACHE), - .m_axi_ARID(m_axi_edge_list_ch_0_ARID), - .m_axi_ARLEN(m_axi_edge_list_ch_0_ARLEN), - .m_axi_ARLOCK(m_axi_edge_list_ch_0_ARLOCK), - .m_axi_ARPROT(m_axi_edge_list_ch_0_ARPROT), - .m_axi_ARQOS(m_axi_edge_list_ch_0_ARQOS), - .m_axi_ARREADY(m_axi_edge_list_ch_0_ARREADY), - .m_axi_ARSIZE(m_axi_edge_list_ch_0_ARSIZE), - .m_axi_ARVALID(m_axi_edge_list_ch_0_ARVALID), - .m_axi_AWADDR(m_axi_edge_list_ch_0_AWADDR), - .m_axi_AWBURST(m_axi_edge_list_ch_0_AWBURST), - .m_axi_AWCACHE(m_axi_edge_list_ch_0_AWCACHE), - .m_axi_AWID(m_axi_edge_list_ch_0_AWID), - .m_axi_AWLEN(m_axi_edge_list_ch_0_AWLEN), - .m_axi_AWLOCK(m_axi_edge_list_ch_0_AWLOCK), - .m_axi_AWPROT(m_axi_edge_list_ch_0_AWPROT), - .m_axi_AWQOS(m_axi_edge_list_ch_0_AWQOS), - .m_axi_AWREADY(m_axi_edge_list_ch_0_AWREADY), - .m_axi_AWSIZE(m_axi_edge_list_ch_0_AWSIZE), - .m_axi_AWVALID(m_axi_edge_list_ch_0_AWVALID), - .m_axi_BID(m_axi_edge_list_ch_0_BID), - .m_axi_BREADY(m_axi_edge_list_ch_0_BREADY), - .m_axi_BRESP(m_axi_edge_list_ch_0_BRESP), - .m_axi_BVALID(m_axi_edge_list_ch_0_BVALID), - .m_axi_RDATA(m_axi_edge_list_ch_0_RDATA), - .m_axi_RID(m_axi_edge_list_ch_0_RID), - .m_axi_RLAST(m_axi_edge_list_ch_0_RLAST), - .m_axi_RREADY(m_axi_edge_list_ch_0_RREADY), - .m_axi_RRESP(m_axi_edge_list_ch_0_RRESP), - .m_axi_RVALID(m_axi_edge_list_ch_0_RVALID), - .m_axi_WDATA(m_axi_edge_list_ch_0_WDATA), - .m_axi_WLAST(m_axi_edge_list_ch_0_WLAST), - .m_axi_WREADY(m_axi_edge_list_ch_0_WREADY), - .m_axi_WSTRB(m_axi_edge_list_ch_0_WSTRB), - .m_axi_WVALID(m_axi_edge_list_ch_0_WVALID), - .read_addr_din(edge_list_ch_0_read_addr__din), - .read_addr_full_n(edge_list_ch_0_read_addr__full_n), - .read_addr_write(edge_list_ch_0_read_addr__write), - .read_data_dout(edge_list_ch_0_read_data__dout), - .read_data_empty_n(edge_list_ch_0_read_data__empty_n), - .read_data_read(edge_list_ch_0_read_data__read), - .write_addr_din(edge_list_ch_0_write_addr__din), - .write_addr_full_n(edge_list_ch_0_write_addr__full_n), - .write_addr_write(edge_list_ch_0_write_addr__write), - .write_data_din(edge_list_ch_0_write_data__din), - .write_data_full_n(edge_list_ch_0_write_data__full_n), - .write_data_write(edge_list_ch_0_write_data__write), - .write_resp_dout(edge_list_ch_0_write_resp__dout), - .write_resp_empty_n(edge_list_ch_0_write_resp__empty_n), - .write_resp_read(edge_list_ch_0_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - edge_list_ch_1__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_A_1___edge_list_ch_1__q0), - .m_axi_ARADDR(m_axi_edge_list_ch_1_ARADDR), - .m_axi_ARBURST(m_axi_edge_list_ch_1_ARBURST), - .m_axi_ARCACHE(m_axi_edge_list_ch_1_ARCACHE), - .m_axi_ARID(m_axi_edge_list_ch_1_ARID), - .m_axi_ARLEN(m_axi_edge_list_ch_1_ARLEN), - .m_axi_ARLOCK(m_axi_edge_list_ch_1_ARLOCK), - .m_axi_ARPROT(m_axi_edge_list_ch_1_ARPROT), - .m_axi_ARQOS(m_axi_edge_list_ch_1_ARQOS), - .m_axi_ARREADY(m_axi_edge_list_ch_1_ARREADY), - .m_axi_ARSIZE(m_axi_edge_list_ch_1_ARSIZE), - .m_axi_ARVALID(m_axi_edge_list_ch_1_ARVALID), - .m_axi_AWADDR(m_axi_edge_list_ch_1_AWADDR), - .m_axi_AWBURST(m_axi_edge_list_ch_1_AWBURST), - .m_axi_AWCACHE(m_axi_edge_list_ch_1_AWCACHE), - .m_axi_AWID(m_axi_edge_list_ch_1_AWID), - .m_axi_AWLEN(m_axi_edge_list_ch_1_AWLEN), - .m_axi_AWLOCK(m_axi_edge_list_ch_1_AWLOCK), - .m_axi_AWPROT(m_axi_edge_list_ch_1_AWPROT), - .m_axi_AWQOS(m_axi_edge_list_ch_1_AWQOS), - .m_axi_AWREADY(m_axi_edge_list_ch_1_AWREADY), - .m_axi_AWSIZE(m_axi_edge_list_ch_1_AWSIZE), - .m_axi_AWVALID(m_axi_edge_list_ch_1_AWVALID), - .m_axi_BID(m_axi_edge_list_ch_1_BID), - .m_axi_BREADY(m_axi_edge_list_ch_1_BREADY), - .m_axi_BRESP(m_axi_edge_list_ch_1_BRESP), - .m_axi_BVALID(m_axi_edge_list_ch_1_BVALID), - .m_axi_RDATA(m_axi_edge_list_ch_1_RDATA), - .m_axi_RID(m_axi_edge_list_ch_1_RID), - .m_axi_RLAST(m_axi_edge_list_ch_1_RLAST), - .m_axi_RREADY(m_axi_edge_list_ch_1_RREADY), - .m_axi_RRESP(m_axi_edge_list_ch_1_RRESP), - .m_axi_RVALID(m_axi_edge_list_ch_1_RVALID), - .m_axi_WDATA(m_axi_edge_list_ch_1_WDATA), - .m_axi_WLAST(m_axi_edge_list_ch_1_WLAST), - .m_axi_WREADY(m_axi_edge_list_ch_1_WREADY), - .m_axi_WSTRB(m_axi_edge_list_ch_1_WSTRB), - .m_axi_WVALID(m_axi_edge_list_ch_1_WVALID), - .read_addr_din(edge_list_ch_1_read_addr__din), - .read_addr_full_n(edge_list_ch_1_read_addr__full_n), - .read_addr_write(edge_list_ch_1_read_addr__write), - .read_data_dout(edge_list_ch_1_read_data__dout), - .read_data_empty_n(edge_list_ch_1_read_data__empty_n), - .read_data_read(edge_list_ch_1_read_data__read), - .write_addr_din(edge_list_ch_1_write_addr__din), - .write_addr_full_n(edge_list_ch_1_write_addr__full_n), - .write_addr_write(edge_list_ch_1_write_addr__write), - .write_data_din(edge_list_ch_1_write_data__din), - .write_data_full_n(edge_list_ch_1_write_data__full_n), - .write_data_write(edge_list_ch_1_write_data__write), - .write_resp_dout(edge_list_ch_1_write_resp__dout), - .write_resp_empty_n(edge_list_ch_1_write_resp__empty_n), - .write_resp_read(edge_list_ch_1_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - edge_list_ch_2__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_A_2___edge_list_ch_2__q0), - .m_axi_ARADDR(m_axi_edge_list_ch_2_ARADDR), - .m_axi_ARBURST(m_axi_edge_list_ch_2_ARBURST), - .m_axi_ARCACHE(m_axi_edge_list_ch_2_ARCACHE), - .m_axi_ARID(m_axi_edge_list_ch_2_ARID), - .m_axi_ARLEN(m_axi_edge_list_ch_2_ARLEN), - .m_axi_ARLOCK(m_axi_edge_list_ch_2_ARLOCK), - .m_axi_ARPROT(m_axi_edge_list_ch_2_ARPROT), - .m_axi_ARQOS(m_axi_edge_list_ch_2_ARQOS), - .m_axi_ARREADY(m_axi_edge_list_ch_2_ARREADY), - .m_axi_ARSIZE(m_axi_edge_list_ch_2_ARSIZE), - .m_axi_ARVALID(m_axi_edge_list_ch_2_ARVALID), - .m_axi_AWADDR(m_axi_edge_list_ch_2_AWADDR), - .m_axi_AWBURST(m_axi_edge_list_ch_2_AWBURST), - .m_axi_AWCACHE(m_axi_edge_list_ch_2_AWCACHE), - .m_axi_AWID(m_axi_edge_list_ch_2_AWID), - .m_axi_AWLEN(m_axi_edge_list_ch_2_AWLEN), - .m_axi_AWLOCK(m_axi_edge_list_ch_2_AWLOCK), - .m_axi_AWPROT(m_axi_edge_list_ch_2_AWPROT), - .m_axi_AWQOS(m_axi_edge_list_ch_2_AWQOS), - .m_axi_AWREADY(m_axi_edge_list_ch_2_AWREADY), - .m_axi_AWSIZE(m_axi_edge_list_ch_2_AWSIZE), - .m_axi_AWVALID(m_axi_edge_list_ch_2_AWVALID), - .m_axi_BID(m_axi_edge_list_ch_2_BID), - .m_axi_BREADY(m_axi_edge_list_ch_2_BREADY), - .m_axi_BRESP(m_axi_edge_list_ch_2_BRESP), - .m_axi_BVALID(m_axi_edge_list_ch_2_BVALID), - .m_axi_RDATA(m_axi_edge_list_ch_2_RDATA), - .m_axi_RID(m_axi_edge_list_ch_2_RID), - .m_axi_RLAST(m_axi_edge_list_ch_2_RLAST), - .m_axi_RREADY(m_axi_edge_list_ch_2_RREADY), - .m_axi_RRESP(m_axi_edge_list_ch_2_RRESP), - .m_axi_RVALID(m_axi_edge_list_ch_2_RVALID), - .m_axi_WDATA(m_axi_edge_list_ch_2_WDATA), - .m_axi_WLAST(m_axi_edge_list_ch_2_WLAST), - .m_axi_WREADY(m_axi_edge_list_ch_2_WREADY), - .m_axi_WSTRB(m_axi_edge_list_ch_2_WSTRB), - .m_axi_WVALID(m_axi_edge_list_ch_2_WVALID), - .read_addr_din(edge_list_ch_2_read_addr__din), - .read_addr_full_n(edge_list_ch_2_read_addr__full_n), - .read_addr_write(edge_list_ch_2_read_addr__write), - .read_data_dout(edge_list_ch_2_read_data__dout), - .read_data_empty_n(edge_list_ch_2_read_data__empty_n), - .read_data_read(edge_list_ch_2_read_data__read), - .write_addr_din(edge_list_ch_2_write_addr__din), - .write_addr_full_n(edge_list_ch_2_write_addr__full_n), - .write_addr_write(edge_list_ch_2_write_addr__write), - .write_data_din(edge_list_ch_2_write_data__din), - .write_data_full_n(edge_list_ch_2_write_data__full_n), - .write_data_write(edge_list_ch_2_write_data__write), - .write_resp_dout(edge_list_ch_2_write_resp__dout), - .write_resp_empty_n(edge_list_ch_2_write_resp__empty_n), - .write_resp_read(edge_list_ch_2_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - edge_list_ch_3__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_A_3___edge_list_ch_3__q0), - .m_axi_ARADDR(m_axi_edge_list_ch_3_ARADDR), - .m_axi_ARBURST(m_axi_edge_list_ch_3_ARBURST), - .m_axi_ARCACHE(m_axi_edge_list_ch_3_ARCACHE), - .m_axi_ARID(m_axi_edge_list_ch_3_ARID), - .m_axi_ARLEN(m_axi_edge_list_ch_3_ARLEN), - .m_axi_ARLOCK(m_axi_edge_list_ch_3_ARLOCK), - .m_axi_ARPROT(m_axi_edge_list_ch_3_ARPROT), - .m_axi_ARQOS(m_axi_edge_list_ch_3_ARQOS), - .m_axi_ARREADY(m_axi_edge_list_ch_3_ARREADY), - .m_axi_ARSIZE(m_axi_edge_list_ch_3_ARSIZE), - .m_axi_ARVALID(m_axi_edge_list_ch_3_ARVALID), - .m_axi_AWADDR(m_axi_edge_list_ch_3_AWADDR), - .m_axi_AWBURST(m_axi_edge_list_ch_3_AWBURST), - .m_axi_AWCACHE(m_axi_edge_list_ch_3_AWCACHE), - .m_axi_AWID(m_axi_edge_list_ch_3_AWID), - .m_axi_AWLEN(m_axi_edge_list_ch_3_AWLEN), - .m_axi_AWLOCK(m_axi_edge_list_ch_3_AWLOCK), - .m_axi_AWPROT(m_axi_edge_list_ch_3_AWPROT), - .m_axi_AWQOS(m_axi_edge_list_ch_3_AWQOS), - .m_axi_AWREADY(m_axi_edge_list_ch_3_AWREADY), - .m_axi_AWSIZE(m_axi_edge_list_ch_3_AWSIZE), - .m_axi_AWVALID(m_axi_edge_list_ch_3_AWVALID), - .m_axi_BID(m_axi_edge_list_ch_3_BID), - .m_axi_BREADY(m_axi_edge_list_ch_3_BREADY), - .m_axi_BRESP(m_axi_edge_list_ch_3_BRESP), - .m_axi_BVALID(m_axi_edge_list_ch_3_BVALID), - .m_axi_RDATA(m_axi_edge_list_ch_3_RDATA), - .m_axi_RID(m_axi_edge_list_ch_3_RID), - .m_axi_RLAST(m_axi_edge_list_ch_3_RLAST), - .m_axi_RREADY(m_axi_edge_list_ch_3_RREADY), - .m_axi_RRESP(m_axi_edge_list_ch_3_RRESP), - .m_axi_RVALID(m_axi_edge_list_ch_3_RVALID), - .m_axi_WDATA(m_axi_edge_list_ch_3_WDATA), - .m_axi_WLAST(m_axi_edge_list_ch_3_WLAST), - .m_axi_WREADY(m_axi_edge_list_ch_3_WREADY), - .m_axi_WSTRB(m_axi_edge_list_ch_3_WSTRB), - .m_axi_WVALID(m_axi_edge_list_ch_3_WVALID), - .read_addr_din(edge_list_ch_3_read_addr__din), - .read_addr_full_n(edge_list_ch_3_read_addr__full_n), - .read_addr_write(edge_list_ch_3_read_addr__write), - .read_data_dout(edge_list_ch_3_read_data__dout), - .read_data_empty_n(edge_list_ch_3_read_data__empty_n), - .read_data_read(edge_list_ch_3_read_data__read), - .write_addr_din(edge_list_ch_3_write_addr__din), - .write_addr_full_n(edge_list_ch_3_write_addr__full_n), - .write_addr_write(edge_list_ch_3_write_addr__write), - .write_data_din(edge_list_ch_3_write_data__din), - .write_data_full_n(edge_list_ch_3_write_data__full_n), - .write_data_write(edge_list_ch_3_write_data__write), - .write_resp_dout(edge_list_ch_3_write_resp__dout), - .write_resp_empty_n(edge_list_ch_3_write_resp__empty_n), - .write_resp_read(edge_list_ch_3_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - edge_list_ch_4__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_A_4___edge_list_ch_4__q0), - .m_axi_ARADDR(m_axi_edge_list_ch_4_ARADDR), - .m_axi_ARBURST(m_axi_edge_list_ch_4_ARBURST), - .m_axi_ARCACHE(m_axi_edge_list_ch_4_ARCACHE), - .m_axi_ARID(m_axi_edge_list_ch_4_ARID), - .m_axi_ARLEN(m_axi_edge_list_ch_4_ARLEN), - .m_axi_ARLOCK(m_axi_edge_list_ch_4_ARLOCK), - .m_axi_ARPROT(m_axi_edge_list_ch_4_ARPROT), - .m_axi_ARQOS(m_axi_edge_list_ch_4_ARQOS), - .m_axi_ARREADY(m_axi_edge_list_ch_4_ARREADY), - .m_axi_ARSIZE(m_axi_edge_list_ch_4_ARSIZE), - .m_axi_ARVALID(m_axi_edge_list_ch_4_ARVALID), - .m_axi_AWADDR(m_axi_edge_list_ch_4_AWADDR), - .m_axi_AWBURST(m_axi_edge_list_ch_4_AWBURST), - .m_axi_AWCACHE(m_axi_edge_list_ch_4_AWCACHE), - .m_axi_AWID(m_axi_edge_list_ch_4_AWID), - .m_axi_AWLEN(m_axi_edge_list_ch_4_AWLEN), - .m_axi_AWLOCK(m_axi_edge_list_ch_4_AWLOCK), - .m_axi_AWPROT(m_axi_edge_list_ch_4_AWPROT), - .m_axi_AWQOS(m_axi_edge_list_ch_4_AWQOS), - .m_axi_AWREADY(m_axi_edge_list_ch_4_AWREADY), - .m_axi_AWSIZE(m_axi_edge_list_ch_4_AWSIZE), - .m_axi_AWVALID(m_axi_edge_list_ch_4_AWVALID), - .m_axi_BID(m_axi_edge_list_ch_4_BID), - .m_axi_BREADY(m_axi_edge_list_ch_4_BREADY), - .m_axi_BRESP(m_axi_edge_list_ch_4_BRESP), - .m_axi_BVALID(m_axi_edge_list_ch_4_BVALID), - .m_axi_RDATA(m_axi_edge_list_ch_4_RDATA), - .m_axi_RID(m_axi_edge_list_ch_4_RID), - .m_axi_RLAST(m_axi_edge_list_ch_4_RLAST), - .m_axi_RREADY(m_axi_edge_list_ch_4_RREADY), - .m_axi_RRESP(m_axi_edge_list_ch_4_RRESP), - .m_axi_RVALID(m_axi_edge_list_ch_4_RVALID), - .m_axi_WDATA(m_axi_edge_list_ch_4_WDATA), - .m_axi_WLAST(m_axi_edge_list_ch_4_WLAST), - .m_axi_WREADY(m_axi_edge_list_ch_4_WREADY), - .m_axi_WSTRB(m_axi_edge_list_ch_4_WSTRB), - .m_axi_WVALID(m_axi_edge_list_ch_4_WVALID), - .read_addr_din(edge_list_ch_4_read_addr__din), - .read_addr_full_n(edge_list_ch_4_read_addr__full_n), - .read_addr_write(edge_list_ch_4_read_addr__write), - .read_data_dout(edge_list_ch_4_read_data__dout), - .read_data_empty_n(edge_list_ch_4_read_data__empty_n), - .read_data_read(edge_list_ch_4_read_data__read), - .write_addr_din(edge_list_ch_4_write_addr__din), - .write_addr_full_n(edge_list_ch_4_write_addr__full_n), - .write_addr_write(edge_list_ch_4_write_addr__write), - .write_data_din(edge_list_ch_4_write_data__din), - .write_data_full_n(edge_list_ch_4_write_data__full_n), - .write_data_write(edge_list_ch_4_write_data__write), - .write_resp_dout(edge_list_ch_4_write_resp__dout), - .write_resp_empty_n(edge_list_ch_4_write_resp__empty_n), - .write_resp_read(edge_list_ch_4_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - edge_list_ch_5__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_A_5___edge_list_ch_5__q0), - .m_axi_ARADDR(m_axi_edge_list_ch_5_ARADDR), - .m_axi_ARBURST(m_axi_edge_list_ch_5_ARBURST), - .m_axi_ARCACHE(m_axi_edge_list_ch_5_ARCACHE), - .m_axi_ARID(m_axi_edge_list_ch_5_ARID), - .m_axi_ARLEN(m_axi_edge_list_ch_5_ARLEN), - .m_axi_ARLOCK(m_axi_edge_list_ch_5_ARLOCK), - .m_axi_ARPROT(m_axi_edge_list_ch_5_ARPROT), - .m_axi_ARQOS(m_axi_edge_list_ch_5_ARQOS), - .m_axi_ARREADY(m_axi_edge_list_ch_5_ARREADY), - .m_axi_ARSIZE(m_axi_edge_list_ch_5_ARSIZE), - .m_axi_ARVALID(m_axi_edge_list_ch_5_ARVALID), - .m_axi_AWADDR(m_axi_edge_list_ch_5_AWADDR), - .m_axi_AWBURST(m_axi_edge_list_ch_5_AWBURST), - .m_axi_AWCACHE(m_axi_edge_list_ch_5_AWCACHE), - .m_axi_AWID(m_axi_edge_list_ch_5_AWID), - .m_axi_AWLEN(m_axi_edge_list_ch_5_AWLEN), - .m_axi_AWLOCK(m_axi_edge_list_ch_5_AWLOCK), - .m_axi_AWPROT(m_axi_edge_list_ch_5_AWPROT), - .m_axi_AWQOS(m_axi_edge_list_ch_5_AWQOS), - .m_axi_AWREADY(m_axi_edge_list_ch_5_AWREADY), - .m_axi_AWSIZE(m_axi_edge_list_ch_5_AWSIZE), - .m_axi_AWVALID(m_axi_edge_list_ch_5_AWVALID), - .m_axi_BID(m_axi_edge_list_ch_5_BID), - .m_axi_BREADY(m_axi_edge_list_ch_5_BREADY), - .m_axi_BRESP(m_axi_edge_list_ch_5_BRESP), - .m_axi_BVALID(m_axi_edge_list_ch_5_BVALID), - .m_axi_RDATA(m_axi_edge_list_ch_5_RDATA), - .m_axi_RID(m_axi_edge_list_ch_5_RID), - .m_axi_RLAST(m_axi_edge_list_ch_5_RLAST), - .m_axi_RREADY(m_axi_edge_list_ch_5_RREADY), - .m_axi_RRESP(m_axi_edge_list_ch_5_RRESP), - .m_axi_RVALID(m_axi_edge_list_ch_5_RVALID), - .m_axi_WDATA(m_axi_edge_list_ch_5_WDATA), - .m_axi_WLAST(m_axi_edge_list_ch_5_WLAST), - .m_axi_WREADY(m_axi_edge_list_ch_5_WREADY), - .m_axi_WSTRB(m_axi_edge_list_ch_5_WSTRB), - .m_axi_WVALID(m_axi_edge_list_ch_5_WVALID), - .read_addr_din(edge_list_ch_5_read_addr__din), - .read_addr_full_n(edge_list_ch_5_read_addr__full_n), - .read_addr_write(edge_list_ch_5_read_addr__write), - .read_data_dout(edge_list_ch_5_read_data__dout), - .read_data_empty_n(edge_list_ch_5_read_data__empty_n), - .read_data_read(edge_list_ch_5_read_data__read), - .write_addr_din(edge_list_ch_5_write_addr__din), - .write_addr_full_n(edge_list_ch_5_write_addr__full_n), - .write_addr_write(edge_list_ch_5_write_addr__write), - .write_data_din(edge_list_ch_5_write_data__din), - .write_data_full_n(edge_list_ch_5_write_data__full_n), - .write_data_write(edge_list_ch_5_write_data__write), - .write_resp_dout(edge_list_ch_5_write_resp__dout), - .write_resp_empty_n(edge_list_ch_5_write_resp__empty_n), - .write_resp_read(edge_list_ch_5_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - edge_list_ch_6__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_A_6___edge_list_ch_6__q0), - .m_axi_ARADDR(m_axi_edge_list_ch_6_ARADDR), - .m_axi_ARBURST(m_axi_edge_list_ch_6_ARBURST), - .m_axi_ARCACHE(m_axi_edge_list_ch_6_ARCACHE), - .m_axi_ARID(m_axi_edge_list_ch_6_ARID), - .m_axi_ARLEN(m_axi_edge_list_ch_6_ARLEN), - .m_axi_ARLOCK(m_axi_edge_list_ch_6_ARLOCK), - .m_axi_ARPROT(m_axi_edge_list_ch_6_ARPROT), - .m_axi_ARQOS(m_axi_edge_list_ch_6_ARQOS), - .m_axi_ARREADY(m_axi_edge_list_ch_6_ARREADY), - .m_axi_ARSIZE(m_axi_edge_list_ch_6_ARSIZE), - .m_axi_ARVALID(m_axi_edge_list_ch_6_ARVALID), - .m_axi_AWADDR(m_axi_edge_list_ch_6_AWADDR), - .m_axi_AWBURST(m_axi_edge_list_ch_6_AWBURST), - .m_axi_AWCACHE(m_axi_edge_list_ch_6_AWCACHE), - .m_axi_AWID(m_axi_edge_list_ch_6_AWID), - .m_axi_AWLEN(m_axi_edge_list_ch_6_AWLEN), - .m_axi_AWLOCK(m_axi_edge_list_ch_6_AWLOCK), - .m_axi_AWPROT(m_axi_edge_list_ch_6_AWPROT), - .m_axi_AWQOS(m_axi_edge_list_ch_6_AWQOS), - .m_axi_AWREADY(m_axi_edge_list_ch_6_AWREADY), - .m_axi_AWSIZE(m_axi_edge_list_ch_6_AWSIZE), - .m_axi_AWVALID(m_axi_edge_list_ch_6_AWVALID), - .m_axi_BID(m_axi_edge_list_ch_6_BID), - .m_axi_BREADY(m_axi_edge_list_ch_6_BREADY), - .m_axi_BRESP(m_axi_edge_list_ch_6_BRESP), - .m_axi_BVALID(m_axi_edge_list_ch_6_BVALID), - .m_axi_RDATA(m_axi_edge_list_ch_6_RDATA), - .m_axi_RID(m_axi_edge_list_ch_6_RID), - .m_axi_RLAST(m_axi_edge_list_ch_6_RLAST), - .m_axi_RREADY(m_axi_edge_list_ch_6_RREADY), - .m_axi_RRESP(m_axi_edge_list_ch_6_RRESP), - .m_axi_RVALID(m_axi_edge_list_ch_6_RVALID), - .m_axi_WDATA(m_axi_edge_list_ch_6_WDATA), - .m_axi_WLAST(m_axi_edge_list_ch_6_WLAST), - .m_axi_WREADY(m_axi_edge_list_ch_6_WREADY), - .m_axi_WSTRB(m_axi_edge_list_ch_6_WSTRB), - .m_axi_WVALID(m_axi_edge_list_ch_6_WVALID), - .read_addr_din(edge_list_ch_6_read_addr__din), - .read_addr_full_n(edge_list_ch_6_read_addr__full_n), - .read_addr_write(edge_list_ch_6_read_addr__write), - .read_data_dout(edge_list_ch_6_read_data__dout), - .read_data_empty_n(edge_list_ch_6_read_data__empty_n), - .read_data_read(edge_list_ch_6_read_data__read), - .write_addr_din(edge_list_ch_6_write_addr__din), - .write_addr_full_n(edge_list_ch_6_write_addr__full_n), - .write_addr_write(edge_list_ch_6_write_addr__write), - .write_data_din(edge_list_ch_6_write_data__din), - .write_data_full_n(edge_list_ch_6_write_data__full_n), - .write_data_write(edge_list_ch_6_write_data__write), - .write_resp_dout(edge_list_ch_6_write_resp__dout), - .write_resp_empty_n(edge_list_ch_6_write_resp__empty_n), - .write_resp_read(edge_list_ch_6_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - edge_list_ch_7__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_A_7___edge_list_ch_7__q0), - .m_axi_ARADDR(m_axi_edge_list_ch_7_ARADDR), - .m_axi_ARBURST(m_axi_edge_list_ch_7_ARBURST), - .m_axi_ARCACHE(m_axi_edge_list_ch_7_ARCACHE), - .m_axi_ARID(m_axi_edge_list_ch_7_ARID), - .m_axi_ARLEN(m_axi_edge_list_ch_7_ARLEN), - .m_axi_ARLOCK(m_axi_edge_list_ch_7_ARLOCK), - .m_axi_ARPROT(m_axi_edge_list_ch_7_ARPROT), - .m_axi_ARQOS(m_axi_edge_list_ch_7_ARQOS), - .m_axi_ARREADY(m_axi_edge_list_ch_7_ARREADY), - .m_axi_ARSIZE(m_axi_edge_list_ch_7_ARSIZE), - .m_axi_ARVALID(m_axi_edge_list_ch_7_ARVALID), - .m_axi_AWADDR(m_axi_edge_list_ch_7_AWADDR), - .m_axi_AWBURST(m_axi_edge_list_ch_7_AWBURST), - .m_axi_AWCACHE(m_axi_edge_list_ch_7_AWCACHE), - .m_axi_AWID(m_axi_edge_list_ch_7_AWID), - .m_axi_AWLEN(m_axi_edge_list_ch_7_AWLEN), - .m_axi_AWLOCK(m_axi_edge_list_ch_7_AWLOCK), - .m_axi_AWPROT(m_axi_edge_list_ch_7_AWPROT), - .m_axi_AWQOS(m_axi_edge_list_ch_7_AWQOS), - .m_axi_AWREADY(m_axi_edge_list_ch_7_AWREADY), - .m_axi_AWSIZE(m_axi_edge_list_ch_7_AWSIZE), - .m_axi_AWVALID(m_axi_edge_list_ch_7_AWVALID), - .m_axi_BID(m_axi_edge_list_ch_7_BID), - .m_axi_BREADY(m_axi_edge_list_ch_7_BREADY), - .m_axi_BRESP(m_axi_edge_list_ch_7_BRESP), - .m_axi_BVALID(m_axi_edge_list_ch_7_BVALID), - .m_axi_RDATA(m_axi_edge_list_ch_7_RDATA), - .m_axi_RID(m_axi_edge_list_ch_7_RID), - .m_axi_RLAST(m_axi_edge_list_ch_7_RLAST), - .m_axi_RREADY(m_axi_edge_list_ch_7_RREADY), - .m_axi_RRESP(m_axi_edge_list_ch_7_RRESP), - .m_axi_RVALID(m_axi_edge_list_ch_7_RVALID), - .m_axi_WDATA(m_axi_edge_list_ch_7_WDATA), - .m_axi_WLAST(m_axi_edge_list_ch_7_WLAST), - .m_axi_WREADY(m_axi_edge_list_ch_7_WREADY), - .m_axi_WSTRB(m_axi_edge_list_ch_7_WSTRB), - .m_axi_WVALID(m_axi_edge_list_ch_7_WVALID), - .read_addr_din(edge_list_ch_7_read_addr__din), - .read_addr_full_n(edge_list_ch_7_read_addr__full_n), - .read_addr_write(edge_list_ch_7_read_addr__write), - .read_data_dout(edge_list_ch_7_read_data__dout), - .read_data_empty_n(edge_list_ch_7_read_data__empty_n), - .read_data_read(edge_list_ch_7_read_data__read), - .write_addr_din(edge_list_ch_7_write_addr__din), - .write_addr_full_n(edge_list_ch_7_write_addr__full_n), - .write_addr_write(edge_list_ch_7_write_addr__write), - .write_data_din(edge_list_ch_7_write_data__din), - .write_data_full_n(edge_list_ch_7_write_data__full_n), - .write_data_write(edge_list_ch_7_write_data__write), - .write_resp_dout(edge_list_ch_7_write_resp__dout), - .write_resp_empty_n(edge_list_ch_7_write_resp__empty_n), - .write_resp_read(edge_list_ch_7_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_B_ch_0__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_B_0___mat_B_ch_0__q0), - .m_axi_ARADDR(m_axi_mat_B_ch_0_ARADDR), - .m_axi_ARBURST(m_axi_mat_B_ch_0_ARBURST), - .m_axi_ARCACHE(m_axi_mat_B_ch_0_ARCACHE), - .m_axi_ARID(m_axi_mat_B_ch_0_ARID), - .m_axi_ARLEN(m_axi_mat_B_ch_0_ARLEN), - .m_axi_ARLOCK(m_axi_mat_B_ch_0_ARLOCK), - .m_axi_ARPROT(m_axi_mat_B_ch_0_ARPROT), - .m_axi_ARQOS(m_axi_mat_B_ch_0_ARQOS), - .m_axi_ARREADY(m_axi_mat_B_ch_0_ARREADY), - .m_axi_ARSIZE(m_axi_mat_B_ch_0_ARSIZE), - .m_axi_ARVALID(m_axi_mat_B_ch_0_ARVALID), - .m_axi_AWADDR(m_axi_mat_B_ch_0_AWADDR), - .m_axi_AWBURST(m_axi_mat_B_ch_0_AWBURST), - .m_axi_AWCACHE(m_axi_mat_B_ch_0_AWCACHE), - .m_axi_AWID(m_axi_mat_B_ch_0_AWID), - .m_axi_AWLEN(m_axi_mat_B_ch_0_AWLEN), - .m_axi_AWLOCK(m_axi_mat_B_ch_0_AWLOCK), - .m_axi_AWPROT(m_axi_mat_B_ch_0_AWPROT), - .m_axi_AWQOS(m_axi_mat_B_ch_0_AWQOS), - .m_axi_AWREADY(m_axi_mat_B_ch_0_AWREADY), - .m_axi_AWSIZE(m_axi_mat_B_ch_0_AWSIZE), - .m_axi_AWVALID(m_axi_mat_B_ch_0_AWVALID), - .m_axi_BID(m_axi_mat_B_ch_0_BID), - .m_axi_BREADY(m_axi_mat_B_ch_0_BREADY), - .m_axi_BRESP(m_axi_mat_B_ch_0_BRESP), - .m_axi_BVALID(m_axi_mat_B_ch_0_BVALID), - .m_axi_RDATA(m_axi_mat_B_ch_0_RDATA), - .m_axi_RID(m_axi_mat_B_ch_0_RID), - .m_axi_RLAST(m_axi_mat_B_ch_0_RLAST), - .m_axi_RREADY(m_axi_mat_B_ch_0_RREADY), - .m_axi_RRESP(m_axi_mat_B_ch_0_RRESP), - .m_axi_RVALID(m_axi_mat_B_ch_0_RVALID), - .m_axi_WDATA(m_axi_mat_B_ch_0_WDATA), - .m_axi_WLAST(m_axi_mat_B_ch_0_WLAST), - .m_axi_WREADY(m_axi_mat_B_ch_0_WREADY), - .m_axi_WSTRB(m_axi_mat_B_ch_0_WSTRB), - .m_axi_WVALID(m_axi_mat_B_ch_0_WVALID), - .read_addr_din(mat_B_ch_0_read_addr__din), - .read_addr_full_n(mat_B_ch_0_read_addr__full_n), - .read_addr_write(mat_B_ch_0_read_addr__write), - .read_data_dout(mat_B_ch_0_read_data__dout), - .read_data_empty_n(mat_B_ch_0_read_data__empty_n), - .read_data_read(mat_B_ch_0_read_data__read), - .write_addr_din(mat_B_ch_0_write_addr__din), - .write_addr_full_n(mat_B_ch_0_write_addr__full_n), - .write_addr_write(mat_B_ch_0_write_addr__write), - .write_data_din(mat_B_ch_0_write_data__din), - .write_data_full_n(mat_B_ch_0_write_data__full_n), - .write_data_write(mat_B_ch_0_write_data__write), - .write_resp_dout(mat_B_ch_0_write_resp__dout), - .write_resp_empty_n(mat_B_ch_0_write_resp__empty_n), - .write_resp_read(mat_B_ch_0_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_B_ch_1__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_B_1___mat_B_ch_1__q0), - .m_axi_ARADDR(m_axi_mat_B_ch_1_ARADDR), - .m_axi_ARBURST(m_axi_mat_B_ch_1_ARBURST), - .m_axi_ARCACHE(m_axi_mat_B_ch_1_ARCACHE), - .m_axi_ARID(m_axi_mat_B_ch_1_ARID), - .m_axi_ARLEN(m_axi_mat_B_ch_1_ARLEN), - .m_axi_ARLOCK(m_axi_mat_B_ch_1_ARLOCK), - .m_axi_ARPROT(m_axi_mat_B_ch_1_ARPROT), - .m_axi_ARQOS(m_axi_mat_B_ch_1_ARQOS), - .m_axi_ARREADY(m_axi_mat_B_ch_1_ARREADY), - .m_axi_ARSIZE(m_axi_mat_B_ch_1_ARSIZE), - .m_axi_ARVALID(m_axi_mat_B_ch_1_ARVALID), - .m_axi_AWADDR(m_axi_mat_B_ch_1_AWADDR), - .m_axi_AWBURST(m_axi_mat_B_ch_1_AWBURST), - .m_axi_AWCACHE(m_axi_mat_B_ch_1_AWCACHE), - .m_axi_AWID(m_axi_mat_B_ch_1_AWID), - .m_axi_AWLEN(m_axi_mat_B_ch_1_AWLEN), - .m_axi_AWLOCK(m_axi_mat_B_ch_1_AWLOCK), - .m_axi_AWPROT(m_axi_mat_B_ch_1_AWPROT), - .m_axi_AWQOS(m_axi_mat_B_ch_1_AWQOS), - .m_axi_AWREADY(m_axi_mat_B_ch_1_AWREADY), - .m_axi_AWSIZE(m_axi_mat_B_ch_1_AWSIZE), - .m_axi_AWVALID(m_axi_mat_B_ch_1_AWVALID), - .m_axi_BID(m_axi_mat_B_ch_1_BID), - .m_axi_BREADY(m_axi_mat_B_ch_1_BREADY), - .m_axi_BRESP(m_axi_mat_B_ch_1_BRESP), - .m_axi_BVALID(m_axi_mat_B_ch_1_BVALID), - .m_axi_RDATA(m_axi_mat_B_ch_1_RDATA), - .m_axi_RID(m_axi_mat_B_ch_1_RID), - .m_axi_RLAST(m_axi_mat_B_ch_1_RLAST), - .m_axi_RREADY(m_axi_mat_B_ch_1_RREADY), - .m_axi_RRESP(m_axi_mat_B_ch_1_RRESP), - .m_axi_RVALID(m_axi_mat_B_ch_1_RVALID), - .m_axi_WDATA(m_axi_mat_B_ch_1_WDATA), - .m_axi_WLAST(m_axi_mat_B_ch_1_WLAST), - .m_axi_WREADY(m_axi_mat_B_ch_1_WREADY), - .m_axi_WSTRB(m_axi_mat_B_ch_1_WSTRB), - .m_axi_WVALID(m_axi_mat_B_ch_1_WVALID), - .read_addr_din(mat_B_ch_1_read_addr__din), - .read_addr_full_n(mat_B_ch_1_read_addr__full_n), - .read_addr_write(mat_B_ch_1_read_addr__write), - .read_data_dout(mat_B_ch_1_read_data__dout), - .read_data_empty_n(mat_B_ch_1_read_data__empty_n), - .read_data_read(mat_B_ch_1_read_data__read), - .write_addr_din(mat_B_ch_1_write_addr__din), - .write_addr_full_n(mat_B_ch_1_write_addr__full_n), - .write_addr_write(mat_B_ch_1_write_addr__write), - .write_data_din(mat_B_ch_1_write_data__din), - .write_data_full_n(mat_B_ch_1_write_data__full_n), - .write_data_write(mat_B_ch_1_write_data__write), - .write_resp_dout(mat_B_ch_1_write_resp__dout), - .write_resp_empty_n(mat_B_ch_1_write_resp__empty_n), - .write_resp_read(mat_B_ch_1_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_B_ch_2__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_B_2___mat_B_ch_2__q0), - .m_axi_ARADDR(m_axi_mat_B_ch_2_ARADDR), - .m_axi_ARBURST(m_axi_mat_B_ch_2_ARBURST), - .m_axi_ARCACHE(m_axi_mat_B_ch_2_ARCACHE), - .m_axi_ARID(m_axi_mat_B_ch_2_ARID), - .m_axi_ARLEN(m_axi_mat_B_ch_2_ARLEN), - .m_axi_ARLOCK(m_axi_mat_B_ch_2_ARLOCK), - .m_axi_ARPROT(m_axi_mat_B_ch_2_ARPROT), - .m_axi_ARQOS(m_axi_mat_B_ch_2_ARQOS), - .m_axi_ARREADY(m_axi_mat_B_ch_2_ARREADY), - .m_axi_ARSIZE(m_axi_mat_B_ch_2_ARSIZE), - .m_axi_ARVALID(m_axi_mat_B_ch_2_ARVALID), - .m_axi_AWADDR(m_axi_mat_B_ch_2_AWADDR), - .m_axi_AWBURST(m_axi_mat_B_ch_2_AWBURST), - .m_axi_AWCACHE(m_axi_mat_B_ch_2_AWCACHE), - .m_axi_AWID(m_axi_mat_B_ch_2_AWID), - .m_axi_AWLEN(m_axi_mat_B_ch_2_AWLEN), - .m_axi_AWLOCK(m_axi_mat_B_ch_2_AWLOCK), - .m_axi_AWPROT(m_axi_mat_B_ch_2_AWPROT), - .m_axi_AWQOS(m_axi_mat_B_ch_2_AWQOS), - .m_axi_AWREADY(m_axi_mat_B_ch_2_AWREADY), - .m_axi_AWSIZE(m_axi_mat_B_ch_2_AWSIZE), - .m_axi_AWVALID(m_axi_mat_B_ch_2_AWVALID), - .m_axi_BID(m_axi_mat_B_ch_2_BID), - .m_axi_BREADY(m_axi_mat_B_ch_2_BREADY), - .m_axi_BRESP(m_axi_mat_B_ch_2_BRESP), - .m_axi_BVALID(m_axi_mat_B_ch_2_BVALID), - .m_axi_RDATA(m_axi_mat_B_ch_2_RDATA), - .m_axi_RID(m_axi_mat_B_ch_2_RID), - .m_axi_RLAST(m_axi_mat_B_ch_2_RLAST), - .m_axi_RREADY(m_axi_mat_B_ch_2_RREADY), - .m_axi_RRESP(m_axi_mat_B_ch_2_RRESP), - .m_axi_RVALID(m_axi_mat_B_ch_2_RVALID), - .m_axi_WDATA(m_axi_mat_B_ch_2_WDATA), - .m_axi_WLAST(m_axi_mat_B_ch_2_WLAST), - .m_axi_WREADY(m_axi_mat_B_ch_2_WREADY), - .m_axi_WSTRB(m_axi_mat_B_ch_2_WSTRB), - .m_axi_WVALID(m_axi_mat_B_ch_2_WVALID), - .read_addr_din(mat_B_ch_2_read_addr__din), - .read_addr_full_n(mat_B_ch_2_read_addr__full_n), - .read_addr_write(mat_B_ch_2_read_addr__write), - .read_data_dout(mat_B_ch_2_read_data__dout), - .read_data_empty_n(mat_B_ch_2_read_data__empty_n), - .read_data_read(mat_B_ch_2_read_data__read), - .write_addr_din(mat_B_ch_2_write_addr__din), - .write_addr_full_n(mat_B_ch_2_write_addr__full_n), - .write_addr_write(mat_B_ch_2_write_addr__write), - .write_data_din(mat_B_ch_2_write_data__din), - .write_data_full_n(mat_B_ch_2_write_data__full_n), - .write_data_write(mat_B_ch_2_write_data__write), - .write_resp_dout(mat_B_ch_2_write_resp__dout), - .write_resp_empty_n(mat_B_ch_2_write_resp__empty_n), - .write_resp_read(mat_B_ch_2_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_B_ch_3__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_B_3___mat_B_ch_3__q0), - .m_axi_ARADDR(m_axi_mat_B_ch_3_ARADDR), - .m_axi_ARBURST(m_axi_mat_B_ch_3_ARBURST), - .m_axi_ARCACHE(m_axi_mat_B_ch_3_ARCACHE), - .m_axi_ARID(m_axi_mat_B_ch_3_ARID), - .m_axi_ARLEN(m_axi_mat_B_ch_3_ARLEN), - .m_axi_ARLOCK(m_axi_mat_B_ch_3_ARLOCK), - .m_axi_ARPROT(m_axi_mat_B_ch_3_ARPROT), - .m_axi_ARQOS(m_axi_mat_B_ch_3_ARQOS), - .m_axi_ARREADY(m_axi_mat_B_ch_3_ARREADY), - .m_axi_ARSIZE(m_axi_mat_B_ch_3_ARSIZE), - .m_axi_ARVALID(m_axi_mat_B_ch_3_ARVALID), - .m_axi_AWADDR(m_axi_mat_B_ch_3_AWADDR), - .m_axi_AWBURST(m_axi_mat_B_ch_3_AWBURST), - .m_axi_AWCACHE(m_axi_mat_B_ch_3_AWCACHE), - .m_axi_AWID(m_axi_mat_B_ch_3_AWID), - .m_axi_AWLEN(m_axi_mat_B_ch_3_AWLEN), - .m_axi_AWLOCK(m_axi_mat_B_ch_3_AWLOCK), - .m_axi_AWPROT(m_axi_mat_B_ch_3_AWPROT), - .m_axi_AWQOS(m_axi_mat_B_ch_3_AWQOS), - .m_axi_AWREADY(m_axi_mat_B_ch_3_AWREADY), - .m_axi_AWSIZE(m_axi_mat_B_ch_3_AWSIZE), - .m_axi_AWVALID(m_axi_mat_B_ch_3_AWVALID), - .m_axi_BID(m_axi_mat_B_ch_3_BID), - .m_axi_BREADY(m_axi_mat_B_ch_3_BREADY), - .m_axi_BRESP(m_axi_mat_B_ch_3_BRESP), - .m_axi_BVALID(m_axi_mat_B_ch_3_BVALID), - .m_axi_RDATA(m_axi_mat_B_ch_3_RDATA), - .m_axi_RID(m_axi_mat_B_ch_3_RID), - .m_axi_RLAST(m_axi_mat_B_ch_3_RLAST), - .m_axi_RREADY(m_axi_mat_B_ch_3_RREADY), - .m_axi_RRESP(m_axi_mat_B_ch_3_RRESP), - .m_axi_RVALID(m_axi_mat_B_ch_3_RVALID), - .m_axi_WDATA(m_axi_mat_B_ch_3_WDATA), - .m_axi_WLAST(m_axi_mat_B_ch_3_WLAST), - .m_axi_WREADY(m_axi_mat_B_ch_3_WREADY), - .m_axi_WSTRB(m_axi_mat_B_ch_3_WSTRB), - .m_axi_WVALID(m_axi_mat_B_ch_3_WVALID), - .read_addr_din(mat_B_ch_3_read_addr__din), - .read_addr_full_n(mat_B_ch_3_read_addr__full_n), - .read_addr_write(mat_B_ch_3_read_addr__write), - .read_data_dout(mat_B_ch_3_read_data__dout), - .read_data_empty_n(mat_B_ch_3_read_data__empty_n), - .read_data_read(mat_B_ch_3_read_data__read), - .write_addr_din(mat_B_ch_3_write_addr__din), - .write_addr_full_n(mat_B_ch_3_write_addr__full_n), - .write_addr_write(mat_B_ch_3_write_addr__write), - .write_data_din(mat_B_ch_3_write_data__din), - .write_data_full_n(mat_B_ch_3_write_data__full_n), - .write_data_write(mat_B_ch_3_write_data__write), - .write_resp_dout(mat_B_ch_3_write_resp__dout), - .write_resp_empty_n(mat_B_ch_3_write_resp__empty_n), - .write_resp_read(mat_B_ch_3_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_in_0__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_C_0___mat_C_ch_in_0__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_in_0_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_in_0_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_in_0_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_in_0_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_in_0_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_in_0_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_in_0_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_in_0_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_in_0_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_in_0_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_in_0_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_in_0_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_in_0_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_in_0_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_in_0_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_in_0_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_in_0_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_in_0_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_in_0_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_in_0_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_in_0_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_in_0_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_in_0_BID), - .m_axi_BREADY(m_axi_mat_C_ch_in_0_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_in_0_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_in_0_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_in_0_RDATA), - .m_axi_RID(m_axi_mat_C_ch_in_0_RID), - .m_axi_RLAST(m_axi_mat_C_ch_in_0_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_in_0_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_in_0_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_in_0_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_in_0_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_in_0_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_in_0_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_in_0_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_in_0_WVALID), - .read_addr_din(mat_C_ch_in_0_read_addr__din), - .read_addr_full_n(mat_C_ch_in_0_read_addr__full_n), - .read_addr_write(mat_C_ch_in_0_read_addr__write), - .read_data_dout(mat_C_ch_in_0_read_data__dout), - .read_data_empty_n(mat_C_ch_in_0_read_data__empty_n), - .read_data_read(mat_C_ch_in_0_read_data__read), - .write_addr_din(mat_C_ch_in_0_write_addr__din), - .write_addr_full_n(mat_C_ch_in_0_write_addr__full_n), - .write_addr_write(mat_C_ch_in_0_write_addr__write), - .write_data_din(mat_C_ch_in_0_write_data__din), - .write_data_full_n(mat_C_ch_in_0_write_data__full_n), - .write_data_write(mat_C_ch_in_0_write_data__write), - .write_resp_dout(mat_C_ch_in_0_write_resp__dout), - .write_resp_empty_n(mat_C_ch_in_0_write_resp__empty_n), - .write_resp_read(mat_C_ch_in_0_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_in_1__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_C_1___mat_C_ch_in_1__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_in_1_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_in_1_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_in_1_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_in_1_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_in_1_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_in_1_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_in_1_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_in_1_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_in_1_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_in_1_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_in_1_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_in_1_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_in_1_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_in_1_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_in_1_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_in_1_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_in_1_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_in_1_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_in_1_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_in_1_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_in_1_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_in_1_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_in_1_BID), - .m_axi_BREADY(m_axi_mat_C_ch_in_1_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_in_1_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_in_1_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_in_1_RDATA), - .m_axi_RID(m_axi_mat_C_ch_in_1_RID), - .m_axi_RLAST(m_axi_mat_C_ch_in_1_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_in_1_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_in_1_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_in_1_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_in_1_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_in_1_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_in_1_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_in_1_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_in_1_WVALID), - .read_addr_din(mat_C_ch_in_1_read_addr__din), - .read_addr_full_n(mat_C_ch_in_1_read_addr__full_n), - .read_addr_write(mat_C_ch_in_1_read_addr__write), - .read_data_dout(mat_C_ch_in_1_read_data__dout), - .read_data_empty_n(mat_C_ch_in_1_read_data__empty_n), - .read_data_read(mat_C_ch_in_1_read_data__read), - .write_addr_din(mat_C_ch_in_1_write_addr__din), - .write_addr_full_n(mat_C_ch_in_1_write_addr__full_n), - .write_addr_write(mat_C_ch_in_1_write_addr__write), - .write_data_din(mat_C_ch_in_1_write_data__din), - .write_data_full_n(mat_C_ch_in_1_write_data__full_n), - .write_data_write(mat_C_ch_in_1_write_data__write), - .write_resp_dout(mat_C_ch_in_1_write_resp__dout), - .write_resp_empty_n(mat_C_ch_in_1_write_resp__empty_n), - .write_resp_read(mat_C_ch_in_1_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_in_2__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_C_2___mat_C_ch_in_2__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_in_2_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_in_2_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_in_2_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_in_2_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_in_2_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_in_2_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_in_2_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_in_2_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_in_2_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_in_2_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_in_2_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_in_2_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_in_2_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_in_2_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_in_2_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_in_2_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_in_2_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_in_2_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_in_2_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_in_2_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_in_2_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_in_2_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_in_2_BID), - .m_axi_BREADY(m_axi_mat_C_ch_in_2_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_in_2_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_in_2_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_in_2_RDATA), - .m_axi_RID(m_axi_mat_C_ch_in_2_RID), - .m_axi_RLAST(m_axi_mat_C_ch_in_2_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_in_2_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_in_2_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_in_2_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_in_2_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_in_2_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_in_2_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_in_2_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_in_2_WVALID), - .read_addr_din(mat_C_ch_in_2_read_addr__din), - .read_addr_full_n(mat_C_ch_in_2_read_addr__full_n), - .read_addr_write(mat_C_ch_in_2_read_addr__write), - .read_data_dout(mat_C_ch_in_2_read_data__dout), - .read_data_empty_n(mat_C_ch_in_2_read_data__empty_n), - .read_data_read(mat_C_ch_in_2_read_data__read), - .write_addr_din(mat_C_ch_in_2_write_addr__din), - .write_addr_full_n(mat_C_ch_in_2_write_addr__full_n), - .write_addr_write(mat_C_ch_in_2_write_addr__write), - .write_data_din(mat_C_ch_in_2_write_data__din), - .write_data_full_n(mat_C_ch_in_2_write_data__full_n), - .write_data_write(mat_C_ch_in_2_write_data__write), - .write_resp_dout(mat_C_ch_in_2_write_resp__dout), - .write_resp_empty_n(mat_C_ch_in_2_write_resp__empty_n), - .write_resp_read(mat_C_ch_in_2_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_in_3__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_C_3___mat_C_ch_in_3__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_in_3_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_in_3_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_in_3_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_in_3_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_in_3_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_in_3_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_in_3_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_in_3_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_in_3_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_in_3_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_in_3_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_in_3_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_in_3_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_in_3_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_in_3_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_in_3_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_in_3_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_in_3_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_in_3_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_in_3_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_in_3_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_in_3_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_in_3_BID), - .m_axi_BREADY(m_axi_mat_C_ch_in_3_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_in_3_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_in_3_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_in_3_RDATA), - .m_axi_RID(m_axi_mat_C_ch_in_3_RID), - .m_axi_RLAST(m_axi_mat_C_ch_in_3_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_in_3_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_in_3_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_in_3_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_in_3_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_in_3_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_in_3_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_in_3_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_in_3_WVALID), - .read_addr_din(mat_C_ch_in_3_read_addr__din), - .read_addr_full_n(mat_C_ch_in_3_read_addr__full_n), - .read_addr_write(mat_C_ch_in_3_read_addr__write), - .read_data_dout(mat_C_ch_in_3_read_data__dout), - .read_data_empty_n(mat_C_ch_in_3_read_data__empty_n), - .read_data_read(mat_C_ch_in_3_read_data__read), - .write_addr_din(mat_C_ch_in_3_write_addr__din), - .write_addr_full_n(mat_C_ch_in_3_write_addr__full_n), - .write_addr_write(mat_C_ch_in_3_write_addr__write), - .write_data_din(mat_C_ch_in_3_write_data__din), - .write_data_full_n(mat_C_ch_in_3_write_data__full_n), - .write_data_write(mat_C_ch_in_3_write_data__write), - .write_resp_dout(mat_C_ch_in_3_write_resp__dout), - .write_resp_empty_n(mat_C_ch_in_3_write_resp__empty_n), - .write_resp_read(mat_C_ch_in_3_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_in_4__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_C_4___mat_C_ch_in_4__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_in_4_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_in_4_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_in_4_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_in_4_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_in_4_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_in_4_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_in_4_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_in_4_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_in_4_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_in_4_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_in_4_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_in_4_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_in_4_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_in_4_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_in_4_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_in_4_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_in_4_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_in_4_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_in_4_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_in_4_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_in_4_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_in_4_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_in_4_BID), - .m_axi_BREADY(m_axi_mat_C_ch_in_4_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_in_4_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_in_4_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_in_4_RDATA), - .m_axi_RID(m_axi_mat_C_ch_in_4_RID), - .m_axi_RLAST(m_axi_mat_C_ch_in_4_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_in_4_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_in_4_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_in_4_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_in_4_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_in_4_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_in_4_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_in_4_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_in_4_WVALID), - .read_addr_din(mat_C_ch_in_4_read_addr__din), - .read_addr_full_n(mat_C_ch_in_4_read_addr__full_n), - .read_addr_write(mat_C_ch_in_4_read_addr__write), - .read_data_dout(mat_C_ch_in_4_read_data__dout), - .read_data_empty_n(mat_C_ch_in_4_read_data__empty_n), - .read_data_read(mat_C_ch_in_4_read_data__read), - .write_addr_din(mat_C_ch_in_4_write_addr__din), - .write_addr_full_n(mat_C_ch_in_4_write_addr__full_n), - .write_addr_write(mat_C_ch_in_4_write_addr__write), - .write_data_din(mat_C_ch_in_4_write_data__din), - .write_data_full_n(mat_C_ch_in_4_write_data__full_n), - .write_data_write(mat_C_ch_in_4_write_data__write), - .write_resp_dout(mat_C_ch_in_4_write_resp__dout), - .write_resp_empty_n(mat_C_ch_in_4_write_resp__empty_n), - .write_resp_read(mat_C_ch_in_4_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_in_5__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_C_5___mat_C_ch_in_5__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_in_5_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_in_5_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_in_5_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_in_5_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_in_5_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_in_5_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_in_5_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_in_5_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_in_5_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_in_5_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_in_5_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_in_5_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_in_5_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_in_5_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_in_5_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_in_5_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_in_5_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_in_5_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_in_5_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_in_5_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_in_5_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_in_5_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_in_5_BID), - .m_axi_BREADY(m_axi_mat_C_ch_in_5_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_in_5_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_in_5_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_in_5_RDATA), - .m_axi_RID(m_axi_mat_C_ch_in_5_RID), - .m_axi_RLAST(m_axi_mat_C_ch_in_5_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_in_5_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_in_5_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_in_5_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_in_5_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_in_5_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_in_5_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_in_5_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_in_5_WVALID), - .read_addr_din(mat_C_ch_in_5_read_addr__din), - .read_addr_full_n(mat_C_ch_in_5_read_addr__full_n), - .read_addr_write(mat_C_ch_in_5_read_addr__write), - .read_data_dout(mat_C_ch_in_5_read_data__dout), - .read_data_empty_n(mat_C_ch_in_5_read_data__empty_n), - .read_data_read(mat_C_ch_in_5_read_data__read), - .write_addr_din(mat_C_ch_in_5_write_addr__din), - .write_addr_full_n(mat_C_ch_in_5_write_addr__full_n), - .write_addr_write(mat_C_ch_in_5_write_addr__write), - .write_data_din(mat_C_ch_in_5_write_data__din), - .write_data_full_n(mat_C_ch_in_5_write_data__full_n), - .write_data_write(mat_C_ch_in_5_write_data__write), - .write_resp_dout(mat_C_ch_in_5_write_resp__dout), - .write_resp_empty_n(mat_C_ch_in_5_write_resp__empty_n), - .write_resp_read(mat_C_ch_in_5_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_in_6__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_C_6___mat_C_ch_in_6__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_in_6_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_in_6_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_in_6_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_in_6_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_in_6_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_in_6_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_in_6_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_in_6_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_in_6_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_in_6_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_in_6_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_in_6_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_in_6_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_in_6_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_in_6_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_in_6_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_in_6_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_in_6_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_in_6_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_in_6_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_in_6_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_in_6_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_in_6_BID), - .m_axi_BREADY(m_axi_mat_C_ch_in_6_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_in_6_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_in_6_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_in_6_RDATA), - .m_axi_RID(m_axi_mat_C_ch_in_6_RID), - .m_axi_RLAST(m_axi_mat_C_ch_in_6_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_in_6_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_in_6_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_in_6_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_in_6_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_in_6_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_in_6_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_in_6_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_in_6_WVALID), - .read_addr_din(mat_C_ch_in_6_read_addr__din), - .read_addr_full_n(mat_C_ch_in_6_read_addr__full_n), - .read_addr_write(mat_C_ch_in_6_read_addr__write), - .read_data_dout(mat_C_ch_in_6_read_data__dout), - .read_data_empty_n(mat_C_ch_in_6_read_data__empty_n), - .read_data_read(mat_C_ch_in_6_read_data__read), - .write_addr_din(mat_C_ch_in_6_write_addr__din), - .write_addr_full_n(mat_C_ch_in_6_write_addr__full_n), - .write_addr_write(mat_C_ch_in_6_write_addr__write), - .write_data_din(mat_C_ch_in_6_write_data__din), - .write_data_full_n(mat_C_ch_in_6_write_data__full_n), - .write_data_write(mat_C_ch_in_6_write_data__write), - .write_resp_dout(mat_C_ch_in_6_write_resp__dout), - .write_resp_empty_n(mat_C_ch_in_6_write_resp__empty_n), - .write_resp_read(mat_C_ch_in_6_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_in_7__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_C_7___mat_C_ch_in_7__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_in_7_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_in_7_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_in_7_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_in_7_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_in_7_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_in_7_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_in_7_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_in_7_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_in_7_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_in_7_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_in_7_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_in_7_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_in_7_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_in_7_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_in_7_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_in_7_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_in_7_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_in_7_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_in_7_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_in_7_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_in_7_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_in_7_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_in_7_BID), - .m_axi_BREADY(m_axi_mat_C_ch_in_7_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_in_7_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_in_7_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_in_7_RDATA), - .m_axi_RID(m_axi_mat_C_ch_in_7_RID), - .m_axi_RLAST(m_axi_mat_C_ch_in_7_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_in_7_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_in_7_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_in_7_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_in_7_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_in_7_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_in_7_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_in_7_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_in_7_WVALID), - .read_addr_din(mat_C_ch_in_7_read_addr__din), - .read_addr_full_n(mat_C_ch_in_7_read_addr__full_n), - .read_addr_write(mat_C_ch_in_7_read_addr__write), - .read_data_dout(mat_C_ch_in_7_read_data__dout), - .read_data_empty_n(mat_C_ch_in_7_read_data__empty_n), - .read_data_read(mat_C_ch_in_7_read_data__read), - .write_addr_din(mat_C_ch_in_7_write_addr__din), - .write_addr_full_n(mat_C_ch_in_7_write_addr__full_n), - .write_addr_write(mat_C_ch_in_7_write_addr__write), - .write_data_din(mat_C_ch_in_7_write_data__din), - .write_data_full_n(mat_C_ch_in_7_write_data__full_n), - .write_data_write(mat_C_ch_in_7_write_data__write), - .write_resp_dout(mat_C_ch_in_7_write_resp__dout), - .write_resp_empty_n(mat_C_ch_in_7_write_resp__empty_n), - .write_resp_read(mat_C_ch_in_7_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(32), - .DataWidthBytesLog(2), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(255) - ) - edge_list_ptr__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(read_edge_list_ptr_0___edge_list_ptr__q0), - .m_axi_ARADDR(m_axi_edge_list_ptr_ARADDR), - .m_axi_ARBURST(m_axi_edge_list_ptr_ARBURST), - .m_axi_ARCACHE(m_axi_edge_list_ptr_ARCACHE), - .m_axi_ARID(m_axi_edge_list_ptr_ARID), - .m_axi_ARLEN(m_axi_edge_list_ptr_ARLEN), - .m_axi_ARLOCK(m_axi_edge_list_ptr_ARLOCK), - .m_axi_ARPROT(m_axi_edge_list_ptr_ARPROT), - .m_axi_ARQOS(m_axi_edge_list_ptr_ARQOS), - .m_axi_ARREADY(m_axi_edge_list_ptr_ARREADY), - .m_axi_ARSIZE(m_axi_edge_list_ptr_ARSIZE), - .m_axi_ARVALID(m_axi_edge_list_ptr_ARVALID), - .m_axi_AWADDR(m_axi_edge_list_ptr_AWADDR), - .m_axi_AWBURST(m_axi_edge_list_ptr_AWBURST), - .m_axi_AWCACHE(m_axi_edge_list_ptr_AWCACHE), - .m_axi_AWID(m_axi_edge_list_ptr_AWID), - .m_axi_AWLEN(m_axi_edge_list_ptr_AWLEN), - .m_axi_AWLOCK(m_axi_edge_list_ptr_AWLOCK), - .m_axi_AWPROT(m_axi_edge_list_ptr_AWPROT), - .m_axi_AWQOS(m_axi_edge_list_ptr_AWQOS), - .m_axi_AWREADY(m_axi_edge_list_ptr_AWREADY), - .m_axi_AWSIZE(m_axi_edge_list_ptr_AWSIZE), - .m_axi_AWVALID(m_axi_edge_list_ptr_AWVALID), - .m_axi_BID(m_axi_edge_list_ptr_BID), - .m_axi_BREADY(m_axi_edge_list_ptr_BREADY), - .m_axi_BRESP(m_axi_edge_list_ptr_BRESP), - .m_axi_BVALID(m_axi_edge_list_ptr_BVALID), - .m_axi_RDATA(m_axi_edge_list_ptr_RDATA), - .m_axi_RID(m_axi_edge_list_ptr_RID), - .m_axi_RLAST(m_axi_edge_list_ptr_RLAST), - .m_axi_RREADY(m_axi_edge_list_ptr_RREADY), - .m_axi_RRESP(m_axi_edge_list_ptr_RRESP), - .m_axi_RVALID(m_axi_edge_list_ptr_RVALID), - .m_axi_WDATA(m_axi_edge_list_ptr_WDATA), - .m_axi_WLAST(m_axi_edge_list_ptr_WLAST), - .m_axi_WREADY(m_axi_edge_list_ptr_WREADY), - .m_axi_WSTRB(m_axi_edge_list_ptr_WSTRB), - .m_axi_WVALID(m_axi_edge_list_ptr_WVALID), - .read_addr_din(edge_list_ptr_read_addr__din), - .read_addr_full_n(edge_list_ptr_read_addr__full_n), - .read_addr_write(edge_list_ptr_read_addr__write), - .read_data_dout(edge_list_ptr_read_data__dout), - .read_data_empty_n(edge_list_ptr_read_data__empty_n), - .read_data_read(edge_list_ptr_read_data__read), - .write_addr_din(edge_list_ptr_write_addr__din), - .write_addr_full_n(edge_list_ptr_write_addr__full_n), - .write_addr_write(edge_list_ptr_write_addr__write), - .write_data_din(edge_list_ptr_write_data__din), - .write_data_full_n(edge_list_ptr_write_data__full_n), - .write_data_write(edge_list_ptr_write_data__write), - .write_resp_dout(edge_list_ptr_write_resp__dout), - .write_resp_empty_n(edge_list_ptr_write_resp__empty_n), - .write_resp_read(edge_list_ptr_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_0__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(write_C_0___mat_C_ch_0__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_0_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_0_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_0_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_0_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_0_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_0_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_0_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_0_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_0_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_0_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_0_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_0_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_0_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_0_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_0_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_0_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_0_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_0_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_0_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_0_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_0_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_0_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_0_BID), - .m_axi_BREADY(m_axi_mat_C_ch_0_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_0_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_0_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_0_RDATA), - .m_axi_RID(m_axi_mat_C_ch_0_RID), - .m_axi_RLAST(m_axi_mat_C_ch_0_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_0_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_0_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_0_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_0_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_0_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_0_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_0_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_0_WVALID), - .read_addr_din(mat_C_ch_0_read_addr__din), - .read_addr_full_n(mat_C_ch_0_read_addr__full_n), - .read_addr_write(mat_C_ch_0_read_addr__write), - .read_data_dout(mat_C_ch_0_read_data__dout), - .read_data_empty_n(mat_C_ch_0_read_data__empty_n), - .read_data_read(mat_C_ch_0_read_data__read), - .write_addr_din(mat_C_ch_0_write_addr__din), - .write_addr_full_n(mat_C_ch_0_write_addr__full_n), - .write_addr_write(mat_C_ch_0_write_addr__write), - .write_data_din(mat_C_ch_0_write_data__din), - .write_data_full_n(mat_C_ch_0_write_data__full_n), - .write_data_write(mat_C_ch_0_write_data__write), - .write_resp_dout(mat_C_ch_0_write_resp__dout), - .write_resp_empty_n(mat_C_ch_0_write_resp__empty_n), - .write_resp_read(mat_C_ch_0_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_1__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(write_C_1___mat_C_ch_1__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_1_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_1_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_1_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_1_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_1_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_1_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_1_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_1_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_1_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_1_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_1_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_1_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_1_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_1_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_1_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_1_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_1_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_1_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_1_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_1_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_1_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_1_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_1_BID), - .m_axi_BREADY(m_axi_mat_C_ch_1_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_1_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_1_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_1_RDATA), - .m_axi_RID(m_axi_mat_C_ch_1_RID), - .m_axi_RLAST(m_axi_mat_C_ch_1_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_1_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_1_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_1_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_1_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_1_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_1_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_1_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_1_WVALID), - .read_addr_din(mat_C_ch_1_read_addr__din), - .read_addr_full_n(mat_C_ch_1_read_addr__full_n), - .read_addr_write(mat_C_ch_1_read_addr__write), - .read_data_dout(mat_C_ch_1_read_data__dout), - .read_data_empty_n(mat_C_ch_1_read_data__empty_n), - .read_data_read(mat_C_ch_1_read_data__read), - .write_addr_din(mat_C_ch_1_write_addr__din), - .write_addr_full_n(mat_C_ch_1_write_addr__full_n), - .write_addr_write(mat_C_ch_1_write_addr__write), - .write_data_din(mat_C_ch_1_write_data__din), - .write_data_full_n(mat_C_ch_1_write_data__full_n), - .write_data_write(mat_C_ch_1_write_data__write), - .write_resp_dout(mat_C_ch_1_write_resp__dout), - .write_resp_empty_n(mat_C_ch_1_write_resp__empty_n), - .write_resp_read(mat_C_ch_1_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_2__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(write_C_2___mat_C_ch_2__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_2_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_2_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_2_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_2_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_2_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_2_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_2_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_2_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_2_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_2_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_2_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_2_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_2_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_2_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_2_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_2_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_2_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_2_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_2_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_2_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_2_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_2_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_2_BID), - .m_axi_BREADY(m_axi_mat_C_ch_2_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_2_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_2_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_2_RDATA), - .m_axi_RID(m_axi_mat_C_ch_2_RID), - .m_axi_RLAST(m_axi_mat_C_ch_2_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_2_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_2_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_2_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_2_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_2_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_2_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_2_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_2_WVALID), - .read_addr_din(mat_C_ch_2_read_addr__din), - .read_addr_full_n(mat_C_ch_2_read_addr__full_n), - .read_addr_write(mat_C_ch_2_read_addr__write), - .read_data_dout(mat_C_ch_2_read_data__dout), - .read_data_empty_n(mat_C_ch_2_read_data__empty_n), - .read_data_read(mat_C_ch_2_read_data__read), - .write_addr_din(mat_C_ch_2_write_addr__din), - .write_addr_full_n(mat_C_ch_2_write_addr__full_n), - .write_addr_write(mat_C_ch_2_write_addr__write), - .write_data_din(mat_C_ch_2_write_data__din), - .write_data_full_n(mat_C_ch_2_write_data__full_n), - .write_data_write(mat_C_ch_2_write_data__write), - .write_resp_dout(mat_C_ch_2_write_resp__dout), - .write_resp_empty_n(mat_C_ch_2_write_resp__empty_n), - .write_resp_read(mat_C_ch_2_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_3__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(write_C_3___mat_C_ch_3__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_3_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_3_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_3_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_3_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_3_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_3_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_3_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_3_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_3_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_3_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_3_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_3_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_3_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_3_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_3_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_3_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_3_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_3_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_3_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_3_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_3_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_3_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_3_BID), - .m_axi_BREADY(m_axi_mat_C_ch_3_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_3_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_3_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_3_RDATA), - .m_axi_RID(m_axi_mat_C_ch_3_RID), - .m_axi_RLAST(m_axi_mat_C_ch_3_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_3_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_3_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_3_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_3_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_3_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_3_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_3_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_3_WVALID), - .read_addr_din(mat_C_ch_3_read_addr__din), - .read_addr_full_n(mat_C_ch_3_read_addr__full_n), - .read_addr_write(mat_C_ch_3_read_addr__write), - .read_data_dout(mat_C_ch_3_read_data__dout), - .read_data_empty_n(mat_C_ch_3_read_data__empty_n), - .read_data_read(mat_C_ch_3_read_data__read), - .write_addr_din(mat_C_ch_3_write_addr__din), - .write_addr_full_n(mat_C_ch_3_write_addr__full_n), - .write_addr_write(mat_C_ch_3_write_addr__write), - .write_data_din(mat_C_ch_3_write_data__din), - .write_data_full_n(mat_C_ch_3_write_data__full_n), - .write_data_write(mat_C_ch_3_write_data__write), - .write_resp_dout(mat_C_ch_3_write_resp__dout), - .write_resp_empty_n(mat_C_ch_3_write_resp__empty_n), - .write_resp_read(mat_C_ch_3_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_4__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(write_C_4___mat_C_ch_4__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_4_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_4_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_4_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_4_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_4_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_4_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_4_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_4_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_4_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_4_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_4_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_4_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_4_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_4_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_4_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_4_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_4_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_4_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_4_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_4_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_4_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_4_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_4_BID), - .m_axi_BREADY(m_axi_mat_C_ch_4_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_4_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_4_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_4_RDATA), - .m_axi_RID(m_axi_mat_C_ch_4_RID), - .m_axi_RLAST(m_axi_mat_C_ch_4_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_4_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_4_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_4_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_4_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_4_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_4_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_4_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_4_WVALID), - .read_addr_din(mat_C_ch_4_read_addr__din), - .read_addr_full_n(mat_C_ch_4_read_addr__full_n), - .read_addr_write(mat_C_ch_4_read_addr__write), - .read_data_dout(mat_C_ch_4_read_data__dout), - .read_data_empty_n(mat_C_ch_4_read_data__empty_n), - .read_data_read(mat_C_ch_4_read_data__read), - .write_addr_din(mat_C_ch_4_write_addr__din), - .write_addr_full_n(mat_C_ch_4_write_addr__full_n), - .write_addr_write(mat_C_ch_4_write_addr__write), - .write_data_din(mat_C_ch_4_write_data__din), - .write_data_full_n(mat_C_ch_4_write_data__full_n), - .write_data_write(mat_C_ch_4_write_data__write), - .write_resp_dout(mat_C_ch_4_write_resp__dout), - .write_resp_empty_n(mat_C_ch_4_write_resp__empty_n), - .write_resp_read(mat_C_ch_4_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_5__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(write_C_5___mat_C_ch_5__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_5_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_5_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_5_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_5_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_5_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_5_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_5_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_5_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_5_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_5_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_5_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_5_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_5_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_5_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_5_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_5_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_5_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_5_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_5_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_5_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_5_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_5_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_5_BID), - .m_axi_BREADY(m_axi_mat_C_ch_5_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_5_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_5_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_5_RDATA), - .m_axi_RID(m_axi_mat_C_ch_5_RID), - .m_axi_RLAST(m_axi_mat_C_ch_5_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_5_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_5_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_5_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_5_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_5_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_5_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_5_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_5_WVALID), - .read_addr_din(mat_C_ch_5_read_addr__din), - .read_addr_full_n(mat_C_ch_5_read_addr__full_n), - .read_addr_write(mat_C_ch_5_read_addr__write), - .read_data_dout(mat_C_ch_5_read_data__dout), - .read_data_empty_n(mat_C_ch_5_read_data__empty_n), - .read_data_read(mat_C_ch_5_read_data__read), - .write_addr_din(mat_C_ch_5_write_addr__din), - .write_addr_full_n(mat_C_ch_5_write_addr__full_n), - .write_addr_write(mat_C_ch_5_write_addr__write), - .write_data_din(mat_C_ch_5_write_data__din), - .write_data_full_n(mat_C_ch_5_write_data__full_n), - .write_data_write(mat_C_ch_5_write_data__write), - .write_resp_dout(mat_C_ch_5_write_resp__dout), - .write_resp_empty_n(mat_C_ch_5_write_resp__empty_n), - .write_resp_read(mat_C_ch_5_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_6__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(write_C_6___mat_C_ch_6__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_6_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_6_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_6_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_6_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_6_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_6_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_6_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_6_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_6_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_6_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_6_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_6_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_6_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_6_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_6_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_6_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_6_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_6_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_6_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_6_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_6_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_6_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_6_BID), - .m_axi_BREADY(m_axi_mat_C_ch_6_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_6_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_6_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_6_RDATA), - .m_axi_RID(m_axi_mat_C_ch_6_RID), - .m_axi_RLAST(m_axi_mat_C_ch_6_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_6_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_6_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_6_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_6_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_6_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_6_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_6_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_6_WVALID), - .read_addr_din(mat_C_ch_6_read_addr__din), - .read_addr_full_n(mat_C_ch_6_read_addr__full_n), - .read_addr_write(mat_C_ch_6_read_addr__write), - .read_data_dout(mat_C_ch_6_read_data__dout), - .read_data_empty_n(mat_C_ch_6_read_data__empty_n), - .read_data_read(mat_C_ch_6_read_data__read), - .write_addr_din(mat_C_ch_6_write_addr__din), - .write_addr_full_n(mat_C_ch_6_write_addr__full_n), - .write_addr_write(mat_C_ch_6_write_addr__write), - .write_data_din(mat_C_ch_6_write_data__din), - .write_data_full_n(mat_C_ch_6_write_data__full_n), - .write_data_write(mat_C_ch_6_write_data__write), - .write_resp_dout(mat_C_ch_6_write_resp__dout), - .write_resp_empty_n(mat_C_ch_6_write_resp__empty_n), - .write_resp_read(mat_C_ch_6_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) async_mmap - #( - .DataWidth(512), - .DataWidthBytesLog(6), - .AddrWidth(64), - .WaitTimeWidth(2), - .MaxWaitTime(3), - .BurstLenWidth(9), - .MaxBurstLen(15) - ) - mat_C_ch_7__m_axi - ( - .clk(ap_clk), - .rst(~ap_rst_n), - .offset(write_C_7___mat_C_ch_7__q0), - .m_axi_ARADDR(m_axi_mat_C_ch_7_ARADDR), - .m_axi_ARBURST(m_axi_mat_C_ch_7_ARBURST), - .m_axi_ARCACHE(m_axi_mat_C_ch_7_ARCACHE), - .m_axi_ARID(m_axi_mat_C_ch_7_ARID), - .m_axi_ARLEN(m_axi_mat_C_ch_7_ARLEN), - .m_axi_ARLOCK(m_axi_mat_C_ch_7_ARLOCK), - .m_axi_ARPROT(m_axi_mat_C_ch_7_ARPROT), - .m_axi_ARQOS(m_axi_mat_C_ch_7_ARQOS), - .m_axi_ARREADY(m_axi_mat_C_ch_7_ARREADY), - .m_axi_ARSIZE(m_axi_mat_C_ch_7_ARSIZE), - .m_axi_ARVALID(m_axi_mat_C_ch_7_ARVALID), - .m_axi_AWADDR(m_axi_mat_C_ch_7_AWADDR), - .m_axi_AWBURST(m_axi_mat_C_ch_7_AWBURST), - .m_axi_AWCACHE(m_axi_mat_C_ch_7_AWCACHE), - .m_axi_AWID(m_axi_mat_C_ch_7_AWID), - .m_axi_AWLEN(m_axi_mat_C_ch_7_AWLEN), - .m_axi_AWLOCK(m_axi_mat_C_ch_7_AWLOCK), - .m_axi_AWPROT(m_axi_mat_C_ch_7_AWPROT), - .m_axi_AWQOS(m_axi_mat_C_ch_7_AWQOS), - .m_axi_AWREADY(m_axi_mat_C_ch_7_AWREADY), - .m_axi_AWSIZE(m_axi_mat_C_ch_7_AWSIZE), - .m_axi_AWVALID(m_axi_mat_C_ch_7_AWVALID), - .m_axi_BID(m_axi_mat_C_ch_7_BID), - .m_axi_BREADY(m_axi_mat_C_ch_7_BREADY), - .m_axi_BRESP(m_axi_mat_C_ch_7_BRESP), - .m_axi_BVALID(m_axi_mat_C_ch_7_BVALID), - .m_axi_RDATA(m_axi_mat_C_ch_7_RDATA), - .m_axi_RID(m_axi_mat_C_ch_7_RID), - .m_axi_RLAST(m_axi_mat_C_ch_7_RLAST), - .m_axi_RREADY(m_axi_mat_C_ch_7_RREADY), - .m_axi_RRESP(m_axi_mat_C_ch_7_RRESP), - .m_axi_RVALID(m_axi_mat_C_ch_7_RVALID), - .m_axi_WDATA(m_axi_mat_C_ch_7_WDATA), - .m_axi_WLAST(m_axi_mat_C_ch_7_WLAST), - .m_axi_WREADY(m_axi_mat_C_ch_7_WREADY), - .m_axi_WSTRB(m_axi_mat_C_ch_7_WSTRB), - .m_axi_WVALID(m_axi_mat_C_ch_7_WVALID), - .read_addr_din(mat_C_ch_7_read_addr__din), - .read_addr_full_n(mat_C_ch_7_read_addr__full_n), - .read_addr_write(mat_C_ch_7_read_addr__write), - .read_data_dout(mat_C_ch_7_read_data__dout), - .read_data_empty_n(mat_C_ch_7_read_data__empty_n), - .read_data_read(mat_C_ch_7_read_data__read), - .write_addr_din(mat_C_ch_7_write_addr__din), - .write_addr_full_n(mat_C_ch_7_write_addr__full_n), - .write_addr_write(mat_C_ch_7_write_addr__write), - .write_data_din(mat_C_ch_7_write_data__din), - .write_data_full_n(mat_C_ch_7_write_data__full_n), - .write_data_write(mat_C_ch_7_write_data__write), - .write_resp_dout(mat_C_ch_7_write_resp__dout), - .write_resp_empty_n(mat_C_ch_7_write_resp__empty_n), - .write_resp_read(mat_C_ch_7_write_resp__read) - ); - - - (* keep_hierarchy = "yes" *) Sextans_fsm - __tapa_fsm_unit - ( - .ap_clk(ap_clk), - .ap_rst_n(ap_rst_n), - .ap_start(ap_start), - .ap_done(ap_done), - .ap_idle(ap_idle), - .ap_ready(ap_ready), - .FloatvAddFloatv_0__ap_start(FloatvAddFloatv_0__ap_start), - .FloatvAddFloatv_1__ap_start(FloatvAddFloatv_1__ap_start), - .FloatvAddFloatv_2__ap_start(FloatvAddFloatv_2__ap_start), - .FloatvAddFloatv_3__ap_start(FloatvAddFloatv_3__ap_start), - .FloatvAddFloatv_4__ap_start(FloatvAddFloatv_4__ap_start), - .FloatvAddFloatv_5__ap_start(FloatvAddFloatv_5__ap_start), - .FloatvAddFloatv_6__ap_start(FloatvAddFloatv_6__ap_start), - .FloatvAddFloatv_7__ap_start(FloatvAddFloatv_7__ap_start), - .FloatvMultConst_0__ap_start(FloatvMultConst_0__ap_start), - .FloatvMultConst_0__ap_ready(FloatvMultConst_0__ap_ready), - .FloatvMultConst_0__ap_done(FloatvMultConst_0__ap_done), - .FloatvMultConst_0__ap_idle(FloatvMultConst_0__ap_idle), - .FloatvMultConst_1__ap_start(FloatvMultConst_1__ap_start), - .FloatvMultConst_1__ap_ready(FloatvMultConst_1__ap_ready), - .FloatvMultConst_1__ap_done(FloatvMultConst_1__ap_done), - .FloatvMultConst_1__ap_idle(FloatvMultConst_1__ap_idle), - .FloatvMultConst_2__ap_start(FloatvMultConst_2__ap_start), - .FloatvMultConst_2__ap_ready(FloatvMultConst_2__ap_ready), - .FloatvMultConst_2__ap_done(FloatvMultConst_2__ap_done), - .FloatvMultConst_2__ap_idle(FloatvMultConst_2__ap_idle), - .FloatvMultConst_3__ap_start(FloatvMultConst_3__ap_start), - .FloatvMultConst_3__ap_ready(FloatvMultConst_3__ap_ready), - .FloatvMultConst_3__ap_done(FloatvMultConst_3__ap_done), - .FloatvMultConst_3__ap_idle(FloatvMultConst_3__ap_idle), - .FloatvMultConst_4__ap_start(FloatvMultConst_4__ap_start), - .FloatvMultConst_4__ap_ready(FloatvMultConst_4__ap_ready), - .FloatvMultConst_4__ap_done(FloatvMultConst_4__ap_done), - .FloatvMultConst_4__ap_idle(FloatvMultConst_4__ap_idle), - .FloatvMultConst_5__ap_start(FloatvMultConst_5__ap_start), - .FloatvMultConst_5__ap_ready(FloatvMultConst_5__ap_ready), - .FloatvMultConst_5__ap_done(FloatvMultConst_5__ap_done), - .FloatvMultConst_5__ap_idle(FloatvMultConst_5__ap_idle), - .FloatvMultConst_6__ap_start(FloatvMultConst_6__ap_start), - .FloatvMultConst_6__ap_ready(FloatvMultConst_6__ap_ready), - .FloatvMultConst_6__ap_done(FloatvMultConst_6__ap_done), - .FloatvMultConst_6__ap_idle(FloatvMultConst_6__ap_idle), - .FloatvMultConst_7__ap_start(FloatvMultConst_7__ap_start), - .FloatvMultConst_7__ap_ready(FloatvMultConst_7__ap_ready), - .FloatvMultConst_7__ap_done(FloatvMultConst_7__ap_done), - .FloatvMultConst_7__ap_idle(FloatvMultConst_7__ap_idle), - .FloatvMultConst_8__ap_start(FloatvMultConst_8__ap_start), - .FloatvMultConst_8__ap_ready(FloatvMultConst_8__ap_ready), - .FloatvMultConst_8__ap_done(FloatvMultConst_8__ap_done), - .FloatvMultConst_8__ap_idle(FloatvMultConst_8__ap_idle), - .FloatvMultConst_9__ap_start(FloatvMultConst_9__ap_start), - .FloatvMultConst_9__ap_ready(FloatvMultConst_9__ap_ready), - .FloatvMultConst_9__ap_done(FloatvMultConst_9__ap_done), - .FloatvMultConst_9__ap_idle(FloatvMultConst_9__ap_idle), - .FloatvMultConst_10__ap_start(FloatvMultConst_10__ap_start), - .FloatvMultConst_10__ap_ready(FloatvMultConst_10__ap_ready), - .FloatvMultConst_10__ap_done(FloatvMultConst_10__ap_done), - .FloatvMultConst_10__ap_idle(FloatvMultConst_10__ap_idle), - .FloatvMultConst_11__ap_start(FloatvMultConst_11__ap_start), - .FloatvMultConst_11__ap_ready(FloatvMultConst_11__ap_ready), - .FloatvMultConst_11__ap_done(FloatvMultConst_11__ap_done), - .FloatvMultConst_11__ap_idle(FloatvMultConst_11__ap_idle), - .FloatvMultConst_12__ap_start(FloatvMultConst_12__ap_start), - .FloatvMultConst_12__ap_ready(FloatvMultConst_12__ap_ready), - .FloatvMultConst_12__ap_done(FloatvMultConst_12__ap_done), - .FloatvMultConst_12__ap_idle(FloatvMultConst_12__ap_idle), - .FloatvMultConst_13__ap_start(FloatvMultConst_13__ap_start), - .FloatvMultConst_13__ap_ready(FloatvMultConst_13__ap_ready), - .FloatvMultConst_13__ap_done(FloatvMultConst_13__ap_done), - .FloatvMultConst_13__ap_idle(FloatvMultConst_13__ap_idle), - .FloatvMultConst_14__ap_start(FloatvMultConst_14__ap_start), - .FloatvMultConst_14__ap_ready(FloatvMultConst_14__ap_ready), - .FloatvMultConst_14__ap_done(FloatvMultConst_14__ap_done), - .FloatvMultConst_14__ap_idle(FloatvMultConst_14__ap_idle), - .FloatvMultConst_15__ap_start(FloatvMultConst_15__ap_start), - .FloatvMultConst_15__ap_ready(FloatvMultConst_15__ap_ready), - .FloatvMultConst_15__ap_done(FloatvMultConst_15__ap_done), - .FloatvMultConst_15__ap_idle(FloatvMultConst_15__ap_idle), - .Merger_0__ap_start(Merger_0__ap_start), - .Merger_1__ap_start(Merger_1__ap_start), - .Merger_2__ap_start(Merger_2__ap_start), - .Merger_3__ap_start(Merger_3__ap_start), - .Merger_4__ap_start(Merger_4__ap_start), - .Merger_5__ap_start(Merger_5__ap_start), - .Merger_6__ap_start(Merger_6__ap_start), - .Merger_7__ap_start(Merger_7__ap_start), - .PEG_Bmtx_0__ap_start(PEG_Bmtx_0__ap_start), - .PEG_Bmtx_0__ap_ready(PEG_Bmtx_0__ap_ready), - .PEG_Bmtx_0__ap_done(PEG_Bmtx_0__ap_done), - .PEG_Bmtx_0__ap_idle(PEG_Bmtx_0__ap_idle), - .PEG_Bmtx_1__ap_start(PEG_Bmtx_1__ap_start), - .PEG_Bmtx_1__ap_ready(PEG_Bmtx_1__ap_ready), - .PEG_Bmtx_1__ap_done(PEG_Bmtx_1__ap_done), - .PEG_Bmtx_1__ap_idle(PEG_Bmtx_1__ap_idle), - .PEG_Bmtx_2__ap_start(PEG_Bmtx_2__ap_start), - .PEG_Bmtx_2__ap_ready(PEG_Bmtx_2__ap_ready), - .PEG_Bmtx_2__ap_done(PEG_Bmtx_2__ap_done), - .PEG_Bmtx_2__ap_idle(PEG_Bmtx_2__ap_idle), - .PEG_Bmtx_3__ap_start(PEG_Bmtx_3__ap_start), - .PEG_Bmtx_3__ap_ready(PEG_Bmtx_3__ap_ready), - .PEG_Bmtx_3__ap_done(PEG_Bmtx_3__ap_done), - .PEG_Bmtx_3__ap_idle(PEG_Bmtx_3__ap_idle), - .PEG_Bmtx_4__ap_start(PEG_Bmtx_4__ap_start), - .PEG_Bmtx_4__ap_ready(PEG_Bmtx_4__ap_ready), - .PEG_Bmtx_4__ap_done(PEG_Bmtx_4__ap_done), - .PEG_Bmtx_4__ap_idle(PEG_Bmtx_4__ap_idle), - .PEG_Bmtx_5__ap_start(PEG_Bmtx_5__ap_start), - .PEG_Bmtx_5__ap_ready(PEG_Bmtx_5__ap_ready), - .PEG_Bmtx_5__ap_done(PEG_Bmtx_5__ap_done), - .PEG_Bmtx_5__ap_idle(PEG_Bmtx_5__ap_idle), - .PEG_Bmtx_6__ap_start(PEG_Bmtx_6__ap_start), - .PEG_Bmtx_6__ap_ready(PEG_Bmtx_6__ap_ready), - .PEG_Bmtx_6__ap_done(PEG_Bmtx_6__ap_done), - .PEG_Bmtx_6__ap_idle(PEG_Bmtx_6__ap_idle), - .PEG_Bmtx_7__ap_start(PEG_Bmtx_7__ap_start), - .PEG_Bmtx_7__ap_ready(PEG_Bmtx_7__ap_ready), - .PEG_Bmtx_7__ap_done(PEG_Bmtx_7__ap_done), - .PEG_Bmtx_7__ap_idle(PEG_Bmtx_7__ap_idle), - .PEG_Bmtx_8__ap_start(PEG_Bmtx_8__ap_start), - .PEG_Bmtx_8__ap_ready(PEG_Bmtx_8__ap_ready), - .PEG_Bmtx_8__ap_done(PEG_Bmtx_8__ap_done), - .PEG_Bmtx_8__ap_idle(PEG_Bmtx_8__ap_idle), - .PEG_Bmtx_9__ap_start(PEG_Bmtx_9__ap_start), - .PEG_Bmtx_9__ap_ready(PEG_Bmtx_9__ap_ready), - .PEG_Bmtx_9__ap_done(PEG_Bmtx_9__ap_done), - .PEG_Bmtx_9__ap_idle(PEG_Bmtx_9__ap_idle), - .PEG_Bmtx_10__ap_start(PEG_Bmtx_10__ap_start), - .PEG_Bmtx_10__ap_ready(PEG_Bmtx_10__ap_ready), - .PEG_Bmtx_10__ap_done(PEG_Bmtx_10__ap_done), - .PEG_Bmtx_10__ap_idle(PEG_Bmtx_10__ap_idle), - .PEG_Bmtx_11__ap_start(PEG_Bmtx_11__ap_start), - .PEG_Bmtx_11__ap_ready(PEG_Bmtx_11__ap_ready), - .PEG_Bmtx_11__ap_done(PEG_Bmtx_11__ap_done), - .PEG_Bmtx_11__ap_idle(PEG_Bmtx_11__ap_idle), - .PEG_Bmtx_12__ap_start(PEG_Bmtx_12__ap_start), - .PEG_Bmtx_12__ap_ready(PEG_Bmtx_12__ap_ready), - .PEG_Bmtx_12__ap_done(PEG_Bmtx_12__ap_done), - .PEG_Bmtx_12__ap_idle(PEG_Bmtx_12__ap_idle), - .PEG_Bmtx_13__ap_start(PEG_Bmtx_13__ap_start), - .PEG_Bmtx_13__ap_ready(PEG_Bmtx_13__ap_ready), - .PEG_Bmtx_13__ap_done(PEG_Bmtx_13__ap_done), - .PEG_Bmtx_13__ap_idle(PEG_Bmtx_13__ap_idle), - .PEG_Bmtx_14__ap_start(PEG_Bmtx_14__ap_start), - .PEG_Bmtx_14__ap_ready(PEG_Bmtx_14__ap_ready), - .PEG_Bmtx_14__ap_done(PEG_Bmtx_14__ap_done), - .PEG_Bmtx_14__ap_idle(PEG_Bmtx_14__ap_idle), - .PEG_Bmtx_15__ap_start(PEG_Bmtx_15__ap_start), - .PEG_Bmtx_15__ap_ready(PEG_Bmtx_15__ap_ready), - .PEG_Bmtx_15__ap_done(PEG_Bmtx_15__ap_done), - .PEG_Bmtx_15__ap_idle(PEG_Bmtx_15__ap_idle), - .PEG_Cmtx_0__ap_start(PEG_Cmtx_0__ap_start), - .PEG_Cmtx_0__ap_ready(PEG_Cmtx_0__ap_ready), - .PEG_Cmtx_0__ap_done(PEG_Cmtx_0__ap_done), - .PEG_Cmtx_0__ap_idle(PEG_Cmtx_0__ap_idle), - .PEG_Cmtx_1__ap_start(PEG_Cmtx_1__ap_start), - .PEG_Cmtx_1__ap_ready(PEG_Cmtx_1__ap_ready), - .PEG_Cmtx_1__ap_done(PEG_Cmtx_1__ap_done), - .PEG_Cmtx_1__ap_idle(PEG_Cmtx_1__ap_idle), - .PEG_Cmtx_2__ap_start(PEG_Cmtx_2__ap_start), - .PEG_Cmtx_2__ap_ready(PEG_Cmtx_2__ap_ready), - .PEG_Cmtx_2__ap_done(PEG_Cmtx_2__ap_done), - .PEG_Cmtx_2__ap_idle(PEG_Cmtx_2__ap_idle), - .PEG_Cmtx_3__ap_start(PEG_Cmtx_3__ap_start), - .PEG_Cmtx_3__ap_ready(PEG_Cmtx_3__ap_ready), - .PEG_Cmtx_3__ap_done(PEG_Cmtx_3__ap_done), - .PEG_Cmtx_3__ap_idle(PEG_Cmtx_3__ap_idle), - .PEG_Cmtx_4__ap_start(PEG_Cmtx_4__ap_start), - .PEG_Cmtx_4__ap_ready(PEG_Cmtx_4__ap_ready), - .PEG_Cmtx_4__ap_done(PEG_Cmtx_4__ap_done), - .PEG_Cmtx_4__ap_idle(PEG_Cmtx_4__ap_idle), - .PEG_Cmtx_5__ap_start(PEG_Cmtx_5__ap_start), - .PEG_Cmtx_5__ap_ready(PEG_Cmtx_5__ap_ready), - .PEG_Cmtx_5__ap_done(PEG_Cmtx_5__ap_done), - .PEG_Cmtx_5__ap_idle(PEG_Cmtx_5__ap_idle), - .PEG_Cmtx_6__ap_start(PEG_Cmtx_6__ap_start), - .PEG_Cmtx_6__ap_ready(PEG_Cmtx_6__ap_ready), - .PEG_Cmtx_6__ap_done(PEG_Cmtx_6__ap_done), - .PEG_Cmtx_6__ap_idle(PEG_Cmtx_6__ap_idle), - .PEG_Cmtx_7__ap_start(PEG_Cmtx_7__ap_start), - .PEG_Cmtx_7__ap_ready(PEG_Cmtx_7__ap_ready), - .PEG_Cmtx_7__ap_done(PEG_Cmtx_7__ap_done), - .PEG_Cmtx_7__ap_idle(PEG_Cmtx_7__ap_idle), - .PEG_Cmtx_8__ap_start(PEG_Cmtx_8__ap_start), - .PEG_Cmtx_8__ap_ready(PEG_Cmtx_8__ap_ready), - .PEG_Cmtx_8__ap_done(PEG_Cmtx_8__ap_done), - .PEG_Cmtx_8__ap_idle(PEG_Cmtx_8__ap_idle), - .PEG_Cmtx_9__ap_start(PEG_Cmtx_9__ap_start), - .PEG_Cmtx_9__ap_ready(PEG_Cmtx_9__ap_ready), - .PEG_Cmtx_9__ap_done(PEG_Cmtx_9__ap_done), - .PEG_Cmtx_9__ap_idle(PEG_Cmtx_9__ap_idle), - .PEG_Cmtx_10__ap_start(PEG_Cmtx_10__ap_start), - .PEG_Cmtx_10__ap_ready(PEG_Cmtx_10__ap_ready), - .PEG_Cmtx_10__ap_done(PEG_Cmtx_10__ap_done), - .PEG_Cmtx_10__ap_idle(PEG_Cmtx_10__ap_idle), - .PEG_Cmtx_11__ap_start(PEG_Cmtx_11__ap_start), - .PEG_Cmtx_11__ap_ready(PEG_Cmtx_11__ap_ready), - .PEG_Cmtx_11__ap_done(PEG_Cmtx_11__ap_done), - .PEG_Cmtx_11__ap_idle(PEG_Cmtx_11__ap_idle), - .PEG_Cmtx_12__ap_start(PEG_Cmtx_12__ap_start), - .PEG_Cmtx_12__ap_ready(PEG_Cmtx_12__ap_ready), - .PEG_Cmtx_12__ap_done(PEG_Cmtx_12__ap_done), - .PEG_Cmtx_12__ap_idle(PEG_Cmtx_12__ap_idle), - .PEG_Cmtx_13__ap_start(PEG_Cmtx_13__ap_start), - .PEG_Cmtx_13__ap_ready(PEG_Cmtx_13__ap_ready), - .PEG_Cmtx_13__ap_done(PEG_Cmtx_13__ap_done), - .PEG_Cmtx_13__ap_idle(PEG_Cmtx_13__ap_idle), - .PEG_Cmtx_14__ap_start(PEG_Cmtx_14__ap_start), - .PEG_Cmtx_14__ap_ready(PEG_Cmtx_14__ap_ready), - .PEG_Cmtx_14__ap_done(PEG_Cmtx_14__ap_done), - .PEG_Cmtx_14__ap_idle(PEG_Cmtx_14__ap_idle), - .PEG_Cmtx_15__ap_start(PEG_Cmtx_15__ap_start), - .PEG_Cmtx_15__ap_ready(PEG_Cmtx_15__ap_ready), - .PEG_Cmtx_15__ap_done(PEG_Cmtx_15__ap_done), - .PEG_Cmtx_15__ap_idle(PEG_Cmtx_15__ap_idle), - .Scatter_1_2_0__ap_start(Scatter_1_2_0__ap_start), - .Scatter_1_2_1__ap_start(Scatter_1_2_1__ap_start), - .Scatter_1_2_2__ap_start(Scatter_1_2_2__ap_start), - .Scatter_1_2_3__ap_start(Scatter_1_2_3__ap_start), - .Scatter_1_2_4__ap_start(Scatter_1_2_4__ap_start), - .Scatter_1_2_5__ap_start(Scatter_1_2_5__ap_start), - .Scatter_1_2_6__ap_start(Scatter_1_2_6__ap_start), - .Scatter_1_2_7__ap_start(Scatter_1_2_7__ap_start), - .black_hole_float_v16_0__ap_start(black_hole_float_v16_0__ap_start), - .black_hole_float_v16_1__ap_start(black_hole_float_v16_1__ap_start), - .black_hole_float_v16_2__ap_start(black_hole_float_v16_2__ap_start), - .black_hole_float_v16_3__ap_start(black_hole_float_v16_3__ap_start), - .black_hole_int_0__ap_start(black_hole_int_0__ap_start), - .black_hole_int_1__ap_start(black_hole_int_1__ap_start), - .read_A_0__ap_start(read_A_0__ap_start), - .read_A_0__ap_ready(read_A_0__ap_ready), - .read_A_0__ap_done(read_A_0__ap_done), - .read_A_0__ap_idle(read_A_0__ap_idle), - .read_A_1__ap_start(read_A_1__ap_start), - .read_A_1__ap_ready(read_A_1__ap_ready), - .read_A_1__ap_done(read_A_1__ap_done), - .read_A_1__ap_idle(read_A_1__ap_idle), - .read_A_2__ap_start(read_A_2__ap_start), - .read_A_2__ap_ready(read_A_2__ap_ready), - .read_A_2__ap_done(read_A_2__ap_done), - .read_A_2__ap_idle(read_A_2__ap_idle), - .read_A_3__ap_start(read_A_3__ap_start), - .read_A_3__ap_ready(read_A_3__ap_ready), - .read_A_3__ap_done(read_A_3__ap_done), - .read_A_3__ap_idle(read_A_3__ap_idle), - .read_A_4__ap_start(read_A_4__ap_start), - .read_A_4__ap_ready(read_A_4__ap_ready), - .read_A_4__ap_done(read_A_4__ap_done), - .read_A_4__ap_idle(read_A_4__ap_idle), - .read_A_5__ap_start(read_A_5__ap_start), - .read_A_5__ap_ready(read_A_5__ap_ready), - .read_A_5__ap_done(read_A_5__ap_done), - .read_A_5__ap_idle(read_A_5__ap_idle), - .read_A_6__ap_start(read_A_6__ap_start), - .read_A_6__ap_ready(read_A_6__ap_ready), - .read_A_6__ap_done(read_A_6__ap_done), - .read_A_6__ap_idle(read_A_6__ap_idle), - .read_A_7__ap_start(read_A_7__ap_start), - .read_A_7__ap_ready(read_A_7__ap_ready), - .read_A_7__ap_done(read_A_7__ap_done), - .read_A_7__ap_idle(read_A_7__ap_idle), - .read_B_0__ap_start(read_B_0__ap_start), - .read_B_0__ap_ready(read_B_0__ap_ready), - .read_B_0__ap_done(read_B_0__ap_done), - .read_B_0__ap_idle(read_B_0__ap_idle), - .read_B_1__ap_start(read_B_1__ap_start), - .read_B_1__ap_ready(read_B_1__ap_ready), - .read_B_1__ap_done(read_B_1__ap_done), - .read_B_1__ap_idle(read_B_1__ap_idle), - .read_B_2__ap_start(read_B_2__ap_start), - .read_B_2__ap_ready(read_B_2__ap_ready), - .read_B_2__ap_done(read_B_2__ap_done), - .read_B_2__ap_idle(read_B_2__ap_idle), - .read_B_3__ap_start(read_B_3__ap_start), - .read_B_3__ap_ready(read_B_3__ap_ready), - .read_B_3__ap_done(read_B_3__ap_done), - .read_B_3__ap_idle(read_B_3__ap_idle), - .read_C_0__ap_start(read_C_0__ap_start), - .read_C_0__ap_ready(read_C_0__ap_ready), - .read_C_0__ap_done(read_C_0__ap_done), - .read_C_0__ap_idle(read_C_0__ap_idle), - .read_C_1__ap_start(read_C_1__ap_start), - .read_C_1__ap_ready(read_C_1__ap_ready), - .read_C_1__ap_done(read_C_1__ap_done), - .read_C_1__ap_idle(read_C_1__ap_idle), - .read_C_2__ap_start(read_C_2__ap_start), - .read_C_2__ap_ready(read_C_2__ap_ready), - .read_C_2__ap_done(read_C_2__ap_done), - .read_C_2__ap_idle(read_C_2__ap_idle), - .read_C_3__ap_start(read_C_3__ap_start), - .read_C_3__ap_ready(read_C_3__ap_ready), - .read_C_3__ap_done(read_C_3__ap_done), - .read_C_3__ap_idle(read_C_3__ap_idle), - .read_C_4__ap_start(read_C_4__ap_start), - .read_C_4__ap_ready(read_C_4__ap_ready), - .read_C_4__ap_done(read_C_4__ap_done), - .read_C_4__ap_idle(read_C_4__ap_idle), - .read_C_5__ap_start(read_C_5__ap_start), - .read_C_5__ap_ready(read_C_5__ap_ready), - .read_C_5__ap_done(read_C_5__ap_done), - .read_C_5__ap_idle(read_C_5__ap_idle), - .read_C_6__ap_start(read_C_6__ap_start), - .read_C_6__ap_ready(read_C_6__ap_ready), - .read_C_6__ap_done(read_C_6__ap_done), - .read_C_6__ap_idle(read_C_6__ap_idle), - .read_C_7__ap_start(read_C_7__ap_start), - .read_C_7__ap_ready(read_C_7__ap_ready), - .read_C_7__ap_done(read_C_7__ap_done), - .read_C_7__ap_idle(read_C_7__ap_idle), - .read_edge_list_ptr_0__ap_start(read_edge_list_ptr_0__ap_start), - .read_edge_list_ptr_0__ap_ready(read_edge_list_ptr_0__ap_ready), - .read_edge_list_ptr_0__ap_done(read_edge_list_ptr_0__ap_done), - .read_edge_list_ptr_0__ap_idle(read_edge_list_ptr_0__ap_idle), - .write_C_0__ap_start(write_C_0__ap_start), - .write_C_0__ap_ready(write_C_0__ap_ready), - .write_C_0__ap_done(write_C_0__ap_done), - .write_C_0__ap_idle(write_C_0__ap_idle), - .write_C_1__ap_start(write_C_1__ap_start), - .write_C_1__ap_ready(write_C_1__ap_ready), - .write_C_1__ap_done(write_C_1__ap_done), - .write_C_1__ap_idle(write_C_1__ap_idle), - .write_C_2__ap_start(write_C_2__ap_start), - .write_C_2__ap_ready(write_C_2__ap_ready), - .write_C_2__ap_done(write_C_2__ap_done), - .write_C_2__ap_idle(write_C_2__ap_idle), - .write_C_3__ap_start(write_C_3__ap_start), - .write_C_3__ap_ready(write_C_3__ap_ready), - .write_C_3__ap_done(write_C_3__ap_done), - .write_C_3__ap_idle(write_C_3__ap_idle), - .write_C_4__ap_start(write_C_4__ap_start), - .write_C_4__ap_ready(write_C_4__ap_ready), - .write_C_4__ap_done(write_C_4__ap_done), - .write_C_4__ap_idle(write_C_4__ap_idle), - .write_C_5__ap_start(write_C_5__ap_start), - .write_C_5__ap_ready(write_C_5__ap_ready), - .write_C_5__ap_done(write_C_5__ap_done), - .write_C_5__ap_idle(write_C_5__ap_idle), - .write_C_6__ap_start(write_C_6__ap_start), - .write_C_6__ap_ready(write_C_6__ap_ready), - .write_C_6__ap_done(write_C_6__ap_done), - .write_C_6__ap_idle(write_C_6__ap_idle), - .write_C_7__ap_start(write_C_7__ap_start), - .write_C_7__ap_ready(write_C_7__ap_ready), - .write_C_7__ap_done(write_C_7__ap_done), - .write_C_7__ap_idle(write_C_7__ap_idle) - ); - - assign ap_rst_n_inv = (~ap_rst_n); - assign FloatvMultConst_0___M__q0 = M; - assign FloatvMultConst_0___P_N__q0 = P_N; - assign FloatvMultConst_0___beta_u__q0 = beta_u; - assign FloatvMultConst_1___M__q0 = M; - assign FloatvMultConst_1___P_N__q0 = P_N; - assign FloatvMultConst_1___beta_u__q0 = beta_u; - assign FloatvMultConst_2___M__q0 = M; - assign FloatvMultConst_2___P_N__q0 = P_N; - assign FloatvMultConst_2___beta_u__q0 = beta_u; - assign FloatvMultConst_3___M__q0 = M; - assign FloatvMultConst_3___P_N__q0 = P_N; - assign FloatvMultConst_3___beta_u__q0 = beta_u; - assign FloatvMultConst_4___M__q0 = M; - assign FloatvMultConst_4___P_N__q0 = P_N; - assign FloatvMultConst_4___beta_u__q0 = beta_u; - assign FloatvMultConst_5___M__q0 = M; - assign FloatvMultConst_5___P_N__q0 = P_N; - assign FloatvMultConst_5___beta_u__q0 = beta_u; - assign FloatvMultConst_6___M__q0 = M; - assign FloatvMultConst_6___P_N__q0 = P_N; - assign FloatvMultConst_6___beta_u__q0 = beta_u; - assign FloatvMultConst_7___M__q0 = M; - assign FloatvMultConst_7___P_N__q0 = P_N; - assign FloatvMultConst_7___beta_u__q0 = beta_u; - assign FloatvMultConst_8___M__q0 = M; - assign FloatvMultConst_8___P_N__q0 = P_N; - assign FloatvMultConst_8___alpha_u__q0 = alpha_u; - assign FloatvMultConst_9___M__q0 = M; - assign FloatvMultConst_9___P_N__q0 = P_N; - assign FloatvMultConst_9___alpha_u__q0 = alpha_u; - assign FloatvMultConst_10___M__q0 = M; - assign FloatvMultConst_10___P_N__q0 = P_N; - assign FloatvMultConst_10___alpha_u__q0 = alpha_u; - assign FloatvMultConst_11___M__q0 = M; - assign FloatvMultConst_11___P_N__q0 = P_N; - assign FloatvMultConst_11___alpha_u__q0 = alpha_u; - assign FloatvMultConst_12___M__q0 = M; - assign FloatvMultConst_12___P_N__q0 = P_N; - assign FloatvMultConst_12___alpha_u__q0 = alpha_u; - assign FloatvMultConst_13___M__q0 = M; - assign FloatvMultConst_13___P_N__q0 = P_N; - assign FloatvMultConst_13___alpha_u__q0 = alpha_u; - assign FloatvMultConst_14___M__q0 = M; - assign FloatvMultConst_14___P_N__q0 = P_N; - assign FloatvMultConst_14___alpha_u__q0 = alpha_u; - assign FloatvMultConst_15___M__q0 = M; - assign FloatvMultConst_15___P_N__q0 = P_N; - assign FloatvMultConst_15___alpha_u__q0 = alpha_u; - assign read_A_0___NUM_A_LEN__q0 = NUM_A_LEN; - assign read_A_0___P_N__q0 = P_N; - assign read_A_0___edge_list_ch_0__q0 = edge_list_ch_0; - assign read_A_1___NUM_A_LEN__q0 = NUM_A_LEN; - assign read_A_1___P_N__q0 = P_N; - assign read_A_1___edge_list_ch_1__q0 = edge_list_ch_1; - assign read_A_2___NUM_A_LEN__q0 = NUM_A_LEN; - assign read_A_2___P_N__q0 = P_N; - assign read_A_2___edge_list_ch_2__q0 = edge_list_ch_2; - assign read_A_3___NUM_A_LEN__q0 = NUM_A_LEN; - assign read_A_3___P_N__q0 = P_N; - assign read_A_3___edge_list_ch_3__q0 = edge_list_ch_3; - assign read_A_4___NUM_A_LEN__q0 = NUM_A_LEN; - assign read_A_4___P_N__q0 = P_N; - assign read_A_4___edge_list_ch_4__q0 = edge_list_ch_4; - assign read_A_5___NUM_A_LEN__q0 = NUM_A_LEN; - assign read_A_5___P_N__q0 = P_N; - assign read_A_5___edge_list_ch_5__q0 = edge_list_ch_5; - assign read_A_6___NUM_A_LEN__q0 = NUM_A_LEN; - assign read_A_6___P_N__q0 = P_N; - assign read_A_6___edge_list_ch_6__q0 = edge_list_ch_6; - assign read_A_7___NUM_A_LEN__q0 = NUM_A_LEN; - assign read_A_7___P_N__q0 = P_N; - assign read_A_7___edge_list_ch_7__q0 = edge_list_ch_7; - assign read_B_0___K__q0 = K; - assign read_B_0___P_N__q0 = P_N; - assign read_B_0___mat_B_ch_0__q0 = mat_B_ch_0; - assign read_B_1___K__q0 = K; - assign read_B_1___P_N__q0 = P_N; - assign read_B_1___mat_B_ch_1__q0 = mat_B_ch_1; - assign read_B_2___K__q0 = K; - assign read_B_2___P_N__q0 = P_N; - assign read_B_2___mat_B_ch_2__q0 = mat_B_ch_2; - assign read_B_3___K__q0 = K; - assign read_B_3___P_N__q0 = P_N; - assign read_B_3___mat_B_ch_3__q0 = mat_B_ch_3; - assign read_C_0___M__q0 = M; - assign read_C_0___P_N__q0 = P_N; - assign read_C_0___mat_C_ch_in_0__q0 = mat_C_ch_in_0; - assign read_C_1___M__q0 = M; - assign read_C_1___P_N__q0 = P_N; - assign read_C_1___mat_C_ch_in_1__q0 = mat_C_ch_in_1; - assign read_C_2___M__q0 = M; - assign read_C_2___P_N__q0 = P_N; - assign read_C_2___mat_C_ch_in_2__q0 = mat_C_ch_in_2; - assign read_C_3___M__q0 = M; - assign read_C_3___P_N__q0 = P_N; - assign read_C_3___mat_C_ch_in_3__q0 = mat_C_ch_in_3; - assign read_C_4___M__q0 = M; - assign read_C_4___P_N__q0 = P_N; - assign read_C_4___mat_C_ch_in_4__q0 = mat_C_ch_in_4; - assign read_C_5___M__q0 = M; - assign read_C_5___P_N__q0 = P_N; - assign read_C_5___mat_C_ch_in_5__q0 = mat_C_ch_in_5; - assign read_C_6___M__q0 = M; - assign read_C_6___P_N__q0 = P_N; - assign read_C_6___mat_C_ch_in_6__q0 = mat_C_ch_in_6; - assign read_C_7___M__q0 = M; - assign read_C_7___P_N__q0 = P_N; - assign read_C_7___mat_C_ch_in_7__q0 = mat_C_ch_in_7; - assign read_edge_list_ptr_0___K__q0 = K; - assign read_edge_list_ptr_0___M__q0 = M; - assign read_edge_list_ptr_0___NUM_ITE__q0 = NUM_ITE; - assign read_edge_list_ptr_0___P_N__q0 = P_N; - assign read_edge_list_ptr_0___edge_list_ptr__q0 = edge_list_ptr; - assign write_C_0___mat_C_ch_0__q0 = mat_C_ch_0; - assign write_C_1___mat_C_ch_1__q0 = mat_C_ch_1; - assign write_C_2___mat_C_ch_2__q0 = mat_C_ch_2; - assign write_C_3___mat_C_ch_3__q0 = mat_C_ch_3; - assign write_C_4___mat_C_ch_4__q0 = mat_C_ch_4; - assign write_C_5___mat_C_ch_5__q0 = mat_C_ch_5; - assign write_C_6___mat_C_ch_6__q0 = mat_C_ch_6; - assign write_C_7___mat_C_ch_7__q0 = mat_C_ch_7; - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/Sextans_control_s_axi.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/Sextans_control_s_axi.v deleted file mode 100644 index bf9b0fab..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/Sextans_control_s_axi.v +++ /dev/null @@ -1,1574 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Tool Version Limit: 2019.12 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== -`timescale 1ns/1ps -module Sextans_control_s_axi -#(parameter - C_S_AXI_ADDR_WIDTH = 9, - C_S_AXI_DATA_WIDTH = 32 -)( - input wire ACLK, - input wire ARESET, - input wire ACLK_EN, - input wire [C_S_AXI_ADDR_WIDTH-1:0] AWADDR, - input wire AWVALID, - output wire AWREADY, - input wire [C_S_AXI_DATA_WIDTH-1:0] WDATA, - input wire [C_S_AXI_DATA_WIDTH/8-1:0] WSTRB, - input wire WVALID, - output wire WREADY, - output wire [1:0] BRESP, - output wire BVALID, - input wire BREADY, - input wire [C_S_AXI_ADDR_WIDTH-1:0] ARADDR, - input wire ARVALID, - output wire ARREADY, - output wire [C_S_AXI_DATA_WIDTH-1:0] RDATA, - output wire [1:0] RRESP, - output wire RVALID, - input wire RREADY, - output wire interrupt, - output wire [63:0] edge_list_ptr, - output wire [63:0] edge_list_ch_0, - output wire [63:0] edge_list_ch_1, - output wire [63:0] edge_list_ch_2, - output wire [63:0] edge_list_ch_3, - output wire [63:0] edge_list_ch_4, - output wire [63:0] edge_list_ch_5, - output wire [63:0] edge_list_ch_6, - output wire [63:0] edge_list_ch_7, - output wire [63:0] mat_B_ch_0, - output wire [63:0] mat_B_ch_1, - output wire [63:0] mat_B_ch_2, - output wire [63:0] mat_B_ch_3, - output wire [63:0] mat_C_ch_in_0, - output wire [63:0] mat_C_ch_in_1, - output wire [63:0] mat_C_ch_in_2, - output wire [63:0] mat_C_ch_in_3, - output wire [63:0] mat_C_ch_in_4, - output wire [63:0] mat_C_ch_in_5, - output wire [63:0] mat_C_ch_in_6, - output wire [63:0] mat_C_ch_in_7, - output wire [63:0] mat_C_ch_0, - output wire [63:0] mat_C_ch_1, - output wire [63:0] mat_C_ch_2, - output wire [63:0] mat_C_ch_3, - output wire [63:0] mat_C_ch_4, - output wire [63:0] mat_C_ch_5, - output wire [63:0] mat_C_ch_6, - output wire [63:0] mat_C_ch_7, - output wire [31:0] NUM_ITE, - output wire [31:0] NUM_A_LEN, - output wire [31:0] M, - output wire [31:0] K, - output wire [31:0] P_N, - output wire [31:0] alpha_u, - output wire [31:0] beta_u, - output wire ap_start, - input wire ap_done, - input wire ap_ready, - input wire ap_idle -); -//------------------------Address Info------------------- -// 0x000 : Control signals -// bit 0 - ap_start (Read/Write/SC) -// bit 1 - ap_done (Read/COR) -// bit 2 - ap_idle (Read) -// bit 3 - ap_ready (Read/COR) -// bit 7 - auto_restart (Read/Write) -// bit 9 - interrupt (Read) -// others - reserved -// 0x004 : Global Interrupt Enable Register -// bit 0 - Global Interrupt Enable (Read/Write) -// others - reserved -// 0x008 : IP Interrupt Enable Register (Read/Write) -// bit 0 - enable ap_done interrupt (Read/Write) -// others - reserved -// 0x00c : IP Interrupt Status Register (Read/TOW) -// bit 0 - ap_done (Read/TOW) -// others - reserved -// 0x010 : Data signal of edge_list_ptr -// bit 31~0 - edge_list_ptr[31:0] (Read/Write) -// 0x014 : Data signal of edge_list_ptr -// bit 31~0 - edge_list_ptr[63:32] (Read/Write) -// 0x018 : reserved -// 0x01c : Data signal of edge_list_ch_0 -// bit 31~0 - edge_list_ch_0[31:0] (Read/Write) -// 0x020 : Data signal of edge_list_ch_0 -// bit 31~0 - edge_list_ch_0[63:32] (Read/Write) -// 0x024 : reserved -// 0x028 : Data signal of edge_list_ch_1 -// bit 31~0 - edge_list_ch_1[31:0] (Read/Write) -// 0x02c : Data signal of edge_list_ch_1 -// bit 31~0 - edge_list_ch_1[63:32] (Read/Write) -// 0x030 : reserved -// 0x034 : Data signal of edge_list_ch_2 -// bit 31~0 - edge_list_ch_2[31:0] (Read/Write) -// 0x038 : Data signal of edge_list_ch_2 -// bit 31~0 - edge_list_ch_2[63:32] (Read/Write) -// 0x03c : reserved -// 0x040 : Data signal of edge_list_ch_3 -// bit 31~0 - edge_list_ch_3[31:0] (Read/Write) -// 0x044 : Data signal of edge_list_ch_3 -// bit 31~0 - edge_list_ch_3[63:32] (Read/Write) -// 0x048 : reserved -// 0x04c : Data signal of edge_list_ch_4 -// bit 31~0 - edge_list_ch_4[31:0] (Read/Write) -// 0x050 : Data signal of edge_list_ch_4 -// bit 31~0 - edge_list_ch_4[63:32] (Read/Write) -// 0x054 : reserved -// 0x058 : Data signal of edge_list_ch_5 -// bit 31~0 - edge_list_ch_5[31:0] (Read/Write) -// 0x05c : Data signal of edge_list_ch_5 -// bit 31~0 - edge_list_ch_5[63:32] (Read/Write) -// 0x060 : reserved -// 0x064 : Data signal of edge_list_ch_6 -// bit 31~0 - edge_list_ch_6[31:0] (Read/Write) -// 0x068 : Data signal of edge_list_ch_6 -// bit 31~0 - edge_list_ch_6[63:32] (Read/Write) -// 0x06c : reserved -// 0x070 : Data signal of edge_list_ch_7 -// bit 31~0 - edge_list_ch_7[31:0] (Read/Write) -// 0x074 : Data signal of edge_list_ch_7 -// bit 31~0 - edge_list_ch_7[63:32] (Read/Write) -// 0x078 : reserved -// 0x07c : Data signal of mat_B_ch_0 -// bit 31~0 - mat_B_ch_0[31:0] (Read/Write) -// 0x080 : Data signal of mat_B_ch_0 -// bit 31~0 - mat_B_ch_0[63:32] (Read/Write) -// 0x084 : reserved -// 0x088 : Data signal of mat_B_ch_1 -// bit 31~0 - mat_B_ch_1[31:0] (Read/Write) -// 0x08c : Data signal of mat_B_ch_1 -// bit 31~0 - mat_B_ch_1[63:32] (Read/Write) -// 0x090 : reserved -// 0x094 : Data signal of mat_B_ch_2 -// bit 31~0 - mat_B_ch_2[31:0] (Read/Write) -// 0x098 : Data signal of mat_B_ch_2 -// bit 31~0 - mat_B_ch_2[63:32] (Read/Write) -// 0x09c : reserved -// 0x0a0 : Data signal of mat_B_ch_3 -// bit 31~0 - mat_B_ch_3[31:0] (Read/Write) -// 0x0a4 : Data signal of mat_B_ch_3 -// bit 31~0 - mat_B_ch_3[63:32] (Read/Write) -// 0x0a8 : reserved -// 0x0ac : Data signal of mat_C_ch_in_0 -// bit 31~0 - mat_C_ch_in_0[31:0] (Read/Write) -// 0x0b0 : Data signal of mat_C_ch_in_0 -// bit 31~0 - mat_C_ch_in_0[63:32] (Read/Write) -// 0x0b4 : reserved -// 0x0b8 : Data signal of mat_C_ch_in_1 -// bit 31~0 - mat_C_ch_in_1[31:0] (Read/Write) -// 0x0bc : Data signal of mat_C_ch_in_1 -// bit 31~0 - mat_C_ch_in_1[63:32] (Read/Write) -// 0x0c0 : reserved -// 0x0c4 : Data signal of mat_C_ch_in_2 -// bit 31~0 - mat_C_ch_in_2[31:0] (Read/Write) -// 0x0c8 : Data signal of mat_C_ch_in_2 -// bit 31~0 - mat_C_ch_in_2[63:32] (Read/Write) -// 0x0cc : reserved -// 0x0d0 : Data signal of mat_C_ch_in_3 -// bit 31~0 - mat_C_ch_in_3[31:0] (Read/Write) -// 0x0d4 : Data signal of mat_C_ch_in_3 -// bit 31~0 - mat_C_ch_in_3[63:32] (Read/Write) -// 0x0d8 : reserved -// 0x0dc : Data signal of mat_C_ch_in_4 -// bit 31~0 - mat_C_ch_in_4[31:0] (Read/Write) -// 0x0e0 : Data signal of mat_C_ch_in_4 -// bit 31~0 - mat_C_ch_in_4[63:32] (Read/Write) -// 0x0e4 : reserved -// 0x0e8 : Data signal of mat_C_ch_in_5 -// bit 31~0 - mat_C_ch_in_5[31:0] (Read/Write) -// 0x0ec : Data signal of mat_C_ch_in_5 -// bit 31~0 - mat_C_ch_in_5[63:32] (Read/Write) -// 0x0f0 : reserved -// 0x0f4 : Data signal of mat_C_ch_in_6 -// bit 31~0 - mat_C_ch_in_6[31:0] (Read/Write) -// 0x0f8 : Data signal of mat_C_ch_in_6 -// bit 31~0 - mat_C_ch_in_6[63:32] (Read/Write) -// 0x0fc : reserved -// 0x100 : Data signal of mat_C_ch_in_7 -// bit 31~0 - mat_C_ch_in_7[31:0] (Read/Write) -// 0x104 : Data signal of mat_C_ch_in_7 -// bit 31~0 - mat_C_ch_in_7[63:32] (Read/Write) -// 0x108 : reserved -// 0x10c : Data signal of mat_C_ch_0 -// bit 31~0 - mat_C_ch_0[31:0] (Read/Write) -// 0x110 : Data signal of mat_C_ch_0 -// bit 31~0 - mat_C_ch_0[63:32] (Read/Write) -// 0x114 : reserved -// 0x118 : Data signal of mat_C_ch_1 -// bit 31~0 - mat_C_ch_1[31:0] (Read/Write) -// 0x11c : Data signal of mat_C_ch_1 -// bit 31~0 - mat_C_ch_1[63:32] (Read/Write) -// 0x120 : reserved -// 0x124 : Data signal of mat_C_ch_2 -// bit 31~0 - mat_C_ch_2[31:0] (Read/Write) -// 0x128 : Data signal of mat_C_ch_2 -// bit 31~0 - mat_C_ch_2[63:32] (Read/Write) -// 0x12c : reserved -// 0x130 : Data signal of mat_C_ch_3 -// bit 31~0 - mat_C_ch_3[31:0] (Read/Write) -// 0x134 : Data signal of mat_C_ch_3 -// bit 31~0 - mat_C_ch_3[63:32] (Read/Write) -// 0x138 : reserved -// 0x13c : Data signal of mat_C_ch_4 -// bit 31~0 - mat_C_ch_4[31:0] (Read/Write) -// 0x140 : Data signal of mat_C_ch_4 -// bit 31~0 - mat_C_ch_4[63:32] (Read/Write) -// 0x144 : reserved -// 0x148 : Data signal of mat_C_ch_5 -// bit 31~0 - mat_C_ch_5[31:0] (Read/Write) -// 0x14c : Data signal of mat_C_ch_5 -// bit 31~0 - mat_C_ch_5[63:32] (Read/Write) -// 0x150 : reserved -// 0x154 : Data signal of mat_C_ch_6 -// bit 31~0 - mat_C_ch_6[31:0] (Read/Write) -// 0x158 : Data signal of mat_C_ch_6 -// bit 31~0 - mat_C_ch_6[63:32] (Read/Write) -// 0x15c : reserved -// 0x160 : Data signal of mat_C_ch_7 -// bit 31~0 - mat_C_ch_7[31:0] (Read/Write) -// 0x164 : Data signal of mat_C_ch_7 -// bit 31~0 - mat_C_ch_7[63:32] (Read/Write) -// 0x168 : reserved -// 0x16c : Data signal of NUM_ITE -// bit 31~0 - NUM_ITE[31:0] (Read/Write) -// 0x170 : reserved -// 0x174 : Data signal of NUM_A_LEN -// bit 31~0 - NUM_A_LEN[31:0] (Read/Write) -// 0x178 : reserved -// 0x17c : Data signal of M -// bit 31~0 - M[31:0] (Read/Write) -// 0x180 : reserved -// 0x184 : Data signal of K -// bit 31~0 - K[31:0] (Read/Write) -// 0x188 : reserved -// 0x18c : Data signal of P_N -// bit 31~0 - P_N[31:0] (Read/Write) -// 0x190 : reserved -// 0x194 : Data signal of alpha_u -// bit 31~0 - alpha_u[31:0] (Read/Write) -// 0x198 : reserved -// 0x19c : Data signal of beta_u -// bit 31~0 - beta_u[31:0] (Read/Write) -// 0x1a0 : reserved -// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) - -//------------------------Parameter---------------------- -localparam - ADDR_AP_CTRL = 9'h000, - ADDR_GIE = 9'h004, - ADDR_IER = 9'h008, - ADDR_ISR = 9'h00c, - ADDR_EDGE_LIST_PTR_DATA_0 = 9'h010, - ADDR_EDGE_LIST_PTR_DATA_1 = 9'h014, - ADDR_EDGE_LIST_PTR_CTRL = 9'h018, - ADDR_EDGE_LIST_CH_0_DATA_0 = 9'h01c, - ADDR_EDGE_LIST_CH_0_DATA_1 = 9'h020, - ADDR_EDGE_LIST_CH_0_CTRL = 9'h024, - ADDR_EDGE_LIST_CH_1_DATA_0 = 9'h028, - ADDR_EDGE_LIST_CH_1_DATA_1 = 9'h02c, - ADDR_EDGE_LIST_CH_1_CTRL = 9'h030, - ADDR_EDGE_LIST_CH_2_DATA_0 = 9'h034, - ADDR_EDGE_LIST_CH_2_DATA_1 = 9'h038, - ADDR_EDGE_LIST_CH_2_CTRL = 9'h03c, - ADDR_EDGE_LIST_CH_3_DATA_0 = 9'h040, - ADDR_EDGE_LIST_CH_3_DATA_1 = 9'h044, - ADDR_EDGE_LIST_CH_3_CTRL = 9'h048, - ADDR_EDGE_LIST_CH_4_DATA_0 = 9'h04c, - ADDR_EDGE_LIST_CH_4_DATA_1 = 9'h050, - ADDR_EDGE_LIST_CH_4_CTRL = 9'h054, - ADDR_EDGE_LIST_CH_5_DATA_0 = 9'h058, - ADDR_EDGE_LIST_CH_5_DATA_1 = 9'h05c, - ADDR_EDGE_LIST_CH_5_CTRL = 9'h060, - ADDR_EDGE_LIST_CH_6_DATA_0 = 9'h064, - ADDR_EDGE_LIST_CH_6_DATA_1 = 9'h068, - ADDR_EDGE_LIST_CH_6_CTRL = 9'h06c, - ADDR_EDGE_LIST_CH_7_DATA_0 = 9'h070, - ADDR_EDGE_LIST_CH_7_DATA_1 = 9'h074, - ADDR_EDGE_LIST_CH_7_CTRL = 9'h078, - ADDR_MAT_B_CH_0_DATA_0 = 9'h07c, - ADDR_MAT_B_CH_0_DATA_1 = 9'h080, - ADDR_MAT_B_CH_0_CTRL = 9'h084, - ADDR_MAT_B_CH_1_DATA_0 = 9'h088, - ADDR_MAT_B_CH_1_DATA_1 = 9'h08c, - ADDR_MAT_B_CH_1_CTRL = 9'h090, - ADDR_MAT_B_CH_2_DATA_0 = 9'h094, - ADDR_MAT_B_CH_2_DATA_1 = 9'h098, - ADDR_MAT_B_CH_2_CTRL = 9'h09c, - ADDR_MAT_B_CH_3_DATA_0 = 9'h0a0, - ADDR_MAT_B_CH_3_DATA_1 = 9'h0a4, - ADDR_MAT_B_CH_3_CTRL = 9'h0a8, - ADDR_MAT_C_CH_IN_0_DATA_0 = 9'h0ac, - ADDR_MAT_C_CH_IN_0_DATA_1 = 9'h0b0, - ADDR_MAT_C_CH_IN_0_CTRL = 9'h0b4, - ADDR_MAT_C_CH_IN_1_DATA_0 = 9'h0b8, - ADDR_MAT_C_CH_IN_1_DATA_1 = 9'h0bc, - ADDR_MAT_C_CH_IN_1_CTRL = 9'h0c0, - ADDR_MAT_C_CH_IN_2_DATA_0 = 9'h0c4, - ADDR_MAT_C_CH_IN_2_DATA_1 = 9'h0c8, - ADDR_MAT_C_CH_IN_2_CTRL = 9'h0cc, - ADDR_MAT_C_CH_IN_3_DATA_0 = 9'h0d0, - ADDR_MAT_C_CH_IN_3_DATA_1 = 9'h0d4, - ADDR_MAT_C_CH_IN_3_CTRL = 9'h0d8, - ADDR_MAT_C_CH_IN_4_DATA_0 = 9'h0dc, - ADDR_MAT_C_CH_IN_4_DATA_1 = 9'h0e0, - ADDR_MAT_C_CH_IN_4_CTRL = 9'h0e4, - ADDR_MAT_C_CH_IN_5_DATA_0 = 9'h0e8, - ADDR_MAT_C_CH_IN_5_DATA_1 = 9'h0ec, - ADDR_MAT_C_CH_IN_5_CTRL = 9'h0f0, - ADDR_MAT_C_CH_IN_6_DATA_0 = 9'h0f4, - ADDR_MAT_C_CH_IN_6_DATA_1 = 9'h0f8, - ADDR_MAT_C_CH_IN_6_CTRL = 9'h0fc, - ADDR_MAT_C_CH_IN_7_DATA_0 = 9'h100, - ADDR_MAT_C_CH_IN_7_DATA_1 = 9'h104, - ADDR_MAT_C_CH_IN_7_CTRL = 9'h108, - ADDR_MAT_C_CH_0_DATA_0 = 9'h10c, - ADDR_MAT_C_CH_0_DATA_1 = 9'h110, - ADDR_MAT_C_CH_0_CTRL = 9'h114, - ADDR_MAT_C_CH_1_DATA_0 = 9'h118, - ADDR_MAT_C_CH_1_DATA_1 = 9'h11c, - ADDR_MAT_C_CH_1_CTRL = 9'h120, - ADDR_MAT_C_CH_2_DATA_0 = 9'h124, - ADDR_MAT_C_CH_2_DATA_1 = 9'h128, - ADDR_MAT_C_CH_2_CTRL = 9'h12c, - ADDR_MAT_C_CH_3_DATA_0 = 9'h130, - ADDR_MAT_C_CH_3_DATA_1 = 9'h134, - ADDR_MAT_C_CH_3_CTRL = 9'h138, - ADDR_MAT_C_CH_4_DATA_0 = 9'h13c, - ADDR_MAT_C_CH_4_DATA_1 = 9'h140, - ADDR_MAT_C_CH_4_CTRL = 9'h144, - ADDR_MAT_C_CH_5_DATA_0 = 9'h148, - ADDR_MAT_C_CH_5_DATA_1 = 9'h14c, - ADDR_MAT_C_CH_5_CTRL = 9'h150, - ADDR_MAT_C_CH_6_DATA_0 = 9'h154, - ADDR_MAT_C_CH_6_DATA_1 = 9'h158, - ADDR_MAT_C_CH_6_CTRL = 9'h15c, - ADDR_MAT_C_CH_7_DATA_0 = 9'h160, - ADDR_MAT_C_CH_7_DATA_1 = 9'h164, - ADDR_MAT_C_CH_7_CTRL = 9'h168, - ADDR_NUM_ITE_DATA_0 = 9'h16c, - ADDR_NUM_ITE_CTRL = 9'h170, - ADDR_NUM_A_LEN_DATA_0 = 9'h174, - ADDR_NUM_A_LEN_CTRL = 9'h178, - ADDR_M_DATA_0 = 9'h17c, - ADDR_M_CTRL = 9'h180, - ADDR_K_DATA_0 = 9'h184, - ADDR_K_CTRL = 9'h188, - ADDR_P_N_DATA_0 = 9'h18c, - ADDR_P_N_CTRL = 9'h190, - ADDR_ALPHA_U_DATA_0 = 9'h194, - ADDR_ALPHA_U_CTRL = 9'h198, - ADDR_BETA_U_DATA_0 = 9'h19c, - ADDR_BETA_U_CTRL = 9'h1a0, - WRIDLE = 2'd0, - WRDATA = 2'd1, - WRRESP = 2'd2, - WRRESET = 2'd3, - RDIDLE = 2'd0, - RDDATA = 2'd1, - RDRESET = 2'd2, - ADDR_BITS = 9; - -//------------------------Local signal------------------- - reg [1:0] wstate = WRRESET; - reg [1:0] wnext; - reg [ADDR_BITS-1:0] waddr; - wire [C_S_AXI_DATA_WIDTH-1:0] wmask; - wire aw_hs; - wire w_hs; - reg [1:0] rstate = RDRESET; - reg [1:0] rnext; - reg [C_S_AXI_DATA_WIDTH-1:0] rdata; - wire ar_hs; - wire [ADDR_BITS-1:0] raddr; - // internal registers - reg int_ap_idle; - reg int_ap_ready = 1'b0; - wire task_ap_ready; - reg int_ap_done = 1'b0; - wire task_ap_done; - reg int_task_ap_done = 1'b0; - reg int_ap_start = 1'b0; - reg int_interrupt = 1'b0; - reg int_auto_restart = 1'b0; - reg auto_restart_status = 1'b0; - wire auto_restart_done; - reg int_gie = 1'b0; - reg int_ier = 1'b0; - reg int_isr = 1'b0; - reg [63:0] int_edge_list_ptr = 'b0; - reg [63:0] int_edge_list_ch_0 = 'b0; - reg [63:0] int_edge_list_ch_1 = 'b0; - reg [63:0] int_edge_list_ch_2 = 'b0; - reg [63:0] int_edge_list_ch_3 = 'b0; - reg [63:0] int_edge_list_ch_4 = 'b0; - reg [63:0] int_edge_list_ch_5 = 'b0; - reg [63:0] int_edge_list_ch_6 = 'b0; - reg [63:0] int_edge_list_ch_7 = 'b0; - reg [63:0] int_mat_B_ch_0 = 'b0; - reg [63:0] int_mat_B_ch_1 = 'b0; - reg [63:0] int_mat_B_ch_2 = 'b0; - reg [63:0] int_mat_B_ch_3 = 'b0; - reg [63:0] int_mat_C_ch_in_0 = 'b0; - reg [63:0] int_mat_C_ch_in_1 = 'b0; - reg [63:0] int_mat_C_ch_in_2 = 'b0; - reg [63:0] int_mat_C_ch_in_3 = 'b0; - reg [63:0] int_mat_C_ch_in_4 = 'b0; - reg [63:0] int_mat_C_ch_in_5 = 'b0; - reg [63:0] int_mat_C_ch_in_6 = 'b0; - reg [63:0] int_mat_C_ch_in_7 = 'b0; - reg [63:0] int_mat_C_ch_0 = 'b0; - reg [63:0] int_mat_C_ch_1 = 'b0; - reg [63:0] int_mat_C_ch_2 = 'b0; - reg [63:0] int_mat_C_ch_3 = 'b0; - reg [63:0] int_mat_C_ch_4 = 'b0; - reg [63:0] int_mat_C_ch_5 = 'b0; - reg [63:0] int_mat_C_ch_6 = 'b0; - reg [63:0] int_mat_C_ch_7 = 'b0; - reg [31:0] int_NUM_ITE = 'b0; - reg [31:0] int_NUM_A_LEN = 'b0; - reg [31:0] int_M = 'b0; - reg [31:0] int_K = 'b0; - reg [31:0] int_P_N = 'b0; - reg [31:0] int_alpha_u = 'b0; - reg [31:0] int_beta_u = 'b0; - -//------------------------Instantiation------------------ - - -//------------------------AXI write fsm------------------ -assign AWREADY = (wstate == WRIDLE); -assign WREADY = (wstate == WRDATA); -assign BRESP = 2'b00; // OKAY -assign BVALID = (wstate == WRRESP); -assign wmask = { {8{WSTRB[3]}}, {8{WSTRB[2]}}, {8{WSTRB[1]}}, {8{WSTRB[0]}} }; -assign aw_hs = AWVALID & AWREADY; -assign w_hs = WVALID & WREADY; - -// wstate -always @(posedge ACLK) begin - if (ARESET) - wstate <= WRRESET; - else if (ACLK_EN) - wstate <= wnext; -end - -// wnext -always @(*) begin - case (wstate) - WRIDLE: - if (AWVALID) - wnext = WRDATA; - else - wnext = WRIDLE; - WRDATA: - if (WVALID) - wnext = WRRESP; - else - wnext = WRDATA; - WRRESP: - if (BREADY) - wnext = WRIDLE; - else - wnext = WRRESP; - default: - wnext = WRIDLE; - endcase -end - -// waddr -always @(posedge ACLK) begin - if (ACLK_EN) begin - if (aw_hs) - waddr <= AWADDR[ADDR_BITS-1:0]; - end -end - -//------------------------AXI read fsm------------------- -assign ARREADY = (rstate == RDIDLE); -assign RDATA = rdata; -assign RRESP = 2'b00; // OKAY -assign RVALID = (rstate == RDDATA); -assign ar_hs = ARVALID & ARREADY; -assign raddr = ARADDR[ADDR_BITS-1:0]; - -// rstate -always @(posedge ACLK) begin - if (ARESET) - rstate <= RDRESET; - else if (ACLK_EN) - rstate <= rnext; -end - -// rnext -always @(*) begin - case (rstate) - RDIDLE: - if (ARVALID) - rnext = RDDATA; - else - rnext = RDIDLE; - RDDATA: - if (RREADY & RVALID) - rnext = RDIDLE; - else - rnext = RDDATA; - default: - rnext = RDIDLE; - endcase -end - -// rdata -always @(posedge ACLK) begin - if (ACLK_EN) begin - if (ar_hs) begin - rdata <= 'b0; - case (raddr) - ADDR_AP_CTRL: begin - rdata[0] <= int_ap_start; - rdata[1] <= int_task_ap_done; - rdata[2] <= int_ap_idle; - rdata[3] <= int_ap_ready; - rdata[7] <= int_auto_restart; - rdata[9] <= int_interrupt; - end - ADDR_GIE: begin - rdata <= int_gie; - end - ADDR_IER: begin - rdata <= int_ier; - end - ADDR_ISR: begin - rdata <= int_isr; - end - ADDR_EDGE_LIST_PTR_DATA_0: begin - rdata <= int_edge_list_ptr[31:0]; - end - ADDR_EDGE_LIST_PTR_DATA_1: begin - rdata <= int_edge_list_ptr[63:32]; - end - ADDR_EDGE_LIST_CH_0_DATA_0: begin - rdata <= int_edge_list_ch_0[31:0]; - end - ADDR_EDGE_LIST_CH_0_DATA_1: begin - rdata <= int_edge_list_ch_0[63:32]; - end - ADDR_EDGE_LIST_CH_1_DATA_0: begin - rdata <= int_edge_list_ch_1[31:0]; - end - ADDR_EDGE_LIST_CH_1_DATA_1: begin - rdata <= int_edge_list_ch_1[63:32]; - end - ADDR_EDGE_LIST_CH_2_DATA_0: begin - rdata <= int_edge_list_ch_2[31:0]; - end - ADDR_EDGE_LIST_CH_2_DATA_1: begin - rdata <= int_edge_list_ch_2[63:32]; - end - ADDR_EDGE_LIST_CH_3_DATA_0: begin - rdata <= int_edge_list_ch_3[31:0]; - end - ADDR_EDGE_LIST_CH_3_DATA_1: begin - rdata <= int_edge_list_ch_3[63:32]; - end - ADDR_EDGE_LIST_CH_4_DATA_0: begin - rdata <= int_edge_list_ch_4[31:0]; - end - ADDR_EDGE_LIST_CH_4_DATA_1: begin - rdata <= int_edge_list_ch_4[63:32]; - end - ADDR_EDGE_LIST_CH_5_DATA_0: begin - rdata <= int_edge_list_ch_5[31:0]; - end - ADDR_EDGE_LIST_CH_5_DATA_1: begin - rdata <= int_edge_list_ch_5[63:32]; - end - ADDR_EDGE_LIST_CH_6_DATA_0: begin - rdata <= int_edge_list_ch_6[31:0]; - end - ADDR_EDGE_LIST_CH_6_DATA_1: begin - rdata <= int_edge_list_ch_6[63:32]; - end - ADDR_EDGE_LIST_CH_7_DATA_0: begin - rdata <= int_edge_list_ch_7[31:0]; - end - ADDR_EDGE_LIST_CH_7_DATA_1: begin - rdata <= int_edge_list_ch_7[63:32]; - end - ADDR_MAT_B_CH_0_DATA_0: begin - rdata <= int_mat_B_ch_0[31:0]; - end - ADDR_MAT_B_CH_0_DATA_1: begin - rdata <= int_mat_B_ch_0[63:32]; - end - ADDR_MAT_B_CH_1_DATA_0: begin - rdata <= int_mat_B_ch_1[31:0]; - end - ADDR_MAT_B_CH_1_DATA_1: begin - rdata <= int_mat_B_ch_1[63:32]; - end - ADDR_MAT_B_CH_2_DATA_0: begin - rdata <= int_mat_B_ch_2[31:0]; - end - ADDR_MAT_B_CH_2_DATA_1: begin - rdata <= int_mat_B_ch_2[63:32]; - end - ADDR_MAT_B_CH_3_DATA_0: begin - rdata <= int_mat_B_ch_3[31:0]; - end - ADDR_MAT_B_CH_3_DATA_1: begin - rdata <= int_mat_B_ch_3[63:32]; - end - ADDR_MAT_C_CH_IN_0_DATA_0: begin - rdata <= int_mat_C_ch_in_0[31:0]; - end - ADDR_MAT_C_CH_IN_0_DATA_1: begin - rdata <= int_mat_C_ch_in_0[63:32]; - end - ADDR_MAT_C_CH_IN_1_DATA_0: begin - rdata <= int_mat_C_ch_in_1[31:0]; - end - ADDR_MAT_C_CH_IN_1_DATA_1: begin - rdata <= int_mat_C_ch_in_1[63:32]; - end - ADDR_MAT_C_CH_IN_2_DATA_0: begin - rdata <= int_mat_C_ch_in_2[31:0]; - end - ADDR_MAT_C_CH_IN_2_DATA_1: begin - rdata <= int_mat_C_ch_in_2[63:32]; - end - ADDR_MAT_C_CH_IN_3_DATA_0: begin - rdata <= int_mat_C_ch_in_3[31:0]; - end - ADDR_MAT_C_CH_IN_3_DATA_1: begin - rdata <= int_mat_C_ch_in_3[63:32]; - end - ADDR_MAT_C_CH_IN_4_DATA_0: begin - rdata <= int_mat_C_ch_in_4[31:0]; - end - ADDR_MAT_C_CH_IN_4_DATA_1: begin - rdata <= int_mat_C_ch_in_4[63:32]; - end - ADDR_MAT_C_CH_IN_5_DATA_0: begin - rdata <= int_mat_C_ch_in_5[31:0]; - end - ADDR_MAT_C_CH_IN_5_DATA_1: begin - rdata <= int_mat_C_ch_in_5[63:32]; - end - ADDR_MAT_C_CH_IN_6_DATA_0: begin - rdata <= int_mat_C_ch_in_6[31:0]; - end - ADDR_MAT_C_CH_IN_6_DATA_1: begin - rdata <= int_mat_C_ch_in_6[63:32]; - end - ADDR_MAT_C_CH_IN_7_DATA_0: begin - rdata <= int_mat_C_ch_in_7[31:0]; - end - ADDR_MAT_C_CH_IN_7_DATA_1: begin - rdata <= int_mat_C_ch_in_7[63:32]; - end - ADDR_MAT_C_CH_0_DATA_0: begin - rdata <= int_mat_C_ch_0[31:0]; - end - ADDR_MAT_C_CH_0_DATA_1: begin - rdata <= int_mat_C_ch_0[63:32]; - end - ADDR_MAT_C_CH_1_DATA_0: begin - rdata <= int_mat_C_ch_1[31:0]; - end - ADDR_MAT_C_CH_1_DATA_1: begin - rdata <= int_mat_C_ch_1[63:32]; - end - ADDR_MAT_C_CH_2_DATA_0: begin - rdata <= int_mat_C_ch_2[31:0]; - end - ADDR_MAT_C_CH_2_DATA_1: begin - rdata <= int_mat_C_ch_2[63:32]; - end - ADDR_MAT_C_CH_3_DATA_0: begin - rdata <= int_mat_C_ch_3[31:0]; - end - ADDR_MAT_C_CH_3_DATA_1: begin - rdata <= int_mat_C_ch_3[63:32]; - end - ADDR_MAT_C_CH_4_DATA_0: begin - rdata <= int_mat_C_ch_4[31:0]; - end - ADDR_MAT_C_CH_4_DATA_1: begin - rdata <= int_mat_C_ch_4[63:32]; - end - ADDR_MAT_C_CH_5_DATA_0: begin - rdata <= int_mat_C_ch_5[31:0]; - end - ADDR_MAT_C_CH_5_DATA_1: begin - rdata <= int_mat_C_ch_5[63:32]; - end - ADDR_MAT_C_CH_6_DATA_0: begin - rdata <= int_mat_C_ch_6[31:0]; - end - ADDR_MAT_C_CH_6_DATA_1: begin - rdata <= int_mat_C_ch_6[63:32]; - end - ADDR_MAT_C_CH_7_DATA_0: begin - rdata <= int_mat_C_ch_7[31:0]; - end - ADDR_MAT_C_CH_7_DATA_1: begin - rdata <= int_mat_C_ch_7[63:32]; - end - ADDR_NUM_ITE_DATA_0: begin - rdata <= int_NUM_ITE[31:0]; - end - ADDR_NUM_A_LEN_DATA_0: begin - rdata <= int_NUM_A_LEN[31:0]; - end - ADDR_M_DATA_0: begin - rdata <= int_M[31:0]; - end - ADDR_K_DATA_0: begin - rdata <= int_K[31:0]; - end - ADDR_P_N_DATA_0: begin - rdata <= int_P_N[31:0]; - end - ADDR_ALPHA_U_DATA_0: begin - rdata <= int_alpha_u[31:0]; - end - ADDR_BETA_U_DATA_0: begin - rdata <= int_beta_u[31:0]; - end - endcase - end - end -end - - -//------------------------Register logic----------------- -assign interrupt = int_interrupt; -assign ap_start = int_ap_start; -assign task_ap_done = (ap_done && !auto_restart_status) || auto_restart_done; -assign task_ap_ready = ap_ready && !int_auto_restart; -assign auto_restart_done = auto_restart_status && (ap_idle && !int_ap_idle); -assign edge_list_ptr = int_edge_list_ptr; -assign edge_list_ch_0 = int_edge_list_ch_0; -assign edge_list_ch_1 = int_edge_list_ch_1; -assign edge_list_ch_2 = int_edge_list_ch_2; -assign edge_list_ch_3 = int_edge_list_ch_3; -assign edge_list_ch_4 = int_edge_list_ch_4; -assign edge_list_ch_5 = int_edge_list_ch_5; -assign edge_list_ch_6 = int_edge_list_ch_6; -assign edge_list_ch_7 = int_edge_list_ch_7; -assign mat_B_ch_0 = int_mat_B_ch_0; -assign mat_B_ch_1 = int_mat_B_ch_1; -assign mat_B_ch_2 = int_mat_B_ch_2; -assign mat_B_ch_3 = int_mat_B_ch_3; -assign mat_C_ch_in_0 = int_mat_C_ch_in_0; -assign mat_C_ch_in_1 = int_mat_C_ch_in_1; -assign mat_C_ch_in_2 = int_mat_C_ch_in_2; -assign mat_C_ch_in_3 = int_mat_C_ch_in_3; -assign mat_C_ch_in_4 = int_mat_C_ch_in_4; -assign mat_C_ch_in_5 = int_mat_C_ch_in_5; -assign mat_C_ch_in_6 = int_mat_C_ch_in_6; -assign mat_C_ch_in_7 = int_mat_C_ch_in_7; -assign mat_C_ch_0 = int_mat_C_ch_0; -assign mat_C_ch_1 = int_mat_C_ch_1; -assign mat_C_ch_2 = int_mat_C_ch_2; -assign mat_C_ch_3 = int_mat_C_ch_3; -assign mat_C_ch_4 = int_mat_C_ch_4; -assign mat_C_ch_5 = int_mat_C_ch_5; -assign mat_C_ch_6 = int_mat_C_ch_6; -assign mat_C_ch_7 = int_mat_C_ch_7; -assign NUM_ITE = int_NUM_ITE; -assign NUM_A_LEN = int_NUM_A_LEN; -assign M = int_M; -assign K = int_K; -assign P_N = int_P_N; -assign alpha_u = int_alpha_u; -assign beta_u = int_beta_u; -// int_interrupt -always @(posedge ACLK) begin - if (ARESET) - int_interrupt <= 1'b0; - else if (ACLK_EN) begin - if (int_gie && (|int_isr)) - int_interrupt <= 1'b1; - else - int_interrupt <= 1'b0; - end -end - -// int_ap_start -always @(posedge ACLK) begin - if (ARESET) - int_ap_start <= 1'b0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_AP_CTRL && WSTRB[0] && WDATA[0]) - int_ap_start <= 1'b1; - else if (ap_done & int_auto_restart) - int_ap_start <= 1'b1; // auto restart - else - int_ap_start <= 1'b0; // self clear - end -end - -// int_ap_done -always @(posedge ACLK) begin - if (ARESET) - int_ap_done <= 1'b0; - else if (ACLK_EN) begin - int_ap_done <= ap_done; - end -end - -// int_task_ap_done -always @(posedge ACLK) begin - if (ARESET) - int_task_ap_done <= 1'b0; - else if (ACLK_EN) begin - if (task_ap_done) - int_task_ap_done <= 1'b1; - else if (ar_hs && raddr == ADDR_AP_CTRL) - int_task_ap_done <= 1'b0; // clear on read - end -end - -// int_ap_idle -always @(posedge ACLK) begin - if (ARESET) - int_ap_idle <= 1'b0; - else if (ACLK_EN) begin - int_ap_idle <= ap_idle; - end -end - -// int_ap_ready -always @(posedge ACLK) begin - if (ARESET) - int_ap_ready <= 1'b0; - else if (ACLK_EN) begin - if (task_ap_ready) - int_ap_ready <= 1'b1; - else if (ar_hs && raddr == ADDR_AP_CTRL) - int_ap_ready <= 1'b0; - end -end - -// int_auto_restart -always @(posedge ACLK) begin - if (ARESET) - int_auto_restart <= 1'b0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_AP_CTRL && WSTRB[0]) - int_auto_restart <= WDATA[7]; - end -end - -// auto_restart_status -always @(posedge ACLK) begin - if (ARESET) - auto_restart_status <= 1'b0; - else if (ACLK_EN) begin - if (int_auto_restart) - auto_restart_status <= 1'b1; - else if (ap_idle) - auto_restart_status <= 1'b0; - end -end - -// int_gie -always @(posedge ACLK) begin - if (ARESET) - int_gie <= 1'b0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_GIE && WSTRB[0]) - int_gie <= WDATA[0]; - end -end - -// int_ier -always @(posedge ACLK) begin - if (ARESET) - int_ier <= 1'b0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_IER && WSTRB[0]) - int_ier <= WDATA[0]; - end -end - -// int_isr -always @(posedge ACLK) begin - if (ARESET) - int_isr <= 1'b0; - else if (ACLK_EN) begin - if (int_ier & ap_done) - int_isr <= 1'b1; - else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) - int_isr <= int_isr ^ WDATA[0]; // toggle on write - end -end - -// int_edge_list_ptr[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ptr[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_PTR_DATA_0) - int_edge_list_ptr[31:0] <= (WDATA[31:0] & wmask) | (int_edge_list_ptr[31:0] & ~wmask); - end -end - -// int_edge_list_ptr[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ptr[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_PTR_DATA_1) - int_edge_list_ptr[63:32] <= (WDATA[31:0] & wmask) | (int_edge_list_ptr[63:32] & ~wmask); - end -end - -// int_edge_list_ch_0[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_0[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_0_DATA_0) - int_edge_list_ch_0[31:0] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_0[31:0] & ~wmask); - end -end - -// int_edge_list_ch_0[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_0[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_0_DATA_1) - int_edge_list_ch_0[63:32] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_0[63:32] & ~wmask); - end -end - -// int_edge_list_ch_1[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_1[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_1_DATA_0) - int_edge_list_ch_1[31:0] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_1[31:0] & ~wmask); - end -end - -// int_edge_list_ch_1[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_1[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_1_DATA_1) - int_edge_list_ch_1[63:32] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_1[63:32] & ~wmask); - end -end - -// int_edge_list_ch_2[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_2[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_2_DATA_0) - int_edge_list_ch_2[31:0] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_2[31:0] & ~wmask); - end -end - -// int_edge_list_ch_2[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_2[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_2_DATA_1) - int_edge_list_ch_2[63:32] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_2[63:32] & ~wmask); - end -end - -// int_edge_list_ch_3[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_3[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_3_DATA_0) - int_edge_list_ch_3[31:0] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_3[31:0] & ~wmask); - end -end - -// int_edge_list_ch_3[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_3[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_3_DATA_1) - int_edge_list_ch_3[63:32] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_3[63:32] & ~wmask); - end -end - -// int_edge_list_ch_4[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_4[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_4_DATA_0) - int_edge_list_ch_4[31:0] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_4[31:0] & ~wmask); - end -end - -// int_edge_list_ch_4[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_4[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_4_DATA_1) - int_edge_list_ch_4[63:32] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_4[63:32] & ~wmask); - end -end - -// int_edge_list_ch_5[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_5[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_5_DATA_0) - int_edge_list_ch_5[31:0] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_5[31:0] & ~wmask); - end -end - -// int_edge_list_ch_5[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_5[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_5_DATA_1) - int_edge_list_ch_5[63:32] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_5[63:32] & ~wmask); - end -end - -// int_edge_list_ch_6[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_6[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_6_DATA_0) - int_edge_list_ch_6[31:0] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_6[31:0] & ~wmask); - end -end - -// int_edge_list_ch_6[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_6[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_6_DATA_1) - int_edge_list_ch_6[63:32] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_6[63:32] & ~wmask); - end -end - -// int_edge_list_ch_7[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_7[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_7_DATA_0) - int_edge_list_ch_7[31:0] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_7[31:0] & ~wmask); - end -end - -// int_edge_list_ch_7[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_edge_list_ch_7[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_EDGE_LIST_CH_7_DATA_1) - int_edge_list_ch_7[63:32] <= (WDATA[31:0] & wmask) | (int_edge_list_ch_7[63:32] & ~wmask); - end -end - -// int_mat_B_ch_0[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_B_ch_0[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_B_CH_0_DATA_0) - int_mat_B_ch_0[31:0] <= (WDATA[31:0] & wmask) | (int_mat_B_ch_0[31:0] & ~wmask); - end -end - -// int_mat_B_ch_0[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_B_ch_0[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_B_CH_0_DATA_1) - int_mat_B_ch_0[63:32] <= (WDATA[31:0] & wmask) | (int_mat_B_ch_0[63:32] & ~wmask); - end -end - -// int_mat_B_ch_1[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_B_ch_1[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_B_CH_1_DATA_0) - int_mat_B_ch_1[31:0] <= (WDATA[31:0] & wmask) | (int_mat_B_ch_1[31:0] & ~wmask); - end -end - -// int_mat_B_ch_1[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_B_ch_1[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_B_CH_1_DATA_1) - int_mat_B_ch_1[63:32] <= (WDATA[31:0] & wmask) | (int_mat_B_ch_1[63:32] & ~wmask); - end -end - -// int_mat_B_ch_2[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_B_ch_2[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_B_CH_2_DATA_0) - int_mat_B_ch_2[31:0] <= (WDATA[31:0] & wmask) | (int_mat_B_ch_2[31:0] & ~wmask); - end -end - -// int_mat_B_ch_2[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_B_ch_2[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_B_CH_2_DATA_1) - int_mat_B_ch_2[63:32] <= (WDATA[31:0] & wmask) | (int_mat_B_ch_2[63:32] & ~wmask); - end -end - -// int_mat_B_ch_3[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_B_ch_3[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_B_CH_3_DATA_0) - int_mat_B_ch_3[31:0] <= (WDATA[31:0] & wmask) | (int_mat_B_ch_3[31:0] & ~wmask); - end -end - -// int_mat_B_ch_3[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_B_ch_3[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_B_CH_3_DATA_1) - int_mat_B_ch_3[63:32] <= (WDATA[31:0] & wmask) | (int_mat_B_ch_3[63:32] & ~wmask); - end -end - -// int_mat_C_ch_in_0[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_0[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_0_DATA_0) - int_mat_C_ch_in_0[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_0[31:0] & ~wmask); - end -end - -// int_mat_C_ch_in_0[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_0[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_0_DATA_1) - int_mat_C_ch_in_0[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_0[63:32] & ~wmask); - end -end - -// int_mat_C_ch_in_1[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_1[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_1_DATA_0) - int_mat_C_ch_in_1[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_1[31:0] & ~wmask); - end -end - -// int_mat_C_ch_in_1[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_1[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_1_DATA_1) - int_mat_C_ch_in_1[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_1[63:32] & ~wmask); - end -end - -// int_mat_C_ch_in_2[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_2[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_2_DATA_0) - int_mat_C_ch_in_2[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_2[31:0] & ~wmask); - end -end - -// int_mat_C_ch_in_2[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_2[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_2_DATA_1) - int_mat_C_ch_in_2[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_2[63:32] & ~wmask); - end -end - -// int_mat_C_ch_in_3[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_3[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_3_DATA_0) - int_mat_C_ch_in_3[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_3[31:0] & ~wmask); - end -end - -// int_mat_C_ch_in_3[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_3[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_3_DATA_1) - int_mat_C_ch_in_3[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_3[63:32] & ~wmask); - end -end - -// int_mat_C_ch_in_4[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_4[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_4_DATA_0) - int_mat_C_ch_in_4[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_4[31:0] & ~wmask); - end -end - -// int_mat_C_ch_in_4[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_4[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_4_DATA_1) - int_mat_C_ch_in_4[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_4[63:32] & ~wmask); - end -end - -// int_mat_C_ch_in_5[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_5[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_5_DATA_0) - int_mat_C_ch_in_5[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_5[31:0] & ~wmask); - end -end - -// int_mat_C_ch_in_5[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_5[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_5_DATA_1) - int_mat_C_ch_in_5[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_5[63:32] & ~wmask); - end -end - -// int_mat_C_ch_in_6[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_6[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_6_DATA_0) - int_mat_C_ch_in_6[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_6[31:0] & ~wmask); - end -end - -// int_mat_C_ch_in_6[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_6[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_6_DATA_1) - int_mat_C_ch_in_6[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_6[63:32] & ~wmask); - end -end - -// int_mat_C_ch_in_7[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_7[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_7_DATA_0) - int_mat_C_ch_in_7[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_7[31:0] & ~wmask); - end -end - -// int_mat_C_ch_in_7[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_in_7[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_IN_7_DATA_1) - int_mat_C_ch_in_7[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_in_7[63:32] & ~wmask); - end -end - -// int_mat_C_ch_0[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_0[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_0_DATA_0) - int_mat_C_ch_0[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_0[31:0] & ~wmask); - end -end - -// int_mat_C_ch_0[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_0[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_0_DATA_1) - int_mat_C_ch_0[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_0[63:32] & ~wmask); - end -end - -// int_mat_C_ch_1[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_1[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_1_DATA_0) - int_mat_C_ch_1[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_1[31:0] & ~wmask); - end -end - -// int_mat_C_ch_1[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_1[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_1_DATA_1) - int_mat_C_ch_1[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_1[63:32] & ~wmask); - end -end - -// int_mat_C_ch_2[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_2[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_2_DATA_0) - int_mat_C_ch_2[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_2[31:0] & ~wmask); - end -end - -// int_mat_C_ch_2[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_2[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_2_DATA_1) - int_mat_C_ch_2[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_2[63:32] & ~wmask); - end -end - -// int_mat_C_ch_3[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_3[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_3_DATA_0) - int_mat_C_ch_3[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_3[31:0] & ~wmask); - end -end - -// int_mat_C_ch_3[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_3[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_3_DATA_1) - int_mat_C_ch_3[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_3[63:32] & ~wmask); - end -end - -// int_mat_C_ch_4[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_4[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_4_DATA_0) - int_mat_C_ch_4[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_4[31:0] & ~wmask); - end -end - -// int_mat_C_ch_4[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_4[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_4_DATA_1) - int_mat_C_ch_4[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_4[63:32] & ~wmask); - end -end - -// int_mat_C_ch_5[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_5[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_5_DATA_0) - int_mat_C_ch_5[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_5[31:0] & ~wmask); - end -end - -// int_mat_C_ch_5[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_5[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_5_DATA_1) - int_mat_C_ch_5[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_5[63:32] & ~wmask); - end -end - -// int_mat_C_ch_6[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_6[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_6_DATA_0) - int_mat_C_ch_6[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_6[31:0] & ~wmask); - end -end - -// int_mat_C_ch_6[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_6[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_6_DATA_1) - int_mat_C_ch_6[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_6[63:32] & ~wmask); - end -end - -// int_mat_C_ch_7[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_7[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_7_DATA_0) - int_mat_C_ch_7[31:0] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_7[31:0] & ~wmask); - end -end - -// int_mat_C_ch_7[63:32] -always @(posedge ACLK) begin - if (ARESET) - int_mat_C_ch_7[63:32] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_MAT_C_CH_7_DATA_1) - int_mat_C_ch_7[63:32] <= (WDATA[31:0] & wmask) | (int_mat_C_ch_7[63:32] & ~wmask); - end -end - -// int_NUM_ITE[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_NUM_ITE[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_NUM_ITE_DATA_0) - int_NUM_ITE[31:0] <= (WDATA[31:0] & wmask) | (int_NUM_ITE[31:0] & ~wmask); - end -end - -// int_NUM_A_LEN[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_NUM_A_LEN[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_NUM_A_LEN_DATA_0) - int_NUM_A_LEN[31:0] <= (WDATA[31:0] & wmask) | (int_NUM_A_LEN[31:0] & ~wmask); - end -end - -// int_M[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_M[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_M_DATA_0) - int_M[31:0] <= (WDATA[31:0] & wmask) | (int_M[31:0] & ~wmask); - end -end - -// int_K[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_K[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_K_DATA_0) - int_K[31:0] <= (WDATA[31:0] & wmask) | (int_K[31:0] & ~wmask); - end -end - -// int_P_N[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_P_N[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_P_N_DATA_0) - int_P_N[31:0] <= (WDATA[31:0] & wmask) | (int_P_N[31:0] & ~wmask); - end -end - -// int_alpha_u[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_alpha_u[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_ALPHA_U_DATA_0) - int_alpha_u[31:0] <= (WDATA[31:0] & wmask) | (int_alpha_u[31:0] & ~wmask); - end -end - -// int_beta_u[31:0] -always @(posedge ACLK) begin - if (ARESET) - int_beta_u[31:0] <= 0; - else if (ACLK_EN) begin - if (w_hs && waddr == ADDR_BETA_U_DATA_0) - int_beta_u[31:0] <= (WDATA[31:0] & wmask) | (int_beta_u[31:0] & ~wmask); - end -end - -//synthesis translate_off -always @(posedge ACLK) begin - if (ACLK_EN) begin - if (int_gie & ~int_isr & int_ier & ap_done) - $display ("// Interrupt Monitor : interrupt for ap_done detected @ \"%0t\"", $time); - end -end -//synthesis translate_on - -//------------------------Memory logic------------------- - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/Sextans_fsm.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/Sextans_fsm.v deleted file mode 100644 index 2c79f074..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/Sextans_fsm.v +++ /dev/null @@ -1,4484 +0,0 @@ - - -module Sextans_fsm -( - ap_clk, - ap_rst_n, - ap_start, - ap_ready, - ap_done, - ap_idle, - FloatvAddFloatv_0__ap_start, - FloatvAddFloatv_1__ap_start, - FloatvAddFloatv_2__ap_start, - FloatvAddFloatv_3__ap_start, - FloatvAddFloatv_4__ap_start, - FloatvAddFloatv_5__ap_start, - FloatvAddFloatv_6__ap_start, - FloatvAddFloatv_7__ap_start, - FloatvMultConst_0__ap_start, - FloatvMultConst_0__ap_ready, - FloatvMultConst_0__ap_done, - FloatvMultConst_0__ap_idle, - FloatvMultConst_1__ap_start, - FloatvMultConst_1__ap_ready, - FloatvMultConst_1__ap_done, - FloatvMultConst_1__ap_idle, - FloatvMultConst_2__ap_start, - FloatvMultConst_2__ap_ready, - FloatvMultConst_2__ap_done, - FloatvMultConst_2__ap_idle, - FloatvMultConst_3__ap_start, - FloatvMultConst_3__ap_ready, - FloatvMultConst_3__ap_done, - FloatvMultConst_3__ap_idle, - FloatvMultConst_4__ap_start, - FloatvMultConst_4__ap_ready, - FloatvMultConst_4__ap_done, - FloatvMultConst_4__ap_idle, - FloatvMultConst_5__ap_start, - FloatvMultConst_5__ap_ready, - FloatvMultConst_5__ap_done, - FloatvMultConst_5__ap_idle, - FloatvMultConst_6__ap_start, - FloatvMultConst_6__ap_ready, - FloatvMultConst_6__ap_done, - FloatvMultConst_6__ap_idle, - FloatvMultConst_7__ap_start, - FloatvMultConst_7__ap_ready, - FloatvMultConst_7__ap_done, - FloatvMultConst_7__ap_idle, - FloatvMultConst_8__ap_start, - FloatvMultConst_8__ap_ready, - FloatvMultConst_8__ap_done, - FloatvMultConst_8__ap_idle, - FloatvMultConst_9__ap_start, - FloatvMultConst_9__ap_ready, - FloatvMultConst_9__ap_done, - FloatvMultConst_9__ap_idle, - FloatvMultConst_10__ap_start, - FloatvMultConst_10__ap_ready, - FloatvMultConst_10__ap_done, - FloatvMultConst_10__ap_idle, - FloatvMultConst_11__ap_start, - FloatvMultConst_11__ap_ready, - FloatvMultConst_11__ap_done, - FloatvMultConst_11__ap_idle, - FloatvMultConst_12__ap_start, - FloatvMultConst_12__ap_ready, - FloatvMultConst_12__ap_done, - FloatvMultConst_12__ap_idle, - FloatvMultConst_13__ap_start, - FloatvMultConst_13__ap_ready, - FloatvMultConst_13__ap_done, - FloatvMultConst_13__ap_idle, - FloatvMultConst_14__ap_start, - FloatvMultConst_14__ap_ready, - FloatvMultConst_14__ap_done, - FloatvMultConst_14__ap_idle, - FloatvMultConst_15__ap_start, - FloatvMultConst_15__ap_ready, - FloatvMultConst_15__ap_done, - FloatvMultConst_15__ap_idle, - Merger_0__ap_start, - Merger_1__ap_start, - Merger_2__ap_start, - Merger_3__ap_start, - Merger_4__ap_start, - Merger_5__ap_start, - Merger_6__ap_start, - Merger_7__ap_start, - PEG_Bmtx_0__ap_start, - PEG_Bmtx_0__ap_ready, - PEG_Bmtx_0__ap_done, - PEG_Bmtx_0__ap_idle, - PEG_Bmtx_1__ap_start, - PEG_Bmtx_1__ap_ready, - PEG_Bmtx_1__ap_done, - PEG_Bmtx_1__ap_idle, - PEG_Bmtx_2__ap_start, - PEG_Bmtx_2__ap_ready, - PEG_Bmtx_2__ap_done, - PEG_Bmtx_2__ap_idle, - PEG_Bmtx_3__ap_start, - PEG_Bmtx_3__ap_ready, - PEG_Bmtx_3__ap_done, - PEG_Bmtx_3__ap_idle, - PEG_Bmtx_4__ap_start, - PEG_Bmtx_4__ap_ready, - PEG_Bmtx_4__ap_done, - PEG_Bmtx_4__ap_idle, - PEG_Bmtx_5__ap_start, - PEG_Bmtx_5__ap_ready, - PEG_Bmtx_5__ap_done, - PEG_Bmtx_5__ap_idle, - PEG_Bmtx_6__ap_start, - PEG_Bmtx_6__ap_ready, - PEG_Bmtx_6__ap_done, - PEG_Bmtx_6__ap_idle, - PEG_Bmtx_7__ap_start, - PEG_Bmtx_7__ap_ready, - PEG_Bmtx_7__ap_done, - PEG_Bmtx_7__ap_idle, - PEG_Bmtx_8__ap_start, - PEG_Bmtx_8__ap_ready, - PEG_Bmtx_8__ap_done, - PEG_Bmtx_8__ap_idle, - PEG_Bmtx_9__ap_start, - PEG_Bmtx_9__ap_ready, - PEG_Bmtx_9__ap_done, - PEG_Bmtx_9__ap_idle, - PEG_Bmtx_10__ap_start, - PEG_Bmtx_10__ap_ready, - PEG_Bmtx_10__ap_done, - PEG_Bmtx_10__ap_idle, - PEG_Bmtx_11__ap_start, - PEG_Bmtx_11__ap_ready, - PEG_Bmtx_11__ap_done, - PEG_Bmtx_11__ap_idle, - PEG_Bmtx_12__ap_start, - PEG_Bmtx_12__ap_ready, - PEG_Bmtx_12__ap_done, - PEG_Bmtx_12__ap_idle, - PEG_Bmtx_13__ap_start, - PEG_Bmtx_13__ap_ready, - PEG_Bmtx_13__ap_done, - PEG_Bmtx_13__ap_idle, - PEG_Bmtx_14__ap_start, - PEG_Bmtx_14__ap_ready, - PEG_Bmtx_14__ap_done, - PEG_Bmtx_14__ap_idle, - PEG_Bmtx_15__ap_start, - PEG_Bmtx_15__ap_ready, - PEG_Bmtx_15__ap_done, - PEG_Bmtx_15__ap_idle, - PEG_Cmtx_0__ap_start, - PEG_Cmtx_0__ap_ready, - PEG_Cmtx_0__ap_done, - PEG_Cmtx_0__ap_idle, - PEG_Cmtx_1__ap_start, - PEG_Cmtx_1__ap_ready, - PEG_Cmtx_1__ap_done, - PEG_Cmtx_1__ap_idle, - PEG_Cmtx_2__ap_start, - PEG_Cmtx_2__ap_ready, - PEG_Cmtx_2__ap_done, - PEG_Cmtx_2__ap_idle, - PEG_Cmtx_3__ap_start, - PEG_Cmtx_3__ap_ready, - PEG_Cmtx_3__ap_done, - PEG_Cmtx_3__ap_idle, - PEG_Cmtx_4__ap_start, - PEG_Cmtx_4__ap_ready, - PEG_Cmtx_4__ap_done, - PEG_Cmtx_4__ap_idle, - PEG_Cmtx_5__ap_start, - PEG_Cmtx_5__ap_ready, - PEG_Cmtx_5__ap_done, - PEG_Cmtx_5__ap_idle, - PEG_Cmtx_6__ap_start, - PEG_Cmtx_6__ap_ready, - PEG_Cmtx_6__ap_done, - PEG_Cmtx_6__ap_idle, - PEG_Cmtx_7__ap_start, - PEG_Cmtx_7__ap_ready, - PEG_Cmtx_7__ap_done, - PEG_Cmtx_7__ap_idle, - PEG_Cmtx_8__ap_start, - PEG_Cmtx_8__ap_ready, - PEG_Cmtx_8__ap_done, - PEG_Cmtx_8__ap_idle, - PEG_Cmtx_9__ap_start, - PEG_Cmtx_9__ap_ready, - PEG_Cmtx_9__ap_done, - PEG_Cmtx_9__ap_idle, - PEG_Cmtx_10__ap_start, - PEG_Cmtx_10__ap_ready, - PEG_Cmtx_10__ap_done, - PEG_Cmtx_10__ap_idle, - PEG_Cmtx_11__ap_start, - PEG_Cmtx_11__ap_ready, - PEG_Cmtx_11__ap_done, - PEG_Cmtx_11__ap_idle, - PEG_Cmtx_12__ap_start, - PEG_Cmtx_12__ap_ready, - PEG_Cmtx_12__ap_done, - PEG_Cmtx_12__ap_idle, - PEG_Cmtx_13__ap_start, - PEG_Cmtx_13__ap_ready, - PEG_Cmtx_13__ap_done, - PEG_Cmtx_13__ap_idle, - PEG_Cmtx_14__ap_start, - PEG_Cmtx_14__ap_ready, - PEG_Cmtx_14__ap_done, - PEG_Cmtx_14__ap_idle, - PEG_Cmtx_15__ap_start, - PEG_Cmtx_15__ap_ready, - PEG_Cmtx_15__ap_done, - PEG_Cmtx_15__ap_idle, - Scatter_1_2_0__ap_start, - Scatter_1_2_1__ap_start, - Scatter_1_2_2__ap_start, - Scatter_1_2_3__ap_start, - Scatter_1_2_4__ap_start, - Scatter_1_2_5__ap_start, - Scatter_1_2_6__ap_start, - Scatter_1_2_7__ap_start, - black_hole_float_v16_0__ap_start, - black_hole_float_v16_1__ap_start, - black_hole_float_v16_2__ap_start, - black_hole_float_v16_3__ap_start, - black_hole_int_0__ap_start, - black_hole_int_1__ap_start, - read_A_0__ap_start, - read_A_0__ap_ready, - read_A_0__ap_done, - read_A_0__ap_idle, - read_A_1__ap_start, - read_A_1__ap_ready, - read_A_1__ap_done, - read_A_1__ap_idle, - read_A_2__ap_start, - read_A_2__ap_ready, - read_A_2__ap_done, - read_A_2__ap_idle, - read_A_3__ap_start, - read_A_3__ap_ready, - read_A_3__ap_done, - read_A_3__ap_idle, - read_A_4__ap_start, - read_A_4__ap_ready, - read_A_4__ap_done, - read_A_4__ap_idle, - read_A_5__ap_start, - read_A_5__ap_ready, - read_A_5__ap_done, - read_A_5__ap_idle, - read_A_6__ap_start, - read_A_6__ap_ready, - read_A_6__ap_done, - read_A_6__ap_idle, - read_A_7__ap_start, - read_A_7__ap_ready, - read_A_7__ap_done, - read_A_7__ap_idle, - read_B_0__ap_start, - read_B_0__ap_ready, - read_B_0__ap_done, - read_B_0__ap_idle, - read_B_1__ap_start, - read_B_1__ap_ready, - read_B_1__ap_done, - read_B_1__ap_idle, - read_B_2__ap_start, - read_B_2__ap_ready, - read_B_2__ap_done, - read_B_2__ap_idle, - read_B_3__ap_start, - read_B_3__ap_ready, - read_B_3__ap_done, - read_B_3__ap_idle, - read_C_0__ap_start, - read_C_0__ap_ready, - read_C_0__ap_done, - read_C_0__ap_idle, - read_C_1__ap_start, - read_C_1__ap_ready, - read_C_1__ap_done, - read_C_1__ap_idle, - read_C_2__ap_start, - read_C_2__ap_ready, - read_C_2__ap_done, - read_C_2__ap_idle, - read_C_3__ap_start, - read_C_3__ap_ready, - read_C_3__ap_done, - read_C_3__ap_idle, - read_C_4__ap_start, - read_C_4__ap_ready, - read_C_4__ap_done, - read_C_4__ap_idle, - read_C_5__ap_start, - read_C_5__ap_ready, - read_C_5__ap_done, - read_C_5__ap_idle, - read_C_6__ap_start, - read_C_6__ap_ready, - read_C_6__ap_done, - read_C_6__ap_idle, - read_C_7__ap_start, - read_C_7__ap_ready, - read_C_7__ap_done, - read_C_7__ap_idle, - read_edge_list_ptr_0__ap_start, - read_edge_list_ptr_0__ap_ready, - read_edge_list_ptr_0__ap_done, - read_edge_list_ptr_0__ap_idle, - write_C_0__ap_start, - write_C_0__ap_ready, - write_C_0__ap_done, - write_C_0__ap_idle, - write_C_1__ap_start, - write_C_1__ap_ready, - write_C_1__ap_done, - write_C_1__ap_idle, - write_C_2__ap_start, - write_C_2__ap_ready, - write_C_2__ap_done, - write_C_2__ap_idle, - write_C_3__ap_start, - write_C_3__ap_ready, - write_C_3__ap_done, - write_C_3__ap_idle, - write_C_4__ap_start, - write_C_4__ap_ready, - write_C_4__ap_done, - write_C_4__ap_idle, - write_C_5__ap_start, - write_C_5__ap_ready, - write_C_5__ap_done, - write_C_5__ap_idle, - write_C_6__ap_start, - write_C_6__ap_ready, - write_C_6__ap_done, - write_C_6__ap_idle, - write_C_7__ap_start, - write_C_7__ap_ready, - write_C_7__ap_done, - write_C_7__ap_idle -); - - (* RS_CLK *)input ap_clk; - (* RS_RST = "ff" *)input ap_rst_n; - (* RS_AP_CTRL = "Sextans.ap_start" *)input ap_start; - (* RS_AP_CTRL = "Sextans.ap_ready" *)output ap_ready; - (* RS_FF = "Sextans__ap_done" *)output ap_done; - (* RS_FF = "Sextans__ap_idle" *)output ap_idle; - (* RS_FF = "FloatvAddFloatv_0__ap_start" *)output FloatvAddFloatv_0__ap_start; - (* RS_FF = "FloatvAddFloatv_1__ap_start" *)output FloatvAddFloatv_1__ap_start; - (* RS_FF = "FloatvAddFloatv_2__ap_start" *)output FloatvAddFloatv_2__ap_start; - (* RS_FF = "FloatvAddFloatv_3__ap_start" *)output FloatvAddFloatv_3__ap_start; - (* RS_FF = "FloatvAddFloatv_4__ap_start" *)output FloatvAddFloatv_4__ap_start; - (* RS_FF = "FloatvAddFloatv_5__ap_start" *)output FloatvAddFloatv_5__ap_start; - (* RS_FF = "FloatvAddFloatv_6__ap_start" *)output FloatvAddFloatv_6__ap_start; - (* RS_FF = "FloatvAddFloatv_7__ap_start" *)output FloatvAddFloatv_7__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_0.ap_start" *)output FloatvMultConst_0__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_0.ap_ready" *)input FloatvMultConst_0__ap_ready; - (* RS_FF = "FloatvMultConst_0__ap_done" *)input FloatvMultConst_0__ap_done; - (* RS_FF = "FloatvMultConst_0__ap_idle" *)input FloatvMultConst_0__ap_idle; - (* RS_AP_CTRL = "FloatvMultConst_1.ap_start" *)output FloatvMultConst_1__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_1.ap_ready" *)input FloatvMultConst_1__ap_ready; - (* RS_FF = "FloatvMultConst_1__ap_done" *)input FloatvMultConst_1__ap_done; - (* RS_FF = "FloatvMultConst_1__ap_idle" *)input FloatvMultConst_1__ap_idle; - (* RS_AP_CTRL = "FloatvMultConst_2.ap_start" *)output FloatvMultConst_2__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_2.ap_ready" *)input FloatvMultConst_2__ap_ready; - (* RS_FF = "FloatvMultConst_2__ap_done" *)input FloatvMultConst_2__ap_done; - (* RS_FF = "FloatvMultConst_2__ap_idle" *)input FloatvMultConst_2__ap_idle; - (* RS_AP_CTRL = "FloatvMultConst_3.ap_start" *)output FloatvMultConst_3__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_3.ap_ready" *)input FloatvMultConst_3__ap_ready; - (* RS_FF = "FloatvMultConst_3__ap_done" *)input FloatvMultConst_3__ap_done; - (* RS_FF = "FloatvMultConst_3__ap_idle" *)input FloatvMultConst_3__ap_idle; - (* RS_AP_CTRL = "FloatvMultConst_4.ap_start" *)output FloatvMultConst_4__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_4.ap_ready" *)input FloatvMultConst_4__ap_ready; - (* RS_FF = "FloatvMultConst_4__ap_done" *)input FloatvMultConst_4__ap_done; - (* RS_FF = "FloatvMultConst_4__ap_idle" *)input FloatvMultConst_4__ap_idle; - (* RS_AP_CTRL = "FloatvMultConst_5.ap_start" *)output FloatvMultConst_5__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_5.ap_ready" *)input FloatvMultConst_5__ap_ready; - (* RS_FF = "FloatvMultConst_5__ap_done" *)input FloatvMultConst_5__ap_done; - (* RS_FF = "FloatvMultConst_5__ap_idle" *)input FloatvMultConst_5__ap_idle; - (* RS_AP_CTRL = "FloatvMultConst_6.ap_start" *)output FloatvMultConst_6__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_6.ap_ready" *)input FloatvMultConst_6__ap_ready; - (* RS_FF = "FloatvMultConst_6__ap_done" *)input FloatvMultConst_6__ap_done; - (* RS_FF = "FloatvMultConst_6__ap_idle" *)input FloatvMultConst_6__ap_idle; - (* RS_AP_CTRL = "FloatvMultConst_7.ap_start" *)output FloatvMultConst_7__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_7.ap_ready" *)input FloatvMultConst_7__ap_ready; - (* RS_FF = "FloatvMultConst_7__ap_done" *)input FloatvMultConst_7__ap_done; - (* RS_FF = "FloatvMultConst_7__ap_idle" *)input FloatvMultConst_7__ap_idle; - (* RS_AP_CTRL = "FloatvMultConst_8.ap_start" *)output FloatvMultConst_8__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_8.ap_ready" *)input FloatvMultConst_8__ap_ready; - (* RS_FF = "FloatvMultConst_8__ap_done" *)input FloatvMultConst_8__ap_done; - (* RS_FF = "FloatvMultConst_8__ap_idle" *)input FloatvMultConst_8__ap_idle; - (* RS_AP_CTRL = "FloatvMultConst_9.ap_start" *)output FloatvMultConst_9__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_9.ap_ready" *)input FloatvMultConst_9__ap_ready; - (* RS_FF = "FloatvMultConst_9__ap_done" *)input FloatvMultConst_9__ap_done; - (* RS_FF = "FloatvMultConst_9__ap_idle" *)input FloatvMultConst_9__ap_idle; - (* RS_AP_CTRL = "FloatvMultConst_10.ap_start" *)output FloatvMultConst_10__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_10.ap_ready" *)input FloatvMultConst_10__ap_ready; - (* RS_FF = "FloatvMultConst_10__ap_done" *)input FloatvMultConst_10__ap_done; - (* RS_FF = "FloatvMultConst_10__ap_idle" *)input FloatvMultConst_10__ap_idle; - (* RS_AP_CTRL = "FloatvMultConst_11.ap_start" *)output FloatvMultConst_11__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_11.ap_ready" *)input FloatvMultConst_11__ap_ready; - (* RS_FF = "FloatvMultConst_11__ap_done" *)input FloatvMultConst_11__ap_done; - (* RS_FF = "FloatvMultConst_11__ap_idle" *)input FloatvMultConst_11__ap_idle; - (* RS_AP_CTRL = "FloatvMultConst_12.ap_start" *)output FloatvMultConst_12__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_12.ap_ready" *)input FloatvMultConst_12__ap_ready; - (* RS_FF = "FloatvMultConst_12__ap_done" *)input FloatvMultConst_12__ap_done; - (* RS_FF = "FloatvMultConst_12__ap_idle" *)input FloatvMultConst_12__ap_idle; - (* RS_AP_CTRL = "FloatvMultConst_13.ap_start" *)output FloatvMultConst_13__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_13.ap_ready" *)input FloatvMultConst_13__ap_ready; - (* RS_FF = "FloatvMultConst_13__ap_done" *)input FloatvMultConst_13__ap_done; - (* RS_FF = "FloatvMultConst_13__ap_idle" *)input FloatvMultConst_13__ap_idle; - (* RS_AP_CTRL = "FloatvMultConst_14.ap_start" *)output FloatvMultConst_14__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_14.ap_ready" *)input FloatvMultConst_14__ap_ready; - (* RS_FF = "FloatvMultConst_14__ap_done" *)input FloatvMultConst_14__ap_done; - (* RS_FF = "FloatvMultConst_14__ap_idle" *)input FloatvMultConst_14__ap_idle; - (* RS_AP_CTRL = "FloatvMultConst_15.ap_start" *)output FloatvMultConst_15__ap_start; - (* RS_AP_CTRL = "FloatvMultConst_15.ap_ready" *)input FloatvMultConst_15__ap_ready; - (* RS_FF = "FloatvMultConst_15__ap_done" *)input FloatvMultConst_15__ap_done; - (* RS_FF = "FloatvMultConst_15__ap_idle" *)input FloatvMultConst_15__ap_idle; - (* RS_FF = "Merger_0__ap_start" *)output Merger_0__ap_start; - (* RS_FF = "Merger_1__ap_start" *)output Merger_1__ap_start; - (* RS_FF = "Merger_2__ap_start" *)output Merger_2__ap_start; - (* RS_FF = "Merger_3__ap_start" *)output Merger_3__ap_start; - (* RS_FF = "Merger_4__ap_start" *)output Merger_4__ap_start; - (* RS_FF = "Merger_5__ap_start" *)output Merger_5__ap_start; - (* RS_FF = "Merger_6__ap_start" *)output Merger_6__ap_start; - (* RS_FF = "Merger_7__ap_start" *)output Merger_7__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_0.ap_start" *)output PEG_Bmtx_0__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_0.ap_ready" *)input PEG_Bmtx_0__ap_ready; - (* RS_FF = "PEG_Bmtx_0__ap_done" *)input PEG_Bmtx_0__ap_done; - (* RS_FF = "PEG_Bmtx_0__ap_idle" *)input PEG_Bmtx_0__ap_idle; - (* RS_AP_CTRL = "PEG_Bmtx_1.ap_start" *)output PEG_Bmtx_1__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_1.ap_ready" *)input PEG_Bmtx_1__ap_ready; - (* RS_FF = "PEG_Bmtx_1__ap_done" *)input PEG_Bmtx_1__ap_done; - (* RS_FF = "PEG_Bmtx_1__ap_idle" *)input PEG_Bmtx_1__ap_idle; - (* RS_AP_CTRL = "PEG_Bmtx_2.ap_start" *)output PEG_Bmtx_2__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_2.ap_ready" *)input PEG_Bmtx_2__ap_ready; - (* RS_FF = "PEG_Bmtx_2__ap_done" *)input PEG_Bmtx_2__ap_done; - (* RS_FF = "PEG_Bmtx_2__ap_idle" *)input PEG_Bmtx_2__ap_idle; - (* RS_AP_CTRL = "PEG_Bmtx_3.ap_start" *)output PEG_Bmtx_3__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_3.ap_ready" *)input PEG_Bmtx_3__ap_ready; - (* RS_FF = "PEG_Bmtx_3__ap_done" *)input PEG_Bmtx_3__ap_done; - (* RS_FF = "PEG_Bmtx_3__ap_idle" *)input PEG_Bmtx_3__ap_idle; - (* RS_AP_CTRL = "PEG_Bmtx_4.ap_start" *)output PEG_Bmtx_4__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_4.ap_ready" *)input PEG_Bmtx_4__ap_ready; - (* RS_FF = "PEG_Bmtx_4__ap_done" *)input PEG_Bmtx_4__ap_done; - (* RS_FF = "PEG_Bmtx_4__ap_idle" *)input PEG_Bmtx_4__ap_idle; - (* RS_AP_CTRL = "PEG_Bmtx_5.ap_start" *)output PEG_Bmtx_5__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_5.ap_ready" *)input PEG_Bmtx_5__ap_ready; - (* RS_FF = "PEG_Bmtx_5__ap_done" *)input PEG_Bmtx_5__ap_done; - (* RS_FF = "PEG_Bmtx_5__ap_idle" *)input PEG_Bmtx_5__ap_idle; - (* RS_AP_CTRL = "PEG_Bmtx_6.ap_start" *)output PEG_Bmtx_6__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_6.ap_ready" *)input PEG_Bmtx_6__ap_ready; - (* RS_FF = "PEG_Bmtx_6__ap_done" *)input PEG_Bmtx_6__ap_done; - (* RS_FF = "PEG_Bmtx_6__ap_idle" *)input PEG_Bmtx_6__ap_idle; - (* RS_AP_CTRL = "PEG_Bmtx_7.ap_start" *)output PEG_Bmtx_7__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_7.ap_ready" *)input PEG_Bmtx_7__ap_ready; - (* RS_FF = "PEG_Bmtx_7__ap_done" *)input PEG_Bmtx_7__ap_done; - (* RS_FF = "PEG_Bmtx_7__ap_idle" *)input PEG_Bmtx_7__ap_idle; - (* RS_AP_CTRL = "PEG_Bmtx_8.ap_start" *)output PEG_Bmtx_8__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_8.ap_ready" *)input PEG_Bmtx_8__ap_ready; - (* RS_FF = "PEG_Bmtx_8__ap_done" *)input PEG_Bmtx_8__ap_done; - (* RS_FF = "PEG_Bmtx_8__ap_idle" *)input PEG_Bmtx_8__ap_idle; - (* RS_AP_CTRL = "PEG_Bmtx_9.ap_start" *)output PEG_Bmtx_9__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_9.ap_ready" *)input PEG_Bmtx_9__ap_ready; - (* RS_FF = "PEG_Bmtx_9__ap_done" *)input PEG_Bmtx_9__ap_done; - (* RS_FF = "PEG_Bmtx_9__ap_idle" *)input PEG_Bmtx_9__ap_idle; - (* RS_AP_CTRL = "PEG_Bmtx_10.ap_start" *)output PEG_Bmtx_10__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_10.ap_ready" *)input PEG_Bmtx_10__ap_ready; - (* RS_FF = "PEG_Bmtx_10__ap_done" *)input PEG_Bmtx_10__ap_done; - (* RS_FF = "PEG_Bmtx_10__ap_idle" *)input PEG_Bmtx_10__ap_idle; - (* RS_AP_CTRL = "PEG_Bmtx_11.ap_start" *)output PEG_Bmtx_11__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_11.ap_ready" *)input PEG_Bmtx_11__ap_ready; - (* RS_FF = "PEG_Bmtx_11__ap_done" *)input PEG_Bmtx_11__ap_done; - (* RS_FF = "PEG_Bmtx_11__ap_idle" *)input PEG_Bmtx_11__ap_idle; - (* RS_AP_CTRL = "PEG_Bmtx_12.ap_start" *)output PEG_Bmtx_12__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_12.ap_ready" *)input PEG_Bmtx_12__ap_ready; - (* RS_FF = "PEG_Bmtx_12__ap_done" *)input PEG_Bmtx_12__ap_done; - (* RS_FF = "PEG_Bmtx_12__ap_idle" *)input PEG_Bmtx_12__ap_idle; - (* RS_AP_CTRL = "PEG_Bmtx_13.ap_start" *)output PEG_Bmtx_13__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_13.ap_ready" *)input PEG_Bmtx_13__ap_ready; - (* RS_FF = "PEG_Bmtx_13__ap_done" *)input PEG_Bmtx_13__ap_done; - (* RS_FF = "PEG_Bmtx_13__ap_idle" *)input PEG_Bmtx_13__ap_idle; - (* RS_AP_CTRL = "PEG_Bmtx_14.ap_start" *)output PEG_Bmtx_14__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_14.ap_ready" *)input PEG_Bmtx_14__ap_ready; - (* RS_FF = "PEG_Bmtx_14__ap_done" *)input PEG_Bmtx_14__ap_done; - (* RS_FF = "PEG_Bmtx_14__ap_idle" *)input PEG_Bmtx_14__ap_idle; - (* RS_AP_CTRL = "PEG_Bmtx_15.ap_start" *)output PEG_Bmtx_15__ap_start; - (* RS_AP_CTRL = "PEG_Bmtx_15.ap_ready" *)input PEG_Bmtx_15__ap_ready; - (* RS_FF = "PEG_Bmtx_15__ap_done" *)input PEG_Bmtx_15__ap_done; - (* RS_FF = "PEG_Bmtx_15__ap_idle" *)input PEG_Bmtx_15__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_0.ap_start" *)output PEG_Cmtx_0__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_0.ap_ready" *)input PEG_Cmtx_0__ap_ready; - (* RS_FF = "PEG_Cmtx_0__ap_done" *)input PEG_Cmtx_0__ap_done; - (* RS_FF = "PEG_Cmtx_0__ap_idle" *)input PEG_Cmtx_0__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_1.ap_start" *)output PEG_Cmtx_1__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_1.ap_ready" *)input PEG_Cmtx_1__ap_ready; - (* RS_FF = "PEG_Cmtx_1__ap_done" *)input PEG_Cmtx_1__ap_done; - (* RS_FF = "PEG_Cmtx_1__ap_idle" *)input PEG_Cmtx_1__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_2.ap_start" *)output PEG_Cmtx_2__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_2.ap_ready" *)input PEG_Cmtx_2__ap_ready; - (* RS_FF = "PEG_Cmtx_2__ap_done" *)input PEG_Cmtx_2__ap_done; - (* RS_FF = "PEG_Cmtx_2__ap_idle" *)input PEG_Cmtx_2__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_3.ap_start" *)output PEG_Cmtx_3__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_3.ap_ready" *)input PEG_Cmtx_3__ap_ready; - (* RS_FF = "PEG_Cmtx_3__ap_done" *)input PEG_Cmtx_3__ap_done; - (* RS_FF = "PEG_Cmtx_3__ap_idle" *)input PEG_Cmtx_3__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_4.ap_start" *)output PEG_Cmtx_4__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_4.ap_ready" *)input PEG_Cmtx_4__ap_ready; - (* RS_FF = "PEG_Cmtx_4__ap_done" *)input PEG_Cmtx_4__ap_done; - (* RS_FF = "PEG_Cmtx_4__ap_idle" *)input PEG_Cmtx_4__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_5.ap_start" *)output PEG_Cmtx_5__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_5.ap_ready" *)input PEG_Cmtx_5__ap_ready; - (* RS_FF = "PEG_Cmtx_5__ap_done" *)input PEG_Cmtx_5__ap_done; - (* RS_FF = "PEG_Cmtx_5__ap_idle" *)input PEG_Cmtx_5__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_6.ap_start" *)output PEG_Cmtx_6__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_6.ap_ready" *)input PEG_Cmtx_6__ap_ready; - (* RS_FF = "PEG_Cmtx_6__ap_done" *)input PEG_Cmtx_6__ap_done; - (* RS_FF = "PEG_Cmtx_6__ap_idle" *)input PEG_Cmtx_6__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_7.ap_start" *)output PEG_Cmtx_7__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_7.ap_ready" *)input PEG_Cmtx_7__ap_ready; - (* RS_FF = "PEG_Cmtx_7__ap_done" *)input PEG_Cmtx_7__ap_done; - (* RS_FF = "PEG_Cmtx_7__ap_idle" *)input PEG_Cmtx_7__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_8.ap_start" *)output PEG_Cmtx_8__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_8.ap_ready" *)input PEG_Cmtx_8__ap_ready; - (* RS_FF = "PEG_Cmtx_8__ap_done" *)input PEG_Cmtx_8__ap_done; - (* RS_FF = "PEG_Cmtx_8__ap_idle" *)input PEG_Cmtx_8__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_9.ap_start" *)output PEG_Cmtx_9__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_9.ap_ready" *)input PEG_Cmtx_9__ap_ready; - (* RS_FF = "PEG_Cmtx_9__ap_done" *)input PEG_Cmtx_9__ap_done; - (* RS_FF = "PEG_Cmtx_9__ap_idle" *)input PEG_Cmtx_9__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_10.ap_start" *)output PEG_Cmtx_10__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_10.ap_ready" *)input PEG_Cmtx_10__ap_ready; - (* RS_FF = "PEG_Cmtx_10__ap_done" *)input PEG_Cmtx_10__ap_done; - (* RS_FF = "PEG_Cmtx_10__ap_idle" *)input PEG_Cmtx_10__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_11.ap_start" *)output PEG_Cmtx_11__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_11.ap_ready" *)input PEG_Cmtx_11__ap_ready; - (* RS_FF = "PEG_Cmtx_11__ap_done" *)input PEG_Cmtx_11__ap_done; - (* RS_FF = "PEG_Cmtx_11__ap_idle" *)input PEG_Cmtx_11__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_12.ap_start" *)output PEG_Cmtx_12__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_12.ap_ready" *)input PEG_Cmtx_12__ap_ready; - (* RS_FF = "PEG_Cmtx_12__ap_done" *)input PEG_Cmtx_12__ap_done; - (* RS_FF = "PEG_Cmtx_12__ap_idle" *)input PEG_Cmtx_12__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_13.ap_start" *)output PEG_Cmtx_13__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_13.ap_ready" *)input PEG_Cmtx_13__ap_ready; - (* RS_FF = "PEG_Cmtx_13__ap_done" *)input PEG_Cmtx_13__ap_done; - (* RS_FF = "PEG_Cmtx_13__ap_idle" *)input PEG_Cmtx_13__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_14.ap_start" *)output PEG_Cmtx_14__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_14.ap_ready" *)input PEG_Cmtx_14__ap_ready; - (* RS_FF = "PEG_Cmtx_14__ap_done" *)input PEG_Cmtx_14__ap_done; - (* RS_FF = "PEG_Cmtx_14__ap_idle" *)input PEG_Cmtx_14__ap_idle; - (* RS_AP_CTRL = "PEG_Cmtx_15.ap_start" *)output PEG_Cmtx_15__ap_start; - (* RS_AP_CTRL = "PEG_Cmtx_15.ap_ready" *)input PEG_Cmtx_15__ap_ready; - (* RS_FF = "PEG_Cmtx_15__ap_done" *)input PEG_Cmtx_15__ap_done; - (* RS_FF = "PEG_Cmtx_15__ap_idle" *)input PEG_Cmtx_15__ap_idle; - (* RS_FF = "Scatter_1_2_0__ap_start" *)output Scatter_1_2_0__ap_start; - (* RS_FF = "Scatter_1_2_1__ap_start" *)output Scatter_1_2_1__ap_start; - (* RS_FF = "Scatter_1_2_2__ap_start" *)output Scatter_1_2_2__ap_start; - (* RS_FF = "Scatter_1_2_3__ap_start" *)output Scatter_1_2_3__ap_start; - (* RS_FF = "Scatter_1_2_4__ap_start" *)output Scatter_1_2_4__ap_start; - (* RS_FF = "Scatter_1_2_5__ap_start" *)output Scatter_1_2_5__ap_start; - (* RS_FF = "Scatter_1_2_6__ap_start" *)output Scatter_1_2_6__ap_start; - (* RS_FF = "Scatter_1_2_7__ap_start" *)output Scatter_1_2_7__ap_start; - (* RS_FF = "black_hole_float_v16_0__ap_start" *)output black_hole_float_v16_0__ap_start; - (* RS_FF = "black_hole_float_v16_1__ap_start" *)output black_hole_float_v16_1__ap_start; - (* RS_FF = "black_hole_float_v16_2__ap_start" *)output black_hole_float_v16_2__ap_start; - (* RS_FF = "black_hole_float_v16_3__ap_start" *)output black_hole_float_v16_3__ap_start; - (* RS_FF = "black_hole_int_0__ap_start" *)output black_hole_int_0__ap_start; - (* RS_FF = "black_hole_int_1__ap_start" *)output black_hole_int_1__ap_start; - (* RS_AP_CTRL = "read_A_0.ap_start" *)output read_A_0__ap_start; - (* RS_AP_CTRL = "read_A_0.ap_ready" *)input read_A_0__ap_ready; - (* RS_FF = "read_A_0__ap_done" *)input read_A_0__ap_done; - (* RS_FF = "read_A_0__ap_idle" *)input read_A_0__ap_idle; - (* RS_AP_CTRL = "read_A_1.ap_start" *)output read_A_1__ap_start; - (* RS_AP_CTRL = "read_A_1.ap_ready" *)input read_A_1__ap_ready; - (* RS_FF = "read_A_1__ap_done" *)input read_A_1__ap_done; - (* RS_FF = "read_A_1__ap_idle" *)input read_A_1__ap_idle; - (* RS_AP_CTRL = "read_A_2.ap_start" *)output read_A_2__ap_start; - (* RS_AP_CTRL = "read_A_2.ap_ready" *)input read_A_2__ap_ready; - (* RS_FF = "read_A_2__ap_done" *)input read_A_2__ap_done; - (* RS_FF = "read_A_2__ap_idle" *)input read_A_2__ap_idle; - (* RS_AP_CTRL = "read_A_3.ap_start" *)output read_A_3__ap_start; - (* RS_AP_CTRL = "read_A_3.ap_ready" *)input read_A_3__ap_ready; - (* RS_FF = "read_A_3__ap_done" *)input read_A_3__ap_done; - (* RS_FF = "read_A_3__ap_idle" *)input read_A_3__ap_idle; - (* RS_AP_CTRL = "read_A_4.ap_start" *)output read_A_4__ap_start; - (* RS_AP_CTRL = "read_A_4.ap_ready" *)input read_A_4__ap_ready; - (* RS_FF = "read_A_4__ap_done" *)input read_A_4__ap_done; - (* RS_FF = "read_A_4__ap_idle" *)input read_A_4__ap_idle; - (* RS_AP_CTRL = "read_A_5.ap_start" *)output read_A_5__ap_start; - (* RS_AP_CTRL = "read_A_5.ap_ready" *)input read_A_5__ap_ready; - (* RS_FF = "read_A_5__ap_done" *)input read_A_5__ap_done; - (* RS_FF = "read_A_5__ap_idle" *)input read_A_5__ap_idle; - (* RS_AP_CTRL = "read_A_6.ap_start" *)output read_A_6__ap_start; - (* RS_AP_CTRL = "read_A_6.ap_ready" *)input read_A_6__ap_ready; - (* RS_FF = "read_A_6__ap_done" *)input read_A_6__ap_done; - (* RS_FF = "read_A_6__ap_idle" *)input read_A_6__ap_idle; - (* RS_AP_CTRL = "read_A_7.ap_start" *)output read_A_7__ap_start; - (* RS_AP_CTRL = "read_A_7.ap_ready" *)input read_A_7__ap_ready; - (* RS_FF = "read_A_7__ap_done" *)input read_A_7__ap_done; - (* RS_FF = "read_A_7__ap_idle" *)input read_A_7__ap_idle; - (* RS_AP_CTRL = "read_B_0.ap_start" *)output read_B_0__ap_start; - (* RS_AP_CTRL = "read_B_0.ap_ready" *)input read_B_0__ap_ready; - (* RS_FF = "read_B_0__ap_done" *)input read_B_0__ap_done; - (* RS_FF = "read_B_0__ap_idle" *)input read_B_0__ap_idle; - (* RS_AP_CTRL = "read_B_1.ap_start" *)output read_B_1__ap_start; - (* RS_AP_CTRL = "read_B_1.ap_ready" *)input read_B_1__ap_ready; - (* RS_FF = "read_B_1__ap_done" *)input read_B_1__ap_done; - (* RS_FF = "read_B_1__ap_idle" *)input read_B_1__ap_idle; - (* RS_AP_CTRL = "read_B_2.ap_start" *)output read_B_2__ap_start; - (* RS_AP_CTRL = "read_B_2.ap_ready" *)input read_B_2__ap_ready; - (* RS_FF = "read_B_2__ap_done" *)input read_B_2__ap_done; - (* RS_FF = "read_B_2__ap_idle" *)input read_B_2__ap_idle; - (* RS_AP_CTRL = "read_B_3.ap_start" *)output read_B_3__ap_start; - (* RS_AP_CTRL = "read_B_3.ap_ready" *)input read_B_3__ap_ready; - (* RS_FF = "read_B_3__ap_done" *)input read_B_3__ap_done; - (* RS_FF = "read_B_3__ap_idle" *)input read_B_3__ap_idle; - (* RS_AP_CTRL = "read_C_0.ap_start" *)output read_C_0__ap_start; - (* RS_AP_CTRL = "read_C_0.ap_ready" *)input read_C_0__ap_ready; - (* RS_FF = "read_C_0__ap_done" *)input read_C_0__ap_done; - (* RS_FF = "read_C_0__ap_idle" *)input read_C_0__ap_idle; - (* RS_AP_CTRL = "read_C_1.ap_start" *)output read_C_1__ap_start; - (* RS_AP_CTRL = "read_C_1.ap_ready" *)input read_C_1__ap_ready; - (* RS_FF = "read_C_1__ap_done" *)input read_C_1__ap_done; - (* RS_FF = "read_C_1__ap_idle" *)input read_C_1__ap_idle; - (* RS_AP_CTRL = "read_C_2.ap_start" *)output read_C_2__ap_start; - (* RS_AP_CTRL = "read_C_2.ap_ready" *)input read_C_2__ap_ready; - (* RS_FF = "read_C_2__ap_done" *)input read_C_2__ap_done; - (* RS_FF = "read_C_2__ap_idle" *)input read_C_2__ap_idle; - (* RS_AP_CTRL = "read_C_3.ap_start" *)output read_C_3__ap_start; - (* RS_AP_CTRL = "read_C_3.ap_ready" *)input read_C_3__ap_ready; - (* RS_FF = "read_C_3__ap_done" *)input read_C_3__ap_done; - (* RS_FF = "read_C_3__ap_idle" *)input read_C_3__ap_idle; - (* RS_AP_CTRL = "read_C_4.ap_start" *)output read_C_4__ap_start; - (* RS_AP_CTRL = "read_C_4.ap_ready" *)input read_C_4__ap_ready; - (* RS_FF = "read_C_4__ap_done" *)input read_C_4__ap_done; - (* RS_FF = "read_C_4__ap_idle" *)input read_C_4__ap_idle; - (* RS_AP_CTRL = "read_C_5.ap_start" *)output read_C_5__ap_start; - (* RS_AP_CTRL = "read_C_5.ap_ready" *)input read_C_5__ap_ready; - (* RS_FF = "read_C_5__ap_done" *)input read_C_5__ap_done; - (* RS_FF = "read_C_5__ap_idle" *)input read_C_5__ap_idle; - (* RS_AP_CTRL = "read_C_6.ap_start" *)output read_C_6__ap_start; - (* RS_AP_CTRL = "read_C_6.ap_ready" *)input read_C_6__ap_ready; - (* RS_FF = "read_C_6__ap_done" *)input read_C_6__ap_done; - (* RS_FF = "read_C_6__ap_idle" *)input read_C_6__ap_idle; - (* RS_AP_CTRL = "read_C_7.ap_start" *)output read_C_7__ap_start; - (* RS_AP_CTRL = "read_C_7.ap_ready" *)input read_C_7__ap_ready; - (* RS_FF = "read_C_7__ap_done" *)input read_C_7__ap_done; - (* RS_FF = "read_C_7__ap_idle" *)input read_C_7__ap_idle; - (* RS_AP_CTRL = "read_edge_list_ptr_0.ap_start" *)output read_edge_list_ptr_0__ap_start; - (* RS_AP_CTRL = "read_edge_list_ptr_0.ap_ready" *)input read_edge_list_ptr_0__ap_ready; - (* RS_FF = "read_edge_list_ptr_0__ap_done" *)input read_edge_list_ptr_0__ap_done; - (* RS_FF = "read_edge_list_ptr_0__ap_idle" *)input read_edge_list_ptr_0__ap_idle; - (* RS_AP_CTRL = "write_C_0.ap_start" *)output write_C_0__ap_start; - (* RS_AP_CTRL = "write_C_0.ap_ready" *)input write_C_0__ap_ready; - (* RS_FF = "write_C_0__ap_done" *)input write_C_0__ap_done; - (* RS_FF = "write_C_0__ap_idle" *)input write_C_0__ap_idle; - (* RS_AP_CTRL = "write_C_1.ap_start" *)output write_C_1__ap_start; - (* RS_AP_CTRL = "write_C_1.ap_ready" *)input write_C_1__ap_ready; - (* RS_FF = "write_C_1__ap_done" *)input write_C_1__ap_done; - (* RS_FF = "write_C_1__ap_idle" *)input write_C_1__ap_idle; - (* RS_AP_CTRL = "write_C_2.ap_start" *)output write_C_2__ap_start; - (* RS_AP_CTRL = "write_C_2.ap_ready" *)input write_C_2__ap_ready; - (* RS_FF = "write_C_2__ap_done" *)input write_C_2__ap_done; - (* RS_FF = "write_C_2__ap_idle" *)input write_C_2__ap_idle; - (* RS_AP_CTRL = "write_C_3.ap_start" *)output write_C_3__ap_start; - (* RS_AP_CTRL = "write_C_3.ap_ready" *)input write_C_3__ap_ready; - (* RS_FF = "write_C_3__ap_done" *)input write_C_3__ap_done; - (* RS_FF = "write_C_3__ap_idle" *)input write_C_3__ap_idle; - (* RS_AP_CTRL = "write_C_4.ap_start" *)output write_C_4__ap_start; - (* RS_AP_CTRL = "write_C_4.ap_ready" *)input write_C_4__ap_ready; - (* RS_FF = "write_C_4__ap_done" *)input write_C_4__ap_done; - (* RS_FF = "write_C_4__ap_idle" *)input write_C_4__ap_idle; - (* RS_AP_CTRL = "write_C_5.ap_start" *)output write_C_5__ap_start; - (* RS_AP_CTRL = "write_C_5.ap_ready" *)input write_C_5__ap_ready; - (* RS_FF = "write_C_5__ap_done" *)input write_C_5__ap_done; - (* RS_FF = "write_C_5__ap_idle" *)input write_C_5__ap_idle; - (* RS_AP_CTRL = "write_C_6.ap_start" *)output write_C_6__ap_start; - (* RS_AP_CTRL = "write_C_6.ap_ready" *)input write_C_6__ap_ready; - (* RS_FF = "write_C_6__ap_done" *)input write_C_6__ap_done; - (* RS_FF = "write_C_6__ap_idle" *)input write_C_6__ap_idle; - (* RS_AP_CTRL = "write_C_7.ap_start" *)output write_C_7__ap_start; - (* RS_AP_CTRL = "write_C_7.ap_ready" *)input write_C_7__ap_ready; - (* RS_FF = "write_C_7__ap_done" *)input write_C_7__ap_done; - (* RS_FF = "write_C_7__ap_idle" *)input write_C_7__ap_idle; - wire FloatvAddFloatv_0__ap_start_global__q0; - reg FloatvAddFloatv_0__ap_start; - wire FloatvAddFloatv_1__ap_start_global__q0; - reg FloatvAddFloatv_1__ap_start; - wire FloatvAddFloatv_2__ap_start_global__q0; - reg FloatvAddFloatv_2__ap_start; - wire FloatvAddFloatv_3__ap_start_global__q0; - reg FloatvAddFloatv_3__ap_start; - wire FloatvAddFloatv_4__ap_start_global__q0; - reg FloatvAddFloatv_4__ap_start; - wire FloatvAddFloatv_5__ap_start_global__q0; - reg FloatvAddFloatv_5__ap_start; - wire FloatvAddFloatv_6__ap_start_global__q0; - reg FloatvAddFloatv_6__ap_start; - wire FloatvAddFloatv_7__ap_start_global__q0; - reg FloatvAddFloatv_7__ap_start; - wire FloatvMultConst_0__ap_start_global__q0; - wire FloatvMultConst_0__is_done__q0; - wire FloatvMultConst_0__ap_done_global__q0; - wire FloatvMultConst_0__ap_start; - wire FloatvMultConst_0__ap_ready; - wire FloatvMultConst_0__ap_done; - wire FloatvMultConst_0__ap_idle; - reg [1:0] FloatvMultConst_0__state; - wire FloatvMultConst_1__ap_start_global__q0; - wire FloatvMultConst_1__is_done__q0; - wire FloatvMultConst_1__ap_done_global__q0; - wire FloatvMultConst_1__ap_start; - wire FloatvMultConst_1__ap_ready; - wire FloatvMultConst_1__ap_done; - wire FloatvMultConst_1__ap_idle; - reg [1:0] FloatvMultConst_1__state; - wire FloatvMultConst_2__ap_start_global__q0; - wire FloatvMultConst_2__is_done__q0; - wire FloatvMultConst_2__ap_done_global__q0; - wire FloatvMultConst_2__ap_start; - wire FloatvMultConst_2__ap_ready; - wire FloatvMultConst_2__ap_done; - wire FloatvMultConst_2__ap_idle; - reg [1:0] FloatvMultConst_2__state; - wire FloatvMultConst_3__ap_start_global__q0; - wire FloatvMultConst_3__is_done__q0; - wire FloatvMultConst_3__ap_done_global__q0; - wire FloatvMultConst_3__ap_start; - wire FloatvMultConst_3__ap_ready; - wire FloatvMultConst_3__ap_done; - wire FloatvMultConst_3__ap_idle; - reg [1:0] FloatvMultConst_3__state; - wire FloatvMultConst_4__ap_start_global__q0; - wire FloatvMultConst_4__is_done__q0; - wire FloatvMultConst_4__ap_done_global__q0; - wire FloatvMultConst_4__ap_start; - wire FloatvMultConst_4__ap_ready; - wire FloatvMultConst_4__ap_done; - wire FloatvMultConst_4__ap_idle; - reg [1:0] FloatvMultConst_4__state; - wire FloatvMultConst_5__ap_start_global__q0; - wire FloatvMultConst_5__is_done__q0; - wire FloatvMultConst_5__ap_done_global__q0; - wire FloatvMultConst_5__ap_start; - wire FloatvMultConst_5__ap_ready; - wire FloatvMultConst_5__ap_done; - wire FloatvMultConst_5__ap_idle; - reg [1:0] FloatvMultConst_5__state; - wire FloatvMultConst_6__ap_start_global__q0; - wire FloatvMultConst_6__is_done__q0; - wire FloatvMultConst_6__ap_done_global__q0; - wire FloatvMultConst_6__ap_start; - wire FloatvMultConst_6__ap_ready; - wire FloatvMultConst_6__ap_done; - wire FloatvMultConst_6__ap_idle; - reg [1:0] FloatvMultConst_6__state; - wire FloatvMultConst_7__ap_start_global__q0; - wire FloatvMultConst_7__is_done__q0; - wire FloatvMultConst_7__ap_done_global__q0; - wire FloatvMultConst_7__ap_start; - wire FloatvMultConst_7__ap_ready; - wire FloatvMultConst_7__ap_done; - wire FloatvMultConst_7__ap_idle; - reg [1:0] FloatvMultConst_7__state; - wire FloatvMultConst_8__ap_start_global__q0; - wire FloatvMultConst_8__is_done__q0; - wire FloatvMultConst_8__ap_done_global__q0; - wire FloatvMultConst_8__ap_start; - wire FloatvMultConst_8__ap_ready; - wire FloatvMultConst_8__ap_done; - wire FloatvMultConst_8__ap_idle; - reg [1:0] FloatvMultConst_8__state; - wire FloatvMultConst_9__ap_start_global__q0; - wire FloatvMultConst_9__is_done__q0; - wire FloatvMultConst_9__ap_done_global__q0; - wire FloatvMultConst_9__ap_start; - wire FloatvMultConst_9__ap_ready; - wire FloatvMultConst_9__ap_done; - wire FloatvMultConst_9__ap_idle; - reg [1:0] FloatvMultConst_9__state; - wire FloatvMultConst_10__ap_start_global__q0; - wire FloatvMultConst_10__is_done__q0; - wire FloatvMultConst_10__ap_done_global__q0; - wire FloatvMultConst_10__ap_start; - wire FloatvMultConst_10__ap_ready; - wire FloatvMultConst_10__ap_done; - wire FloatvMultConst_10__ap_idle; - reg [1:0] FloatvMultConst_10__state; - wire FloatvMultConst_11__ap_start_global__q0; - wire FloatvMultConst_11__is_done__q0; - wire FloatvMultConst_11__ap_done_global__q0; - wire FloatvMultConst_11__ap_start; - wire FloatvMultConst_11__ap_ready; - wire FloatvMultConst_11__ap_done; - wire FloatvMultConst_11__ap_idle; - reg [1:0] FloatvMultConst_11__state; - wire FloatvMultConst_12__ap_start_global__q0; - wire FloatvMultConst_12__is_done__q0; - wire FloatvMultConst_12__ap_done_global__q0; - wire FloatvMultConst_12__ap_start; - wire FloatvMultConst_12__ap_ready; - wire FloatvMultConst_12__ap_done; - wire FloatvMultConst_12__ap_idle; - reg [1:0] FloatvMultConst_12__state; - wire FloatvMultConst_13__ap_start_global__q0; - wire FloatvMultConst_13__is_done__q0; - wire FloatvMultConst_13__ap_done_global__q0; - wire FloatvMultConst_13__ap_start; - wire FloatvMultConst_13__ap_ready; - wire FloatvMultConst_13__ap_done; - wire FloatvMultConst_13__ap_idle; - reg [1:0] FloatvMultConst_13__state; - wire FloatvMultConst_14__ap_start_global__q0; - wire FloatvMultConst_14__is_done__q0; - wire FloatvMultConst_14__ap_done_global__q0; - wire FloatvMultConst_14__ap_start; - wire FloatvMultConst_14__ap_ready; - wire FloatvMultConst_14__ap_done; - wire FloatvMultConst_14__ap_idle; - reg [1:0] FloatvMultConst_14__state; - wire FloatvMultConst_15__ap_start_global__q0; - wire FloatvMultConst_15__is_done__q0; - wire FloatvMultConst_15__ap_done_global__q0; - wire FloatvMultConst_15__ap_start; - wire FloatvMultConst_15__ap_ready; - wire FloatvMultConst_15__ap_done; - wire FloatvMultConst_15__ap_idle; - reg [1:0] FloatvMultConst_15__state; - wire Merger_0__ap_start_global__q0; - reg Merger_0__ap_start; - wire Merger_1__ap_start_global__q0; - reg Merger_1__ap_start; - wire Merger_2__ap_start_global__q0; - reg Merger_2__ap_start; - wire Merger_3__ap_start_global__q0; - reg Merger_3__ap_start; - wire Merger_4__ap_start_global__q0; - reg Merger_4__ap_start; - wire Merger_5__ap_start_global__q0; - reg Merger_5__ap_start; - wire Merger_6__ap_start_global__q0; - reg Merger_6__ap_start; - wire Merger_7__ap_start_global__q0; - reg Merger_7__ap_start; - wire PEG_Bmtx_0__ap_start_global__q0; - wire PEG_Bmtx_0__is_done__q0; - wire PEG_Bmtx_0__ap_done_global__q0; - wire PEG_Bmtx_0__ap_start; - wire PEG_Bmtx_0__ap_ready; - wire PEG_Bmtx_0__ap_done; - wire PEG_Bmtx_0__ap_idle; - reg [1:0] PEG_Bmtx_0__state; - wire PEG_Bmtx_1__ap_start_global__q0; - wire PEG_Bmtx_1__is_done__q0; - wire PEG_Bmtx_1__ap_done_global__q0; - wire PEG_Bmtx_1__ap_start; - wire PEG_Bmtx_1__ap_ready; - wire PEG_Bmtx_1__ap_done; - wire PEG_Bmtx_1__ap_idle; - reg [1:0] PEG_Bmtx_1__state; - wire PEG_Bmtx_2__ap_start_global__q0; - wire PEG_Bmtx_2__is_done__q0; - wire PEG_Bmtx_2__ap_done_global__q0; - wire PEG_Bmtx_2__ap_start; - wire PEG_Bmtx_2__ap_ready; - wire PEG_Bmtx_2__ap_done; - wire PEG_Bmtx_2__ap_idle; - reg [1:0] PEG_Bmtx_2__state; - wire PEG_Bmtx_3__ap_start_global__q0; - wire PEG_Bmtx_3__is_done__q0; - wire PEG_Bmtx_3__ap_done_global__q0; - wire PEG_Bmtx_3__ap_start; - wire PEG_Bmtx_3__ap_ready; - wire PEG_Bmtx_3__ap_done; - wire PEG_Bmtx_3__ap_idle; - reg [1:0] PEG_Bmtx_3__state; - wire PEG_Bmtx_4__ap_start_global__q0; - wire PEG_Bmtx_4__is_done__q0; - wire PEG_Bmtx_4__ap_done_global__q0; - wire PEG_Bmtx_4__ap_start; - wire PEG_Bmtx_4__ap_ready; - wire PEG_Bmtx_4__ap_done; - wire PEG_Bmtx_4__ap_idle; - reg [1:0] PEG_Bmtx_4__state; - wire PEG_Bmtx_5__ap_start_global__q0; - wire PEG_Bmtx_5__is_done__q0; - wire PEG_Bmtx_5__ap_done_global__q0; - wire PEG_Bmtx_5__ap_start; - wire PEG_Bmtx_5__ap_ready; - wire PEG_Bmtx_5__ap_done; - wire PEG_Bmtx_5__ap_idle; - reg [1:0] PEG_Bmtx_5__state; - wire PEG_Bmtx_6__ap_start_global__q0; - wire PEG_Bmtx_6__is_done__q0; - wire PEG_Bmtx_6__ap_done_global__q0; - wire PEG_Bmtx_6__ap_start; - wire PEG_Bmtx_6__ap_ready; - wire PEG_Bmtx_6__ap_done; - wire PEG_Bmtx_6__ap_idle; - reg [1:0] PEG_Bmtx_6__state; - wire PEG_Bmtx_7__ap_start_global__q0; - wire PEG_Bmtx_7__is_done__q0; - wire PEG_Bmtx_7__ap_done_global__q0; - wire PEG_Bmtx_7__ap_start; - wire PEG_Bmtx_7__ap_ready; - wire PEG_Bmtx_7__ap_done; - wire PEG_Bmtx_7__ap_idle; - reg [1:0] PEG_Bmtx_7__state; - wire PEG_Bmtx_8__ap_start_global__q0; - wire PEG_Bmtx_8__is_done__q0; - wire PEG_Bmtx_8__ap_done_global__q0; - wire PEG_Bmtx_8__ap_start; - wire PEG_Bmtx_8__ap_ready; - wire PEG_Bmtx_8__ap_done; - wire PEG_Bmtx_8__ap_idle; - reg [1:0] PEG_Bmtx_8__state; - wire PEG_Bmtx_9__ap_start_global__q0; - wire PEG_Bmtx_9__is_done__q0; - wire PEG_Bmtx_9__ap_done_global__q0; - wire PEG_Bmtx_9__ap_start; - wire PEG_Bmtx_9__ap_ready; - wire PEG_Bmtx_9__ap_done; - wire PEG_Bmtx_9__ap_idle; - reg [1:0] PEG_Bmtx_9__state; - wire PEG_Bmtx_10__ap_start_global__q0; - wire PEG_Bmtx_10__is_done__q0; - wire PEG_Bmtx_10__ap_done_global__q0; - wire PEG_Bmtx_10__ap_start; - wire PEG_Bmtx_10__ap_ready; - wire PEG_Bmtx_10__ap_done; - wire PEG_Bmtx_10__ap_idle; - reg [1:0] PEG_Bmtx_10__state; - wire PEG_Bmtx_11__ap_start_global__q0; - wire PEG_Bmtx_11__is_done__q0; - wire PEG_Bmtx_11__ap_done_global__q0; - wire PEG_Bmtx_11__ap_start; - wire PEG_Bmtx_11__ap_ready; - wire PEG_Bmtx_11__ap_done; - wire PEG_Bmtx_11__ap_idle; - reg [1:0] PEG_Bmtx_11__state; - wire PEG_Bmtx_12__ap_start_global__q0; - wire PEG_Bmtx_12__is_done__q0; - wire PEG_Bmtx_12__ap_done_global__q0; - wire PEG_Bmtx_12__ap_start; - wire PEG_Bmtx_12__ap_ready; - wire PEG_Bmtx_12__ap_done; - wire PEG_Bmtx_12__ap_idle; - reg [1:0] PEG_Bmtx_12__state; - wire PEG_Bmtx_13__ap_start_global__q0; - wire PEG_Bmtx_13__is_done__q0; - wire PEG_Bmtx_13__ap_done_global__q0; - wire PEG_Bmtx_13__ap_start; - wire PEG_Bmtx_13__ap_ready; - wire PEG_Bmtx_13__ap_done; - wire PEG_Bmtx_13__ap_idle; - reg [1:0] PEG_Bmtx_13__state; - wire PEG_Bmtx_14__ap_start_global__q0; - wire PEG_Bmtx_14__is_done__q0; - wire PEG_Bmtx_14__ap_done_global__q0; - wire PEG_Bmtx_14__ap_start; - wire PEG_Bmtx_14__ap_ready; - wire PEG_Bmtx_14__ap_done; - wire PEG_Bmtx_14__ap_idle; - reg [1:0] PEG_Bmtx_14__state; - wire PEG_Bmtx_15__ap_start_global__q0; - wire PEG_Bmtx_15__is_done__q0; - wire PEG_Bmtx_15__ap_done_global__q0; - wire PEG_Bmtx_15__ap_start; - wire PEG_Bmtx_15__ap_ready; - wire PEG_Bmtx_15__ap_done; - wire PEG_Bmtx_15__ap_idle; - reg [1:0] PEG_Bmtx_15__state; - wire PEG_Cmtx_0__ap_start_global__q0; - wire PEG_Cmtx_0__is_done__q0; - wire PEG_Cmtx_0__ap_done_global__q0; - wire PEG_Cmtx_0__ap_start; - wire PEG_Cmtx_0__ap_ready; - wire PEG_Cmtx_0__ap_done; - wire PEG_Cmtx_0__ap_idle; - reg [1:0] PEG_Cmtx_0__state; - wire PEG_Cmtx_1__ap_start_global__q0; - wire PEG_Cmtx_1__is_done__q0; - wire PEG_Cmtx_1__ap_done_global__q0; - wire PEG_Cmtx_1__ap_start; - wire PEG_Cmtx_1__ap_ready; - wire PEG_Cmtx_1__ap_done; - wire PEG_Cmtx_1__ap_idle; - reg [1:0] PEG_Cmtx_1__state; - wire PEG_Cmtx_2__ap_start_global__q0; - wire PEG_Cmtx_2__is_done__q0; - wire PEG_Cmtx_2__ap_done_global__q0; - wire PEG_Cmtx_2__ap_start; - wire PEG_Cmtx_2__ap_ready; - wire PEG_Cmtx_2__ap_done; - wire PEG_Cmtx_2__ap_idle; - reg [1:0] PEG_Cmtx_2__state; - wire PEG_Cmtx_3__ap_start_global__q0; - wire PEG_Cmtx_3__is_done__q0; - wire PEG_Cmtx_3__ap_done_global__q0; - wire PEG_Cmtx_3__ap_start; - wire PEG_Cmtx_3__ap_ready; - wire PEG_Cmtx_3__ap_done; - wire PEG_Cmtx_3__ap_idle; - reg [1:0] PEG_Cmtx_3__state; - wire PEG_Cmtx_4__ap_start_global__q0; - wire PEG_Cmtx_4__is_done__q0; - wire PEG_Cmtx_4__ap_done_global__q0; - wire PEG_Cmtx_4__ap_start; - wire PEG_Cmtx_4__ap_ready; - wire PEG_Cmtx_4__ap_done; - wire PEG_Cmtx_4__ap_idle; - reg [1:0] PEG_Cmtx_4__state; - wire PEG_Cmtx_5__ap_start_global__q0; - wire PEG_Cmtx_5__is_done__q0; - wire PEG_Cmtx_5__ap_done_global__q0; - wire PEG_Cmtx_5__ap_start; - wire PEG_Cmtx_5__ap_ready; - wire PEG_Cmtx_5__ap_done; - wire PEG_Cmtx_5__ap_idle; - reg [1:0] PEG_Cmtx_5__state; - wire PEG_Cmtx_6__ap_start_global__q0; - wire PEG_Cmtx_6__is_done__q0; - wire PEG_Cmtx_6__ap_done_global__q0; - wire PEG_Cmtx_6__ap_start; - wire PEG_Cmtx_6__ap_ready; - wire PEG_Cmtx_6__ap_done; - wire PEG_Cmtx_6__ap_idle; - reg [1:0] PEG_Cmtx_6__state; - wire PEG_Cmtx_7__ap_start_global__q0; - wire PEG_Cmtx_7__is_done__q0; - wire PEG_Cmtx_7__ap_done_global__q0; - wire PEG_Cmtx_7__ap_start; - wire PEG_Cmtx_7__ap_ready; - wire PEG_Cmtx_7__ap_done; - wire PEG_Cmtx_7__ap_idle; - reg [1:0] PEG_Cmtx_7__state; - wire PEG_Cmtx_8__ap_start_global__q0; - wire PEG_Cmtx_8__is_done__q0; - wire PEG_Cmtx_8__ap_done_global__q0; - wire PEG_Cmtx_8__ap_start; - wire PEG_Cmtx_8__ap_ready; - wire PEG_Cmtx_8__ap_done; - wire PEG_Cmtx_8__ap_idle; - reg [1:0] PEG_Cmtx_8__state; - wire PEG_Cmtx_9__ap_start_global__q0; - wire PEG_Cmtx_9__is_done__q0; - wire PEG_Cmtx_9__ap_done_global__q0; - wire PEG_Cmtx_9__ap_start; - wire PEG_Cmtx_9__ap_ready; - wire PEG_Cmtx_9__ap_done; - wire PEG_Cmtx_9__ap_idle; - reg [1:0] PEG_Cmtx_9__state; - wire PEG_Cmtx_10__ap_start_global__q0; - wire PEG_Cmtx_10__is_done__q0; - wire PEG_Cmtx_10__ap_done_global__q0; - wire PEG_Cmtx_10__ap_start; - wire PEG_Cmtx_10__ap_ready; - wire PEG_Cmtx_10__ap_done; - wire PEG_Cmtx_10__ap_idle; - reg [1:0] PEG_Cmtx_10__state; - wire PEG_Cmtx_11__ap_start_global__q0; - wire PEG_Cmtx_11__is_done__q0; - wire PEG_Cmtx_11__ap_done_global__q0; - wire PEG_Cmtx_11__ap_start; - wire PEG_Cmtx_11__ap_ready; - wire PEG_Cmtx_11__ap_done; - wire PEG_Cmtx_11__ap_idle; - reg [1:0] PEG_Cmtx_11__state; - wire PEG_Cmtx_12__ap_start_global__q0; - wire PEG_Cmtx_12__is_done__q0; - wire PEG_Cmtx_12__ap_done_global__q0; - wire PEG_Cmtx_12__ap_start; - wire PEG_Cmtx_12__ap_ready; - wire PEG_Cmtx_12__ap_done; - wire PEG_Cmtx_12__ap_idle; - reg [1:0] PEG_Cmtx_12__state; - wire PEG_Cmtx_13__ap_start_global__q0; - wire PEG_Cmtx_13__is_done__q0; - wire PEG_Cmtx_13__ap_done_global__q0; - wire PEG_Cmtx_13__ap_start; - wire PEG_Cmtx_13__ap_ready; - wire PEG_Cmtx_13__ap_done; - wire PEG_Cmtx_13__ap_idle; - reg [1:0] PEG_Cmtx_13__state; - wire PEG_Cmtx_14__ap_start_global__q0; - wire PEG_Cmtx_14__is_done__q0; - wire PEG_Cmtx_14__ap_done_global__q0; - wire PEG_Cmtx_14__ap_start; - wire PEG_Cmtx_14__ap_ready; - wire PEG_Cmtx_14__ap_done; - wire PEG_Cmtx_14__ap_idle; - reg [1:0] PEG_Cmtx_14__state; - wire PEG_Cmtx_15__ap_start_global__q0; - wire PEG_Cmtx_15__is_done__q0; - wire PEG_Cmtx_15__ap_done_global__q0; - wire PEG_Cmtx_15__ap_start; - wire PEG_Cmtx_15__ap_ready; - wire PEG_Cmtx_15__ap_done; - wire PEG_Cmtx_15__ap_idle; - reg [1:0] PEG_Cmtx_15__state; - wire Scatter_1_2_0__ap_start_global__q0; - reg Scatter_1_2_0__ap_start; - wire Scatter_1_2_1__ap_start_global__q0; - reg Scatter_1_2_1__ap_start; - wire Scatter_1_2_2__ap_start_global__q0; - reg Scatter_1_2_2__ap_start; - wire Scatter_1_2_3__ap_start_global__q0; - reg Scatter_1_2_3__ap_start; - wire Scatter_1_2_4__ap_start_global__q0; - reg Scatter_1_2_4__ap_start; - wire Scatter_1_2_5__ap_start_global__q0; - reg Scatter_1_2_5__ap_start; - wire Scatter_1_2_6__ap_start_global__q0; - reg Scatter_1_2_6__ap_start; - wire Scatter_1_2_7__ap_start_global__q0; - reg Scatter_1_2_7__ap_start; - wire black_hole_float_v16_0__ap_start_global__q0; - reg black_hole_float_v16_0__ap_start; - wire black_hole_float_v16_1__ap_start_global__q0; - reg black_hole_float_v16_1__ap_start; - wire black_hole_float_v16_2__ap_start_global__q0; - reg black_hole_float_v16_2__ap_start; - wire black_hole_float_v16_3__ap_start_global__q0; - reg black_hole_float_v16_3__ap_start; - wire black_hole_int_0__ap_start_global__q0; - reg black_hole_int_0__ap_start; - wire black_hole_int_1__ap_start_global__q0; - reg black_hole_int_1__ap_start; - wire read_A_0__ap_start_global__q0; - wire read_A_0__is_done__q0; - wire read_A_0__ap_done_global__q0; - wire read_A_0__ap_start; - wire read_A_0__ap_ready; - wire read_A_0__ap_done; - wire read_A_0__ap_idle; - reg [1:0] read_A_0__state; - wire read_A_1__ap_start_global__q0; - wire read_A_1__is_done__q0; - wire read_A_1__ap_done_global__q0; - wire read_A_1__ap_start; - wire read_A_1__ap_ready; - wire read_A_1__ap_done; - wire read_A_1__ap_idle; - reg [1:0] read_A_1__state; - wire read_A_2__ap_start_global__q0; - wire read_A_2__is_done__q0; - wire read_A_2__ap_done_global__q0; - wire read_A_2__ap_start; - wire read_A_2__ap_ready; - wire read_A_2__ap_done; - wire read_A_2__ap_idle; - reg [1:0] read_A_2__state; - wire read_A_3__ap_start_global__q0; - wire read_A_3__is_done__q0; - wire read_A_3__ap_done_global__q0; - wire read_A_3__ap_start; - wire read_A_3__ap_ready; - wire read_A_3__ap_done; - wire read_A_3__ap_idle; - reg [1:0] read_A_3__state; - wire read_A_4__ap_start_global__q0; - wire read_A_4__is_done__q0; - wire read_A_4__ap_done_global__q0; - wire read_A_4__ap_start; - wire read_A_4__ap_ready; - wire read_A_4__ap_done; - wire read_A_4__ap_idle; - reg [1:0] read_A_4__state; - wire read_A_5__ap_start_global__q0; - wire read_A_5__is_done__q0; - wire read_A_5__ap_done_global__q0; - wire read_A_5__ap_start; - wire read_A_5__ap_ready; - wire read_A_5__ap_done; - wire read_A_5__ap_idle; - reg [1:0] read_A_5__state; - wire read_A_6__ap_start_global__q0; - wire read_A_6__is_done__q0; - wire read_A_6__ap_done_global__q0; - wire read_A_6__ap_start; - wire read_A_6__ap_ready; - wire read_A_6__ap_done; - wire read_A_6__ap_idle; - reg [1:0] read_A_6__state; - wire read_A_7__ap_start_global__q0; - wire read_A_7__is_done__q0; - wire read_A_7__ap_done_global__q0; - wire read_A_7__ap_start; - wire read_A_7__ap_ready; - wire read_A_7__ap_done; - wire read_A_7__ap_idle; - reg [1:0] read_A_7__state; - wire read_B_0__ap_start_global__q0; - wire read_B_0__is_done__q0; - wire read_B_0__ap_done_global__q0; - wire read_B_0__ap_start; - wire read_B_0__ap_ready; - wire read_B_0__ap_done; - wire read_B_0__ap_idle; - reg [1:0] read_B_0__state; - wire read_B_1__ap_start_global__q0; - wire read_B_1__is_done__q0; - wire read_B_1__ap_done_global__q0; - wire read_B_1__ap_start; - wire read_B_1__ap_ready; - wire read_B_1__ap_done; - wire read_B_1__ap_idle; - reg [1:0] read_B_1__state; - wire read_B_2__ap_start_global__q0; - wire read_B_2__is_done__q0; - wire read_B_2__ap_done_global__q0; - wire read_B_2__ap_start; - wire read_B_2__ap_ready; - wire read_B_2__ap_done; - wire read_B_2__ap_idle; - reg [1:0] read_B_2__state; - wire read_B_3__ap_start_global__q0; - wire read_B_3__is_done__q0; - wire read_B_3__ap_done_global__q0; - wire read_B_3__ap_start; - wire read_B_3__ap_ready; - wire read_B_3__ap_done; - wire read_B_3__ap_idle; - reg [1:0] read_B_3__state; - wire read_C_0__ap_start_global__q0; - wire read_C_0__is_done__q0; - wire read_C_0__ap_done_global__q0; - wire read_C_0__ap_start; - wire read_C_0__ap_ready; - wire read_C_0__ap_done; - wire read_C_0__ap_idle; - reg [1:0] read_C_0__state; - wire read_C_1__ap_start_global__q0; - wire read_C_1__is_done__q0; - wire read_C_1__ap_done_global__q0; - wire read_C_1__ap_start; - wire read_C_1__ap_ready; - wire read_C_1__ap_done; - wire read_C_1__ap_idle; - reg [1:0] read_C_1__state; - wire read_C_2__ap_start_global__q0; - wire read_C_2__is_done__q0; - wire read_C_2__ap_done_global__q0; - wire read_C_2__ap_start; - wire read_C_2__ap_ready; - wire read_C_2__ap_done; - wire read_C_2__ap_idle; - reg [1:0] read_C_2__state; - wire read_C_3__ap_start_global__q0; - wire read_C_3__is_done__q0; - wire read_C_3__ap_done_global__q0; - wire read_C_3__ap_start; - wire read_C_3__ap_ready; - wire read_C_3__ap_done; - wire read_C_3__ap_idle; - reg [1:0] read_C_3__state; - wire read_C_4__ap_start_global__q0; - wire read_C_4__is_done__q0; - wire read_C_4__ap_done_global__q0; - wire read_C_4__ap_start; - wire read_C_4__ap_ready; - wire read_C_4__ap_done; - wire read_C_4__ap_idle; - reg [1:0] read_C_4__state; - wire read_C_5__ap_start_global__q0; - wire read_C_5__is_done__q0; - wire read_C_5__ap_done_global__q0; - wire read_C_5__ap_start; - wire read_C_5__ap_ready; - wire read_C_5__ap_done; - wire read_C_5__ap_idle; - reg [1:0] read_C_5__state; - wire read_C_6__ap_start_global__q0; - wire read_C_6__is_done__q0; - wire read_C_6__ap_done_global__q0; - wire read_C_6__ap_start; - wire read_C_6__ap_ready; - wire read_C_6__ap_done; - wire read_C_6__ap_idle; - reg [1:0] read_C_6__state; - wire read_C_7__ap_start_global__q0; - wire read_C_7__is_done__q0; - wire read_C_7__ap_done_global__q0; - wire read_C_7__ap_start; - wire read_C_7__ap_ready; - wire read_C_7__ap_done; - wire read_C_7__ap_idle; - reg [1:0] read_C_7__state; - wire read_edge_list_ptr_0__ap_start_global__q0; - wire read_edge_list_ptr_0__is_done__q0; - wire read_edge_list_ptr_0__ap_done_global__q0; - wire read_edge_list_ptr_0__ap_start; - wire read_edge_list_ptr_0__ap_ready; - wire read_edge_list_ptr_0__ap_done; - wire read_edge_list_ptr_0__ap_idle; - reg [1:0] read_edge_list_ptr_0__state; - wire write_C_0__ap_start_global__q0; - wire write_C_0__is_done__q0; - wire write_C_0__ap_done_global__q0; - wire write_C_0__ap_start; - wire write_C_0__ap_ready; - wire write_C_0__ap_done; - wire write_C_0__ap_idle; - reg [1:0] write_C_0__state; - wire write_C_1__ap_start_global__q0; - wire write_C_1__is_done__q0; - wire write_C_1__ap_done_global__q0; - wire write_C_1__ap_start; - wire write_C_1__ap_ready; - wire write_C_1__ap_done; - wire write_C_1__ap_idle; - reg [1:0] write_C_1__state; - wire write_C_2__ap_start_global__q0; - wire write_C_2__is_done__q0; - wire write_C_2__ap_done_global__q0; - wire write_C_2__ap_start; - wire write_C_2__ap_ready; - wire write_C_2__ap_done; - wire write_C_2__ap_idle; - reg [1:0] write_C_2__state; - wire write_C_3__ap_start_global__q0; - wire write_C_3__is_done__q0; - wire write_C_3__ap_done_global__q0; - wire write_C_3__ap_start; - wire write_C_3__ap_ready; - wire write_C_3__ap_done; - wire write_C_3__ap_idle; - reg [1:0] write_C_3__state; - wire write_C_4__ap_start_global__q0; - wire write_C_4__is_done__q0; - wire write_C_4__ap_done_global__q0; - wire write_C_4__ap_start; - wire write_C_4__ap_ready; - wire write_C_4__ap_done; - wire write_C_4__ap_idle; - reg [1:0] write_C_4__state; - wire write_C_5__ap_start_global__q0; - wire write_C_5__is_done__q0; - wire write_C_5__ap_done_global__q0; - wire write_C_5__ap_start; - wire write_C_5__ap_ready; - wire write_C_5__ap_done; - wire write_C_5__ap_idle; - reg [1:0] write_C_5__state; - wire write_C_6__ap_start_global__q0; - wire write_C_6__is_done__q0; - wire write_C_6__ap_done_global__q0; - wire write_C_6__ap_start; - wire write_C_6__ap_ready; - wire write_C_6__ap_done; - wire write_C_6__ap_idle; - reg [1:0] write_C_6__state; - wire write_C_7__ap_start_global__q0; - wire write_C_7__is_done__q0; - wire write_C_7__ap_done_global__q0; - wire write_C_7__ap_start; - wire write_C_7__ap_ready; - wire write_C_7__ap_done; - wire write_C_7__ap_idle; - reg [1:0] write_C_7__state; - reg [1:0] tapa_state; - reg [0:0] countdown; - wire ap_start__q0; - wire ap_done__q0; - assign FloatvAddFloatv_0__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvAddFloatv_0__ap_start <= 1'b0; - end else if(FloatvAddFloatv_0__ap_start_global__q0) begin - FloatvAddFloatv_0__ap_start <= 1'b1; - end - end - - assign FloatvAddFloatv_1__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvAddFloatv_1__ap_start <= 1'b0; - end else if(FloatvAddFloatv_1__ap_start_global__q0) begin - FloatvAddFloatv_1__ap_start <= 1'b1; - end - end - - assign FloatvAddFloatv_2__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvAddFloatv_2__ap_start <= 1'b0; - end else if(FloatvAddFloatv_2__ap_start_global__q0) begin - FloatvAddFloatv_2__ap_start <= 1'b1; - end - end - - assign FloatvAddFloatv_3__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvAddFloatv_3__ap_start <= 1'b0; - end else if(FloatvAddFloatv_3__ap_start_global__q0) begin - FloatvAddFloatv_3__ap_start <= 1'b1; - end - end - - assign FloatvAddFloatv_4__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvAddFloatv_4__ap_start <= 1'b0; - end else if(FloatvAddFloatv_4__ap_start_global__q0) begin - FloatvAddFloatv_4__ap_start <= 1'b1; - end - end - - assign FloatvAddFloatv_5__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvAddFloatv_5__ap_start <= 1'b0; - end else if(FloatvAddFloatv_5__ap_start_global__q0) begin - FloatvAddFloatv_5__ap_start <= 1'b1; - end - end - - assign FloatvAddFloatv_6__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvAddFloatv_6__ap_start <= 1'b0; - end else if(FloatvAddFloatv_6__ap_start_global__q0) begin - FloatvAddFloatv_6__ap_start <= 1'b1; - end - end - - assign FloatvAddFloatv_7__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvAddFloatv_7__ap_start <= 1'b0; - end else if(FloatvAddFloatv_7__ap_start_global__q0) begin - FloatvAddFloatv_7__ap_start <= 1'b1; - end - end - - assign FloatvMultConst_0__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_0__is_done__q0 = (FloatvMultConst_0__state == 2'b10); - assign FloatvMultConst_0__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_0__state <= 2'b00; - end else begin - if(FloatvMultConst_0__state == 2'b00) begin - if(FloatvMultConst_0__ap_start_global__q0) begin - FloatvMultConst_0__state <= 2'b01; - end - end - if(FloatvMultConst_0__state == 2'b01) begin - if(FloatvMultConst_0__ap_ready) begin - if(FloatvMultConst_0__ap_done) begin - FloatvMultConst_0__state <= 2'b10; - end else begin - FloatvMultConst_0__state <= 2'b11; - end - end - end - if(FloatvMultConst_0__state == 2'b11) begin - if(FloatvMultConst_0__ap_done) begin - FloatvMultConst_0__state <= 2'b10; - end - end - if(FloatvMultConst_0__state == 2'b10) begin - if(FloatvMultConst_0__ap_done_global__q0) begin - FloatvMultConst_0__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_0__ap_start = (FloatvMultConst_0__state == 2'b01); - assign FloatvMultConst_1__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_1__is_done__q0 = (FloatvMultConst_1__state == 2'b10); - assign FloatvMultConst_1__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_1__state <= 2'b00; - end else begin - if(FloatvMultConst_1__state == 2'b00) begin - if(FloatvMultConst_1__ap_start_global__q0) begin - FloatvMultConst_1__state <= 2'b01; - end - end - if(FloatvMultConst_1__state == 2'b01) begin - if(FloatvMultConst_1__ap_ready) begin - if(FloatvMultConst_1__ap_done) begin - FloatvMultConst_1__state <= 2'b10; - end else begin - FloatvMultConst_1__state <= 2'b11; - end - end - end - if(FloatvMultConst_1__state == 2'b11) begin - if(FloatvMultConst_1__ap_done) begin - FloatvMultConst_1__state <= 2'b10; - end - end - if(FloatvMultConst_1__state == 2'b10) begin - if(FloatvMultConst_1__ap_done_global__q0) begin - FloatvMultConst_1__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_1__ap_start = (FloatvMultConst_1__state == 2'b01); - assign FloatvMultConst_2__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_2__is_done__q0 = (FloatvMultConst_2__state == 2'b10); - assign FloatvMultConst_2__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_2__state <= 2'b00; - end else begin - if(FloatvMultConst_2__state == 2'b00) begin - if(FloatvMultConst_2__ap_start_global__q0) begin - FloatvMultConst_2__state <= 2'b01; - end - end - if(FloatvMultConst_2__state == 2'b01) begin - if(FloatvMultConst_2__ap_ready) begin - if(FloatvMultConst_2__ap_done) begin - FloatvMultConst_2__state <= 2'b10; - end else begin - FloatvMultConst_2__state <= 2'b11; - end - end - end - if(FloatvMultConst_2__state == 2'b11) begin - if(FloatvMultConst_2__ap_done) begin - FloatvMultConst_2__state <= 2'b10; - end - end - if(FloatvMultConst_2__state == 2'b10) begin - if(FloatvMultConst_2__ap_done_global__q0) begin - FloatvMultConst_2__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_2__ap_start = (FloatvMultConst_2__state == 2'b01); - assign FloatvMultConst_3__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_3__is_done__q0 = (FloatvMultConst_3__state == 2'b10); - assign FloatvMultConst_3__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_3__state <= 2'b00; - end else begin - if(FloatvMultConst_3__state == 2'b00) begin - if(FloatvMultConst_3__ap_start_global__q0) begin - FloatvMultConst_3__state <= 2'b01; - end - end - if(FloatvMultConst_3__state == 2'b01) begin - if(FloatvMultConst_3__ap_ready) begin - if(FloatvMultConst_3__ap_done) begin - FloatvMultConst_3__state <= 2'b10; - end else begin - FloatvMultConst_3__state <= 2'b11; - end - end - end - if(FloatvMultConst_3__state == 2'b11) begin - if(FloatvMultConst_3__ap_done) begin - FloatvMultConst_3__state <= 2'b10; - end - end - if(FloatvMultConst_3__state == 2'b10) begin - if(FloatvMultConst_3__ap_done_global__q0) begin - FloatvMultConst_3__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_3__ap_start = (FloatvMultConst_3__state == 2'b01); - assign FloatvMultConst_4__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_4__is_done__q0 = (FloatvMultConst_4__state == 2'b10); - assign FloatvMultConst_4__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_4__state <= 2'b00; - end else begin - if(FloatvMultConst_4__state == 2'b00) begin - if(FloatvMultConst_4__ap_start_global__q0) begin - FloatvMultConst_4__state <= 2'b01; - end - end - if(FloatvMultConst_4__state == 2'b01) begin - if(FloatvMultConst_4__ap_ready) begin - if(FloatvMultConst_4__ap_done) begin - FloatvMultConst_4__state <= 2'b10; - end else begin - FloatvMultConst_4__state <= 2'b11; - end - end - end - if(FloatvMultConst_4__state == 2'b11) begin - if(FloatvMultConst_4__ap_done) begin - FloatvMultConst_4__state <= 2'b10; - end - end - if(FloatvMultConst_4__state == 2'b10) begin - if(FloatvMultConst_4__ap_done_global__q0) begin - FloatvMultConst_4__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_4__ap_start = (FloatvMultConst_4__state == 2'b01); - assign FloatvMultConst_5__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_5__is_done__q0 = (FloatvMultConst_5__state == 2'b10); - assign FloatvMultConst_5__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_5__state <= 2'b00; - end else begin - if(FloatvMultConst_5__state == 2'b00) begin - if(FloatvMultConst_5__ap_start_global__q0) begin - FloatvMultConst_5__state <= 2'b01; - end - end - if(FloatvMultConst_5__state == 2'b01) begin - if(FloatvMultConst_5__ap_ready) begin - if(FloatvMultConst_5__ap_done) begin - FloatvMultConst_5__state <= 2'b10; - end else begin - FloatvMultConst_5__state <= 2'b11; - end - end - end - if(FloatvMultConst_5__state == 2'b11) begin - if(FloatvMultConst_5__ap_done) begin - FloatvMultConst_5__state <= 2'b10; - end - end - if(FloatvMultConst_5__state == 2'b10) begin - if(FloatvMultConst_5__ap_done_global__q0) begin - FloatvMultConst_5__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_5__ap_start = (FloatvMultConst_5__state == 2'b01); - assign FloatvMultConst_6__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_6__is_done__q0 = (FloatvMultConst_6__state == 2'b10); - assign FloatvMultConst_6__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_6__state <= 2'b00; - end else begin - if(FloatvMultConst_6__state == 2'b00) begin - if(FloatvMultConst_6__ap_start_global__q0) begin - FloatvMultConst_6__state <= 2'b01; - end - end - if(FloatvMultConst_6__state == 2'b01) begin - if(FloatvMultConst_6__ap_ready) begin - if(FloatvMultConst_6__ap_done) begin - FloatvMultConst_6__state <= 2'b10; - end else begin - FloatvMultConst_6__state <= 2'b11; - end - end - end - if(FloatvMultConst_6__state == 2'b11) begin - if(FloatvMultConst_6__ap_done) begin - FloatvMultConst_6__state <= 2'b10; - end - end - if(FloatvMultConst_6__state == 2'b10) begin - if(FloatvMultConst_6__ap_done_global__q0) begin - FloatvMultConst_6__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_6__ap_start = (FloatvMultConst_6__state == 2'b01); - assign FloatvMultConst_7__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_7__is_done__q0 = (FloatvMultConst_7__state == 2'b10); - assign FloatvMultConst_7__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_7__state <= 2'b00; - end else begin - if(FloatvMultConst_7__state == 2'b00) begin - if(FloatvMultConst_7__ap_start_global__q0) begin - FloatvMultConst_7__state <= 2'b01; - end - end - if(FloatvMultConst_7__state == 2'b01) begin - if(FloatvMultConst_7__ap_ready) begin - if(FloatvMultConst_7__ap_done) begin - FloatvMultConst_7__state <= 2'b10; - end else begin - FloatvMultConst_7__state <= 2'b11; - end - end - end - if(FloatvMultConst_7__state == 2'b11) begin - if(FloatvMultConst_7__ap_done) begin - FloatvMultConst_7__state <= 2'b10; - end - end - if(FloatvMultConst_7__state == 2'b10) begin - if(FloatvMultConst_7__ap_done_global__q0) begin - FloatvMultConst_7__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_7__ap_start = (FloatvMultConst_7__state == 2'b01); - assign FloatvMultConst_8__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_8__is_done__q0 = (FloatvMultConst_8__state == 2'b10); - assign FloatvMultConst_8__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_8__state <= 2'b00; - end else begin - if(FloatvMultConst_8__state == 2'b00) begin - if(FloatvMultConst_8__ap_start_global__q0) begin - FloatvMultConst_8__state <= 2'b01; - end - end - if(FloatvMultConst_8__state == 2'b01) begin - if(FloatvMultConst_8__ap_ready) begin - if(FloatvMultConst_8__ap_done) begin - FloatvMultConst_8__state <= 2'b10; - end else begin - FloatvMultConst_8__state <= 2'b11; - end - end - end - if(FloatvMultConst_8__state == 2'b11) begin - if(FloatvMultConst_8__ap_done) begin - FloatvMultConst_8__state <= 2'b10; - end - end - if(FloatvMultConst_8__state == 2'b10) begin - if(FloatvMultConst_8__ap_done_global__q0) begin - FloatvMultConst_8__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_8__ap_start = (FloatvMultConst_8__state == 2'b01); - assign FloatvMultConst_9__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_9__is_done__q0 = (FloatvMultConst_9__state == 2'b10); - assign FloatvMultConst_9__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_9__state <= 2'b00; - end else begin - if(FloatvMultConst_9__state == 2'b00) begin - if(FloatvMultConst_9__ap_start_global__q0) begin - FloatvMultConst_9__state <= 2'b01; - end - end - if(FloatvMultConst_9__state == 2'b01) begin - if(FloatvMultConst_9__ap_ready) begin - if(FloatvMultConst_9__ap_done) begin - FloatvMultConst_9__state <= 2'b10; - end else begin - FloatvMultConst_9__state <= 2'b11; - end - end - end - if(FloatvMultConst_9__state == 2'b11) begin - if(FloatvMultConst_9__ap_done) begin - FloatvMultConst_9__state <= 2'b10; - end - end - if(FloatvMultConst_9__state == 2'b10) begin - if(FloatvMultConst_9__ap_done_global__q0) begin - FloatvMultConst_9__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_9__ap_start = (FloatvMultConst_9__state == 2'b01); - assign FloatvMultConst_10__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_10__is_done__q0 = (FloatvMultConst_10__state == 2'b10); - assign FloatvMultConst_10__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_10__state <= 2'b00; - end else begin - if(FloatvMultConst_10__state == 2'b00) begin - if(FloatvMultConst_10__ap_start_global__q0) begin - FloatvMultConst_10__state <= 2'b01; - end - end - if(FloatvMultConst_10__state == 2'b01) begin - if(FloatvMultConst_10__ap_ready) begin - if(FloatvMultConst_10__ap_done) begin - FloatvMultConst_10__state <= 2'b10; - end else begin - FloatvMultConst_10__state <= 2'b11; - end - end - end - if(FloatvMultConst_10__state == 2'b11) begin - if(FloatvMultConst_10__ap_done) begin - FloatvMultConst_10__state <= 2'b10; - end - end - if(FloatvMultConst_10__state == 2'b10) begin - if(FloatvMultConst_10__ap_done_global__q0) begin - FloatvMultConst_10__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_10__ap_start = (FloatvMultConst_10__state == 2'b01); - assign FloatvMultConst_11__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_11__is_done__q0 = (FloatvMultConst_11__state == 2'b10); - assign FloatvMultConst_11__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_11__state <= 2'b00; - end else begin - if(FloatvMultConst_11__state == 2'b00) begin - if(FloatvMultConst_11__ap_start_global__q0) begin - FloatvMultConst_11__state <= 2'b01; - end - end - if(FloatvMultConst_11__state == 2'b01) begin - if(FloatvMultConst_11__ap_ready) begin - if(FloatvMultConst_11__ap_done) begin - FloatvMultConst_11__state <= 2'b10; - end else begin - FloatvMultConst_11__state <= 2'b11; - end - end - end - if(FloatvMultConst_11__state == 2'b11) begin - if(FloatvMultConst_11__ap_done) begin - FloatvMultConst_11__state <= 2'b10; - end - end - if(FloatvMultConst_11__state == 2'b10) begin - if(FloatvMultConst_11__ap_done_global__q0) begin - FloatvMultConst_11__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_11__ap_start = (FloatvMultConst_11__state == 2'b01); - assign FloatvMultConst_12__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_12__is_done__q0 = (FloatvMultConst_12__state == 2'b10); - assign FloatvMultConst_12__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_12__state <= 2'b00; - end else begin - if(FloatvMultConst_12__state == 2'b00) begin - if(FloatvMultConst_12__ap_start_global__q0) begin - FloatvMultConst_12__state <= 2'b01; - end - end - if(FloatvMultConst_12__state == 2'b01) begin - if(FloatvMultConst_12__ap_ready) begin - if(FloatvMultConst_12__ap_done) begin - FloatvMultConst_12__state <= 2'b10; - end else begin - FloatvMultConst_12__state <= 2'b11; - end - end - end - if(FloatvMultConst_12__state == 2'b11) begin - if(FloatvMultConst_12__ap_done) begin - FloatvMultConst_12__state <= 2'b10; - end - end - if(FloatvMultConst_12__state == 2'b10) begin - if(FloatvMultConst_12__ap_done_global__q0) begin - FloatvMultConst_12__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_12__ap_start = (FloatvMultConst_12__state == 2'b01); - assign FloatvMultConst_13__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_13__is_done__q0 = (FloatvMultConst_13__state == 2'b10); - assign FloatvMultConst_13__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_13__state <= 2'b00; - end else begin - if(FloatvMultConst_13__state == 2'b00) begin - if(FloatvMultConst_13__ap_start_global__q0) begin - FloatvMultConst_13__state <= 2'b01; - end - end - if(FloatvMultConst_13__state == 2'b01) begin - if(FloatvMultConst_13__ap_ready) begin - if(FloatvMultConst_13__ap_done) begin - FloatvMultConst_13__state <= 2'b10; - end else begin - FloatvMultConst_13__state <= 2'b11; - end - end - end - if(FloatvMultConst_13__state == 2'b11) begin - if(FloatvMultConst_13__ap_done) begin - FloatvMultConst_13__state <= 2'b10; - end - end - if(FloatvMultConst_13__state == 2'b10) begin - if(FloatvMultConst_13__ap_done_global__q0) begin - FloatvMultConst_13__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_13__ap_start = (FloatvMultConst_13__state == 2'b01); - assign FloatvMultConst_14__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_14__is_done__q0 = (FloatvMultConst_14__state == 2'b10); - assign FloatvMultConst_14__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_14__state <= 2'b00; - end else begin - if(FloatvMultConst_14__state == 2'b00) begin - if(FloatvMultConst_14__ap_start_global__q0) begin - FloatvMultConst_14__state <= 2'b01; - end - end - if(FloatvMultConst_14__state == 2'b01) begin - if(FloatvMultConst_14__ap_ready) begin - if(FloatvMultConst_14__ap_done) begin - FloatvMultConst_14__state <= 2'b10; - end else begin - FloatvMultConst_14__state <= 2'b11; - end - end - end - if(FloatvMultConst_14__state == 2'b11) begin - if(FloatvMultConst_14__ap_done) begin - FloatvMultConst_14__state <= 2'b10; - end - end - if(FloatvMultConst_14__state == 2'b10) begin - if(FloatvMultConst_14__ap_done_global__q0) begin - FloatvMultConst_14__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_14__ap_start = (FloatvMultConst_14__state == 2'b01); - assign FloatvMultConst_15__ap_start_global__q0 = ap_start__q0; - assign FloatvMultConst_15__is_done__q0 = (FloatvMultConst_15__state == 2'b10); - assign FloatvMultConst_15__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - FloatvMultConst_15__state <= 2'b00; - end else begin - if(FloatvMultConst_15__state == 2'b00) begin - if(FloatvMultConst_15__ap_start_global__q0) begin - FloatvMultConst_15__state <= 2'b01; - end - end - if(FloatvMultConst_15__state == 2'b01) begin - if(FloatvMultConst_15__ap_ready) begin - if(FloatvMultConst_15__ap_done) begin - FloatvMultConst_15__state <= 2'b10; - end else begin - FloatvMultConst_15__state <= 2'b11; - end - end - end - if(FloatvMultConst_15__state == 2'b11) begin - if(FloatvMultConst_15__ap_done) begin - FloatvMultConst_15__state <= 2'b10; - end - end - if(FloatvMultConst_15__state == 2'b10) begin - if(FloatvMultConst_15__ap_done_global__q0) begin - FloatvMultConst_15__state <= 2'b00; - end - end - end - end - - assign FloatvMultConst_15__ap_start = (FloatvMultConst_15__state == 2'b01); - assign Merger_0__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Merger_0__ap_start <= 1'b0; - end else if(Merger_0__ap_start_global__q0) begin - Merger_0__ap_start <= 1'b1; - end - end - - assign Merger_1__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Merger_1__ap_start <= 1'b0; - end else if(Merger_1__ap_start_global__q0) begin - Merger_1__ap_start <= 1'b1; - end - end - - assign Merger_2__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Merger_2__ap_start <= 1'b0; - end else if(Merger_2__ap_start_global__q0) begin - Merger_2__ap_start <= 1'b1; - end - end - - assign Merger_3__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Merger_3__ap_start <= 1'b0; - end else if(Merger_3__ap_start_global__q0) begin - Merger_3__ap_start <= 1'b1; - end - end - - assign Merger_4__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Merger_4__ap_start <= 1'b0; - end else if(Merger_4__ap_start_global__q0) begin - Merger_4__ap_start <= 1'b1; - end - end - - assign Merger_5__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Merger_5__ap_start <= 1'b0; - end else if(Merger_5__ap_start_global__q0) begin - Merger_5__ap_start <= 1'b1; - end - end - - assign Merger_6__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Merger_6__ap_start <= 1'b0; - end else if(Merger_6__ap_start_global__q0) begin - Merger_6__ap_start <= 1'b1; - end - end - - assign Merger_7__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Merger_7__ap_start <= 1'b0; - end else if(Merger_7__ap_start_global__q0) begin - Merger_7__ap_start <= 1'b1; - end - end - - assign PEG_Bmtx_0__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_0__is_done__q0 = (PEG_Bmtx_0__state == 2'b10); - assign PEG_Bmtx_0__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_0__state <= 2'b00; - end else begin - if(PEG_Bmtx_0__state == 2'b00) begin - if(PEG_Bmtx_0__ap_start_global__q0) begin - PEG_Bmtx_0__state <= 2'b01; - end - end - if(PEG_Bmtx_0__state == 2'b01) begin - if(PEG_Bmtx_0__ap_ready) begin - if(PEG_Bmtx_0__ap_done) begin - PEG_Bmtx_0__state <= 2'b10; - end else begin - PEG_Bmtx_0__state <= 2'b11; - end - end - end - if(PEG_Bmtx_0__state == 2'b11) begin - if(PEG_Bmtx_0__ap_done) begin - PEG_Bmtx_0__state <= 2'b10; - end - end - if(PEG_Bmtx_0__state == 2'b10) begin - if(PEG_Bmtx_0__ap_done_global__q0) begin - PEG_Bmtx_0__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_0__ap_start = (PEG_Bmtx_0__state == 2'b01); - assign PEG_Bmtx_1__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_1__is_done__q0 = (PEG_Bmtx_1__state == 2'b10); - assign PEG_Bmtx_1__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_1__state <= 2'b00; - end else begin - if(PEG_Bmtx_1__state == 2'b00) begin - if(PEG_Bmtx_1__ap_start_global__q0) begin - PEG_Bmtx_1__state <= 2'b01; - end - end - if(PEG_Bmtx_1__state == 2'b01) begin - if(PEG_Bmtx_1__ap_ready) begin - if(PEG_Bmtx_1__ap_done) begin - PEG_Bmtx_1__state <= 2'b10; - end else begin - PEG_Bmtx_1__state <= 2'b11; - end - end - end - if(PEG_Bmtx_1__state == 2'b11) begin - if(PEG_Bmtx_1__ap_done) begin - PEG_Bmtx_1__state <= 2'b10; - end - end - if(PEG_Bmtx_1__state == 2'b10) begin - if(PEG_Bmtx_1__ap_done_global__q0) begin - PEG_Bmtx_1__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_1__ap_start = (PEG_Bmtx_1__state == 2'b01); - assign PEG_Bmtx_2__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_2__is_done__q0 = (PEG_Bmtx_2__state == 2'b10); - assign PEG_Bmtx_2__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_2__state <= 2'b00; - end else begin - if(PEG_Bmtx_2__state == 2'b00) begin - if(PEG_Bmtx_2__ap_start_global__q0) begin - PEG_Bmtx_2__state <= 2'b01; - end - end - if(PEG_Bmtx_2__state == 2'b01) begin - if(PEG_Bmtx_2__ap_ready) begin - if(PEG_Bmtx_2__ap_done) begin - PEG_Bmtx_2__state <= 2'b10; - end else begin - PEG_Bmtx_2__state <= 2'b11; - end - end - end - if(PEG_Bmtx_2__state == 2'b11) begin - if(PEG_Bmtx_2__ap_done) begin - PEG_Bmtx_2__state <= 2'b10; - end - end - if(PEG_Bmtx_2__state == 2'b10) begin - if(PEG_Bmtx_2__ap_done_global__q0) begin - PEG_Bmtx_2__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_2__ap_start = (PEG_Bmtx_2__state == 2'b01); - assign PEG_Bmtx_3__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_3__is_done__q0 = (PEG_Bmtx_3__state == 2'b10); - assign PEG_Bmtx_3__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_3__state <= 2'b00; - end else begin - if(PEG_Bmtx_3__state == 2'b00) begin - if(PEG_Bmtx_3__ap_start_global__q0) begin - PEG_Bmtx_3__state <= 2'b01; - end - end - if(PEG_Bmtx_3__state == 2'b01) begin - if(PEG_Bmtx_3__ap_ready) begin - if(PEG_Bmtx_3__ap_done) begin - PEG_Bmtx_3__state <= 2'b10; - end else begin - PEG_Bmtx_3__state <= 2'b11; - end - end - end - if(PEG_Bmtx_3__state == 2'b11) begin - if(PEG_Bmtx_3__ap_done) begin - PEG_Bmtx_3__state <= 2'b10; - end - end - if(PEG_Bmtx_3__state == 2'b10) begin - if(PEG_Bmtx_3__ap_done_global__q0) begin - PEG_Bmtx_3__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_3__ap_start = (PEG_Bmtx_3__state == 2'b01); - assign PEG_Bmtx_4__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_4__is_done__q0 = (PEG_Bmtx_4__state == 2'b10); - assign PEG_Bmtx_4__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_4__state <= 2'b00; - end else begin - if(PEG_Bmtx_4__state == 2'b00) begin - if(PEG_Bmtx_4__ap_start_global__q0) begin - PEG_Bmtx_4__state <= 2'b01; - end - end - if(PEG_Bmtx_4__state == 2'b01) begin - if(PEG_Bmtx_4__ap_ready) begin - if(PEG_Bmtx_4__ap_done) begin - PEG_Bmtx_4__state <= 2'b10; - end else begin - PEG_Bmtx_4__state <= 2'b11; - end - end - end - if(PEG_Bmtx_4__state == 2'b11) begin - if(PEG_Bmtx_4__ap_done) begin - PEG_Bmtx_4__state <= 2'b10; - end - end - if(PEG_Bmtx_4__state == 2'b10) begin - if(PEG_Bmtx_4__ap_done_global__q0) begin - PEG_Bmtx_4__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_4__ap_start = (PEG_Bmtx_4__state == 2'b01); - assign PEG_Bmtx_5__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_5__is_done__q0 = (PEG_Bmtx_5__state == 2'b10); - assign PEG_Bmtx_5__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_5__state <= 2'b00; - end else begin - if(PEG_Bmtx_5__state == 2'b00) begin - if(PEG_Bmtx_5__ap_start_global__q0) begin - PEG_Bmtx_5__state <= 2'b01; - end - end - if(PEG_Bmtx_5__state == 2'b01) begin - if(PEG_Bmtx_5__ap_ready) begin - if(PEG_Bmtx_5__ap_done) begin - PEG_Bmtx_5__state <= 2'b10; - end else begin - PEG_Bmtx_5__state <= 2'b11; - end - end - end - if(PEG_Bmtx_5__state == 2'b11) begin - if(PEG_Bmtx_5__ap_done) begin - PEG_Bmtx_5__state <= 2'b10; - end - end - if(PEG_Bmtx_5__state == 2'b10) begin - if(PEG_Bmtx_5__ap_done_global__q0) begin - PEG_Bmtx_5__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_5__ap_start = (PEG_Bmtx_5__state == 2'b01); - assign PEG_Bmtx_6__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_6__is_done__q0 = (PEG_Bmtx_6__state == 2'b10); - assign PEG_Bmtx_6__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_6__state <= 2'b00; - end else begin - if(PEG_Bmtx_6__state == 2'b00) begin - if(PEG_Bmtx_6__ap_start_global__q0) begin - PEG_Bmtx_6__state <= 2'b01; - end - end - if(PEG_Bmtx_6__state == 2'b01) begin - if(PEG_Bmtx_6__ap_ready) begin - if(PEG_Bmtx_6__ap_done) begin - PEG_Bmtx_6__state <= 2'b10; - end else begin - PEG_Bmtx_6__state <= 2'b11; - end - end - end - if(PEG_Bmtx_6__state == 2'b11) begin - if(PEG_Bmtx_6__ap_done) begin - PEG_Bmtx_6__state <= 2'b10; - end - end - if(PEG_Bmtx_6__state == 2'b10) begin - if(PEG_Bmtx_6__ap_done_global__q0) begin - PEG_Bmtx_6__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_6__ap_start = (PEG_Bmtx_6__state == 2'b01); - assign PEG_Bmtx_7__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_7__is_done__q0 = (PEG_Bmtx_7__state == 2'b10); - assign PEG_Bmtx_7__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_7__state <= 2'b00; - end else begin - if(PEG_Bmtx_7__state == 2'b00) begin - if(PEG_Bmtx_7__ap_start_global__q0) begin - PEG_Bmtx_7__state <= 2'b01; - end - end - if(PEG_Bmtx_7__state == 2'b01) begin - if(PEG_Bmtx_7__ap_ready) begin - if(PEG_Bmtx_7__ap_done) begin - PEG_Bmtx_7__state <= 2'b10; - end else begin - PEG_Bmtx_7__state <= 2'b11; - end - end - end - if(PEG_Bmtx_7__state == 2'b11) begin - if(PEG_Bmtx_7__ap_done) begin - PEG_Bmtx_7__state <= 2'b10; - end - end - if(PEG_Bmtx_7__state == 2'b10) begin - if(PEG_Bmtx_7__ap_done_global__q0) begin - PEG_Bmtx_7__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_7__ap_start = (PEG_Bmtx_7__state == 2'b01); - assign PEG_Bmtx_8__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_8__is_done__q0 = (PEG_Bmtx_8__state == 2'b10); - assign PEG_Bmtx_8__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_8__state <= 2'b00; - end else begin - if(PEG_Bmtx_8__state == 2'b00) begin - if(PEG_Bmtx_8__ap_start_global__q0) begin - PEG_Bmtx_8__state <= 2'b01; - end - end - if(PEG_Bmtx_8__state == 2'b01) begin - if(PEG_Bmtx_8__ap_ready) begin - if(PEG_Bmtx_8__ap_done) begin - PEG_Bmtx_8__state <= 2'b10; - end else begin - PEG_Bmtx_8__state <= 2'b11; - end - end - end - if(PEG_Bmtx_8__state == 2'b11) begin - if(PEG_Bmtx_8__ap_done) begin - PEG_Bmtx_8__state <= 2'b10; - end - end - if(PEG_Bmtx_8__state == 2'b10) begin - if(PEG_Bmtx_8__ap_done_global__q0) begin - PEG_Bmtx_8__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_8__ap_start = (PEG_Bmtx_8__state == 2'b01); - assign PEG_Bmtx_9__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_9__is_done__q0 = (PEG_Bmtx_9__state == 2'b10); - assign PEG_Bmtx_9__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_9__state <= 2'b00; - end else begin - if(PEG_Bmtx_9__state == 2'b00) begin - if(PEG_Bmtx_9__ap_start_global__q0) begin - PEG_Bmtx_9__state <= 2'b01; - end - end - if(PEG_Bmtx_9__state == 2'b01) begin - if(PEG_Bmtx_9__ap_ready) begin - if(PEG_Bmtx_9__ap_done) begin - PEG_Bmtx_9__state <= 2'b10; - end else begin - PEG_Bmtx_9__state <= 2'b11; - end - end - end - if(PEG_Bmtx_9__state == 2'b11) begin - if(PEG_Bmtx_9__ap_done) begin - PEG_Bmtx_9__state <= 2'b10; - end - end - if(PEG_Bmtx_9__state == 2'b10) begin - if(PEG_Bmtx_9__ap_done_global__q0) begin - PEG_Bmtx_9__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_9__ap_start = (PEG_Bmtx_9__state == 2'b01); - assign PEG_Bmtx_10__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_10__is_done__q0 = (PEG_Bmtx_10__state == 2'b10); - assign PEG_Bmtx_10__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_10__state <= 2'b00; - end else begin - if(PEG_Bmtx_10__state == 2'b00) begin - if(PEG_Bmtx_10__ap_start_global__q0) begin - PEG_Bmtx_10__state <= 2'b01; - end - end - if(PEG_Bmtx_10__state == 2'b01) begin - if(PEG_Bmtx_10__ap_ready) begin - if(PEG_Bmtx_10__ap_done) begin - PEG_Bmtx_10__state <= 2'b10; - end else begin - PEG_Bmtx_10__state <= 2'b11; - end - end - end - if(PEG_Bmtx_10__state == 2'b11) begin - if(PEG_Bmtx_10__ap_done) begin - PEG_Bmtx_10__state <= 2'b10; - end - end - if(PEG_Bmtx_10__state == 2'b10) begin - if(PEG_Bmtx_10__ap_done_global__q0) begin - PEG_Bmtx_10__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_10__ap_start = (PEG_Bmtx_10__state == 2'b01); - assign PEG_Bmtx_11__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_11__is_done__q0 = (PEG_Bmtx_11__state == 2'b10); - assign PEG_Bmtx_11__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_11__state <= 2'b00; - end else begin - if(PEG_Bmtx_11__state == 2'b00) begin - if(PEG_Bmtx_11__ap_start_global__q0) begin - PEG_Bmtx_11__state <= 2'b01; - end - end - if(PEG_Bmtx_11__state == 2'b01) begin - if(PEG_Bmtx_11__ap_ready) begin - if(PEG_Bmtx_11__ap_done) begin - PEG_Bmtx_11__state <= 2'b10; - end else begin - PEG_Bmtx_11__state <= 2'b11; - end - end - end - if(PEG_Bmtx_11__state == 2'b11) begin - if(PEG_Bmtx_11__ap_done) begin - PEG_Bmtx_11__state <= 2'b10; - end - end - if(PEG_Bmtx_11__state == 2'b10) begin - if(PEG_Bmtx_11__ap_done_global__q0) begin - PEG_Bmtx_11__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_11__ap_start = (PEG_Bmtx_11__state == 2'b01); - assign PEG_Bmtx_12__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_12__is_done__q0 = (PEG_Bmtx_12__state == 2'b10); - assign PEG_Bmtx_12__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_12__state <= 2'b00; - end else begin - if(PEG_Bmtx_12__state == 2'b00) begin - if(PEG_Bmtx_12__ap_start_global__q0) begin - PEG_Bmtx_12__state <= 2'b01; - end - end - if(PEG_Bmtx_12__state == 2'b01) begin - if(PEG_Bmtx_12__ap_ready) begin - if(PEG_Bmtx_12__ap_done) begin - PEG_Bmtx_12__state <= 2'b10; - end else begin - PEG_Bmtx_12__state <= 2'b11; - end - end - end - if(PEG_Bmtx_12__state == 2'b11) begin - if(PEG_Bmtx_12__ap_done) begin - PEG_Bmtx_12__state <= 2'b10; - end - end - if(PEG_Bmtx_12__state == 2'b10) begin - if(PEG_Bmtx_12__ap_done_global__q0) begin - PEG_Bmtx_12__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_12__ap_start = (PEG_Bmtx_12__state == 2'b01); - assign PEG_Bmtx_13__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_13__is_done__q0 = (PEG_Bmtx_13__state == 2'b10); - assign PEG_Bmtx_13__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_13__state <= 2'b00; - end else begin - if(PEG_Bmtx_13__state == 2'b00) begin - if(PEG_Bmtx_13__ap_start_global__q0) begin - PEG_Bmtx_13__state <= 2'b01; - end - end - if(PEG_Bmtx_13__state == 2'b01) begin - if(PEG_Bmtx_13__ap_ready) begin - if(PEG_Bmtx_13__ap_done) begin - PEG_Bmtx_13__state <= 2'b10; - end else begin - PEG_Bmtx_13__state <= 2'b11; - end - end - end - if(PEG_Bmtx_13__state == 2'b11) begin - if(PEG_Bmtx_13__ap_done) begin - PEG_Bmtx_13__state <= 2'b10; - end - end - if(PEG_Bmtx_13__state == 2'b10) begin - if(PEG_Bmtx_13__ap_done_global__q0) begin - PEG_Bmtx_13__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_13__ap_start = (PEG_Bmtx_13__state == 2'b01); - assign PEG_Bmtx_14__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_14__is_done__q0 = (PEG_Bmtx_14__state == 2'b10); - assign PEG_Bmtx_14__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_14__state <= 2'b00; - end else begin - if(PEG_Bmtx_14__state == 2'b00) begin - if(PEG_Bmtx_14__ap_start_global__q0) begin - PEG_Bmtx_14__state <= 2'b01; - end - end - if(PEG_Bmtx_14__state == 2'b01) begin - if(PEG_Bmtx_14__ap_ready) begin - if(PEG_Bmtx_14__ap_done) begin - PEG_Bmtx_14__state <= 2'b10; - end else begin - PEG_Bmtx_14__state <= 2'b11; - end - end - end - if(PEG_Bmtx_14__state == 2'b11) begin - if(PEG_Bmtx_14__ap_done) begin - PEG_Bmtx_14__state <= 2'b10; - end - end - if(PEG_Bmtx_14__state == 2'b10) begin - if(PEG_Bmtx_14__ap_done_global__q0) begin - PEG_Bmtx_14__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_14__ap_start = (PEG_Bmtx_14__state == 2'b01); - assign PEG_Bmtx_15__ap_start_global__q0 = ap_start__q0; - assign PEG_Bmtx_15__is_done__q0 = (PEG_Bmtx_15__state == 2'b10); - assign PEG_Bmtx_15__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Bmtx_15__state <= 2'b00; - end else begin - if(PEG_Bmtx_15__state == 2'b00) begin - if(PEG_Bmtx_15__ap_start_global__q0) begin - PEG_Bmtx_15__state <= 2'b01; - end - end - if(PEG_Bmtx_15__state == 2'b01) begin - if(PEG_Bmtx_15__ap_ready) begin - if(PEG_Bmtx_15__ap_done) begin - PEG_Bmtx_15__state <= 2'b10; - end else begin - PEG_Bmtx_15__state <= 2'b11; - end - end - end - if(PEG_Bmtx_15__state == 2'b11) begin - if(PEG_Bmtx_15__ap_done) begin - PEG_Bmtx_15__state <= 2'b10; - end - end - if(PEG_Bmtx_15__state == 2'b10) begin - if(PEG_Bmtx_15__ap_done_global__q0) begin - PEG_Bmtx_15__state <= 2'b00; - end - end - end - end - - assign PEG_Bmtx_15__ap_start = (PEG_Bmtx_15__state == 2'b01); - assign PEG_Cmtx_0__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_0__is_done__q0 = (PEG_Cmtx_0__state == 2'b10); - assign PEG_Cmtx_0__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_0__state <= 2'b00; - end else begin - if(PEG_Cmtx_0__state == 2'b00) begin - if(PEG_Cmtx_0__ap_start_global__q0) begin - PEG_Cmtx_0__state <= 2'b01; - end - end - if(PEG_Cmtx_0__state == 2'b01) begin - if(PEG_Cmtx_0__ap_ready) begin - if(PEG_Cmtx_0__ap_done) begin - PEG_Cmtx_0__state <= 2'b10; - end else begin - PEG_Cmtx_0__state <= 2'b11; - end - end - end - if(PEG_Cmtx_0__state == 2'b11) begin - if(PEG_Cmtx_0__ap_done) begin - PEG_Cmtx_0__state <= 2'b10; - end - end - if(PEG_Cmtx_0__state == 2'b10) begin - if(PEG_Cmtx_0__ap_done_global__q0) begin - PEG_Cmtx_0__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_0__ap_start = (PEG_Cmtx_0__state == 2'b01); - assign PEG_Cmtx_1__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_1__is_done__q0 = (PEG_Cmtx_1__state == 2'b10); - assign PEG_Cmtx_1__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_1__state <= 2'b00; - end else begin - if(PEG_Cmtx_1__state == 2'b00) begin - if(PEG_Cmtx_1__ap_start_global__q0) begin - PEG_Cmtx_1__state <= 2'b01; - end - end - if(PEG_Cmtx_1__state == 2'b01) begin - if(PEG_Cmtx_1__ap_ready) begin - if(PEG_Cmtx_1__ap_done) begin - PEG_Cmtx_1__state <= 2'b10; - end else begin - PEG_Cmtx_1__state <= 2'b11; - end - end - end - if(PEG_Cmtx_1__state == 2'b11) begin - if(PEG_Cmtx_1__ap_done) begin - PEG_Cmtx_1__state <= 2'b10; - end - end - if(PEG_Cmtx_1__state == 2'b10) begin - if(PEG_Cmtx_1__ap_done_global__q0) begin - PEG_Cmtx_1__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_1__ap_start = (PEG_Cmtx_1__state == 2'b01); - assign PEG_Cmtx_2__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_2__is_done__q0 = (PEG_Cmtx_2__state == 2'b10); - assign PEG_Cmtx_2__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_2__state <= 2'b00; - end else begin - if(PEG_Cmtx_2__state == 2'b00) begin - if(PEG_Cmtx_2__ap_start_global__q0) begin - PEG_Cmtx_2__state <= 2'b01; - end - end - if(PEG_Cmtx_2__state == 2'b01) begin - if(PEG_Cmtx_2__ap_ready) begin - if(PEG_Cmtx_2__ap_done) begin - PEG_Cmtx_2__state <= 2'b10; - end else begin - PEG_Cmtx_2__state <= 2'b11; - end - end - end - if(PEG_Cmtx_2__state == 2'b11) begin - if(PEG_Cmtx_2__ap_done) begin - PEG_Cmtx_2__state <= 2'b10; - end - end - if(PEG_Cmtx_2__state == 2'b10) begin - if(PEG_Cmtx_2__ap_done_global__q0) begin - PEG_Cmtx_2__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_2__ap_start = (PEG_Cmtx_2__state == 2'b01); - assign PEG_Cmtx_3__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_3__is_done__q0 = (PEG_Cmtx_3__state == 2'b10); - assign PEG_Cmtx_3__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_3__state <= 2'b00; - end else begin - if(PEG_Cmtx_3__state == 2'b00) begin - if(PEG_Cmtx_3__ap_start_global__q0) begin - PEG_Cmtx_3__state <= 2'b01; - end - end - if(PEG_Cmtx_3__state == 2'b01) begin - if(PEG_Cmtx_3__ap_ready) begin - if(PEG_Cmtx_3__ap_done) begin - PEG_Cmtx_3__state <= 2'b10; - end else begin - PEG_Cmtx_3__state <= 2'b11; - end - end - end - if(PEG_Cmtx_3__state == 2'b11) begin - if(PEG_Cmtx_3__ap_done) begin - PEG_Cmtx_3__state <= 2'b10; - end - end - if(PEG_Cmtx_3__state == 2'b10) begin - if(PEG_Cmtx_3__ap_done_global__q0) begin - PEG_Cmtx_3__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_3__ap_start = (PEG_Cmtx_3__state == 2'b01); - assign PEG_Cmtx_4__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_4__is_done__q0 = (PEG_Cmtx_4__state == 2'b10); - assign PEG_Cmtx_4__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_4__state <= 2'b00; - end else begin - if(PEG_Cmtx_4__state == 2'b00) begin - if(PEG_Cmtx_4__ap_start_global__q0) begin - PEG_Cmtx_4__state <= 2'b01; - end - end - if(PEG_Cmtx_4__state == 2'b01) begin - if(PEG_Cmtx_4__ap_ready) begin - if(PEG_Cmtx_4__ap_done) begin - PEG_Cmtx_4__state <= 2'b10; - end else begin - PEG_Cmtx_4__state <= 2'b11; - end - end - end - if(PEG_Cmtx_4__state == 2'b11) begin - if(PEG_Cmtx_4__ap_done) begin - PEG_Cmtx_4__state <= 2'b10; - end - end - if(PEG_Cmtx_4__state == 2'b10) begin - if(PEG_Cmtx_4__ap_done_global__q0) begin - PEG_Cmtx_4__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_4__ap_start = (PEG_Cmtx_4__state == 2'b01); - assign PEG_Cmtx_5__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_5__is_done__q0 = (PEG_Cmtx_5__state == 2'b10); - assign PEG_Cmtx_5__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_5__state <= 2'b00; - end else begin - if(PEG_Cmtx_5__state == 2'b00) begin - if(PEG_Cmtx_5__ap_start_global__q0) begin - PEG_Cmtx_5__state <= 2'b01; - end - end - if(PEG_Cmtx_5__state == 2'b01) begin - if(PEG_Cmtx_5__ap_ready) begin - if(PEG_Cmtx_5__ap_done) begin - PEG_Cmtx_5__state <= 2'b10; - end else begin - PEG_Cmtx_5__state <= 2'b11; - end - end - end - if(PEG_Cmtx_5__state == 2'b11) begin - if(PEG_Cmtx_5__ap_done) begin - PEG_Cmtx_5__state <= 2'b10; - end - end - if(PEG_Cmtx_5__state == 2'b10) begin - if(PEG_Cmtx_5__ap_done_global__q0) begin - PEG_Cmtx_5__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_5__ap_start = (PEG_Cmtx_5__state == 2'b01); - assign PEG_Cmtx_6__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_6__is_done__q0 = (PEG_Cmtx_6__state == 2'b10); - assign PEG_Cmtx_6__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_6__state <= 2'b00; - end else begin - if(PEG_Cmtx_6__state == 2'b00) begin - if(PEG_Cmtx_6__ap_start_global__q0) begin - PEG_Cmtx_6__state <= 2'b01; - end - end - if(PEG_Cmtx_6__state == 2'b01) begin - if(PEG_Cmtx_6__ap_ready) begin - if(PEG_Cmtx_6__ap_done) begin - PEG_Cmtx_6__state <= 2'b10; - end else begin - PEG_Cmtx_6__state <= 2'b11; - end - end - end - if(PEG_Cmtx_6__state == 2'b11) begin - if(PEG_Cmtx_6__ap_done) begin - PEG_Cmtx_6__state <= 2'b10; - end - end - if(PEG_Cmtx_6__state == 2'b10) begin - if(PEG_Cmtx_6__ap_done_global__q0) begin - PEG_Cmtx_6__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_6__ap_start = (PEG_Cmtx_6__state == 2'b01); - assign PEG_Cmtx_7__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_7__is_done__q0 = (PEG_Cmtx_7__state == 2'b10); - assign PEG_Cmtx_7__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_7__state <= 2'b00; - end else begin - if(PEG_Cmtx_7__state == 2'b00) begin - if(PEG_Cmtx_7__ap_start_global__q0) begin - PEG_Cmtx_7__state <= 2'b01; - end - end - if(PEG_Cmtx_7__state == 2'b01) begin - if(PEG_Cmtx_7__ap_ready) begin - if(PEG_Cmtx_7__ap_done) begin - PEG_Cmtx_7__state <= 2'b10; - end else begin - PEG_Cmtx_7__state <= 2'b11; - end - end - end - if(PEG_Cmtx_7__state == 2'b11) begin - if(PEG_Cmtx_7__ap_done) begin - PEG_Cmtx_7__state <= 2'b10; - end - end - if(PEG_Cmtx_7__state == 2'b10) begin - if(PEG_Cmtx_7__ap_done_global__q0) begin - PEG_Cmtx_7__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_7__ap_start = (PEG_Cmtx_7__state == 2'b01); - assign PEG_Cmtx_8__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_8__is_done__q0 = (PEG_Cmtx_8__state == 2'b10); - assign PEG_Cmtx_8__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_8__state <= 2'b00; - end else begin - if(PEG_Cmtx_8__state == 2'b00) begin - if(PEG_Cmtx_8__ap_start_global__q0) begin - PEG_Cmtx_8__state <= 2'b01; - end - end - if(PEG_Cmtx_8__state == 2'b01) begin - if(PEG_Cmtx_8__ap_ready) begin - if(PEG_Cmtx_8__ap_done) begin - PEG_Cmtx_8__state <= 2'b10; - end else begin - PEG_Cmtx_8__state <= 2'b11; - end - end - end - if(PEG_Cmtx_8__state == 2'b11) begin - if(PEG_Cmtx_8__ap_done) begin - PEG_Cmtx_8__state <= 2'b10; - end - end - if(PEG_Cmtx_8__state == 2'b10) begin - if(PEG_Cmtx_8__ap_done_global__q0) begin - PEG_Cmtx_8__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_8__ap_start = (PEG_Cmtx_8__state == 2'b01); - assign PEG_Cmtx_9__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_9__is_done__q0 = (PEG_Cmtx_9__state == 2'b10); - assign PEG_Cmtx_9__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_9__state <= 2'b00; - end else begin - if(PEG_Cmtx_9__state == 2'b00) begin - if(PEG_Cmtx_9__ap_start_global__q0) begin - PEG_Cmtx_9__state <= 2'b01; - end - end - if(PEG_Cmtx_9__state == 2'b01) begin - if(PEG_Cmtx_9__ap_ready) begin - if(PEG_Cmtx_9__ap_done) begin - PEG_Cmtx_9__state <= 2'b10; - end else begin - PEG_Cmtx_9__state <= 2'b11; - end - end - end - if(PEG_Cmtx_9__state == 2'b11) begin - if(PEG_Cmtx_9__ap_done) begin - PEG_Cmtx_9__state <= 2'b10; - end - end - if(PEG_Cmtx_9__state == 2'b10) begin - if(PEG_Cmtx_9__ap_done_global__q0) begin - PEG_Cmtx_9__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_9__ap_start = (PEG_Cmtx_9__state == 2'b01); - assign PEG_Cmtx_10__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_10__is_done__q0 = (PEG_Cmtx_10__state == 2'b10); - assign PEG_Cmtx_10__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_10__state <= 2'b00; - end else begin - if(PEG_Cmtx_10__state == 2'b00) begin - if(PEG_Cmtx_10__ap_start_global__q0) begin - PEG_Cmtx_10__state <= 2'b01; - end - end - if(PEG_Cmtx_10__state == 2'b01) begin - if(PEG_Cmtx_10__ap_ready) begin - if(PEG_Cmtx_10__ap_done) begin - PEG_Cmtx_10__state <= 2'b10; - end else begin - PEG_Cmtx_10__state <= 2'b11; - end - end - end - if(PEG_Cmtx_10__state == 2'b11) begin - if(PEG_Cmtx_10__ap_done) begin - PEG_Cmtx_10__state <= 2'b10; - end - end - if(PEG_Cmtx_10__state == 2'b10) begin - if(PEG_Cmtx_10__ap_done_global__q0) begin - PEG_Cmtx_10__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_10__ap_start = (PEG_Cmtx_10__state == 2'b01); - assign PEG_Cmtx_11__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_11__is_done__q0 = (PEG_Cmtx_11__state == 2'b10); - assign PEG_Cmtx_11__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_11__state <= 2'b00; - end else begin - if(PEG_Cmtx_11__state == 2'b00) begin - if(PEG_Cmtx_11__ap_start_global__q0) begin - PEG_Cmtx_11__state <= 2'b01; - end - end - if(PEG_Cmtx_11__state == 2'b01) begin - if(PEG_Cmtx_11__ap_ready) begin - if(PEG_Cmtx_11__ap_done) begin - PEG_Cmtx_11__state <= 2'b10; - end else begin - PEG_Cmtx_11__state <= 2'b11; - end - end - end - if(PEG_Cmtx_11__state == 2'b11) begin - if(PEG_Cmtx_11__ap_done) begin - PEG_Cmtx_11__state <= 2'b10; - end - end - if(PEG_Cmtx_11__state == 2'b10) begin - if(PEG_Cmtx_11__ap_done_global__q0) begin - PEG_Cmtx_11__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_11__ap_start = (PEG_Cmtx_11__state == 2'b01); - assign PEG_Cmtx_12__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_12__is_done__q0 = (PEG_Cmtx_12__state == 2'b10); - assign PEG_Cmtx_12__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_12__state <= 2'b00; - end else begin - if(PEG_Cmtx_12__state == 2'b00) begin - if(PEG_Cmtx_12__ap_start_global__q0) begin - PEG_Cmtx_12__state <= 2'b01; - end - end - if(PEG_Cmtx_12__state == 2'b01) begin - if(PEG_Cmtx_12__ap_ready) begin - if(PEG_Cmtx_12__ap_done) begin - PEG_Cmtx_12__state <= 2'b10; - end else begin - PEG_Cmtx_12__state <= 2'b11; - end - end - end - if(PEG_Cmtx_12__state == 2'b11) begin - if(PEG_Cmtx_12__ap_done) begin - PEG_Cmtx_12__state <= 2'b10; - end - end - if(PEG_Cmtx_12__state == 2'b10) begin - if(PEG_Cmtx_12__ap_done_global__q0) begin - PEG_Cmtx_12__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_12__ap_start = (PEG_Cmtx_12__state == 2'b01); - assign PEG_Cmtx_13__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_13__is_done__q0 = (PEG_Cmtx_13__state == 2'b10); - assign PEG_Cmtx_13__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_13__state <= 2'b00; - end else begin - if(PEG_Cmtx_13__state == 2'b00) begin - if(PEG_Cmtx_13__ap_start_global__q0) begin - PEG_Cmtx_13__state <= 2'b01; - end - end - if(PEG_Cmtx_13__state == 2'b01) begin - if(PEG_Cmtx_13__ap_ready) begin - if(PEG_Cmtx_13__ap_done) begin - PEG_Cmtx_13__state <= 2'b10; - end else begin - PEG_Cmtx_13__state <= 2'b11; - end - end - end - if(PEG_Cmtx_13__state == 2'b11) begin - if(PEG_Cmtx_13__ap_done) begin - PEG_Cmtx_13__state <= 2'b10; - end - end - if(PEG_Cmtx_13__state == 2'b10) begin - if(PEG_Cmtx_13__ap_done_global__q0) begin - PEG_Cmtx_13__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_13__ap_start = (PEG_Cmtx_13__state == 2'b01); - assign PEG_Cmtx_14__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_14__is_done__q0 = (PEG_Cmtx_14__state == 2'b10); - assign PEG_Cmtx_14__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_14__state <= 2'b00; - end else begin - if(PEG_Cmtx_14__state == 2'b00) begin - if(PEG_Cmtx_14__ap_start_global__q0) begin - PEG_Cmtx_14__state <= 2'b01; - end - end - if(PEG_Cmtx_14__state == 2'b01) begin - if(PEG_Cmtx_14__ap_ready) begin - if(PEG_Cmtx_14__ap_done) begin - PEG_Cmtx_14__state <= 2'b10; - end else begin - PEG_Cmtx_14__state <= 2'b11; - end - end - end - if(PEG_Cmtx_14__state == 2'b11) begin - if(PEG_Cmtx_14__ap_done) begin - PEG_Cmtx_14__state <= 2'b10; - end - end - if(PEG_Cmtx_14__state == 2'b10) begin - if(PEG_Cmtx_14__ap_done_global__q0) begin - PEG_Cmtx_14__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_14__ap_start = (PEG_Cmtx_14__state == 2'b01); - assign PEG_Cmtx_15__ap_start_global__q0 = ap_start__q0; - assign PEG_Cmtx_15__is_done__q0 = (PEG_Cmtx_15__state == 2'b10); - assign PEG_Cmtx_15__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - PEG_Cmtx_15__state <= 2'b00; - end else begin - if(PEG_Cmtx_15__state == 2'b00) begin - if(PEG_Cmtx_15__ap_start_global__q0) begin - PEG_Cmtx_15__state <= 2'b01; - end - end - if(PEG_Cmtx_15__state == 2'b01) begin - if(PEG_Cmtx_15__ap_ready) begin - if(PEG_Cmtx_15__ap_done) begin - PEG_Cmtx_15__state <= 2'b10; - end else begin - PEG_Cmtx_15__state <= 2'b11; - end - end - end - if(PEG_Cmtx_15__state == 2'b11) begin - if(PEG_Cmtx_15__ap_done) begin - PEG_Cmtx_15__state <= 2'b10; - end - end - if(PEG_Cmtx_15__state == 2'b10) begin - if(PEG_Cmtx_15__ap_done_global__q0) begin - PEG_Cmtx_15__state <= 2'b00; - end - end - end - end - - assign PEG_Cmtx_15__ap_start = (PEG_Cmtx_15__state == 2'b01); - assign Scatter_1_2_0__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Scatter_1_2_0__ap_start <= 1'b0; - end else if(Scatter_1_2_0__ap_start_global__q0) begin - Scatter_1_2_0__ap_start <= 1'b1; - end - end - - assign Scatter_1_2_1__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Scatter_1_2_1__ap_start <= 1'b0; - end else if(Scatter_1_2_1__ap_start_global__q0) begin - Scatter_1_2_1__ap_start <= 1'b1; - end - end - - assign Scatter_1_2_2__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Scatter_1_2_2__ap_start <= 1'b0; - end else if(Scatter_1_2_2__ap_start_global__q0) begin - Scatter_1_2_2__ap_start <= 1'b1; - end - end - - assign Scatter_1_2_3__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Scatter_1_2_3__ap_start <= 1'b0; - end else if(Scatter_1_2_3__ap_start_global__q0) begin - Scatter_1_2_3__ap_start <= 1'b1; - end - end - - assign Scatter_1_2_4__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Scatter_1_2_4__ap_start <= 1'b0; - end else if(Scatter_1_2_4__ap_start_global__q0) begin - Scatter_1_2_4__ap_start <= 1'b1; - end - end - - assign Scatter_1_2_5__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Scatter_1_2_5__ap_start <= 1'b0; - end else if(Scatter_1_2_5__ap_start_global__q0) begin - Scatter_1_2_5__ap_start <= 1'b1; - end - end - - assign Scatter_1_2_6__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Scatter_1_2_6__ap_start <= 1'b0; - end else if(Scatter_1_2_6__ap_start_global__q0) begin - Scatter_1_2_6__ap_start <= 1'b1; - end - end - - assign Scatter_1_2_7__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - Scatter_1_2_7__ap_start <= 1'b0; - end else if(Scatter_1_2_7__ap_start_global__q0) begin - Scatter_1_2_7__ap_start <= 1'b1; - end - end - - assign black_hole_float_v16_0__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - black_hole_float_v16_0__ap_start <= 1'b0; - end else if(black_hole_float_v16_0__ap_start_global__q0) begin - black_hole_float_v16_0__ap_start <= 1'b1; - end - end - - assign black_hole_float_v16_1__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - black_hole_float_v16_1__ap_start <= 1'b0; - end else if(black_hole_float_v16_1__ap_start_global__q0) begin - black_hole_float_v16_1__ap_start <= 1'b1; - end - end - - assign black_hole_float_v16_2__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - black_hole_float_v16_2__ap_start <= 1'b0; - end else if(black_hole_float_v16_2__ap_start_global__q0) begin - black_hole_float_v16_2__ap_start <= 1'b1; - end - end - - assign black_hole_float_v16_3__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - black_hole_float_v16_3__ap_start <= 1'b0; - end else if(black_hole_float_v16_3__ap_start_global__q0) begin - black_hole_float_v16_3__ap_start <= 1'b1; - end - end - - assign black_hole_int_0__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - black_hole_int_0__ap_start <= 1'b0; - end else if(black_hole_int_0__ap_start_global__q0) begin - black_hole_int_0__ap_start <= 1'b1; - end - end - - assign black_hole_int_1__ap_start_global__q0 = ap_start__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - black_hole_int_1__ap_start <= 1'b0; - end else if(black_hole_int_1__ap_start_global__q0) begin - black_hole_int_1__ap_start <= 1'b1; - end - end - - assign read_A_0__ap_start_global__q0 = ap_start__q0; - assign read_A_0__is_done__q0 = (read_A_0__state == 2'b10); - assign read_A_0__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_A_0__state <= 2'b00; - end else begin - if(read_A_0__state == 2'b00) begin - if(read_A_0__ap_start_global__q0) begin - read_A_0__state <= 2'b01; - end - end - if(read_A_0__state == 2'b01) begin - if(read_A_0__ap_ready) begin - if(read_A_0__ap_done) begin - read_A_0__state <= 2'b10; - end else begin - read_A_0__state <= 2'b11; - end - end - end - if(read_A_0__state == 2'b11) begin - if(read_A_0__ap_done) begin - read_A_0__state <= 2'b10; - end - end - if(read_A_0__state == 2'b10) begin - if(read_A_0__ap_done_global__q0) begin - read_A_0__state <= 2'b00; - end - end - end - end - - assign read_A_0__ap_start = (read_A_0__state == 2'b01); - assign read_A_1__ap_start_global__q0 = ap_start__q0; - assign read_A_1__is_done__q0 = (read_A_1__state == 2'b10); - assign read_A_1__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_A_1__state <= 2'b00; - end else begin - if(read_A_1__state == 2'b00) begin - if(read_A_1__ap_start_global__q0) begin - read_A_1__state <= 2'b01; - end - end - if(read_A_1__state == 2'b01) begin - if(read_A_1__ap_ready) begin - if(read_A_1__ap_done) begin - read_A_1__state <= 2'b10; - end else begin - read_A_1__state <= 2'b11; - end - end - end - if(read_A_1__state == 2'b11) begin - if(read_A_1__ap_done) begin - read_A_1__state <= 2'b10; - end - end - if(read_A_1__state == 2'b10) begin - if(read_A_1__ap_done_global__q0) begin - read_A_1__state <= 2'b00; - end - end - end - end - - assign read_A_1__ap_start = (read_A_1__state == 2'b01); - assign read_A_2__ap_start_global__q0 = ap_start__q0; - assign read_A_2__is_done__q0 = (read_A_2__state == 2'b10); - assign read_A_2__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_A_2__state <= 2'b00; - end else begin - if(read_A_2__state == 2'b00) begin - if(read_A_2__ap_start_global__q0) begin - read_A_2__state <= 2'b01; - end - end - if(read_A_2__state == 2'b01) begin - if(read_A_2__ap_ready) begin - if(read_A_2__ap_done) begin - read_A_2__state <= 2'b10; - end else begin - read_A_2__state <= 2'b11; - end - end - end - if(read_A_2__state == 2'b11) begin - if(read_A_2__ap_done) begin - read_A_2__state <= 2'b10; - end - end - if(read_A_2__state == 2'b10) begin - if(read_A_2__ap_done_global__q0) begin - read_A_2__state <= 2'b00; - end - end - end - end - - assign read_A_2__ap_start = (read_A_2__state == 2'b01); - assign read_A_3__ap_start_global__q0 = ap_start__q0; - assign read_A_3__is_done__q0 = (read_A_3__state == 2'b10); - assign read_A_3__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_A_3__state <= 2'b00; - end else begin - if(read_A_3__state == 2'b00) begin - if(read_A_3__ap_start_global__q0) begin - read_A_3__state <= 2'b01; - end - end - if(read_A_3__state == 2'b01) begin - if(read_A_3__ap_ready) begin - if(read_A_3__ap_done) begin - read_A_3__state <= 2'b10; - end else begin - read_A_3__state <= 2'b11; - end - end - end - if(read_A_3__state == 2'b11) begin - if(read_A_3__ap_done) begin - read_A_3__state <= 2'b10; - end - end - if(read_A_3__state == 2'b10) begin - if(read_A_3__ap_done_global__q0) begin - read_A_3__state <= 2'b00; - end - end - end - end - - assign read_A_3__ap_start = (read_A_3__state == 2'b01); - assign read_A_4__ap_start_global__q0 = ap_start__q0; - assign read_A_4__is_done__q0 = (read_A_4__state == 2'b10); - assign read_A_4__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_A_4__state <= 2'b00; - end else begin - if(read_A_4__state == 2'b00) begin - if(read_A_4__ap_start_global__q0) begin - read_A_4__state <= 2'b01; - end - end - if(read_A_4__state == 2'b01) begin - if(read_A_4__ap_ready) begin - if(read_A_4__ap_done) begin - read_A_4__state <= 2'b10; - end else begin - read_A_4__state <= 2'b11; - end - end - end - if(read_A_4__state == 2'b11) begin - if(read_A_4__ap_done) begin - read_A_4__state <= 2'b10; - end - end - if(read_A_4__state == 2'b10) begin - if(read_A_4__ap_done_global__q0) begin - read_A_4__state <= 2'b00; - end - end - end - end - - assign read_A_4__ap_start = (read_A_4__state == 2'b01); - assign read_A_5__ap_start_global__q0 = ap_start__q0; - assign read_A_5__is_done__q0 = (read_A_5__state == 2'b10); - assign read_A_5__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_A_5__state <= 2'b00; - end else begin - if(read_A_5__state == 2'b00) begin - if(read_A_5__ap_start_global__q0) begin - read_A_5__state <= 2'b01; - end - end - if(read_A_5__state == 2'b01) begin - if(read_A_5__ap_ready) begin - if(read_A_5__ap_done) begin - read_A_5__state <= 2'b10; - end else begin - read_A_5__state <= 2'b11; - end - end - end - if(read_A_5__state == 2'b11) begin - if(read_A_5__ap_done) begin - read_A_5__state <= 2'b10; - end - end - if(read_A_5__state == 2'b10) begin - if(read_A_5__ap_done_global__q0) begin - read_A_5__state <= 2'b00; - end - end - end - end - - assign read_A_5__ap_start = (read_A_5__state == 2'b01); - assign read_A_6__ap_start_global__q0 = ap_start__q0; - assign read_A_6__is_done__q0 = (read_A_6__state == 2'b10); - assign read_A_6__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_A_6__state <= 2'b00; - end else begin - if(read_A_6__state == 2'b00) begin - if(read_A_6__ap_start_global__q0) begin - read_A_6__state <= 2'b01; - end - end - if(read_A_6__state == 2'b01) begin - if(read_A_6__ap_ready) begin - if(read_A_6__ap_done) begin - read_A_6__state <= 2'b10; - end else begin - read_A_6__state <= 2'b11; - end - end - end - if(read_A_6__state == 2'b11) begin - if(read_A_6__ap_done) begin - read_A_6__state <= 2'b10; - end - end - if(read_A_6__state == 2'b10) begin - if(read_A_6__ap_done_global__q0) begin - read_A_6__state <= 2'b00; - end - end - end - end - - assign read_A_6__ap_start = (read_A_6__state == 2'b01); - assign read_A_7__ap_start_global__q0 = ap_start__q0; - assign read_A_7__is_done__q0 = (read_A_7__state == 2'b10); - assign read_A_7__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_A_7__state <= 2'b00; - end else begin - if(read_A_7__state == 2'b00) begin - if(read_A_7__ap_start_global__q0) begin - read_A_7__state <= 2'b01; - end - end - if(read_A_7__state == 2'b01) begin - if(read_A_7__ap_ready) begin - if(read_A_7__ap_done) begin - read_A_7__state <= 2'b10; - end else begin - read_A_7__state <= 2'b11; - end - end - end - if(read_A_7__state == 2'b11) begin - if(read_A_7__ap_done) begin - read_A_7__state <= 2'b10; - end - end - if(read_A_7__state == 2'b10) begin - if(read_A_7__ap_done_global__q0) begin - read_A_7__state <= 2'b00; - end - end - end - end - - assign read_A_7__ap_start = (read_A_7__state == 2'b01); - assign read_B_0__ap_start_global__q0 = ap_start__q0; - assign read_B_0__is_done__q0 = (read_B_0__state == 2'b10); - assign read_B_0__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_B_0__state <= 2'b00; - end else begin - if(read_B_0__state == 2'b00) begin - if(read_B_0__ap_start_global__q0) begin - read_B_0__state <= 2'b01; - end - end - if(read_B_0__state == 2'b01) begin - if(read_B_0__ap_ready) begin - if(read_B_0__ap_done) begin - read_B_0__state <= 2'b10; - end else begin - read_B_0__state <= 2'b11; - end - end - end - if(read_B_0__state == 2'b11) begin - if(read_B_0__ap_done) begin - read_B_0__state <= 2'b10; - end - end - if(read_B_0__state == 2'b10) begin - if(read_B_0__ap_done_global__q0) begin - read_B_0__state <= 2'b00; - end - end - end - end - - assign read_B_0__ap_start = (read_B_0__state == 2'b01); - assign read_B_1__ap_start_global__q0 = ap_start__q0; - assign read_B_1__is_done__q0 = (read_B_1__state == 2'b10); - assign read_B_1__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_B_1__state <= 2'b00; - end else begin - if(read_B_1__state == 2'b00) begin - if(read_B_1__ap_start_global__q0) begin - read_B_1__state <= 2'b01; - end - end - if(read_B_1__state == 2'b01) begin - if(read_B_1__ap_ready) begin - if(read_B_1__ap_done) begin - read_B_1__state <= 2'b10; - end else begin - read_B_1__state <= 2'b11; - end - end - end - if(read_B_1__state == 2'b11) begin - if(read_B_1__ap_done) begin - read_B_1__state <= 2'b10; - end - end - if(read_B_1__state == 2'b10) begin - if(read_B_1__ap_done_global__q0) begin - read_B_1__state <= 2'b00; - end - end - end - end - - assign read_B_1__ap_start = (read_B_1__state == 2'b01); - assign read_B_2__ap_start_global__q0 = ap_start__q0; - assign read_B_2__is_done__q0 = (read_B_2__state == 2'b10); - assign read_B_2__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_B_2__state <= 2'b00; - end else begin - if(read_B_2__state == 2'b00) begin - if(read_B_2__ap_start_global__q0) begin - read_B_2__state <= 2'b01; - end - end - if(read_B_2__state == 2'b01) begin - if(read_B_2__ap_ready) begin - if(read_B_2__ap_done) begin - read_B_2__state <= 2'b10; - end else begin - read_B_2__state <= 2'b11; - end - end - end - if(read_B_2__state == 2'b11) begin - if(read_B_2__ap_done) begin - read_B_2__state <= 2'b10; - end - end - if(read_B_2__state == 2'b10) begin - if(read_B_2__ap_done_global__q0) begin - read_B_2__state <= 2'b00; - end - end - end - end - - assign read_B_2__ap_start = (read_B_2__state == 2'b01); - assign read_B_3__ap_start_global__q0 = ap_start__q0; - assign read_B_3__is_done__q0 = (read_B_3__state == 2'b10); - assign read_B_3__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_B_3__state <= 2'b00; - end else begin - if(read_B_3__state == 2'b00) begin - if(read_B_3__ap_start_global__q0) begin - read_B_3__state <= 2'b01; - end - end - if(read_B_3__state == 2'b01) begin - if(read_B_3__ap_ready) begin - if(read_B_3__ap_done) begin - read_B_3__state <= 2'b10; - end else begin - read_B_3__state <= 2'b11; - end - end - end - if(read_B_3__state == 2'b11) begin - if(read_B_3__ap_done) begin - read_B_3__state <= 2'b10; - end - end - if(read_B_3__state == 2'b10) begin - if(read_B_3__ap_done_global__q0) begin - read_B_3__state <= 2'b00; - end - end - end - end - - assign read_B_3__ap_start = (read_B_3__state == 2'b01); - assign read_C_0__ap_start_global__q0 = ap_start__q0; - assign read_C_0__is_done__q0 = (read_C_0__state == 2'b10); - assign read_C_0__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_C_0__state <= 2'b00; - end else begin - if(read_C_0__state == 2'b00) begin - if(read_C_0__ap_start_global__q0) begin - read_C_0__state <= 2'b01; - end - end - if(read_C_0__state == 2'b01) begin - if(read_C_0__ap_ready) begin - if(read_C_0__ap_done) begin - read_C_0__state <= 2'b10; - end else begin - read_C_0__state <= 2'b11; - end - end - end - if(read_C_0__state == 2'b11) begin - if(read_C_0__ap_done) begin - read_C_0__state <= 2'b10; - end - end - if(read_C_0__state == 2'b10) begin - if(read_C_0__ap_done_global__q0) begin - read_C_0__state <= 2'b00; - end - end - end - end - - assign read_C_0__ap_start = (read_C_0__state == 2'b01); - assign read_C_1__ap_start_global__q0 = ap_start__q0; - assign read_C_1__is_done__q0 = (read_C_1__state == 2'b10); - assign read_C_1__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_C_1__state <= 2'b00; - end else begin - if(read_C_1__state == 2'b00) begin - if(read_C_1__ap_start_global__q0) begin - read_C_1__state <= 2'b01; - end - end - if(read_C_1__state == 2'b01) begin - if(read_C_1__ap_ready) begin - if(read_C_1__ap_done) begin - read_C_1__state <= 2'b10; - end else begin - read_C_1__state <= 2'b11; - end - end - end - if(read_C_1__state == 2'b11) begin - if(read_C_1__ap_done) begin - read_C_1__state <= 2'b10; - end - end - if(read_C_1__state == 2'b10) begin - if(read_C_1__ap_done_global__q0) begin - read_C_1__state <= 2'b00; - end - end - end - end - - assign read_C_1__ap_start = (read_C_1__state == 2'b01); - assign read_C_2__ap_start_global__q0 = ap_start__q0; - assign read_C_2__is_done__q0 = (read_C_2__state == 2'b10); - assign read_C_2__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_C_2__state <= 2'b00; - end else begin - if(read_C_2__state == 2'b00) begin - if(read_C_2__ap_start_global__q0) begin - read_C_2__state <= 2'b01; - end - end - if(read_C_2__state == 2'b01) begin - if(read_C_2__ap_ready) begin - if(read_C_2__ap_done) begin - read_C_2__state <= 2'b10; - end else begin - read_C_2__state <= 2'b11; - end - end - end - if(read_C_2__state == 2'b11) begin - if(read_C_2__ap_done) begin - read_C_2__state <= 2'b10; - end - end - if(read_C_2__state == 2'b10) begin - if(read_C_2__ap_done_global__q0) begin - read_C_2__state <= 2'b00; - end - end - end - end - - assign read_C_2__ap_start = (read_C_2__state == 2'b01); - assign read_C_3__ap_start_global__q0 = ap_start__q0; - assign read_C_3__is_done__q0 = (read_C_3__state == 2'b10); - assign read_C_3__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_C_3__state <= 2'b00; - end else begin - if(read_C_3__state == 2'b00) begin - if(read_C_3__ap_start_global__q0) begin - read_C_3__state <= 2'b01; - end - end - if(read_C_3__state == 2'b01) begin - if(read_C_3__ap_ready) begin - if(read_C_3__ap_done) begin - read_C_3__state <= 2'b10; - end else begin - read_C_3__state <= 2'b11; - end - end - end - if(read_C_3__state == 2'b11) begin - if(read_C_3__ap_done) begin - read_C_3__state <= 2'b10; - end - end - if(read_C_3__state == 2'b10) begin - if(read_C_3__ap_done_global__q0) begin - read_C_3__state <= 2'b00; - end - end - end - end - - assign read_C_3__ap_start = (read_C_3__state == 2'b01); - assign read_C_4__ap_start_global__q0 = ap_start__q0; - assign read_C_4__is_done__q0 = (read_C_4__state == 2'b10); - assign read_C_4__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_C_4__state <= 2'b00; - end else begin - if(read_C_4__state == 2'b00) begin - if(read_C_4__ap_start_global__q0) begin - read_C_4__state <= 2'b01; - end - end - if(read_C_4__state == 2'b01) begin - if(read_C_4__ap_ready) begin - if(read_C_4__ap_done) begin - read_C_4__state <= 2'b10; - end else begin - read_C_4__state <= 2'b11; - end - end - end - if(read_C_4__state == 2'b11) begin - if(read_C_4__ap_done) begin - read_C_4__state <= 2'b10; - end - end - if(read_C_4__state == 2'b10) begin - if(read_C_4__ap_done_global__q0) begin - read_C_4__state <= 2'b00; - end - end - end - end - - assign read_C_4__ap_start = (read_C_4__state == 2'b01); - assign read_C_5__ap_start_global__q0 = ap_start__q0; - assign read_C_5__is_done__q0 = (read_C_5__state == 2'b10); - assign read_C_5__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_C_5__state <= 2'b00; - end else begin - if(read_C_5__state == 2'b00) begin - if(read_C_5__ap_start_global__q0) begin - read_C_5__state <= 2'b01; - end - end - if(read_C_5__state == 2'b01) begin - if(read_C_5__ap_ready) begin - if(read_C_5__ap_done) begin - read_C_5__state <= 2'b10; - end else begin - read_C_5__state <= 2'b11; - end - end - end - if(read_C_5__state == 2'b11) begin - if(read_C_5__ap_done) begin - read_C_5__state <= 2'b10; - end - end - if(read_C_5__state == 2'b10) begin - if(read_C_5__ap_done_global__q0) begin - read_C_5__state <= 2'b00; - end - end - end - end - - assign read_C_5__ap_start = (read_C_5__state == 2'b01); - assign read_C_6__ap_start_global__q0 = ap_start__q0; - assign read_C_6__is_done__q0 = (read_C_6__state == 2'b10); - assign read_C_6__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_C_6__state <= 2'b00; - end else begin - if(read_C_6__state == 2'b00) begin - if(read_C_6__ap_start_global__q0) begin - read_C_6__state <= 2'b01; - end - end - if(read_C_6__state == 2'b01) begin - if(read_C_6__ap_ready) begin - if(read_C_6__ap_done) begin - read_C_6__state <= 2'b10; - end else begin - read_C_6__state <= 2'b11; - end - end - end - if(read_C_6__state == 2'b11) begin - if(read_C_6__ap_done) begin - read_C_6__state <= 2'b10; - end - end - if(read_C_6__state == 2'b10) begin - if(read_C_6__ap_done_global__q0) begin - read_C_6__state <= 2'b00; - end - end - end - end - - assign read_C_6__ap_start = (read_C_6__state == 2'b01); - assign read_C_7__ap_start_global__q0 = ap_start__q0; - assign read_C_7__is_done__q0 = (read_C_7__state == 2'b10); - assign read_C_7__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_C_7__state <= 2'b00; - end else begin - if(read_C_7__state == 2'b00) begin - if(read_C_7__ap_start_global__q0) begin - read_C_7__state <= 2'b01; - end - end - if(read_C_7__state == 2'b01) begin - if(read_C_7__ap_ready) begin - if(read_C_7__ap_done) begin - read_C_7__state <= 2'b10; - end else begin - read_C_7__state <= 2'b11; - end - end - end - if(read_C_7__state == 2'b11) begin - if(read_C_7__ap_done) begin - read_C_7__state <= 2'b10; - end - end - if(read_C_7__state == 2'b10) begin - if(read_C_7__ap_done_global__q0) begin - read_C_7__state <= 2'b00; - end - end - end - end - - assign read_C_7__ap_start = (read_C_7__state == 2'b01); - assign read_edge_list_ptr_0__ap_start_global__q0 = ap_start__q0; - assign read_edge_list_ptr_0__is_done__q0 = (read_edge_list_ptr_0__state == 2'b10); - assign read_edge_list_ptr_0__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - read_edge_list_ptr_0__state <= 2'b00; - end else begin - if(read_edge_list_ptr_0__state == 2'b00) begin - if(read_edge_list_ptr_0__ap_start_global__q0) begin - read_edge_list_ptr_0__state <= 2'b01; - end - end - if(read_edge_list_ptr_0__state == 2'b01) begin - if(read_edge_list_ptr_0__ap_ready) begin - if(read_edge_list_ptr_0__ap_done) begin - read_edge_list_ptr_0__state <= 2'b10; - end else begin - read_edge_list_ptr_0__state <= 2'b11; - end - end - end - if(read_edge_list_ptr_0__state == 2'b11) begin - if(read_edge_list_ptr_0__ap_done) begin - read_edge_list_ptr_0__state <= 2'b10; - end - end - if(read_edge_list_ptr_0__state == 2'b10) begin - if(read_edge_list_ptr_0__ap_done_global__q0) begin - read_edge_list_ptr_0__state <= 2'b00; - end - end - end - end - - assign read_edge_list_ptr_0__ap_start = (read_edge_list_ptr_0__state == 2'b01); - assign write_C_0__ap_start_global__q0 = ap_start__q0; - assign write_C_0__is_done__q0 = (write_C_0__state == 2'b10); - assign write_C_0__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - write_C_0__state <= 2'b00; - end else begin - if(write_C_0__state == 2'b00) begin - if(write_C_0__ap_start_global__q0) begin - write_C_0__state <= 2'b01; - end - end - if(write_C_0__state == 2'b01) begin - if(write_C_0__ap_ready) begin - if(write_C_0__ap_done) begin - write_C_0__state <= 2'b10; - end else begin - write_C_0__state <= 2'b11; - end - end - end - if(write_C_0__state == 2'b11) begin - if(write_C_0__ap_done) begin - write_C_0__state <= 2'b10; - end - end - if(write_C_0__state == 2'b10) begin - if(write_C_0__ap_done_global__q0) begin - write_C_0__state <= 2'b00; - end - end - end - end - - assign write_C_0__ap_start = (write_C_0__state == 2'b01); - assign write_C_1__ap_start_global__q0 = ap_start__q0; - assign write_C_1__is_done__q0 = (write_C_1__state == 2'b10); - assign write_C_1__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - write_C_1__state <= 2'b00; - end else begin - if(write_C_1__state == 2'b00) begin - if(write_C_1__ap_start_global__q0) begin - write_C_1__state <= 2'b01; - end - end - if(write_C_1__state == 2'b01) begin - if(write_C_1__ap_ready) begin - if(write_C_1__ap_done) begin - write_C_1__state <= 2'b10; - end else begin - write_C_1__state <= 2'b11; - end - end - end - if(write_C_1__state == 2'b11) begin - if(write_C_1__ap_done) begin - write_C_1__state <= 2'b10; - end - end - if(write_C_1__state == 2'b10) begin - if(write_C_1__ap_done_global__q0) begin - write_C_1__state <= 2'b00; - end - end - end - end - - assign write_C_1__ap_start = (write_C_1__state == 2'b01); - assign write_C_2__ap_start_global__q0 = ap_start__q0; - assign write_C_2__is_done__q0 = (write_C_2__state == 2'b10); - assign write_C_2__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - write_C_2__state <= 2'b00; - end else begin - if(write_C_2__state == 2'b00) begin - if(write_C_2__ap_start_global__q0) begin - write_C_2__state <= 2'b01; - end - end - if(write_C_2__state == 2'b01) begin - if(write_C_2__ap_ready) begin - if(write_C_2__ap_done) begin - write_C_2__state <= 2'b10; - end else begin - write_C_2__state <= 2'b11; - end - end - end - if(write_C_2__state == 2'b11) begin - if(write_C_2__ap_done) begin - write_C_2__state <= 2'b10; - end - end - if(write_C_2__state == 2'b10) begin - if(write_C_2__ap_done_global__q0) begin - write_C_2__state <= 2'b00; - end - end - end - end - - assign write_C_2__ap_start = (write_C_2__state == 2'b01); - assign write_C_3__ap_start_global__q0 = ap_start__q0; - assign write_C_3__is_done__q0 = (write_C_3__state == 2'b10); - assign write_C_3__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - write_C_3__state <= 2'b00; - end else begin - if(write_C_3__state == 2'b00) begin - if(write_C_3__ap_start_global__q0) begin - write_C_3__state <= 2'b01; - end - end - if(write_C_3__state == 2'b01) begin - if(write_C_3__ap_ready) begin - if(write_C_3__ap_done) begin - write_C_3__state <= 2'b10; - end else begin - write_C_3__state <= 2'b11; - end - end - end - if(write_C_3__state == 2'b11) begin - if(write_C_3__ap_done) begin - write_C_3__state <= 2'b10; - end - end - if(write_C_3__state == 2'b10) begin - if(write_C_3__ap_done_global__q0) begin - write_C_3__state <= 2'b00; - end - end - end - end - - assign write_C_3__ap_start = (write_C_3__state == 2'b01); - assign write_C_4__ap_start_global__q0 = ap_start__q0; - assign write_C_4__is_done__q0 = (write_C_4__state == 2'b10); - assign write_C_4__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - write_C_4__state <= 2'b00; - end else begin - if(write_C_4__state == 2'b00) begin - if(write_C_4__ap_start_global__q0) begin - write_C_4__state <= 2'b01; - end - end - if(write_C_4__state == 2'b01) begin - if(write_C_4__ap_ready) begin - if(write_C_4__ap_done) begin - write_C_4__state <= 2'b10; - end else begin - write_C_4__state <= 2'b11; - end - end - end - if(write_C_4__state == 2'b11) begin - if(write_C_4__ap_done) begin - write_C_4__state <= 2'b10; - end - end - if(write_C_4__state == 2'b10) begin - if(write_C_4__ap_done_global__q0) begin - write_C_4__state <= 2'b00; - end - end - end - end - - assign write_C_4__ap_start = (write_C_4__state == 2'b01); - assign write_C_5__ap_start_global__q0 = ap_start__q0; - assign write_C_5__is_done__q0 = (write_C_5__state == 2'b10); - assign write_C_5__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - write_C_5__state <= 2'b00; - end else begin - if(write_C_5__state == 2'b00) begin - if(write_C_5__ap_start_global__q0) begin - write_C_5__state <= 2'b01; - end - end - if(write_C_5__state == 2'b01) begin - if(write_C_5__ap_ready) begin - if(write_C_5__ap_done) begin - write_C_5__state <= 2'b10; - end else begin - write_C_5__state <= 2'b11; - end - end - end - if(write_C_5__state == 2'b11) begin - if(write_C_5__ap_done) begin - write_C_5__state <= 2'b10; - end - end - if(write_C_5__state == 2'b10) begin - if(write_C_5__ap_done_global__q0) begin - write_C_5__state <= 2'b00; - end - end - end - end - - assign write_C_5__ap_start = (write_C_5__state == 2'b01); - assign write_C_6__ap_start_global__q0 = ap_start__q0; - assign write_C_6__is_done__q0 = (write_C_6__state == 2'b10); - assign write_C_6__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - write_C_6__state <= 2'b00; - end else begin - if(write_C_6__state == 2'b00) begin - if(write_C_6__ap_start_global__q0) begin - write_C_6__state <= 2'b01; - end - end - if(write_C_6__state == 2'b01) begin - if(write_C_6__ap_ready) begin - if(write_C_6__ap_done) begin - write_C_6__state <= 2'b10; - end else begin - write_C_6__state <= 2'b11; - end - end - end - if(write_C_6__state == 2'b11) begin - if(write_C_6__ap_done) begin - write_C_6__state <= 2'b10; - end - end - if(write_C_6__state == 2'b10) begin - if(write_C_6__ap_done_global__q0) begin - write_C_6__state <= 2'b00; - end - end - end - end - - assign write_C_6__ap_start = (write_C_6__state == 2'b01); - assign write_C_7__ap_start_global__q0 = ap_start__q0; - assign write_C_7__is_done__q0 = (write_C_7__state == 2'b10); - assign write_C_7__ap_done_global__q0 = ap_done__q0; - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - write_C_7__state <= 2'b00; - end else begin - if(write_C_7__state == 2'b00) begin - if(write_C_7__ap_start_global__q0) begin - write_C_7__state <= 2'b01; - end - end - if(write_C_7__state == 2'b01) begin - if(write_C_7__ap_ready) begin - if(write_C_7__ap_done) begin - write_C_7__state <= 2'b10; - end else begin - write_C_7__state <= 2'b11; - end - end - end - if(write_C_7__state == 2'b11) begin - if(write_C_7__ap_done) begin - write_C_7__state <= 2'b10; - end - end - if(write_C_7__state == 2'b10) begin - if(write_C_7__ap_done_global__q0) begin - write_C_7__state <= 2'b00; - end - end - end - end - - assign write_C_7__ap_start = (write_C_7__state == 2'b01); - - always @(posedge ap_clk) begin - if(~ap_rst_n) begin - tapa_state <= 2'b00; - end else begin - case(tapa_state) - 2'b00: begin - if(ap_start__q0) begin - tapa_state <= 2'b01; - end - end - 2'b01: begin - if(FloatvMultConst_0__is_done__q0 && FloatvMultConst_1__is_done__q0 && FloatvMultConst_2__is_done__q0 && FloatvMultConst_3__is_done__q0 && FloatvMultConst_4__is_done__q0 && FloatvMultConst_5__is_done__q0 && FloatvMultConst_6__is_done__q0 && FloatvMultConst_7__is_done__q0 && FloatvMultConst_8__is_done__q0 && FloatvMultConst_9__is_done__q0 && FloatvMultConst_10__is_done__q0 && FloatvMultConst_11__is_done__q0 && FloatvMultConst_12__is_done__q0 && FloatvMultConst_13__is_done__q0 && FloatvMultConst_14__is_done__q0 && FloatvMultConst_15__is_done__q0 && PEG_Bmtx_0__is_done__q0 && PEG_Bmtx_1__is_done__q0 && PEG_Bmtx_2__is_done__q0 && PEG_Bmtx_3__is_done__q0 && PEG_Bmtx_4__is_done__q0 && PEG_Bmtx_5__is_done__q0 && PEG_Bmtx_6__is_done__q0 && PEG_Bmtx_7__is_done__q0 && PEG_Bmtx_8__is_done__q0 && PEG_Bmtx_9__is_done__q0 && PEG_Bmtx_10__is_done__q0 && PEG_Bmtx_11__is_done__q0 && PEG_Bmtx_12__is_done__q0 && PEG_Bmtx_13__is_done__q0 && PEG_Bmtx_14__is_done__q0 && PEG_Bmtx_15__is_done__q0 && PEG_Cmtx_0__is_done__q0 && PEG_Cmtx_1__is_done__q0 && PEG_Cmtx_2__is_done__q0 && PEG_Cmtx_3__is_done__q0 && PEG_Cmtx_4__is_done__q0 && PEG_Cmtx_5__is_done__q0 && PEG_Cmtx_6__is_done__q0 && PEG_Cmtx_7__is_done__q0 && PEG_Cmtx_8__is_done__q0 && PEG_Cmtx_9__is_done__q0 && PEG_Cmtx_10__is_done__q0 && PEG_Cmtx_11__is_done__q0 && PEG_Cmtx_12__is_done__q0 && PEG_Cmtx_13__is_done__q0 && PEG_Cmtx_14__is_done__q0 && PEG_Cmtx_15__is_done__q0 && read_A_0__is_done__q0 && read_A_1__is_done__q0 && read_A_2__is_done__q0 && read_A_3__is_done__q0 && read_A_4__is_done__q0 && read_A_5__is_done__q0 && read_A_6__is_done__q0 && read_A_7__is_done__q0 && read_B_0__is_done__q0 && read_B_1__is_done__q0 && read_B_2__is_done__q0 && read_B_3__is_done__q0 && read_C_0__is_done__q0 && read_C_1__is_done__q0 && read_C_2__is_done__q0 && read_C_3__is_done__q0 && read_C_4__is_done__q0 && read_C_5__is_done__q0 && read_C_6__is_done__q0 && read_C_7__is_done__q0 && read_edge_list_ptr_0__is_done__q0 && write_C_0__is_done__q0 && write_C_1__is_done__q0 && write_C_2__is_done__q0 && write_C_3__is_done__q0 && write_C_4__is_done__q0 && write_C_5__is_done__q0 && write_C_6__is_done__q0 && write_C_7__is_done__q0) begin - tapa_state <= 2'b10; - end - end - 2'b10: begin - tapa_state <= 2'b00; - countdown <= 1'd0; - end - 2'b11: begin - if(countdown == 1'd0) begin - tapa_state <= 2'b00; - end else begin - countdown <= (countdown - 1'd1); - end - end - endcase - end - end - - assign ap_idle = (tapa_state == 2'b00); - assign ap_done = ap_done__q0; - assign ap_ready = ap_done__q0; - assign ap_start__q0 = ap_start; - assign ap_done__q0 = (tapa_state == 2'b10); - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/a_axi_write_broadcastor_1_to_3.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/a_axi_write_broadcastor_1_to_3.v deleted file mode 100644 index d84fe57e..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/a_axi_write_broadcastor_1_to_3.v +++ /dev/null @@ -1,269 +0,0 @@ - -module a_axi_write_broadcastor_1_to_3 ( - ap_clk, - - s_axi_control_AWVALID_slr_0, - s_axi_control_AWREADY_slr_0, - s_axi_control_AWADDR_slr_0, - s_axi_control_WVALID_slr_0, - s_axi_control_WREADY_slr_0, - s_axi_control_WDATA_slr_0, - s_axi_control_WSTRB_slr_0, - s_axi_control_AWVALID_slr_1, - s_axi_control_AWREADY_slr_1, - s_axi_control_AWADDR_slr_1, - s_axi_control_WVALID_slr_1, - s_axi_control_WREADY_slr_1, - s_axi_control_WDATA_slr_1, - s_axi_control_WSTRB_slr_1, - s_axi_control_AWVALID_slr_2, - s_axi_control_AWREADY_slr_2, - s_axi_control_AWADDR_slr_2, - s_axi_control_WVALID_slr_2, - s_axi_control_WREADY_slr_2, - s_axi_control_WDATA_slr_2, - s_axi_control_WSTRB_slr_2, - s_axi_control_AWVALID, - s_axi_control_AWREADY, - s_axi_control_AWADDR, - s_axi_control_WVALID, - s_axi_control_WREADY, - s_axi_control_WDATA, - s_axi_control_WSTRB -); - parameter C_S_AXI_CONTROL_DATA_WIDTH = 32; - parameter C_S_AXI_CONTROL_ADDR_WIDTH = 9; - parameter C_S_AXI_DATA_WIDTH = 32; - parameter C_S_AXI_CONTROL_WSTRB_WIDTH = 32 / 8; - parameter C_S_AXI_WSTRB_WIDTH = 32 / 8; - - input ap_clk; - - input s_axi_control_AWVALID; - output s_axi_control_AWREADY; - input [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR; - input s_axi_control_WVALID; - output s_axi_control_WREADY; - input [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA; - input [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB; - - output s_axi_control_AWVALID_slr_0; - input s_axi_control_AWREADY_slr_0; - output [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR_slr_0; - output s_axi_control_WVALID_slr_0; - input s_axi_control_WREADY_slr_0; - output [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA_slr_0; - output [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB_slr_0; - - output s_axi_control_AWVALID_slr_1; - input s_axi_control_AWREADY_slr_1; - output [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR_slr_1; - output s_axi_control_WVALID_slr_1; - input s_axi_control_WREADY_slr_1; - output [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA_slr_1; - output [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB_slr_1; - - output s_axi_control_AWVALID_slr_2; - input s_axi_control_AWREADY_slr_2; - output [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR_slr_2; - output s_axi_control_WVALID_slr_2; - input s_axi_control_WREADY_slr_2; - output [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA_slr_2; - output [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB_slr_2; - - wire s_axi_control_AWVALID_slr_0_inner; - wire s_axi_control_AWREADY_slr_0_inner; - wire [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR_slr_0_inner; - wire s_axi_control_WVALID_slr_0_inner; - wire s_axi_control_WREADY_slr_0_inner; - wire [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA_slr_0_inner; - wire [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB_slr_0_inner; - - wire s_axi_control_AWVALID_slr_1_inner; - wire s_axi_control_AWREADY_slr_1_inner; - wire [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR_slr_1_inner; - wire s_axi_control_WVALID_slr_1_inner; - wire s_axi_control_WREADY_slr_1_inner; - wire [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA_slr_1_inner; - wire [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB_slr_1_inner; - - wire s_axi_control_AWVALID_slr_2_inner; - wire s_axi_control_AWREADY_slr_2_inner; - wire [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR_slr_2_inner; - wire s_axi_control_WVALID_slr_2_inner; - wire s_axi_control_WREADY_slr_2_inner; - wire [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA_slr_2_inner; - wire [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB_slr_2_inner; - - // broadcast the AW channel - assign s_axi_control_AWADDR_slr_0_inner = s_axi_control_AWADDR; - assign s_axi_control_AWADDR_slr_1_inner = s_axi_control_AWADDR; - assign s_axi_control_AWADDR_slr_2_inner = s_axi_control_AWADDR; - - assign s_axi_control_AWVALID_slr_0_inner = s_axi_control_AWVALID; - assign s_axi_control_AWVALID_slr_1_inner = s_axi_control_AWVALID; - assign s_axi_control_AWVALID_slr_2_inner = s_axi_control_AWVALID; - - assign s_axi_control_AWREADY = s_axi_control_AWREADY_slr_0_inner & - s_axi_control_AWREADY_slr_1_inner & - s_axi_control_AWREADY_slr_2_inner; - - // broadcast the W channel - assign s_axi_control_WDATA_slr_0_inner = s_axi_control_WDATA; - assign s_axi_control_WDATA_slr_1_inner = s_axi_control_WDATA; - assign s_axi_control_WDATA_slr_2_inner = s_axi_control_WDATA; - - assign s_axi_control_WSTRB_slr_0_inner = s_axi_control_WSTRB; - assign s_axi_control_WSTRB_slr_1_inner = s_axi_control_WSTRB; - assign s_axi_control_WSTRB_slr_2_inner = s_axi_control_WSTRB; - - assign s_axi_control_WVALID_slr_0_inner = s_axi_control_WVALID; - assign s_axi_control_WVALID_slr_1_inner = s_axi_control_WVALID; - assign s_axi_control_WVALID_slr_2_inner = s_axi_control_WVALID; - - assign s_axi_control_WREADY = s_axi_control_WREADY_slr_0_inner & - s_axi_control_WREADY_slr_1_inner & - s_axi_control_WREADY_slr_2_inner; - - relay_station - #( - .DATA_WIDTH(C_S_AXI_CONTROL_ADDR_WIDTH), - .DEPTH(24), - .ADDR_WIDTH(1), - .LEVEL( 3 ) - ) - AW_pipeline_slr_0 - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din (s_axi_control_AWADDR_slr_0_inner), - .if_full_n (s_axi_control_AWREADY_slr_0_inner), - .if_write (s_axi_control_AWVALID_slr_0_inner), - - .if_dout (s_axi_control_AWADDR_slr_0), - .if_empty_n (s_axi_control_AWVALID_slr_0), - .if_read (s_axi_control_AWREADY_slr_0) - ); - - relay_station - #( - .DATA_WIDTH(C_S_AXI_CONTROL_DATA_WIDTH + C_S_AXI_CONTROL_WSTRB_WIDTH), - .DEPTH(24), - .ADDR_WIDTH(1), - .LEVEL( 3 ) - ) - W_pipeline_slr_0 - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din ({s_axi_control_WDATA_slr_0_inner, s_axi_control_WSTRB_slr_0_inner}), - .if_full_n (s_axi_control_WREADY_slr_0_inner), - .if_write (s_axi_control_WVALID_slr_0_inner), - - .if_dout ({s_axi_control_WDATA_slr_0, s_axi_control_WSTRB_slr_0}), - .if_empty_n (s_axi_control_WVALID_slr_0), - .if_read (s_axi_control_WREADY_slr_0) - ); - - - relay_station - #( - .DATA_WIDTH(C_S_AXI_CONTROL_ADDR_WIDTH), - .DEPTH(24), - .ADDR_WIDTH(1), - .LEVEL( 3 ) - ) - AW_pipeline_slr_1 - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din (s_axi_control_AWADDR_slr_1_inner), - .if_full_n (s_axi_control_AWREADY_slr_1_inner), - .if_write (s_axi_control_AWVALID_slr_1_inner), - - .if_dout (s_axi_control_AWADDR_slr_1), - .if_empty_n (s_axi_control_AWVALID_slr_1), - .if_read (s_axi_control_AWREADY_slr_1) - ); - - relay_station - #( - .DATA_WIDTH(C_S_AXI_CONTROL_DATA_WIDTH + C_S_AXI_CONTROL_WSTRB_WIDTH), - .DEPTH(24), - .ADDR_WIDTH(1), - .LEVEL( 3 ) - ) - W_pipeline_slr_1 - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din ({s_axi_control_WDATA_slr_1_inner, s_axi_control_WSTRB_slr_1_inner}), - .if_full_n (s_axi_control_WREADY_slr_1_inner), - .if_write (s_axi_control_WVALID_slr_1_inner), - - .if_dout ({s_axi_control_WDATA_slr_1, s_axi_control_WSTRB_slr_1}), - .if_empty_n (s_axi_control_WVALID_slr_1), - .if_read (s_axi_control_WREADY_slr_1) - ); - - - relay_station - #( - .DATA_WIDTH(C_S_AXI_CONTROL_ADDR_WIDTH), - .DEPTH(24), - .ADDR_WIDTH(1), - .LEVEL( 3 ) - ) - AW_pipeline_slr_2 - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din (s_axi_control_AWADDR_slr_2_inner), - .if_full_n (s_axi_control_AWREADY_slr_2_inner), - .if_write (s_axi_control_AWVALID_slr_2_inner), - - .if_dout (s_axi_control_AWADDR_slr_2), - .if_empty_n (s_axi_control_AWVALID_slr_2), - .if_read (s_axi_control_AWREADY_slr_2) - ); - - relay_station - #( - .DATA_WIDTH(C_S_AXI_CONTROL_DATA_WIDTH + C_S_AXI_CONTROL_WSTRB_WIDTH), - .DEPTH(24), - .ADDR_WIDTH(1), - .LEVEL( 3 ) - ) - W_pipeline_slr_2 - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din ({s_axi_control_WDATA_slr_2_inner, s_axi_control_WSTRB_slr_2_inner}), - .if_full_n (s_axi_control_WREADY_slr_2_inner), - .if_write (s_axi_control_WVALID_slr_2_inner), - - .if_dout ({s_axi_control_WDATA_slr_2, s_axi_control_WSTRB_slr_2}), - .if_empty_n (s_axi_control_WVALID_slr_2), - .if_read (s_axi_control_WREADY_slr_2) - ); - - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/a_axi_write_broadcastor_1_to_4.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/a_axi_write_broadcastor_1_to_4.v deleted file mode 100644 index 055ed0bd..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/a_axi_write_broadcastor_1_to_4.v +++ /dev/null @@ -1,346 +0,0 @@ - -module a_axi_write_broadcastor_1_to_4 ( - ap_clk, - - s_axi_control_AWVALID_slr_0, - s_axi_control_AWREADY_slr_0, - s_axi_control_AWADDR_slr_0, - s_axi_control_WVALID_slr_0, - s_axi_control_WREADY_slr_0, - s_axi_control_WDATA_slr_0, - s_axi_control_WSTRB_slr_0, - s_axi_control_AWVALID_slr_1, - s_axi_control_AWREADY_slr_1, - s_axi_control_AWADDR_slr_1, - s_axi_control_WVALID_slr_1, - s_axi_control_WREADY_slr_1, - s_axi_control_WDATA_slr_1, - s_axi_control_WSTRB_slr_1, - s_axi_control_AWVALID_slr_2, - s_axi_control_AWREADY_slr_2, - s_axi_control_AWADDR_slr_2, - s_axi_control_WVALID_slr_2, - s_axi_control_WREADY_slr_2, - s_axi_control_WDATA_slr_2, - s_axi_control_WSTRB_slr_2, - s_axi_control_AWVALID_slr_3, - s_axi_control_AWREADY_slr_3, - s_axi_control_AWADDR_slr_3, - s_axi_control_WVALID_slr_3, - s_axi_control_WREADY_slr_3, - s_axi_control_WDATA_slr_3, - s_axi_control_WSTRB_slr_3, - s_axi_control_AWVALID, - s_axi_control_AWREADY, - s_axi_control_AWADDR, - s_axi_control_WVALID, - s_axi_control_WREADY, - s_axi_control_WDATA, - s_axi_control_WSTRB -); - parameter C_S_AXI_CONTROL_DATA_WIDTH = 32; - parameter C_S_AXI_CONTROL_ADDR_WIDTH = 9; - parameter C_S_AXI_DATA_WIDTH = 32; - parameter C_S_AXI_CONTROL_WSTRB_WIDTH = 32 / 8; - parameter C_S_AXI_WSTRB_WIDTH = 32 / 8; - - input ap_clk; - input s_axi_control_AWVALID; - output s_axi_control_AWREADY; - input [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR; - input s_axi_control_WVALID; - output s_axi_control_WREADY; - input [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA; - input [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB; - - output s_axi_control_AWVALID_slr_0; - input s_axi_control_AWREADY_slr_0; - output [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR_slr_0; - output s_axi_control_WVALID_slr_0; - input s_axi_control_WREADY_slr_0; - output [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA_slr_0; - output [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB_slr_0; - - output s_axi_control_AWVALID_slr_1; - input s_axi_control_AWREADY_slr_1; - output [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR_slr_1; - output s_axi_control_WVALID_slr_1; - input s_axi_control_WREADY_slr_1; - output [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA_slr_1; - output [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB_slr_1; - - output s_axi_control_AWVALID_slr_2; - input s_axi_control_AWREADY_slr_2; - output [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR_slr_2; - output s_axi_control_WVALID_slr_2; - input s_axi_control_WREADY_slr_2; - output [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA_slr_2; - output [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB_slr_2; - - output s_axi_control_AWVALID_slr_3; - input s_axi_control_AWREADY_slr_3; - output [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR_slr_3; - output s_axi_control_WVALID_slr_3; - input s_axi_control_WREADY_slr_3; - output [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA_slr_3; - output [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB_slr_3; - - wire s_axi_control_AWVALID_slr_0_inner; - wire s_axi_control_AWREADY_slr_0_inner; - wire [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR_slr_0_inner; - wire s_axi_control_WVALID_slr_0_inner; - wire s_axi_control_WREADY_slr_0_inner; - wire [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA_slr_0_inner; - wire [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB_slr_0_inner; - - wire s_axi_control_AWVALID_slr_1_inner; - wire s_axi_control_AWREADY_slr_1_inner; - wire [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR_slr_1_inner; - wire s_axi_control_WVALID_slr_1_inner; - wire s_axi_control_WREADY_slr_1_inner; - wire [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA_slr_1_inner; - wire [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB_slr_1_inner; - - wire s_axi_control_AWVALID_slr_2_inner; - wire s_axi_control_AWREADY_slr_2_inner; - wire [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR_slr_2_inner; - wire s_axi_control_WVALID_slr_2_inner; - wire s_axi_control_WREADY_slr_2_inner; - wire [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA_slr_2_inner; - wire [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB_slr_2_inner; - - wire s_axi_control_AWVALID_slr_3_inner; - wire s_axi_control_AWREADY_slr_3_inner; - wire [C_S_AXI_CONTROL_ADDR_WIDTH-1:0] s_axi_control_AWADDR_slr_3_inner; - wire s_axi_control_WVALID_slr_3_inner; - wire s_axi_control_WREADY_slr_3_inner; - wire [C_S_AXI_CONTROL_DATA_WIDTH-1:0] s_axi_control_WDATA_slr_3_inner; - wire [C_S_AXI_CONTROL_WSTRB_WIDTH-1:0] s_axi_control_WSTRB_slr_3_inner; - - // broadcast the AW channel - assign s_axi_control_AWADDR_slr_0_inner = s_axi_control_AWADDR; - assign s_axi_control_AWADDR_slr_1_inner = s_axi_control_AWADDR; - assign s_axi_control_AWADDR_slr_2_inner = s_axi_control_AWADDR; - assign s_axi_control_AWADDR_slr_3_inner = s_axi_control_AWADDR; - - assign s_axi_control_AWVALID_slr_0_inner = s_axi_control_AWVALID; - assign s_axi_control_AWVALID_slr_1_inner = s_axi_control_AWVALID; - assign s_axi_control_AWVALID_slr_2_inner = s_axi_control_AWVALID; - assign s_axi_control_AWVALID_slr_3_inner = s_axi_control_AWVALID; - - assign s_axi_control_AWREADY = s_axi_control_AWREADY_slr_0_inner & - s_axi_control_AWREADY_slr_1_inner & - s_axi_control_AWREADY_slr_2_inner & - s_axi_control_AWREADY_slr_3_inner; - - // broadcast the W channel - assign s_axi_control_WDATA_slr_0_inner = s_axi_control_WDATA; - assign s_axi_control_WDATA_slr_1_inner = s_axi_control_WDATA; - assign s_axi_control_WDATA_slr_2_inner = s_axi_control_WDATA; - assign s_axi_control_WDATA_slr_3_inner = s_axi_control_WDATA; - - assign s_axi_control_WSTRB_slr_0_inner = s_axi_control_WSTRB; - assign s_axi_control_WSTRB_slr_1_inner = s_axi_control_WSTRB; - assign s_axi_control_WSTRB_slr_2_inner = s_axi_control_WSTRB; - assign s_axi_control_WSTRB_slr_3_inner = s_axi_control_WSTRB; - - assign s_axi_control_WVALID_slr_0_inner = s_axi_control_WVALID; - assign s_axi_control_WVALID_slr_1_inner = s_axi_control_WVALID; - assign s_axi_control_WVALID_slr_2_inner = s_axi_control_WVALID; - assign s_axi_control_WVALID_slr_3_inner = s_axi_control_WVALID; - - assign s_axi_control_WREADY = s_axi_control_WREADY_slr_0_inner & - s_axi_control_WREADY_slr_1_inner & - s_axi_control_WREADY_slr_2_inner & - s_axi_control_WREADY_slr_3_inner; - - relay_station - #( - .DATA_WIDTH(C_S_AXI_CONTROL_ADDR_WIDTH), - .DEPTH(24), - .ADDR_WIDTH(1), - .LEVEL( 3 ) - ) - AW_pipeline_slr_0 - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din (s_axi_control_AWADDR_slr_0_inner), - .if_full_n (s_axi_control_AWREADY_slr_0_inner), - .if_write (s_axi_control_AWVALID_slr_0_inner), - - .if_dout (s_axi_control_AWADDR_slr_0), - .if_empty_n (s_axi_control_AWVALID_slr_0), - .if_read (s_axi_control_AWREADY_slr_0) - ); - - relay_station - #( - .DATA_WIDTH(C_S_AXI_CONTROL_DATA_WIDTH + C_S_AXI_CONTROL_WSTRB_WIDTH), - .DEPTH(24), - .ADDR_WIDTH(1), - .LEVEL( 3 ) - ) - W_pipeline_slr_0 - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din ({s_axi_control_WDATA_slr_0_inner, s_axi_control_WSTRB_slr_0_inner}), - .if_full_n (s_axi_control_WREADY_slr_0_inner), - .if_write (s_axi_control_WVALID_slr_0_inner), - - .if_dout ({s_axi_control_WDATA_slr_0, s_axi_control_WSTRB_slr_0}), - .if_empty_n (s_axi_control_WVALID_slr_0), - .if_read (s_axi_control_WREADY_slr_0) - ); - - - relay_station - #( - .DATA_WIDTH(C_S_AXI_CONTROL_ADDR_WIDTH), - .DEPTH(24), - .ADDR_WIDTH(1), - .LEVEL( 3 ) - ) - AW_pipeline_slr_1 - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din (s_axi_control_AWADDR_slr_1_inner), - .if_full_n (s_axi_control_AWREADY_slr_1_inner), - .if_write (s_axi_control_AWVALID_slr_1_inner), - - .if_dout (s_axi_control_AWADDR_slr_1), - .if_empty_n (s_axi_control_AWVALID_slr_1), - .if_read (s_axi_control_AWREADY_slr_1) - ); - - relay_station - #( - .DATA_WIDTH(C_S_AXI_CONTROL_DATA_WIDTH + C_S_AXI_CONTROL_WSTRB_WIDTH), - .DEPTH(24), - .ADDR_WIDTH(1), - .LEVEL( 3 ) - ) - W_pipeline_slr_1 - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din ({s_axi_control_WDATA_slr_1_inner, s_axi_control_WSTRB_slr_1_inner}), - .if_full_n (s_axi_control_WREADY_slr_1_inner), - .if_write (s_axi_control_WVALID_slr_1_inner), - - .if_dout ({s_axi_control_WDATA_slr_1, s_axi_control_WSTRB_slr_1}), - .if_empty_n (s_axi_control_WVALID_slr_1), - .if_read (s_axi_control_WREADY_slr_1) - ); - - - relay_station - #( - .DATA_WIDTH(C_S_AXI_CONTROL_ADDR_WIDTH), - .DEPTH(24), - .ADDR_WIDTH(1), - .LEVEL( 3 ) - ) - AW_pipeline_slr_2 - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din (s_axi_control_AWADDR_slr_2_inner), - .if_full_n (s_axi_control_AWREADY_slr_2_inner), - .if_write (s_axi_control_AWVALID_slr_2_inner), - - .if_dout (s_axi_control_AWADDR_slr_2), - .if_empty_n (s_axi_control_AWVALID_slr_2), - .if_read (s_axi_control_AWREADY_slr_2) - ); - - relay_station - #( - .DATA_WIDTH(C_S_AXI_CONTROL_DATA_WIDTH + C_S_AXI_CONTROL_WSTRB_WIDTH), - .DEPTH(24), - .ADDR_WIDTH(1), - .LEVEL( 3 ) - ) - W_pipeline_slr_2 - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din ({s_axi_control_WDATA_slr_2_inner, s_axi_control_WSTRB_slr_2_inner}), - .if_full_n (s_axi_control_WREADY_slr_2_inner), - .if_write (s_axi_control_WVALID_slr_2_inner), - - .if_dout ({s_axi_control_WDATA_slr_2, s_axi_control_WSTRB_slr_2}), - .if_empty_n (s_axi_control_WVALID_slr_2), - .if_read (s_axi_control_WREADY_slr_2) - ); - - - relay_station - #( - .DATA_WIDTH(C_S_AXI_CONTROL_ADDR_WIDTH), - .DEPTH(24), - .ADDR_WIDTH(1), - .LEVEL( 3 ) - ) - AW_pipeline_slr_3 - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din (s_axi_control_AWADDR_slr_3_inner), - .if_full_n (s_axi_control_AWREADY_slr_3_inner), - .if_write (s_axi_control_AWVALID_slr_3_inner), - - .if_dout (s_axi_control_AWADDR_slr_3), - .if_empty_n (s_axi_control_AWVALID_slr_3), - .if_read (s_axi_control_AWREADY_slr_3) - ); - - relay_station - #( - .DATA_WIDTH(C_S_AXI_CONTROL_DATA_WIDTH + C_S_AXI_CONTROL_WSTRB_WIDTH), - .DEPTH(24), - .ADDR_WIDTH(1), - .LEVEL( 3 ) - ) - W_pipeline_slr_3 - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din ({s_axi_control_WDATA_slr_3_inner, s_axi_control_WSTRB_slr_3_inner}), - .if_full_n (s_axi_control_WREADY_slr_3_inner), - .if_write (s_axi_control_WVALID_slr_3_inner), - - .if_dout ({s_axi_control_WDATA_slr_3, s_axi_control_WSTRB_slr_3}), - .if_empty_n (s_axi_control_WVALID_slr_3), - .if_read (s_axi_control_WREADY_slr_3) - ); - - - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/arbiter.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/arbiter.v deleted file mode 100644 index cfac70d1..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/arbiter.v +++ /dev/null @@ -1,159 +0,0 @@ -/* - -Copyright (c) 2014-2021 Alex Forencich - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -*/ - -// Language: Verilog 2001 - -`resetall -`timescale 1ns / 1ps -`default_nettype none - -/* - * Arbiter module - */ -module arbiter # -( - parameter PORTS = 4, - // select round robin arbitration - parameter ARB_TYPE_ROUND_ROBIN = 0, - // blocking arbiter enable - parameter ARB_BLOCK = 0, - // block on acknowledge assert when nonzero, request deassert when 0 - parameter ARB_BLOCK_ACK = 1, - // LSB priority selection - parameter ARB_LSB_HIGH_PRIORITY = 0 -) -( - input wire clk, - input wire rst, - - input wire [PORTS-1:0] request, - input wire [PORTS-1:0] acknowledge, - - output wire [PORTS-1:0] grant, - output wire grant_valid, - output wire [$clog2(PORTS)-1:0] grant_encoded -); - -reg [PORTS-1:0] grant_reg = 0, grant_next; -reg grant_valid_reg = 0, grant_valid_next; -reg [$clog2(PORTS)-1:0] grant_encoded_reg = 0, grant_encoded_next; - -assign grant_valid = grant_valid_reg; -assign grant = grant_reg; -assign grant_encoded = grant_encoded_reg; - -wire request_valid; -wire [$clog2(PORTS)-1:0] request_index; -wire [PORTS-1:0] request_mask; - -priority_encoder #( - .WIDTH(PORTS), - .LSB_HIGH_PRIORITY(ARB_LSB_HIGH_PRIORITY) -) -priority_encoder_inst ( - .input_unencoded(request), - .output_valid(request_valid), - .output_encoded(request_index), - .output_unencoded(request_mask) -); - -reg [PORTS-1:0] mask_reg = 0, mask_next; - -wire masked_request_valid; -wire [$clog2(PORTS)-1:0] masked_request_index; -wire [PORTS-1:0] masked_request_mask; - -priority_encoder #( - .WIDTH(PORTS), - .LSB_HIGH_PRIORITY(ARB_LSB_HIGH_PRIORITY) -) -priority_encoder_masked ( - .input_unencoded(request & mask_reg), - .output_valid(masked_request_valid), - .output_encoded(masked_request_index), - .output_unencoded(masked_request_mask) -); - -always @* begin - grant_next = 0; - grant_valid_next = 0; - grant_encoded_next = 0; - mask_next = mask_reg; - - if (ARB_BLOCK && !ARB_BLOCK_ACK && grant_reg & request) begin - // granted request still asserted; hold it - grant_valid_next = grant_valid_reg; - grant_next = grant_reg; - grant_encoded_next = grant_encoded_reg; - end else if (ARB_BLOCK && ARB_BLOCK_ACK && grant_valid && !(grant_reg & acknowledge)) begin - // granted request not yet acknowledged; hold it - grant_valid_next = grant_valid_reg; - grant_next = grant_reg; - grant_encoded_next = grant_encoded_reg; - end else if (request_valid) begin - if (ARB_TYPE_ROUND_ROBIN) begin - if (masked_request_valid) begin - grant_valid_next = 1; - grant_next = masked_request_mask; - grant_encoded_next = masked_request_index; - if (ARB_LSB_HIGH_PRIORITY) begin - mask_next = {PORTS{1'b1}} << (masked_request_index + 1); - end else begin - mask_next = {PORTS{1'b1}} >> (PORTS - masked_request_index); - end - end else begin - grant_valid_next = 1; - grant_next = request_mask; - grant_encoded_next = request_index; - if (ARB_LSB_HIGH_PRIORITY) begin - mask_next = {PORTS{1'b1}} << (request_index + 1); - end else begin - mask_next = {PORTS{1'b1}} >> (PORTS - request_index); - end - end - end else begin - grant_valid_next = 1; - grant_next = request_mask; - grant_encoded_next = request_index; - end - end -end - -always @(posedge clk) begin - if (rst) begin - grant_reg <= 0; - grant_valid_reg <= 0; - grant_encoded_reg <= 0; - mask_reg <= 0; - end else begin - grant_reg <= grant_next; - grant_valid_reg <= grant_valid_next; - grant_encoded_reg <= grant_encoded_next; - mask_reg <= mask_next; - end -end - -endmodule - -`resetall diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/async_mmap.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/async_mmap.v deleted file mode 100644 index af1c6118..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/async_mmap.v +++ /dev/null @@ -1,524 +0,0 @@ -`default_nettype none - -module async_mmap #( - parameter BufferSize = 32, - parameter BufferSizeLog = 5, - parameter AddrWidth = 64, - parameter AxiSideAddrWidth = 64, - parameter DataWidth = 512, - parameter DataWidthBytesLog = 6, // must equal log2(DataWidth/8) - parameter WaitTimeWidth = 4, - parameter BurstLenWidth = 8, - // implement the FIFOs for the read channel - // if set to 0: disconnect the data link - parameter EnableReadChannel = 1, - parameter EnableWriteChannel= 1, - // for burst inference - parameter MaxWaitTime = 3, - parameter MaxBurstLen = 15 -) ( - (* RS_CLK *) input wire clk, - (* RS_RST *) input wire rst, // active high - - // base address for the memory region - (* RS_FF = "offset" *) input wire [63:0] offset, - - // axi write addr channel - (* RS_HS = "aw.valid" *) output wire m_axi_AWVALID, - (* RS_HS = "aw.ready" *) input wire m_axi_AWREADY, - (* RS_HS = "aw.data" *) output wire [AxiSideAddrWidth-1:0] m_axi_AWADDR, - (* RS_HS = "aw.data" *) output wire [0:0] m_axi_AWID, - (* RS_HS = "aw.data" *) output wire [7:0] m_axi_AWLEN, - (* RS_HS = "aw.data" *) output wire [2:0] m_axi_AWSIZE, - (* RS_HS = "aw.data" *) output wire [1:0] m_axi_AWBURST, - (* RS_HS = "aw.data" *) output wire [0:0] m_axi_AWLOCK, - (* RS_HS = "aw.data" *) output wire [3:0] m_axi_AWCACHE, - (* RS_HS = "aw.data" *) output wire [2:0] m_axi_AWPROT, - (* RS_HS = "aw.data" *) output wire [3:0] m_axi_AWQOS, - - // axi write data channel - (* RS_HS = "w.valid" *) output wire m_axi_WVALID, - (* RS_HS = "w.ready" *) input wire m_axi_WREADY, - (* RS_HS = "w.data" *) output wire [DataWidth-1:0] m_axi_WDATA, - (* RS_HS = "w.data" *) output wire [DataWidth/8-1:0] m_axi_WSTRB, - (* RS_HS = "w.data" *) output wire m_axi_WLAST, - - // axi write acknowledge channel - (* RS_HS = "b.valid" *) input wire m_axi_BVALID, - (* RS_HS = "b.ready" *) output wire m_axi_BREADY, - (* RS_HS = "b.data" *) input wire [1:0] m_axi_BRESP, - (* RS_HS = "b.data" *) input wire [0:0] m_axi_BID, - - // axi read addr channel - (* RS_HS = "ar.valid" *) output wire m_axi_ARVALID, - (* RS_HS = "ar.ready" *) input wire m_axi_ARREADY, - (* RS_HS = "ar.data" *) output wire [AxiSideAddrWidth-1:0] m_axi_ARADDR, - (* RS_HS = "ar.data" *) output wire [0:0] m_axi_ARID, - (* RS_HS = "ar.data" *) output wire [7:0] m_axi_ARLEN, - (* RS_HS = "ar.data" *) output wire [2:0] m_axi_ARSIZE, - (* RS_HS = "ar.data" *) output wire [1:0] m_axi_ARBURST, - (* RS_HS = "ar.data" *) output wire [0:0] m_axi_ARLOCK, - (* RS_HS = "ar.data" *) output wire [3:0] m_axi_ARCACHE, - (* RS_HS = "ar.data" *) output wire [2:0] m_axi_ARPROT, - (* RS_HS = "ar.data" *) output wire [3:0] m_axi_ARQOS, - - // axi read response channel - (* RS_HS = "r.valid" *) input wire m_axi_RVALID, - (* RS_HS = "r.ready" *) output wire m_axi_RREADY, - (* RS_HS = "r.data" *) input wire [DataWidth-1:0] m_axi_RDATA, - (* RS_HS = "r.data" *) input wire m_axi_RLAST, - (* RS_HS = "r.data" *) input wire [0:0] m_axi_RID, - (* RS_HS = "r.data" *) input wire [1:0] m_axi_RRESP, - - - // push read addr here - (* RS_HS = "read_addr.data" *) input wire [AddrWidth-1:0] read_addr_din, - (* RS_HS = "read_addr.valid" *) input wire read_addr_write, - (* RS_HS = "read_addr.ready" *) output wire read_addr_full_n, - - // pop read resp here - (* RS_HS = "read_data.data" *) output wire [DataWidth-1:0] read_data_dout, - (* RS_HS = "read_data.ready" *) input wire read_data_read, - (* RS_HS = "read_data.valid" *) output wire read_data_empty_n, - - // push write addr and data here - (* RS_HS = "write_addr.data" *) input wire [AddrWidth-1:0] write_addr_din, - (* RS_HS = "write_addr.valid" *) input wire write_addr_write, - (* RS_HS = "write_addr.ready" *) output wire write_addr_full_n, - (* RS_HS = "write_data.data" *) input wire [DataWidth-1:0] write_data_din, - (* RS_HS = "write_data.valid" *) input wire write_data_write, - (* RS_HS = "write_data.ready" *) output wire write_data_full_n, - - // pop write resp here - (* RS_HS = "write_resp.data" *) output wire [7:0] write_resp_dout, - (* RS_HS = "write_resp.ready" *) input wire write_resp_read, - (* RS_HS = "write_resp.valid" *) output wire write_resp_empty_n -); - - // write addr buffer, from user to burst detector - wire [AddrWidth-1:0] write_addr_dout; - wire write_addr_empty_n; - wire write_addr_read; - - relay_station #( - .DATA_WIDTH(AddrWidth), - .ADDR_WIDTH(BufferSizeLog), - .DEPTH (BufferSize), - .LEVEL (1), - .CONNECT (EnableWriteChannel) - ) write_addr ( - .clk (clk), - .reset(rst), - - // from user - .if_full_n (write_addr_full_n), - .if_write_ce(1'b1), - .if_write (write_addr_write), - .if_din (offset + (write_addr_din << $clog2(DataWidth/8))), - - // to burst detector - .if_empty_n(write_addr_empty_n), - .if_read_ce(1'b1), - .if_read (write_addr_read), - .if_dout (write_addr_dout) - ); - - // burst write addr buffer, from burst detector to axi - wire [BurstLenWidth+AddrWidth-1:0] burst_write_addr_din; - wire burst_write_addr_full_n; - wire burst_write_addr_write; - wire [AddrWidth-1:0] burst_write_addr_dout_addr; - wire [BurstLenWidth-1:0] burst_write_addr_dout_burst_len; - wire burst_write_addr_empty_n; - wire burst_write_addr_read; - - wire [BurstLenWidth-1:0] burst_write_len_din; - wire burst_write_len_full_n; - wire burst_write_len_write; - wire [BurstLenWidth-1:0] burst_write_len_dout; - wire burst_write_len_empty_n; - wire burst_write_len_read; - - wire [BurstLenWidth-1:0] write_req_din; - wire write_req_write; - wire write_req_full_n; - wire [BurstLenWidth-1:0] write_req_dout; - wire write_req_read; - wire write_req_empty_n; - - wire burst_write_last_din; - wire burst_write_last_full_n; - wire burst_write_last_write; - wire burst_write_last_dout; - wire burst_write_last_empty_n; - - detect_burst #( - .AddrWidth (AddrWidth), - .DataWidthBytesLog(DataWidthBytesLog), - .WaitTimeWidth (WaitTimeWidth), - .BurstLenWidth (BurstLenWidth) - ) detect_burst_write ( - .clk(clk), - .rst(rst), - - .max_wait_time(MaxWaitTime[WaitTimeWidth-1:0]), - .max_burst_len(MaxBurstLen[BurstLenWidth-1:0]), - - // input: individual addresses - .addr_dout (write_addr_dout), - .addr_empty_n(write_addr_empty_n), - .addr_read (write_addr_read), - - // output: inferred burst addresses - .addr_din (burst_write_addr_din), - .addr_full_n(burst_write_addr_full_n), - .addr_write (burst_write_addr_write), - - // output: used to generate the "last" signals - .burst_len_0_din (burst_write_len_din), - .burst_len_0_full_n(burst_write_len_full_n), - .burst_len_0_write (burst_write_len_write), - - // output: used to generate write responses - .burst_len_1_din (write_req_din), - .burst_len_1_full_n(write_req_full_n), - .burst_len_1_write (write_req_write) - ); - - relay_station #( - .DATA_WIDTH(BurstLenWidth + AddrWidth), - .ADDR_WIDTH(BufferSizeLog), - .DEPTH (BufferSize), - .LEVEL (1), - .CONNECT (EnableWriteChannel) - ) burst_write_addr ( - .clk (clk), - .reset(rst), - - // from burst detector - .if_full_n (burst_write_addr_full_n), - .if_write_ce(1'b1), - .if_write (burst_write_addr_write), - .if_din (burst_write_addr_din), - - // to axi - .if_empty_n(burst_write_addr_empty_n), - .if_read_ce(1'b1), - .if_read (burst_write_addr_read), - .if_dout ({burst_write_addr_dout_burst_len, burst_write_addr_dout_addr}) - ); - - relay_station #( - .DATA_WIDTH(BurstLenWidth), - .ADDR_WIDTH(BufferSizeLog), - .DEPTH (BufferSize), - .LEVEL (1), - .CONNECT (EnableWriteChannel) - ) burst_write_len ( - .clk (clk), - .reset(rst), - - // from burst detector - .if_full_n (burst_write_len_full_n), - .if_write_ce(1'b1), - .if_write (burst_write_len_write), - .if_din (burst_write_len_din), - - // to last generator - .if_empty_n(burst_write_len_empty_n), - .if_read_ce(1'b1), - .if_read (burst_write_len_read), - .if_dout (burst_write_len_dout) - ); - - // generate last signal for W channel - generate_last #( - .BurstLenWidth(BurstLenWidth) - ) generate_last_unit( - .clk(clk), - .rst(rst), - - .burst_len_dout (burst_write_len_dout), - .burst_len_empty_n(burst_write_len_empty_n), - .burst_len_read (burst_write_len_read), - - .last_din (burst_write_last_din), - .last_full_n(burst_write_last_full_n), - .last_write (burst_write_last_write) - ); - - // write req buffer that remembers the burst length of each write transaction - relay_station #( - .DATA_WIDTH(BurstLenWidth), - .ADDR_WIDTH(BufferSizeLog), - .DEPTH (BufferSize), - .LEVEL (1), - .CONNECT (EnableWriteChannel) - ) write_req ( - .clk (clk), - .reset(rst), - - // from burst detector - .if_full_n (write_req_full_n), - .if_write_ce(1'b1), - .if_write (write_req_write), - .if_din (write_req_din), - - // to write resp buffer - .if_empty_n(write_req_empty_n), - .if_read_ce(1'b1), - .if_read (write_req_read), - .if_dout (write_req_dout) - ); - - // this relay_station should be synchronized with the wr_data relay_station - relay_station #( - .DATA_WIDTH(1), - .ADDR_WIDTH(BufferSizeLog), - .DEPTH (BufferSize), - .LEVEL (1), - .CONNECT (EnableWriteChannel) - ) burst_write_last ( - .clk (clk), - .reset(rst), - - // from burst detector - .if_full_n (burst_write_last_full_n), - .if_write_ce(1'b1), - .if_write (burst_write_last_write), - .if_din (burst_write_last_din), - - // to axi - .if_empty_n(burst_write_last_empty_n), - .if_read_ce(1'b1), - // deal with when last-relay_station is non-empty while data-relay_station is empty - .if_read (m_axi_WREADY && write_data_empty_n), - .if_dout (burst_write_last_dout) - ); - - // write data buffer - wire [DataWidth-1:0] write_data_dout; - wire write_data_empty_n; - relay_station #( - .DATA_WIDTH(DataWidth), - .ADDR_WIDTH(BufferSizeLog), - .DEPTH (BufferSize), - .LEVEL (1), - .CONNECT (EnableWriteChannel) - ) write_data ( - .clk (clk), - .reset(rst), - - // from user - .if_full_n (write_data_full_n), - .if_write_ce(1'b1), - .if_write (write_data_write), - .if_din (write_data_din), - - // to axi - .if_empty_n(write_data_empty_n), - .if_read_ce(1'b1), - // deal with when data-relay_station is non empty but last-relay_station is empty - .if_read (m_axi_WREADY && burst_write_last_empty_n), - .if_dout (write_data_dout) - ); - - // write resp buffer - wire [BurstLenWidth-1:0] write_resp_din = write_req_dout; - wire write_resp_write = m_axi_BVALID && write_req_empty_n; - wire write_resp_full_n; - relay_station #( - .DATA_WIDTH(BurstLenWidth), - .ADDR_WIDTH(BufferSizeLog), - .DEPTH (BufferSize), - .LEVEL (1), - .CONNECT (EnableWriteChannel) - ) write_resp ( - .clk (clk), - .reset(rst), - - // from write req buffer and axi - .if_full_n (write_resp_full_n), - .if_write_ce(1'b1), - .if_write (write_resp_write), - .if_din (write_resp_din), - - // to user - .if_empty_n(write_resp_empty_n), - .if_read_ce(1'b1), - .if_read (write_resp_read), - .if_dout (write_resp_dout) - ); - - // AW channel - assign burst_write_addr_read = m_axi_AWREADY; - assign m_axi_AWVALID = burst_write_addr_empty_n; - assign m_axi_AWADDR = {{(AxiSideAddrWidth - AddrWidth){1'b0}}, burst_write_addr_dout_addr}; - assign m_axi_AWID = 0; - assign m_axi_AWLEN = burst_write_addr_dout_burst_len; - assign m_axi_AWSIZE = DataWidthBytesLog; - assign m_axi_AWBURST = 1; // INCR mode - assign m_axi_AWLOCK = 0; // Xilinx only supports 0 - assign m_axi_AWCACHE = 4'b0011; // Xilinx only supports 4'b0011 - assign m_axi_AWPROT = 0; - assign m_axi_AWQOS = 0; - - // W channel - assign m_axi_WVALID = write_data_empty_n && burst_write_last_empty_n; - assign m_axi_WDATA = write_data_dout; - assign m_axi_WSTRB = {(DataWidth/8){1'b1}}; // assume every bit is valid - assign m_axi_WLAST = burst_write_last_dout; - - // B channel - assign m_axi_BREADY = write_resp_full_n && write_req_empty_n; - assign write_req_read = write_resp_full_n && m_axi_BVALID; - - // read addr buffer, from user to burst detector - wire [AddrWidth-1:0] read_addr_dout; - wire read_addr_empty_n; - wire read_addr_read; - - relay_station #( - .DATA_WIDTH(AddrWidth), - .ADDR_WIDTH(BufferSizeLog), - .DEPTH (BufferSize), - .LEVEL (1), - .CONNECT (EnableReadChannel) - ) read_addr ( - .clk (clk), - .reset(rst), - - // from user - .if_full_n (read_addr_full_n), - .if_write_ce(1'b1), - .if_write (read_addr_write), - .if_din (offset + (read_addr_din << $clog2(DataWidth/8))), - - // to axi - .if_empty_n(read_addr_empty_n), - .if_read_ce(1'b1), - .if_read (read_addr_read), - .if_dout (read_addr_dout) - ); - - wire [BurstLenWidth+AddrWidth-1:0] burst_read_addr_din; - wire burst_read_addr_full_n; - wire burst_read_addr_write; - wire [AddrWidth-1:0] burst_read_addr_dout_addr; - wire [BurstLenWidth-1:0] burst_read_addr_dout_burst_len; - wire burst_read_addr_empty_n; - wire burst_read_addr_read; - - relay_station #( - .DATA_WIDTH(BurstLenWidth + AddrWidth), - .ADDR_WIDTH(BufferSizeLog), - .DEPTH (BufferSize), - .LEVEL (1), - .CONNECT (EnableReadChannel) - ) burst_read_addr ( - .clk (clk), - .reset(rst), - - // from burst detector - .if_full_n (burst_read_addr_full_n), - .if_write_ce(1'b1), - .if_write (burst_read_addr_write), - .if_din (burst_read_addr_din), - - // to axi - .if_empty_n(burst_read_addr_empty_n), - .if_read_ce(1'b1), - .if_read (burst_read_addr_read), - .if_dout ({burst_read_addr_dout_burst_len, burst_read_addr_dout_addr}) - ); - - detect_burst #( - .AddrWidth (AddrWidth), - .DataWidthBytesLog(DataWidthBytesLog), - .WaitTimeWidth (WaitTimeWidth), - .BurstLenWidth (BurstLenWidth) - ) detect_burst_read ( - .clk(clk), - .rst(rst), - - .max_wait_time(MaxWaitTime[WaitTimeWidth-1:0]), - .max_burst_len(MaxBurstLen[BurstLenWidth-1:0]), - - // input: individual addresses - .addr_dout (read_addr_dout), - .addr_empty_n(read_addr_empty_n), - .addr_read (read_addr_read), - - // output: inferred burst addresses - .addr_din (burst_read_addr_din), - .addr_full_n(burst_read_addr_full_n), - .addr_write (burst_read_addr_write), - - // output: used to generate the "last" signals, unused - .burst_len_0_din (), - .burst_len_0_full_n(1'b1), - .burst_len_0_write (), - - // output: used to generate write responses, unused - .burst_len_1_din (), - .burst_len_1_full_n(1'b1), - .burst_len_1_write () - ); - - // read resp buffer - wire [DataWidth-1:0] read_data_din; - wire read_data_write; - wire read_data_full_n; - relay_station #( - .DATA_WIDTH(DataWidth), - .ADDR_WIDTH(BufferSizeLog), - .DEPTH (BufferSize), - .LEVEL (1), - .CONNECT (EnableReadChannel) - ) read_data ( - .clk (clk), - .reset(rst), - - // from axi - .if_full_n (read_data_full_n), - .if_write_ce(1'b1), - .if_write (read_data_write), - .if_din (read_data_din), - - // to user - .if_empty_n(read_data_empty_n), - .if_read_ce(1'b1), - .if_read (read_data_read), - .if_dout (read_data_dout) - ); - - // AR channel - assign burst_read_addr_read = m_axi_ARREADY; - assign m_axi_ARVALID = burst_read_addr_empty_n; - assign m_axi_ARADDR = {{(AxiSideAddrWidth - AddrWidth){1'b0}}, burst_read_addr_dout_addr}; - assign m_axi_ARID = 0; - assign m_axi_ARLEN = burst_read_addr_dout_burst_len; - assign m_axi_ARSIZE = DataWidthBytesLog; - assign m_axi_ARBURST = 1; // INCR mode - assign m_axi_ARLOCK = 0; // Xilinx only supports 0 - assign m_axi_ARCACHE = 4'b0011; // Xilinx only supports 4'b0011 - assign m_axi_ARPROT = 0; - assign m_axi_ARQOS = 0; - - // R channel - assign m_axi_RREADY = read_data_full_n; - assign read_data_write = m_axi_RVALID; - assign read_data_din = m_axi_RDATA; - - // unused input signals - wire _unused = &{1'b0, - m_axi_BRESP, - m_axi_BID, - m_axi_RLAST, - m_axi_RID, - m_axi_RRESP, - 1'b0}; - -endmodule // async_mmap - -`default_nettype wire diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar.v deleted file mode 100644 index 991d4540..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar.v +++ /dev/null @@ -1,391 +0,0 @@ -/* - -Copyright (c) 2018 Alex Forencich - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -*/ - -// Language: Verilog 2001 - -`resetall -`timescale 1ns / 1ps -`default_nettype none - -/* - * AXI4 crossbar - */ -module axi_crossbar # -( - // Number of AXI inputs (slave interfaces) - parameter S_COUNT = 4, - // Number of AXI outputs (master interfaces) - parameter M_COUNT = 4, - // Width of data bus in bits - parameter DATA_WIDTH = 32, - // Width of address bus in bits - parameter ADDR_WIDTH = 32, - // Width of wstrb (width of data bus in words) - parameter STRB_WIDTH = (DATA_WIDTH/8), - // Input ID field width (from AXI masters) - parameter S_ID_WIDTH = 8, - // Output ID field width (towards AXI slaves) - // Additional bits required for response routing - parameter M_ID_WIDTH = S_ID_WIDTH+$clog2(S_COUNT), - // Propagate awuser signal - parameter AWUSER_ENABLE = 0, - // Width of awuser signal - parameter AWUSER_WIDTH = 1, - // Propagate wuser signal - parameter WUSER_ENABLE = 0, - // Width of wuser signal - parameter WUSER_WIDTH = 1, - // Propagate buser signal - parameter BUSER_ENABLE = 0, - // Width of buser signal - parameter BUSER_WIDTH = 1, - // Propagate aruser signal - parameter ARUSER_ENABLE = 0, - // Width of aruser signal - parameter ARUSER_WIDTH = 1, - // Propagate ruser signal - parameter RUSER_ENABLE = 0, - // Width of ruser signal - parameter RUSER_WIDTH = 1, - // Number of concurrent unique IDs for each slave interface - // S_COUNT concatenated fields of 32 bits - parameter S_THREADS = {S_COUNT{32'd2}}, - // Number of concurrent operations for each slave interface - // S_COUNT concatenated fields of 32 bits - parameter S_ACCEPT = {S_COUNT{32'd16}}, - // Number of regions per master interface - parameter M_REGIONS = 1, - // Master interface base addresses - // M_COUNT concatenated fields of M_REGIONS concatenated fields of ADDR_WIDTH bits - // set to zero for default addressing based on M_ADDR_WIDTH - parameter M_BASE_ADDR = 0, - // Master interface address widths - // M_COUNT concatenated fields of M_REGIONS concatenated fields of 32 bits - parameter M_ADDR_WIDTH = {M_COUNT{{M_REGIONS{32'd24}}}}, - // Read connections between interfaces - // M_COUNT concatenated fields of S_COUNT bits - parameter M_CONNECT_READ = {M_COUNT{{S_COUNT{1'b1}}}}, - // Write connections between interfaces - // M_COUNT concatenated fields of S_COUNT bits - parameter M_CONNECT_WRITE = {M_COUNT{{S_COUNT{1'b1}}}}, - // Number of concurrent operations for each master interface - // M_COUNT concatenated fields of 32 bits - parameter M_ISSUE = {M_COUNT{32'd4}}, - // Secure master (fail operations based on awprot/arprot) - // M_COUNT bits - parameter M_SECURE = {M_COUNT{1'b0}}, - // Slave interface AW channel register type (input) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter S_AW_REG_TYPE = {S_COUNT{2'd0}}, - // Slave interface W channel register type (input) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter S_W_REG_TYPE = {S_COUNT{2'd0}}, - // Slave interface B channel register type (output) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter S_B_REG_TYPE = {S_COUNT{2'd1}}, - // Slave interface AR channel register type (input) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter S_AR_REG_TYPE = {S_COUNT{2'd0}}, - // Slave interface R channel register type (output) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter S_R_REG_TYPE = {S_COUNT{2'd2}}, - // Master interface AW channel register type (output) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter M_AW_REG_TYPE = {M_COUNT{2'd1}}, - // Master interface W channel register type (output) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter M_W_REG_TYPE = {M_COUNT{2'd2}}, - // Master interface B channel register type (input) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter M_B_REG_TYPE = {M_COUNT{2'd0}}, - // Master interface AR channel register type (output) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter M_AR_REG_TYPE = {M_COUNT{2'd1}}, - // Master interface R channel register type (input) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter M_R_REG_TYPE = {M_COUNT{2'd0}} -) -( - input wire clk, - input wire rst, - - /* - * AXI slave interfaces - */ - input wire [S_COUNT*S_ID_WIDTH-1:0] s_axi_awid, - input wire [S_COUNT*ADDR_WIDTH-1:0] s_axi_awaddr, - input wire [S_COUNT*8-1:0] s_axi_awlen, - input wire [S_COUNT*3-1:0] s_axi_awsize, - input wire [S_COUNT*2-1:0] s_axi_awburst, - input wire [S_COUNT-1:0] s_axi_awlock, - input wire [S_COUNT*4-1:0] s_axi_awcache, - input wire [S_COUNT*3-1:0] s_axi_awprot, - input wire [S_COUNT*4-1:0] s_axi_awqos, - input wire [S_COUNT*AWUSER_WIDTH-1:0] s_axi_awuser, - input wire [S_COUNT-1:0] s_axi_awvalid, - output wire [S_COUNT-1:0] s_axi_awready, - input wire [S_COUNT*DATA_WIDTH-1:0] s_axi_wdata, - input wire [S_COUNT*STRB_WIDTH-1:0] s_axi_wstrb, - input wire [S_COUNT-1:0] s_axi_wlast, - input wire [S_COUNT*WUSER_WIDTH-1:0] s_axi_wuser, - input wire [S_COUNT-1:0] s_axi_wvalid, - output wire [S_COUNT-1:0] s_axi_wready, - output wire [S_COUNT*S_ID_WIDTH-1:0] s_axi_bid, - output wire [S_COUNT*2-1:0] s_axi_bresp, - output wire [S_COUNT*BUSER_WIDTH-1:0] s_axi_buser, - output wire [S_COUNT-1:0] s_axi_bvalid, - input wire [S_COUNT-1:0] s_axi_bready, - input wire [S_COUNT*S_ID_WIDTH-1:0] s_axi_arid, - input wire [S_COUNT*ADDR_WIDTH-1:0] s_axi_araddr, - input wire [S_COUNT*8-1:0] s_axi_arlen, - input wire [S_COUNT*3-1:0] s_axi_arsize, - input wire [S_COUNT*2-1:0] s_axi_arburst, - input wire [S_COUNT-1:0] s_axi_arlock, - input wire [S_COUNT*4-1:0] s_axi_arcache, - input wire [S_COUNT*3-1:0] s_axi_arprot, - input wire [S_COUNT*4-1:0] s_axi_arqos, - input wire [S_COUNT*ARUSER_WIDTH-1:0] s_axi_aruser, - input wire [S_COUNT-1:0] s_axi_arvalid, - output wire [S_COUNT-1:0] s_axi_arready, - output wire [S_COUNT*S_ID_WIDTH-1:0] s_axi_rid, - output wire [S_COUNT*DATA_WIDTH-1:0] s_axi_rdata, - output wire [S_COUNT*2-1:0] s_axi_rresp, - output wire [S_COUNT-1:0] s_axi_rlast, - output wire [S_COUNT*RUSER_WIDTH-1:0] s_axi_ruser, - output wire [S_COUNT-1:0] s_axi_rvalid, - input wire [S_COUNT-1:0] s_axi_rready, - - /* - * AXI master interfaces - */ - output wire [M_COUNT*M_ID_WIDTH-1:0] m_axi_awid, - output wire [M_COUNT*ADDR_WIDTH-1:0] m_axi_awaddr, - output wire [M_COUNT*8-1:0] m_axi_awlen, - output wire [M_COUNT*3-1:0] m_axi_awsize, - output wire [M_COUNT*2-1:0] m_axi_awburst, - output wire [M_COUNT-1:0] m_axi_awlock, - output wire [M_COUNT*4-1:0] m_axi_awcache, - output wire [M_COUNT*3-1:0] m_axi_awprot, - output wire [M_COUNT*4-1:0] m_axi_awqos, - output wire [M_COUNT*4-1:0] m_axi_awregion, - output wire [M_COUNT*AWUSER_WIDTH-1:0] m_axi_awuser, - output wire [M_COUNT-1:0] m_axi_awvalid, - input wire [M_COUNT-1:0] m_axi_awready, - output wire [M_COUNT*DATA_WIDTH-1:0] m_axi_wdata, - output wire [M_COUNT*STRB_WIDTH-1:0] m_axi_wstrb, - output wire [M_COUNT-1:0] m_axi_wlast, - output wire [M_COUNT*WUSER_WIDTH-1:0] m_axi_wuser, - output wire [M_COUNT-1:0] m_axi_wvalid, - input wire [M_COUNT-1:0] m_axi_wready, - input wire [M_COUNT*M_ID_WIDTH-1:0] m_axi_bid, - input wire [M_COUNT*2-1:0] m_axi_bresp, - input wire [M_COUNT*BUSER_WIDTH-1:0] m_axi_buser, - input wire [M_COUNT-1:0] m_axi_bvalid, - output wire [M_COUNT-1:0] m_axi_bready, - output wire [M_COUNT*M_ID_WIDTH-1:0] m_axi_arid, - output wire [M_COUNT*ADDR_WIDTH-1:0] m_axi_araddr, - output wire [M_COUNT*8-1:0] m_axi_arlen, - output wire [M_COUNT*3-1:0] m_axi_arsize, - output wire [M_COUNT*2-1:0] m_axi_arburst, - output wire [M_COUNT-1:0] m_axi_arlock, - output wire [M_COUNT*4-1:0] m_axi_arcache, - output wire [M_COUNT*3-1:0] m_axi_arprot, - output wire [M_COUNT*4-1:0] m_axi_arqos, - output wire [M_COUNT*4-1:0] m_axi_arregion, - output wire [M_COUNT*ARUSER_WIDTH-1:0] m_axi_aruser, - output wire [M_COUNT-1:0] m_axi_arvalid, - input wire [M_COUNT-1:0] m_axi_arready, - input wire [M_COUNT*M_ID_WIDTH-1:0] m_axi_rid, - input wire [M_COUNT*DATA_WIDTH-1:0] m_axi_rdata, - input wire [M_COUNT*2-1:0] m_axi_rresp, - input wire [M_COUNT-1:0] m_axi_rlast, - input wire [M_COUNT*RUSER_WIDTH-1:0] m_axi_ruser, - input wire [M_COUNT-1:0] m_axi_rvalid, - output wire [M_COUNT-1:0] m_axi_rready -); - -axi_crossbar_wr #( - .S_COUNT(S_COUNT), - .M_COUNT(M_COUNT), - .DATA_WIDTH(DATA_WIDTH), - .ADDR_WIDTH(ADDR_WIDTH), - .STRB_WIDTH(STRB_WIDTH), - .S_ID_WIDTH(S_ID_WIDTH), - .M_ID_WIDTH(M_ID_WIDTH), - .AWUSER_ENABLE(AWUSER_ENABLE), - .AWUSER_WIDTH(AWUSER_WIDTH), - .WUSER_ENABLE(WUSER_ENABLE), - .WUSER_WIDTH(WUSER_WIDTH), - .BUSER_ENABLE(BUSER_ENABLE), - .BUSER_WIDTH(BUSER_WIDTH), - .S_THREADS(S_THREADS), - .S_ACCEPT(S_ACCEPT), - .M_REGIONS(M_REGIONS), - .M_BASE_ADDR(M_BASE_ADDR), - .M_ADDR_WIDTH(M_ADDR_WIDTH), - .M_CONNECT(M_CONNECT_WRITE), - .M_ISSUE(M_ISSUE), - .M_SECURE(M_SECURE), - .S_AW_REG_TYPE(S_AW_REG_TYPE), - .S_W_REG_TYPE (S_W_REG_TYPE), - .S_B_REG_TYPE (S_B_REG_TYPE) -) -axi_crossbar_wr_inst ( - .clk(clk), - .rst(rst), - - /* - * AXI slave interfaces - */ - .s_axi_awid(s_axi_awid), - .s_axi_awaddr(s_axi_awaddr), - .s_axi_awlen(s_axi_awlen), - .s_axi_awsize(s_axi_awsize), - .s_axi_awburst(s_axi_awburst), - .s_axi_awlock(s_axi_awlock), - .s_axi_awcache(s_axi_awcache), - .s_axi_awprot(s_axi_awprot), - .s_axi_awqos(s_axi_awqos), - .s_axi_awuser(s_axi_awuser), - .s_axi_awvalid(s_axi_awvalid), - .s_axi_awready(s_axi_awready), - .s_axi_wdata(s_axi_wdata), - .s_axi_wstrb(s_axi_wstrb), - .s_axi_wlast(s_axi_wlast), - .s_axi_wuser(s_axi_wuser), - .s_axi_wvalid(s_axi_wvalid), - .s_axi_wready(s_axi_wready), - .s_axi_bid(s_axi_bid), - .s_axi_bresp(s_axi_bresp), - .s_axi_buser(s_axi_buser), - .s_axi_bvalid(s_axi_bvalid), - .s_axi_bready(s_axi_bready), - - /* - * AXI master interfaces - */ - .m_axi_awid(m_axi_awid), - .m_axi_awaddr(m_axi_awaddr), - .m_axi_awlen(m_axi_awlen), - .m_axi_awsize(m_axi_awsize), - .m_axi_awburst(m_axi_awburst), - .m_axi_awlock(m_axi_awlock), - .m_axi_awcache(m_axi_awcache), - .m_axi_awprot(m_axi_awprot), - .m_axi_awqos(m_axi_awqos), - .m_axi_awregion(m_axi_awregion), - .m_axi_awuser(m_axi_awuser), - .m_axi_awvalid(m_axi_awvalid), - .m_axi_awready(m_axi_awready), - .m_axi_wdata(m_axi_wdata), - .m_axi_wstrb(m_axi_wstrb), - .m_axi_wlast(m_axi_wlast), - .m_axi_wuser(m_axi_wuser), - .m_axi_wvalid(m_axi_wvalid), - .m_axi_wready(m_axi_wready), - .m_axi_bid(m_axi_bid), - .m_axi_bresp(m_axi_bresp), - .m_axi_buser(m_axi_buser), - .m_axi_bvalid(m_axi_bvalid), - .m_axi_bready(m_axi_bready) -); - -axi_crossbar_rd #( - .S_COUNT(S_COUNT), - .M_COUNT(M_COUNT), - .DATA_WIDTH(DATA_WIDTH), - .ADDR_WIDTH(ADDR_WIDTH), - .STRB_WIDTH(STRB_WIDTH), - .S_ID_WIDTH(S_ID_WIDTH), - .M_ID_WIDTH(M_ID_WIDTH), - .ARUSER_ENABLE(ARUSER_ENABLE), - .ARUSER_WIDTH(ARUSER_WIDTH), - .RUSER_ENABLE(RUSER_ENABLE), - .RUSER_WIDTH(RUSER_WIDTH), - .S_THREADS(S_THREADS), - .S_ACCEPT(S_ACCEPT), - .M_REGIONS(M_REGIONS), - .M_BASE_ADDR(M_BASE_ADDR), - .M_ADDR_WIDTH(M_ADDR_WIDTH), - .M_CONNECT(M_CONNECT_READ), - .M_ISSUE(M_ISSUE), - .M_SECURE(M_SECURE), - .S_AR_REG_TYPE(S_AR_REG_TYPE), - .S_R_REG_TYPE (S_R_REG_TYPE) -) -axi_crossbar_rd_inst ( - .clk(clk), - .rst(rst), - - /* - * AXI slave interfaces - */ - .s_axi_arid(s_axi_arid), - .s_axi_araddr(s_axi_araddr), - .s_axi_arlen(s_axi_arlen), - .s_axi_arsize(s_axi_arsize), - .s_axi_arburst(s_axi_arburst), - .s_axi_arlock(s_axi_arlock), - .s_axi_arcache(s_axi_arcache), - .s_axi_arprot(s_axi_arprot), - .s_axi_arqos(s_axi_arqos), - .s_axi_aruser(s_axi_aruser), - .s_axi_arvalid(s_axi_arvalid), - .s_axi_arready(s_axi_arready), - .s_axi_rid(s_axi_rid), - .s_axi_rdata(s_axi_rdata), - .s_axi_rresp(s_axi_rresp), - .s_axi_rlast(s_axi_rlast), - .s_axi_ruser(s_axi_ruser), - .s_axi_rvalid(s_axi_rvalid), - .s_axi_rready(s_axi_rready), - - /* - * AXI master interfaces - */ - .m_axi_arid(m_axi_arid), - .m_axi_araddr(m_axi_araddr), - .m_axi_arlen(m_axi_arlen), - .m_axi_arsize(m_axi_arsize), - .m_axi_arburst(m_axi_arburst), - .m_axi_arlock(m_axi_arlock), - .m_axi_arcache(m_axi_arcache), - .m_axi_arprot(m_axi_arprot), - .m_axi_arqos(m_axi_arqos), - .m_axi_arregion(m_axi_arregion), - .m_axi_aruser(m_axi_aruser), - .m_axi_arvalid(m_axi_arvalid), - .m_axi_arready(m_axi_arready), - .m_axi_rid(m_axi_rid), - .m_axi_rdata(m_axi_rdata), - .m_axi_rresp(m_axi_rresp), - .m_axi_rlast(m_axi_rlast), - .m_axi_ruser(m_axi_ruser), - .m_axi_rvalid(m_axi_rvalid), - .m_axi_rready(m_axi_rready) -); - -endmodule - -`resetall diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar_addr.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar_addr.v deleted file mode 100644 index 7b784652..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar_addr.v +++ /dev/null @@ -1,418 +0,0 @@ -/* - -Copyright (c) 2018 Alex Forencich - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -*/ - -// Language: Verilog 2001 - -`resetall -`timescale 1ns / 1ps -`default_nettype none - -/* - * AXI4 crossbar address decode and admission control - */ -module axi_crossbar_addr # -( - // Slave interface index - parameter S = 0, - // Number of AXI inputs (slave interfaces) - parameter S_COUNT = 4, - // Number of AXI outputs (master interfaces) - parameter M_COUNT = 4, - // Width of address bus in bits - parameter ADDR_WIDTH = 32, - // ID field width - parameter ID_WIDTH = 8, - // Number of concurrent unique IDs - parameter S_THREADS = 32'd2, - // Number of concurrent operations - parameter S_ACCEPT = 32'd16, - // Number of regions per master interface - parameter M_REGIONS = 1, - // Master interface base addresses - // M_COUNT concatenated fields of M_REGIONS concatenated fields of ADDR_WIDTH bits - // set to zero for default addressing based on M_ADDR_WIDTH - parameter M_BASE_ADDR = 0, - // Master interface address widths - // M_COUNT concatenated fields of M_REGIONS concatenated fields of 32 bits - parameter M_ADDR_WIDTH = {M_COUNT{{M_REGIONS{32'd24}}}}, - // Connections between interfaces - // M_COUNT concatenated fields of S_COUNT bits - parameter M_CONNECT = {M_COUNT{{S_COUNT{1'b1}}}}, - // Secure master (fail operations based on awprot/arprot) - // M_COUNT bits - parameter M_SECURE = {M_COUNT{1'b0}}, - // Enable write command output - parameter WC_OUTPUT = 0 -) -( - input wire clk, - input wire rst, - - /* - * Address input - */ - input wire [ID_WIDTH-1:0] s_axi_aid, - input wire [ADDR_WIDTH-1:0] s_axi_aaddr, - input wire [2:0] s_axi_aprot, - input wire [3:0] s_axi_aqos, - input wire s_axi_avalid, - output wire s_axi_aready, - - /* - * Address output - */ - output wire [3:0] m_axi_aregion, - output wire [$clog2(M_COUNT)-1:0] m_select, - output wire m_axi_avalid, - input wire m_axi_aready, - - /* - * Write command output - */ - output wire [$clog2(M_COUNT)-1:0] m_wc_select, - output wire m_wc_decerr, - output wire m_wc_valid, - input wire m_wc_ready, - - /* - * Reply command output - */ - output wire m_rc_decerr, - output wire m_rc_valid, - input wire m_rc_ready, - - /* - * Completion input - */ - input wire [ID_WIDTH-1:0] s_cpl_id, - input wire s_cpl_valid -); - -parameter CL_S_COUNT = $clog2(S_COUNT); -parameter CL_M_COUNT = $clog2(M_COUNT); - -parameter S_INT_THREADS = S_THREADS > S_ACCEPT ? S_ACCEPT : S_THREADS; -parameter CL_S_INT_THREADS = $clog2(S_INT_THREADS); -parameter CL_S_ACCEPT = $clog2(S_ACCEPT); - -// default address computation -function [M_COUNT*M_REGIONS*ADDR_WIDTH-1:0] calcBaseAddrs(input [31:0] dummy); - integer i; - reg [ADDR_WIDTH-1:0] base; - reg [ADDR_WIDTH-1:0] width; - reg [ADDR_WIDTH-1:0] size; - reg [ADDR_WIDTH-1:0] mask; - begin - calcBaseAddrs = {M_COUNT*M_REGIONS*ADDR_WIDTH{1'b0}}; - base = 0; - for (i = 0; i < M_COUNT*M_REGIONS; i = i + 1) begin - width = M_ADDR_WIDTH[i*32 +: 32]; - mask = {ADDR_WIDTH{1'b1}} >> (ADDR_WIDTH - width); - size = mask + 1; - if (width > 0) begin - if ((base & mask) != 0) begin - base = base + size - (base & mask); // align - end - calcBaseAddrs[i * ADDR_WIDTH +: ADDR_WIDTH] = base; - base = base + size; // increment - end - end - end -endfunction - -parameter M_BASE_ADDR_INT = M_BASE_ADDR ? M_BASE_ADDR : calcBaseAddrs(0); - -integer i, j; - -// check configuration -initial begin - if (S_ACCEPT < 1) begin - $error("Error: need at least 1 accept (instance %m)"); - $finish; - end - - if (S_THREADS < 1) begin - $error("Error: need at least 1 thread (instance %m)"); - $finish; - end - - if (S_THREADS > S_ACCEPT) begin - $warning("Warning: requested thread count larger than accept count; limiting thread count to accept count (instance %m)"); - end - - if (M_REGIONS < 1) begin - $error("Error: need at least 1 region (instance %m)"); - $finish; - end - - for (i = 0; i < M_COUNT*M_REGIONS; i = i + 1) begin - if (M_ADDR_WIDTH[i*32 +: 32] && (M_ADDR_WIDTH[i*32 +: 32] < 12 || M_ADDR_WIDTH[i*32 +: 32] > ADDR_WIDTH)) begin - $error("Error: address width out of range (instance %m)"); - $finish; - end - end - - $display("Addressing configuration for axi_crossbar_addr instance %m"); - for (i = 0; i < M_COUNT*M_REGIONS; i = i + 1) begin - if (M_ADDR_WIDTH[i*32 +: 32]) begin - $display("%2d (%2d): %x / %02d -- %x-%x", - i/M_REGIONS, i%M_REGIONS, - M_BASE_ADDR_INT[i*ADDR_WIDTH +: ADDR_WIDTH], - M_ADDR_WIDTH[i*32 +: 32], - M_BASE_ADDR_INT[i*ADDR_WIDTH +: ADDR_WIDTH] & ({ADDR_WIDTH{1'b1}} << M_ADDR_WIDTH[i*32 +: 32]), - M_BASE_ADDR_INT[i*ADDR_WIDTH +: ADDR_WIDTH] | ({ADDR_WIDTH{1'b1}} >> (ADDR_WIDTH - M_ADDR_WIDTH[i*32 +: 32])) - ); - end - end - - for (i = 0; i < M_COUNT*M_REGIONS; i = i + 1) begin - if ((M_BASE_ADDR_INT[i*ADDR_WIDTH +: ADDR_WIDTH] & (2**M_ADDR_WIDTH[i*32 +: 32]-1)) != 0) begin - $display("Region not aligned:"); - $display("%2d (%2d): %x / %2d -- %x-%x", - i/M_REGIONS, i%M_REGIONS, - M_BASE_ADDR_INT[i*ADDR_WIDTH +: ADDR_WIDTH], - M_ADDR_WIDTH[i*32 +: 32], - M_BASE_ADDR_INT[i*ADDR_WIDTH +: ADDR_WIDTH] & ({ADDR_WIDTH{1'b1}} << M_ADDR_WIDTH[i*32 +: 32]), - M_BASE_ADDR_INT[i*ADDR_WIDTH +: ADDR_WIDTH] | ({ADDR_WIDTH{1'b1}} >> (ADDR_WIDTH - M_ADDR_WIDTH[i*32 +: 32])) - ); - $error("Error: address range not aligned (instance %m)"); - $finish; - end - end - - for (i = 0; i < M_COUNT*M_REGIONS; i = i + 1) begin - for (j = i+1; j < M_COUNT*M_REGIONS; j = j + 1) begin - if (M_ADDR_WIDTH[i*32 +: 32] && M_ADDR_WIDTH[j*32 +: 32]) begin - if (((M_BASE_ADDR_INT[i*ADDR_WIDTH +: ADDR_WIDTH] & ({ADDR_WIDTH{1'b1}} << M_ADDR_WIDTH[i*32 +: 32])) <= (M_BASE_ADDR_INT[j*ADDR_WIDTH +: ADDR_WIDTH] | ({ADDR_WIDTH{1'b1}} >> (ADDR_WIDTH - M_ADDR_WIDTH[j*32 +: 32])))) - && ((M_BASE_ADDR_INT[j*ADDR_WIDTH +: ADDR_WIDTH] & ({ADDR_WIDTH{1'b1}} << M_ADDR_WIDTH[j*32 +: 32])) <= (M_BASE_ADDR_INT[i*ADDR_WIDTH +: ADDR_WIDTH] | ({ADDR_WIDTH{1'b1}} >> (ADDR_WIDTH - M_ADDR_WIDTH[i*32 +: 32]))))) begin - $display("Overlapping regions:"); - $display("%2d (%2d): %x / %2d -- %x-%x", - i/M_REGIONS, i%M_REGIONS, - M_BASE_ADDR_INT[i*ADDR_WIDTH +: ADDR_WIDTH], - M_ADDR_WIDTH[i*32 +: 32], - M_BASE_ADDR_INT[i*ADDR_WIDTH +: ADDR_WIDTH] & ({ADDR_WIDTH{1'b1}} << M_ADDR_WIDTH[i*32 +: 32]), - M_BASE_ADDR_INT[i*ADDR_WIDTH +: ADDR_WIDTH] | ({ADDR_WIDTH{1'b1}} >> (ADDR_WIDTH - M_ADDR_WIDTH[i*32 +: 32])) - ); - $display("%2d (%2d): %x / %2d -- %x-%x", - j/M_REGIONS, j%M_REGIONS, - M_BASE_ADDR_INT[j*ADDR_WIDTH +: ADDR_WIDTH], - M_ADDR_WIDTH[j*32 +: 32], - M_BASE_ADDR_INT[j*ADDR_WIDTH +: ADDR_WIDTH] & ({ADDR_WIDTH{1'b1}} << M_ADDR_WIDTH[j*32 +: 32]), - M_BASE_ADDR_INT[j*ADDR_WIDTH +: ADDR_WIDTH] | ({ADDR_WIDTH{1'b1}} >> (ADDR_WIDTH - M_ADDR_WIDTH[j*32 +: 32])) - ); - $error("Error: address ranges overlap (instance %m)"); - $finish; - end - end - end - end -end - -localparam [2:0] - STATE_IDLE = 3'd0, - STATE_DECODE = 3'd1; - -reg [2:0] state_reg = STATE_IDLE, state_next; - -reg s_axi_aready_reg = 0, s_axi_aready_next; - -reg [3:0] m_axi_aregion_reg = 4'd0, m_axi_aregion_next; -reg [CL_M_COUNT-1:0] m_select_reg = 0, m_select_next; -reg m_axi_avalid_reg = 1'b0, m_axi_avalid_next; -reg m_decerr_reg = 1'b0, m_decerr_next; -reg m_wc_valid_reg = 1'b0, m_wc_valid_next; -reg m_rc_valid_reg = 1'b0, m_rc_valid_next; - -assign s_axi_aready = s_axi_aready_reg; - -assign m_axi_aregion = m_axi_aregion_reg; -assign m_select = m_select_reg; -assign m_axi_avalid = m_axi_avalid_reg; - -assign m_wc_select = m_select_reg; -assign m_wc_decerr = m_decerr_reg; -assign m_wc_valid = m_wc_valid_reg; - -assign m_rc_decerr = m_decerr_reg; -assign m_rc_valid = m_rc_valid_reg; - -reg match; -reg trans_start; -reg trans_complete; - -reg [$clog2(S_ACCEPT+1)-1:0] trans_count_reg = 0; -wire trans_limit = trans_count_reg >= S_ACCEPT && !trans_complete; - -// transfer ID thread tracking -reg [ID_WIDTH-1:0] thread_id_reg[S_INT_THREADS-1:0]; -reg [CL_M_COUNT-1:0] thread_m_reg[S_INT_THREADS-1:0]; -reg [3:0] thread_region_reg[S_INT_THREADS-1:0]; -reg [$clog2(S_ACCEPT+1)-1:0] thread_count_reg[S_INT_THREADS-1:0]; - -wire [S_INT_THREADS-1:0] thread_active; -wire [S_INT_THREADS-1:0] thread_match; -wire [S_INT_THREADS-1:0] thread_match_dest; -wire [S_INT_THREADS-1:0] thread_cpl_match; -wire [S_INT_THREADS-1:0] thread_trans_start; -wire [S_INT_THREADS-1:0] thread_trans_complete; - -generate - genvar n; - - for (n = 0; n < S_INT_THREADS; n = n + 1) begin - initial begin - thread_count_reg[n] <= 0; - end - - assign thread_active[n] = thread_count_reg[n] != 0; - assign thread_match[n] = thread_active[n] && thread_id_reg[n] == s_axi_aid; - assign thread_match_dest[n] = thread_match[n] && thread_m_reg[n] == m_select_next && (M_REGIONS < 2 || thread_region_reg[n] == m_axi_aregion_next); - assign thread_cpl_match[n] = thread_active[n] && thread_id_reg[n] == s_cpl_id; - assign thread_trans_start[n] = (thread_match[n] || (!thread_active[n] && !thread_match && !(thread_trans_start & ({S_INT_THREADS{1'b1}} >> (S_INT_THREADS-n))))) && trans_start; - assign thread_trans_complete[n] = thread_cpl_match[n] && trans_complete; - - always @(posedge clk) begin - if (rst) begin - thread_count_reg[n] <= 0; - end else begin - if (thread_trans_start[n] && !thread_trans_complete[n]) begin - thread_count_reg[n] <= thread_count_reg[n] + 1; - end else if (!thread_trans_start[n] && thread_trans_complete[n]) begin - thread_count_reg[n] <= thread_count_reg[n] - 1; - end - end - - if (thread_trans_start[n]) begin - thread_id_reg[n] <= s_axi_aid; - thread_m_reg[n] <= m_select_next; - thread_region_reg[n] <= m_axi_aregion_next; - end - end - end -endgenerate - -always @* begin - state_next = STATE_IDLE; - - match = 1'b0; - trans_start = 1'b0; - trans_complete = 1'b0; - - s_axi_aready_next = 1'b0; - - m_axi_aregion_next = m_axi_aregion_reg; - m_select_next = m_select_reg; - m_axi_avalid_next = m_axi_avalid_reg && !m_axi_aready; - m_decerr_next = m_decerr_reg; - m_wc_valid_next = m_wc_valid_reg && !m_wc_ready; - m_rc_valid_next = m_rc_valid_reg && !m_rc_ready; - - case (state_reg) - STATE_IDLE: begin - // idle state, store values - s_axi_aready_next = 1'b0; - - if (s_axi_avalid && !s_axi_aready) begin - match = 1'b0; - for (i = 0; i < M_COUNT; i = i + 1) begin - for (j = 0; j < M_REGIONS; j = j + 1) begin - if (M_ADDR_WIDTH[(i*M_REGIONS+j)*32 +: 32] && (!M_SECURE[i] || !s_axi_aprot[1]) && (M_CONNECT & (1 << (S+i*S_COUNT))) && (s_axi_aaddr >> M_ADDR_WIDTH[(i*M_REGIONS+j)*32 +: 32]) == (M_BASE_ADDR_INT[(i*M_REGIONS+j)*ADDR_WIDTH +: ADDR_WIDTH] >> M_ADDR_WIDTH[(i*M_REGIONS+j)*32 +: 32])) begin - m_select_next = i; - m_axi_aregion_next = j; - match = 1'b1; - end - end - end - - if (match) begin - // address decode successful - if (!trans_limit && (thread_match_dest || (!(&thread_active) && !thread_match))) begin - // transaction limit not reached - m_axi_avalid_next = 1'b1; - m_decerr_next = 1'b0; - m_wc_valid_next = WC_OUTPUT; - m_rc_valid_next = 1'b0; - trans_start = 1'b1; - state_next = STATE_DECODE; - end else begin - // transaction limit reached; block in idle - state_next = STATE_IDLE; - end - end else begin - // decode error - m_axi_avalid_next = 1'b0; - m_decerr_next = 1'b1; - m_wc_valid_next = WC_OUTPUT; - m_rc_valid_next = 1'b1; - state_next = STATE_DECODE; - end - end else begin - state_next = STATE_IDLE; - end - end - STATE_DECODE: begin - if (!m_axi_avalid_next && (!m_wc_valid_next || !WC_OUTPUT) && !m_rc_valid_next) begin - s_axi_aready_next = 1'b1; - state_next = STATE_IDLE; - end else begin - state_next = STATE_DECODE; - end - end - endcase - - // manage completions - trans_complete = s_cpl_valid; -end - -always @(posedge clk) begin - if (rst) begin - state_reg <= STATE_IDLE; - s_axi_aready_reg <= 1'b0; - m_axi_avalid_reg <= 1'b0; - m_wc_valid_reg <= 1'b0; - m_rc_valid_reg <= 1'b0; - - trans_count_reg <= 0; - end else begin - state_reg <= state_next; - s_axi_aready_reg <= s_axi_aready_next; - m_axi_avalid_reg <= m_axi_avalid_next; - m_wc_valid_reg <= m_wc_valid_next; - m_rc_valid_reg <= m_rc_valid_next; - - if (trans_start && !trans_complete) begin - trans_count_reg <= trans_count_reg + 1; - end else if (!trans_start && trans_complete) begin - trans_count_reg <= trans_count_reg - 1; - end - end - - m_axi_aregion_reg <= m_axi_aregion_next; - m_select_reg <= m_select_next; - m_decerr_reg <= m_decerr_next; -end - -endmodule - -`resetall diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar_rd.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar_rd.v deleted file mode 100644 index 2b1410ac..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar_rd.v +++ /dev/null @@ -1,569 +0,0 @@ -/* - -Copyright (c) 2018 Alex Forencich - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -*/ - -// Language: Verilog 2001 - -`resetall -`timescale 1ns / 1ps -`default_nettype none - -/* - * AXI4 crossbar (read) - */ -module axi_crossbar_rd # -( - // Number of AXI inputs (slave interfaces) - parameter S_COUNT = 4, - // Number of AXI outputs (master interfaces) - parameter M_COUNT = 4, - // Width of data bus in bits - parameter DATA_WIDTH = 32, - // Width of address bus in bits - parameter ADDR_WIDTH = 32, - // Width of wstrb (width of data bus in words) - parameter STRB_WIDTH = (DATA_WIDTH/8), - // Input ID field width (from AXI masters) - parameter S_ID_WIDTH = 8, - // Output ID field width (towards AXI slaves) - // Additional bits required for response routing - parameter M_ID_WIDTH = S_ID_WIDTH+$clog2(S_COUNT), - // Propagate aruser signal - parameter ARUSER_ENABLE = 0, - // Width of aruser signal - parameter ARUSER_WIDTH = 1, - // Propagate ruser signal - parameter RUSER_ENABLE = 0, - // Width of ruser signal - parameter RUSER_WIDTH = 1, - // Number of concurrent unique IDs for each slave interface - // S_COUNT concatenated fields of 32 bits - parameter S_THREADS = {S_COUNT{32'd2}}, - // Number of concurrent operations for each slave interface - // S_COUNT concatenated fields of 32 bits - parameter S_ACCEPT = {S_COUNT{32'd16}}, - // Number of regions per master interface - parameter M_REGIONS = 1, - // Master interface base addresses - // M_COUNT concatenated fields of M_REGIONS concatenated fields of ADDR_WIDTH bits - // set to zero for default addressing based on M_ADDR_WIDTH - parameter M_BASE_ADDR = 0, - // Master interface address widths - // M_COUNT concatenated fields of M_REGIONS concatenated fields of 32 bits - parameter M_ADDR_WIDTH = {M_COUNT{{M_REGIONS{32'd24}}}}, - // Read connections between interfaces - // M_COUNT concatenated fields of S_COUNT bits - parameter M_CONNECT = {M_COUNT{{S_COUNT{1'b1}}}}, - // Number of concurrent operations for each master interface - // M_COUNT concatenated fields of 32 bits - parameter M_ISSUE = {M_COUNT{32'd4}}, - // Secure master (fail operations based on awprot/arprot) - // M_COUNT bits - parameter M_SECURE = {M_COUNT{1'b0}}, - // Slave interface AR channel register type (input) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter S_AR_REG_TYPE = {S_COUNT{2'd0}}, - // Slave interface R channel register type (output) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter S_R_REG_TYPE = {S_COUNT{2'd2}}, - // Master interface AR channel register type (output) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter M_AR_REG_TYPE = {M_COUNT{2'd1}}, - // Master interface R channel register type (input) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter M_R_REG_TYPE = {M_COUNT{2'd0}} -) -( - input wire clk, - input wire rst, - - /* - * AXI slave interfaces - */ - input wire [S_COUNT*S_ID_WIDTH-1:0] s_axi_arid, - input wire [S_COUNT*ADDR_WIDTH-1:0] s_axi_araddr, - input wire [S_COUNT*8-1:0] s_axi_arlen, - input wire [S_COUNT*3-1:0] s_axi_arsize, - input wire [S_COUNT*2-1:0] s_axi_arburst, - input wire [S_COUNT-1:0] s_axi_arlock, - input wire [S_COUNT*4-1:0] s_axi_arcache, - input wire [S_COUNT*3-1:0] s_axi_arprot, - input wire [S_COUNT*4-1:0] s_axi_arqos, - input wire [S_COUNT*ARUSER_WIDTH-1:0] s_axi_aruser, - input wire [S_COUNT-1:0] s_axi_arvalid, - output wire [S_COUNT-1:0] s_axi_arready, - output wire [S_COUNT*S_ID_WIDTH-1:0] s_axi_rid, - output wire [S_COUNT*DATA_WIDTH-1:0] s_axi_rdata, - output wire [S_COUNT*2-1:0] s_axi_rresp, - output wire [S_COUNT-1:0] s_axi_rlast, - output wire [S_COUNT*RUSER_WIDTH-1:0] s_axi_ruser, - output wire [S_COUNT-1:0] s_axi_rvalid, - input wire [S_COUNT-1:0] s_axi_rready, - - /* - * AXI master interfaces - */ - output wire [M_COUNT*M_ID_WIDTH-1:0] m_axi_arid, - output wire [M_COUNT*ADDR_WIDTH-1:0] m_axi_araddr, - output wire [M_COUNT*8-1:0] m_axi_arlen, - output wire [M_COUNT*3-1:0] m_axi_arsize, - output wire [M_COUNT*2-1:0] m_axi_arburst, - output wire [M_COUNT-1:0] m_axi_arlock, - output wire [M_COUNT*4-1:0] m_axi_arcache, - output wire [M_COUNT*3-1:0] m_axi_arprot, - output wire [M_COUNT*4-1:0] m_axi_arqos, - output wire [M_COUNT*4-1:0] m_axi_arregion, - output wire [M_COUNT*ARUSER_WIDTH-1:0] m_axi_aruser, - output wire [M_COUNT-1:0] m_axi_arvalid, - input wire [M_COUNT-1:0] m_axi_arready, - input wire [M_COUNT*M_ID_WIDTH-1:0] m_axi_rid, - input wire [M_COUNT*DATA_WIDTH-1:0] m_axi_rdata, - input wire [M_COUNT*2-1:0] m_axi_rresp, - input wire [M_COUNT-1:0] m_axi_rlast, - input wire [M_COUNT*RUSER_WIDTH-1:0] m_axi_ruser, - input wire [M_COUNT-1:0] m_axi_rvalid, - output wire [M_COUNT-1:0] m_axi_rready -); - -parameter CL_S_COUNT = $clog2(S_COUNT); -parameter CL_M_COUNT = $clog2(M_COUNT); -parameter M_COUNT_P1 = M_COUNT+1; -parameter CL_M_COUNT_P1 = $clog2(M_COUNT_P1); - -integer i; - -// check configuration -initial begin - if (M_ID_WIDTH < S_ID_WIDTH+$clog2(S_COUNT)) begin - $error("Error: M_ID_WIDTH must be at least $clog2(S_COUNT) larger than S_ID_WIDTH (instance %m)"); - $finish; - end - - for (i = 0; i < M_COUNT*M_REGIONS; i = i + 1) begin - if (M_ADDR_WIDTH[i*32 +: 32] && (M_ADDR_WIDTH[i*32 +: 32] < 12 || M_ADDR_WIDTH[i*32 +: 32] > ADDR_WIDTH)) begin - $error("Error: value out of range (instance %m)"); - $finish; - end - end -end - -wire [S_COUNT*S_ID_WIDTH-1:0] int_s_axi_arid; -wire [S_COUNT*ADDR_WIDTH-1:0] int_s_axi_araddr; -wire [S_COUNT*8-1:0] int_s_axi_arlen; -wire [S_COUNT*3-1:0] int_s_axi_arsize; -wire [S_COUNT*2-1:0] int_s_axi_arburst; -wire [S_COUNT-1:0] int_s_axi_arlock; -wire [S_COUNT*4-1:0] int_s_axi_arcache; -wire [S_COUNT*3-1:0] int_s_axi_arprot; -wire [S_COUNT*4-1:0] int_s_axi_arqos; -wire [S_COUNT*4-1:0] int_s_axi_arregion; -wire [S_COUNT*ARUSER_WIDTH-1:0] int_s_axi_aruser; -wire [S_COUNT-1:0] int_s_axi_arvalid; -wire [S_COUNT-1:0] int_s_axi_arready; - -wire [S_COUNT*M_COUNT-1:0] int_axi_arvalid; -wire [M_COUNT*S_COUNT-1:0] int_axi_arready; - -wire [M_COUNT*M_ID_WIDTH-1:0] int_m_axi_rid; -wire [M_COUNT*DATA_WIDTH-1:0] int_m_axi_rdata; -wire [M_COUNT*2-1:0] int_m_axi_rresp; -wire [M_COUNT-1:0] int_m_axi_rlast; -wire [M_COUNT*RUSER_WIDTH-1:0] int_m_axi_ruser; -wire [M_COUNT-1:0] int_m_axi_rvalid; -wire [M_COUNT-1:0] int_m_axi_rready; - -wire [M_COUNT*S_COUNT-1:0] int_axi_rvalid; -wire [S_COUNT*M_COUNT-1:0] int_axi_rready; - -generate - - genvar m, n; - - for (m = 0; m < S_COUNT; m = m + 1) begin : s_ifaces - // address decode and admission control - wire [CL_M_COUNT-1:0] a_select; - - wire m_axi_avalid; - wire m_axi_aready; - - wire m_rc_decerr; - wire m_rc_valid; - wire m_rc_ready; - - wire [S_ID_WIDTH-1:0] s_cpl_id; - wire s_cpl_valid; - - axi_crossbar_addr #( - .S(m), - .S_COUNT(S_COUNT), - .M_COUNT(M_COUNT), - .ADDR_WIDTH(ADDR_WIDTH), - .ID_WIDTH(S_ID_WIDTH), - .S_THREADS(S_THREADS[m*32 +: 32]), - .S_ACCEPT(S_ACCEPT[m*32 +: 32]), - .M_REGIONS(M_REGIONS), - .M_BASE_ADDR(M_BASE_ADDR), - .M_ADDR_WIDTH(M_ADDR_WIDTH), - .M_CONNECT(M_CONNECT), - .M_SECURE(M_SECURE), - .WC_OUTPUT(0) - ) - addr_inst ( - .clk(clk), - .rst(rst), - - /* - * Address input - */ - .s_axi_aid(int_s_axi_arid[m*S_ID_WIDTH +: S_ID_WIDTH]), - .s_axi_aaddr(int_s_axi_araddr[m*ADDR_WIDTH +: ADDR_WIDTH]), - .s_axi_aprot(int_s_axi_arprot[m*3 +: 3]), - .s_axi_aqos(int_s_axi_arqos[m*4 +: 4]), - .s_axi_avalid(int_s_axi_arvalid[m]), - .s_axi_aready(int_s_axi_arready[m]), - - /* - * Address output - */ - .m_axi_aregion(int_s_axi_arregion[m*4 +: 4]), - .m_select(a_select), - .m_axi_avalid(m_axi_avalid), - .m_axi_aready(m_axi_aready), - - /* - * Write command output - */ - .m_wc_select(), - .m_wc_decerr(), - .m_wc_valid(), - .m_wc_ready(1'b1), - - /* - * Response command output - */ - .m_rc_decerr(m_rc_decerr), - .m_rc_valid(m_rc_valid), - .m_rc_ready(m_rc_ready), - - /* - * Completion input - */ - .s_cpl_id(s_cpl_id), - .s_cpl_valid(s_cpl_valid) - ); - - assign int_axi_arvalid[m*M_COUNT +: M_COUNT] = m_axi_avalid << a_select; - assign m_axi_aready = int_axi_arready[a_select*S_COUNT+m]; - - // decode error handling - reg [S_ID_WIDTH-1:0] decerr_m_axi_rid_reg = {S_ID_WIDTH{1'b0}}, decerr_m_axi_rid_next; - reg decerr_m_axi_rlast_reg = 1'b0, decerr_m_axi_rlast_next; - reg decerr_m_axi_rvalid_reg = 1'b0, decerr_m_axi_rvalid_next; - wire decerr_m_axi_rready; - - reg [7:0] decerr_len_reg = 8'd0, decerr_len_next; - - assign m_rc_ready = !decerr_m_axi_rvalid_reg; - - always @* begin - decerr_len_next = decerr_len_reg; - decerr_m_axi_rid_next = decerr_m_axi_rid_reg; - decerr_m_axi_rlast_next = decerr_m_axi_rlast_reg; - decerr_m_axi_rvalid_next = decerr_m_axi_rvalid_reg; - - if (decerr_m_axi_rvalid_reg) begin - if (decerr_m_axi_rready) begin - if (decerr_len_reg > 0) begin - decerr_len_next = decerr_len_reg-1; - decerr_m_axi_rlast_next = (decerr_len_next == 0); - decerr_m_axi_rvalid_next = 1'b1; - end else begin - decerr_m_axi_rvalid_next = 1'b0; - end - end - end else if (m_rc_valid && m_rc_ready) begin - decerr_len_next = int_s_axi_arlen[m*8 +: 8]; - decerr_m_axi_rid_next = int_s_axi_arid[m*S_ID_WIDTH +: S_ID_WIDTH]; - decerr_m_axi_rlast_next = (decerr_len_next == 0); - decerr_m_axi_rvalid_next = 1'b1; - end - end - - always @(posedge clk) begin - if (rst) begin - decerr_m_axi_rvalid_reg <= 1'b0; - end else begin - decerr_m_axi_rvalid_reg <= decerr_m_axi_rvalid_next; - end - - decerr_m_axi_rid_reg <= decerr_m_axi_rid_next; - decerr_m_axi_rlast_reg <= decerr_m_axi_rlast_next; - decerr_len_reg <= decerr_len_next; - end - - // read response arbitration - wire [M_COUNT_P1-1:0] r_request; - wire [M_COUNT_P1-1:0] r_acknowledge; - wire [M_COUNT_P1-1:0] r_grant; - wire r_grant_valid; - wire [CL_M_COUNT_P1-1:0] r_grant_encoded; - - arbiter #( - .PORTS(M_COUNT_P1), - .ARB_TYPE_ROUND_ROBIN(1), - .ARB_BLOCK(1), - .ARB_BLOCK_ACK(1), - .ARB_LSB_HIGH_PRIORITY(1) - ) - r_arb_inst ( - .clk(clk), - .rst(rst), - .request(r_request), - .acknowledge(r_acknowledge), - .grant(r_grant), - .grant_valid(r_grant_valid), - .grant_encoded(r_grant_encoded) - ); - - // read response mux - wire [S_ID_WIDTH-1:0] m_axi_rid_mux = {decerr_m_axi_rid_reg, int_m_axi_rid} >> r_grant_encoded*M_ID_WIDTH; - wire [DATA_WIDTH-1:0] m_axi_rdata_mux = {{DATA_WIDTH{1'b0}}, int_m_axi_rdata} >> r_grant_encoded*DATA_WIDTH; - wire [1:0] m_axi_rresp_mux = {2'b11, int_m_axi_rresp} >> r_grant_encoded*2; - wire m_axi_rlast_mux = {decerr_m_axi_rlast_reg, int_m_axi_rlast} >> r_grant_encoded; - wire [RUSER_WIDTH-1:0] m_axi_ruser_mux = {{RUSER_WIDTH{1'b0}}, int_m_axi_ruser} >> r_grant_encoded*RUSER_WIDTH; - wire m_axi_rvalid_mux = ({decerr_m_axi_rvalid_reg, int_m_axi_rvalid} >> r_grant_encoded) & r_grant_valid; - wire m_axi_rready_mux; - - assign int_axi_rready[m*M_COUNT +: M_COUNT] = (r_grant_valid && m_axi_rready_mux) << r_grant_encoded; - assign decerr_m_axi_rready = (r_grant_valid && m_axi_rready_mux) && (r_grant_encoded == M_COUNT_P1-1); - - for (n = 0; n < M_COUNT; n = n + 1) begin - assign r_request[n] = int_axi_rvalid[n*S_COUNT+m] && !r_grant[n]; - assign r_acknowledge[n] = r_grant[n] && int_axi_rvalid[n*S_COUNT+m] && m_axi_rlast_mux && m_axi_rready_mux; - end - - assign r_request[M_COUNT_P1-1] = decerr_m_axi_rvalid_reg && !r_grant[M_COUNT_P1-1]; - assign r_acknowledge[M_COUNT_P1-1] = r_grant[M_COUNT_P1-1] && decerr_m_axi_rvalid_reg && decerr_m_axi_rlast_reg && m_axi_rready_mux; - - assign s_cpl_id = m_axi_rid_mux; - assign s_cpl_valid = m_axi_rvalid_mux && m_axi_rready_mux && m_axi_rlast_mux; - - // S side register - axi_register_rd #( - .DATA_WIDTH(DATA_WIDTH), - .ADDR_WIDTH(ADDR_WIDTH), - .STRB_WIDTH(STRB_WIDTH), - .ID_WIDTH(S_ID_WIDTH), - .ARUSER_ENABLE(ARUSER_ENABLE), - .ARUSER_WIDTH(ARUSER_WIDTH), - .RUSER_ENABLE(RUSER_ENABLE), - .RUSER_WIDTH(RUSER_WIDTH), - .AR_REG_TYPE(S_AR_REG_TYPE[m*2 +: 2]), - .R_REG_TYPE(S_R_REG_TYPE[m*2 +: 2]) - ) - reg_inst ( - .clk(clk), - .rst(rst), - .s_axi_arid(s_axi_arid[m*S_ID_WIDTH +: S_ID_WIDTH]), - .s_axi_araddr(s_axi_araddr[m*ADDR_WIDTH +: ADDR_WIDTH]), - .s_axi_arlen(s_axi_arlen[m*8 +: 8]), - .s_axi_arsize(s_axi_arsize[m*3 +: 3]), - .s_axi_arburst(s_axi_arburst[m*2 +: 2]), - .s_axi_arlock(s_axi_arlock[m]), - .s_axi_arcache(s_axi_arcache[m*4 +: 4]), - .s_axi_arprot(s_axi_arprot[m*3 +: 3]), - .s_axi_arqos(s_axi_arqos[m*4 +: 4]), - .s_axi_arregion(4'd0), - .s_axi_aruser(s_axi_aruser[m*ARUSER_WIDTH +: ARUSER_WIDTH]), - .s_axi_arvalid(s_axi_arvalid[m]), - .s_axi_arready(s_axi_arready[m]), - .s_axi_rid(s_axi_rid[m*S_ID_WIDTH +: S_ID_WIDTH]), - .s_axi_rdata(s_axi_rdata[m*DATA_WIDTH +: DATA_WIDTH]), - .s_axi_rresp(s_axi_rresp[m*2 +: 2]), - .s_axi_rlast(s_axi_rlast[m]), - .s_axi_ruser(s_axi_ruser[m*RUSER_WIDTH +: RUSER_WIDTH]), - .s_axi_rvalid(s_axi_rvalid[m]), - .s_axi_rready(s_axi_rready[m]), - .m_axi_arid(int_s_axi_arid[m*S_ID_WIDTH +: S_ID_WIDTH]), - .m_axi_araddr(int_s_axi_araddr[m*ADDR_WIDTH +: ADDR_WIDTH]), - .m_axi_arlen(int_s_axi_arlen[m*8 +: 8]), - .m_axi_arsize(int_s_axi_arsize[m*3 +: 3]), - .m_axi_arburst(int_s_axi_arburst[m*2 +: 2]), - .m_axi_arlock(int_s_axi_arlock[m]), - .m_axi_arcache(int_s_axi_arcache[m*4 +: 4]), - .m_axi_arprot(int_s_axi_arprot[m*3 +: 3]), - .m_axi_arqos(int_s_axi_arqos[m*4 +: 4]), - .m_axi_arregion(), - .m_axi_aruser(int_s_axi_aruser[m*ARUSER_WIDTH +: ARUSER_WIDTH]), - .m_axi_arvalid(int_s_axi_arvalid[m]), - .m_axi_arready(int_s_axi_arready[m]), - .m_axi_rid(m_axi_rid_mux), - .m_axi_rdata(m_axi_rdata_mux), - .m_axi_rresp(m_axi_rresp_mux), - .m_axi_rlast(m_axi_rlast_mux), - .m_axi_ruser(m_axi_ruser_mux), - .m_axi_rvalid(m_axi_rvalid_mux), - .m_axi_rready(m_axi_rready_mux) - ); - end // s_ifaces - - for (n = 0; n < M_COUNT; n = n + 1) begin : m_ifaces - // in-flight transaction count - wire trans_start; - wire trans_complete; - reg [$clog2(M_ISSUE[n*32 +: 32]+1)-1:0] trans_count_reg = 0; - - wire trans_limit = trans_count_reg >= M_ISSUE[n*32 +: 32] && !trans_complete; - - always @(posedge clk) begin - if (rst) begin - trans_count_reg <= 0; - end else begin - if (trans_start && !trans_complete) begin - trans_count_reg <= trans_count_reg + 1; - end else if (!trans_start && trans_complete) begin - trans_count_reg <= trans_count_reg - 1; - end - end - end - - // address arbitration - wire [S_COUNT-1:0] a_request; - wire [S_COUNT-1:0] a_acknowledge; - wire [S_COUNT-1:0] a_grant; - wire a_grant_valid; - wire [CL_S_COUNT-1:0] a_grant_encoded; - - arbiter #( - .PORTS(S_COUNT), - .ARB_TYPE_ROUND_ROBIN(1), - .ARB_BLOCK(1), - .ARB_BLOCK_ACK(1), - .ARB_LSB_HIGH_PRIORITY(1) - ) - a_arb_inst ( - .clk(clk), - .rst(rst), - .request(a_request), - .acknowledge(a_acknowledge), - .grant(a_grant), - .grant_valid(a_grant_valid), - .grant_encoded(a_grant_encoded) - ); - - // address mux - wire [M_ID_WIDTH-1:0] s_axi_arid_mux = int_s_axi_arid[a_grant_encoded*S_ID_WIDTH +: S_ID_WIDTH] | (a_grant_encoded << S_ID_WIDTH); - wire [ADDR_WIDTH-1:0] s_axi_araddr_mux = int_s_axi_araddr[a_grant_encoded*ADDR_WIDTH +: ADDR_WIDTH]; - wire [7:0] s_axi_arlen_mux = int_s_axi_arlen[a_grant_encoded*8 +: 8]; - wire [2:0] s_axi_arsize_mux = int_s_axi_arsize[a_grant_encoded*3 +: 3]; - wire [1:0] s_axi_arburst_mux = int_s_axi_arburst[a_grant_encoded*2 +: 2]; - wire s_axi_arlock_mux = int_s_axi_arlock[a_grant_encoded]; - wire [3:0] s_axi_arcache_mux = int_s_axi_arcache[a_grant_encoded*4 +: 4]; - wire [2:0] s_axi_arprot_mux = int_s_axi_arprot[a_grant_encoded*3 +: 3]; - wire [3:0] s_axi_arqos_mux = int_s_axi_arqos[a_grant_encoded*4 +: 4]; - wire [3:0] s_axi_arregion_mux = int_s_axi_arregion[a_grant_encoded*4 +: 4]; - wire [ARUSER_WIDTH-1:0] s_axi_aruser_mux = int_s_axi_aruser[a_grant_encoded*ARUSER_WIDTH +: ARUSER_WIDTH]; - wire s_axi_arvalid_mux = int_axi_arvalid[a_grant_encoded*M_COUNT+n] && a_grant_valid; - wire s_axi_arready_mux; - - assign int_axi_arready[n*S_COUNT +: S_COUNT] = (a_grant_valid && s_axi_arready_mux) << a_grant_encoded; - - for (m = 0; m < S_COUNT; m = m + 1) begin - assign a_request[m] = int_axi_arvalid[m*M_COUNT+n] && !a_grant[m] && !trans_limit; - assign a_acknowledge[m] = a_grant[m] && int_axi_arvalid[m*M_COUNT+n] && s_axi_arready_mux; - end - - assign trans_start = s_axi_arvalid_mux && s_axi_arready_mux && a_grant_valid; - - // read response forwarding - wire [CL_S_COUNT-1:0] r_select = m_axi_rid[n*M_ID_WIDTH +: M_ID_WIDTH] >> S_ID_WIDTH; - - assign int_axi_rvalid[n*S_COUNT +: S_COUNT] = int_m_axi_rvalid[n] << r_select; - assign int_m_axi_rready[n] = int_axi_rready[r_select*M_COUNT+n]; - - assign trans_complete = int_m_axi_rvalid[n] && int_m_axi_rready[n] && int_m_axi_rlast[n]; - - // M side register - axi_register_rd #( - .DATA_WIDTH(DATA_WIDTH), - .ADDR_WIDTH(ADDR_WIDTH), - .STRB_WIDTH(STRB_WIDTH), - .ID_WIDTH(M_ID_WIDTH), - .ARUSER_ENABLE(ARUSER_ENABLE), - .ARUSER_WIDTH(ARUSER_WIDTH), - .RUSER_ENABLE(RUSER_ENABLE), - .RUSER_WIDTH(RUSER_WIDTH), - .AR_REG_TYPE(M_AR_REG_TYPE[n*2 +: 2]), - .R_REG_TYPE(M_R_REG_TYPE[n*2 +: 2]) - ) - reg_inst ( - .clk(clk), - .rst(rst), - .s_axi_arid(s_axi_arid_mux), - .s_axi_araddr(s_axi_araddr_mux), - .s_axi_arlen(s_axi_arlen_mux), - .s_axi_arsize(s_axi_arsize_mux), - .s_axi_arburst(s_axi_arburst_mux), - .s_axi_arlock(s_axi_arlock_mux), - .s_axi_arcache(s_axi_arcache_mux), - .s_axi_arprot(s_axi_arprot_mux), - .s_axi_arqos(s_axi_arqos_mux), - .s_axi_arregion(s_axi_arregion_mux), - .s_axi_aruser(s_axi_aruser_mux), - .s_axi_arvalid(s_axi_arvalid_mux), - .s_axi_arready(s_axi_arready_mux), - .s_axi_rid(int_m_axi_rid[n*M_ID_WIDTH +: M_ID_WIDTH]), - .s_axi_rdata(int_m_axi_rdata[n*DATA_WIDTH +: DATA_WIDTH]), - .s_axi_rresp(int_m_axi_rresp[n*2 +: 2]), - .s_axi_rlast(int_m_axi_rlast[n]), - .s_axi_ruser(int_m_axi_ruser[n*RUSER_WIDTH +: RUSER_WIDTH]), - .s_axi_rvalid(int_m_axi_rvalid[n]), - .s_axi_rready(int_m_axi_rready[n]), - .m_axi_arid(m_axi_arid[n*M_ID_WIDTH +: M_ID_WIDTH]), - .m_axi_araddr(m_axi_araddr[n*ADDR_WIDTH +: ADDR_WIDTH]), - .m_axi_arlen(m_axi_arlen[n*8 +: 8]), - .m_axi_arsize(m_axi_arsize[n*3 +: 3]), - .m_axi_arburst(m_axi_arburst[n*2 +: 2]), - .m_axi_arlock(m_axi_arlock[n]), - .m_axi_arcache(m_axi_arcache[n*4 +: 4]), - .m_axi_arprot(m_axi_arprot[n*3 +: 3]), - .m_axi_arqos(m_axi_arqos[n*4 +: 4]), - .m_axi_arregion(m_axi_arregion[n*4 +: 4]), - .m_axi_aruser(m_axi_aruser[n*ARUSER_WIDTH +: ARUSER_WIDTH]), - .m_axi_arvalid(m_axi_arvalid[n]), - .m_axi_arready(m_axi_arready[n]), - .m_axi_rid(m_axi_rid[n*M_ID_WIDTH +: M_ID_WIDTH]), - .m_axi_rdata(m_axi_rdata[n*DATA_WIDTH +: DATA_WIDTH]), - .m_axi_rresp(m_axi_rresp[n*2 +: 2]), - .m_axi_rlast(m_axi_rlast[n]), - .m_axi_ruser(m_axi_ruser[n*RUSER_WIDTH +: RUSER_WIDTH]), - .m_axi_rvalid(m_axi_rvalid[n]), - .m_axi_rready(m_axi_rready[n]) - ); - end // m_ifaces - -endgenerate - -endmodule - -`resetall diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar_wr.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar_wr.v deleted file mode 100644 index 5f556653..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_crossbar_wr.v +++ /dev/null @@ -1,678 +0,0 @@ -/* - -Copyright (c) 2018 Alex Forencich - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -*/ - -// Language: Verilog 2001 - -`resetall -`timescale 1ns / 1ps -`default_nettype none - -/* - * AXI4 crossbar (write) - */ -module axi_crossbar_wr # -( - // Number of AXI inputs (slave interfaces) - parameter S_COUNT = 4, - // Number of AXI outputs (master interfaces) - parameter M_COUNT = 4, - // Width of data bus in bits - parameter DATA_WIDTH = 32, - // Width of address bus in bits - parameter ADDR_WIDTH = 32, - // Width of wstrb (width of data bus in words) - parameter STRB_WIDTH = (DATA_WIDTH/8), - // Input ID field width (from AXI masters) - parameter S_ID_WIDTH = 8, - // Output ID field width (towards AXI slaves) - // Additional bits required for response routing - parameter M_ID_WIDTH = S_ID_WIDTH+$clog2(S_COUNT), - // Propagate awuser signal - parameter AWUSER_ENABLE = 0, - // Width of awuser signal - parameter AWUSER_WIDTH = 1, - // Propagate wuser signal - parameter WUSER_ENABLE = 0, - // Width of wuser signal - parameter WUSER_WIDTH = 1, - // Propagate buser signal - parameter BUSER_ENABLE = 0, - // Width of buser signal - parameter BUSER_WIDTH = 1, - // Number of concurrent unique IDs for each slave interface - // S_COUNT concatenated fields of 32 bits - parameter S_THREADS = {S_COUNT{32'd2}}, - // Number of concurrent operations for each slave interface - // S_COUNT concatenated fields of 32 bits - parameter S_ACCEPT = {S_COUNT{32'd16}}, - // Number of regions per master interface - parameter M_REGIONS = 1, - // Master interface base addresses - // M_COUNT concatenated fields of M_REGIONS concatenated fields of ADDR_WIDTH bits - // set to zero for default addressing based on M_ADDR_WIDTH - parameter M_BASE_ADDR = 0, - // Master interface address widths - // M_COUNT concatenated fields of M_REGIONS concatenated fields of 32 bits - parameter M_ADDR_WIDTH = {M_COUNT{{M_REGIONS{32'd24}}}}, - // Write connections between interfaces - // M_COUNT concatenated fields of S_COUNT bits - parameter M_CONNECT = {M_COUNT{{S_COUNT{1'b1}}}}, - // Number of concurrent operations for each master interface - // M_COUNT concatenated fields of 32 bits - parameter M_ISSUE = {M_COUNT{32'd4}}, - // Secure master (fail operations based on awprot/arprot) - // M_COUNT bits - parameter M_SECURE = {M_COUNT{1'b0}}, - // Slave interface AW channel register type (input) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter S_AW_REG_TYPE = {S_COUNT{2'd0}}, - // Slave interface W channel register type (input) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter S_W_REG_TYPE = {S_COUNT{2'd0}}, - // Slave interface B channel register type (output) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter S_B_REG_TYPE = {S_COUNT{2'd1}}, - // Master interface AW channel register type (output) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter M_AW_REG_TYPE = {M_COUNT{2'd1}}, - // Master interface W channel register type (output) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter M_W_REG_TYPE = {M_COUNT{2'd2}}, - // Master interface B channel register type (input) - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter M_B_REG_TYPE = {M_COUNT{2'd0}} -) -( - input wire clk, - input wire rst, - - /* - * AXI slave interfaces - */ - input wire [S_COUNT*S_ID_WIDTH-1:0] s_axi_awid, - input wire [S_COUNT*ADDR_WIDTH-1:0] s_axi_awaddr, - input wire [S_COUNT*8-1:0] s_axi_awlen, - input wire [S_COUNT*3-1:0] s_axi_awsize, - input wire [S_COUNT*2-1:0] s_axi_awburst, - input wire [S_COUNT-1:0] s_axi_awlock, - input wire [S_COUNT*4-1:0] s_axi_awcache, - input wire [S_COUNT*3-1:0] s_axi_awprot, - input wire [S_COUNT*4-1:0] s_axi_awqos, - input wire [S_COUNT*AWUSER_WIDTH-1:0] s_axi_awuser, - input wire [S_COUNT-1:0] s_axi_awvalid, - output wire [S_COUNT-1:0] s_axi_awready, - input wire [S_COUNT*DATA_WIDTH-1:0] s_axi_wdata, - input wire [S_COUNT*STRB_WIDTH-1:0] s_axi_wstrb, - input wire [S_COUNT-1:0] s_axi_wlast, - input wire [S_COUNT*WUSER_WIDTH-1:0] s_axi_wuser, - input wire [S_COUNT-1:0] s_axi_wvalid, - output wire [S_COUNT-1:0] s_axi_wready, - output wire [S_COUNT*S_ID_WIDTH-1:0] s_axi_bid, - output wire [S_COUNT*2-1:0] s_axi_bresp, - output wire [S_COUNT*BUSER_WIDTH-1:0] s_axi_buser, - output wire [S_COUNT-1:0] s_axi_bvalid, - input wire [S_COUNT-1:0] s_axi_bready, - - /* - * AXI master interfaces - */ - output wire [M_COUNT*M_ID_WIDTH-1:0] m_axi_awid, - output wire [M_COUNT*ADDR_WIDTH-1:0] m_axi_awaddr, - output wire [M_COUNT*8-1:0] m_axi_awlen, - output wire [M_COUNT*3-1:0] m_axi_awsize, - output wire [M_COUNT*2-1:0] m_axi_awburst, - output wire [M_COUNT-1:0] m_axi_awlock, - output wire [M_COUNT*4-1:0] m_axi_awcache, - output wire [M_COUNT*3-1:0] m_axi_awprot, - output wire [M_COUNT*4-1:0] m_axi_awqos, - output wire [M_COUNT*4-1:0] m_axi_awregion, - output wire [M_COUNT*AWUSER_WIDTH-1:0] m_axi_awuser, - output wire [M_COUNT-1:0] m_axi_awvalid, - input wire [M_COUNT-1:0] m_axi_awready, - output wire [M_COUNT*DATA_WIDTH-1:0] m_axi_wdata, - output wire [M_COUNT*STRB_WIDTH-1:0] m_axi_wstrb, - output wire [M_COUNT-1:0] m_axi_wlast, - output wire [M_COUNT*WUSER_WIDTH-1:0] m_axi_wuser, - output wire [M_COUNT-1:0] m_axi_wvalid, - input wire [M_COUNT-1:0] m_axi_wready, - input wire [M_COUNT*M_ID_WIDTH-1:0] m_axi_bid, - input wire [M_COUNT*2-1:0] m_axi_bresp, - input wire [M_COUNT*BUSER_WIDTH-1:0] m_axi_buser, - input wire [M_COUNT-1:0] m_axi_bvalid, - output wire [M_COUNT-1:0] m_axi_bready -); - -parameter CL_S_COUNT = $clog2(S_COUNT); -parameter CL_M_COUNT = $clog2(M_COUNT); -parameter M_COUNT_P1 = M_COUNT+1; -parameter CL_M_COUNT_P1 = $clog2(M_COUNT_P1); - -integer i; - -// check configuration -initial begin - if (M_ID_WIDTH < S_ID_WIDTH+$clog2(S_COUNT)) begin - $error("Error: M_ID_WIDTH must be at least $clog2(S_COUNT) larger than S_ID_WIDTH (instance %m)"); - $finish; - end - - for (i = 0; i < M_COUNT*M_REGIONS; i = i + 1) begin - if (M_ADDR_WIDTH[i*32 +: 32] && (M_ADDR_WIDTH[i*32 +: 32] < 12 || M_ADDR_WIDTH[i*32 +: 32] > ADDR_WIDTH)) begin - $error("Error: value out of range (instance %m)"); - $finish; - end - end -end - -wire [S_COUNT*S_ID_WIDTH-1:0] int_s_axi_awid; -wire [S_COUNT*ADDR_WIDTH-1:0] int_s_axi_awaddr; -wire [S_COUNT*8-1:0] int_s_axi_awlen; -wire [S_COUNT*3-1:0] int_s_axi_awsize; -wire [S_COUNT*2-1:0] int_s_axi_awburst; -wire [S_COUNT-1:0] int_s_axi_awlock; -wire [S_COUNT*4-1:0] int_s_axi_awcache; -wire [S_COUNT*3-1:0] int_s_axi_awprot; -wire [S_COUNT*4-1:0] int_s_axi_awqos; -wire [S_COUNT*4-1:0] int_s_axi_awregion; -wire [S_COUNT*AWUSER_WIDTH-1:0] int_s_axi_awuser; -wire [S_COUNT-1:0] int_s_axi_awvalid; -wire [S_COUNT-1:0] int_s_axi_awready; - -wire [S_COUNT*M_COUNT-1:0] int_axi_awvalid; -wire [M_COUNT*S_COUNT-1:0] int_axi_awready; - -wire [S_COUNT*DATA_WIDTH-1:0] int_s_axi_wdata; -wire [S_COUNT*STRB_WIDTH-1:0] int_s_axi_wstrb; -wire [S_COUNT-1:0] int_s_axi_wlast; -wire [S_COUNT*WUSER_WIDTH-1:0] int_s_axi_wuser; -wire [S_COUNT-1:0] int_s_axi_wvalid; -wire [S_COUNT-1:0] int_s_axi_wready; - -wire [S_COUNT*M_COUNT-1:0] int_axi_wvalid; -wire [M_COUNT*S_COUNT-1:0] int_axi_wready; - -wire [M_COUNT*M_ID_WIDTH-1:0] int_m_axi_bid; -wire [M_COUNT*2-1:0] int_m_axi_bresp; -wire [M_COUNT*BUSER_WIDTH-1:0] int_m_axi_buser; -wire [M_COUNT-1:0] int_m_axi_bvalid; -wire [M_COUNT-1:0] int_m_axi_bready; - -wire [M_COUNT*S_COUNT-1:0] int_axi_bvalid; -wire [S_COUNT*M_COUNT-1:0] int_axi_bready; - -generate - - genvar m, n; - - for (m = 0; m < S_COUNT; m = m + 1) begin : s_ifaces - // address decode and admission control - wire [CL_M_COUNT-1:0] a_select; - - wire m_axi_avalid; - wire m_axi_aready; - - wire [CL_M_COUNT-1:0] m_wc_select; - wire m_wc_decerr; - wire m_wc_valid; - wire m_wc_ready; - - wire m_rc_decerr; - wire m_rc_valid; - wire m_rc_ready; - - wire [S_ID_WIDTH-1:0] s_cpl_id; - wire s_cpl_valid; - - axi_crossbar_addr #( - .S(m), - .S_COUNT(S_COUNT), - .M_COUNT(M_COUNT), - .ADDR_WIDTH(ADDR_WIDTH), - .ID_WIDTH(S_ID_WIDTH), - .S_THREADS(S_THREADS[m*32 +: 32]), - .S_ACCEPT(S_ACCEPT[m*32 +: 32]), - .M_REGIONS(M_REGIONS), - .M_BASE_ADDR(M_BASE_ADDR), - .M_ADDR_WIDTH(M_ADDR_WIDTH), - .M_CONNECT(M_CONNECT), - .M_SECURE(M_SECURE), - .WC_OUTPUT(1) - ) - addr_inst ( - .clk(clk), - .rst(rst), - - /* - * Address input - */ - .s_axi_aid(int_s_axi_awid[m*S_ID_WIDTH +: S_ID_WIDTH]), - .s_axi_aaddr(int_s_axi_awaddr[m*ADDR_WIDTH +: ADDR_WIDTH]), - .s_axi_aprot(int_s_axi_awprot[m*3 +: 3]), - .s_axi_aqos(int_s_axi_awqos[m*4 +: 4]), - .s_axi_avalid(int_s_axi_awvalid[m]), - .s_axi_aready(int_s_axi_awready[m]), - - /* - * Address output - */ - .m_axi_aregion(int_s_axi_awregion[m*4 +: 4]), - .m_select(a_select), - .m_axi_avalid(m_axi_avalid), - .m_axi_aready(m_axi_aready), - - /* - * Write command output - */ - .m_wc_select(m_wc_select), - .m_wc_decerr(m_wc_decerr), - .m_wc_valid(m_wc_valid), - .m_wc_ready(m_wc_ready), - - /* - * Response command output - */ - .m_rc_decerr(m_rc_decerr), - .m_rc_valid(m_rc_valid), - .m_rc_ready(m_rc_ready), - - /* - * Completion input - */ - .s_cpl_id(s_cpl_id), - .s_cpl_valid(s_cpl_valid) - ); - - assign int_axi_awvalid[m*M_COUNT +: M_COUNT] = m_axi_avalid << a_select; - assign m_axi_aready = int_axi_awready[a_select*S_COUNT+m]; - - // write command handling - reg [CL_M_COUNT-1:0] w_select_reg = 0, w_select_next; - reg w_drop_reg = 1'b0, w_drop_next; - reg w_select_valid_reg = 1'b0, w_select_valid_next; - - assign m_wc_ready = !w_select_valid_reg; - - always @* begin - w_select_next = w_select_reg; - w_drop_next = w_drop_reg && !(int_s_axi_wvalid[m] && int_s_axi_wready[m] && int_s_axi_wlast[m]); - w_select_valid_next = w_select_valid_reg && !(int_s_axi_wvalid[m] && int_s_axi_wready[m] && int_s_axi_wlast[m]); - - if (m_wc_valid && !w_select_valid_reg) begin - w_select_next = m_wc_select; - w_drop_next = m_wc_decerr; - w_select_valid_next = m_wc_valid; - end - end - - always @(posedge clk) begin - if (rst) begin - w_select_valid_reg <= 1'b0; - end else begin - w_select_valid_reg <= w_select_valid_next; - end - - w_select_reg <= w_select_next; - w_drop_reg <= w_drop_next; - end - - // write data forwarding - assign int_axi_wvalid[m*M_COUNT +: M_COUNT] = (int_s_axi_wvalid[m] && w_select_valid_reg && !w_drop_reg) << w_select_reg; - assign int_s_axi_wready[m] = int_axi_wready[w_select_reg*S_COUNT+m] || w_drop_reg; - - // decode error handling - reg [S_ID_WIDTH-1:0] decerr_m_axi_bid_reg = {S_ID_WIDTH{1'b0}}, decerr_m_axi_bid_next; - reg decerr_m_axi_bvalid_reg = 1'b0, decerr_m_axi_bvalid_next; - wire decerr_m_axi_bready; - - assign m_rc_ready = !decerr_m_axi_bvalid_reg; - - always @* begin - decerr_m_axi_bid_next = decerr_m_axi_bid_reg; - decerr_m_axi_bvalid_next = decerr_m_axi_bvalid_reg; - - if (decerr_m_axi_bvalid_reg) begin - if (decerr_m_axi_bready) begin - decerr_m_axi_bvalid_next = 1'b0; - end - end else if (m_rc_valid && m_rc_ready) begin - decerr_m_axi_bid_next = int_s_axi_awid[m*S_ID_WIDTH +: S_ID_WIDTH]; - decerr_m_axi_bvalid_next = 1'b1; - end - end - - always @(posedge clk) begin - if (rst) begin - decerr_m_axi_bvalid_reg <= 1'b0; - end else begin - decerr_m_axi_bvalid_reg <= decerr_m_axi_bvalid_next; - end - - decerr_m_axi_bid_reg <= decerr_m_axi_bid_next; - end - - // write response arbitration - wire [M_COUNT_P1-1:0] b_request; - wire [M_COUNT_P1-1:0] b_acknowledge; - wire [M_COUNT_P1-1:0] b_grant; - wire b_grant_valid; - wire [CL_M_COUNT_P1-1:0] b_grant_encoded; - - arbiter #( - .PORTS(M_COUNT_P1), - .ARB_TYPE_ROUND_ROBIN(1), - .ARB_BLOCK(1), - .ARB_BLOCK_ACK(1), - .ARB_LSB_HIGH_PRIORITY(1) - ) - b_arb_inst ( - .clk(clk), - .rst(rst), - .request(b_request), - .acknowledge(b_acknowledge), - .grant(b_grant), - .grant_valid(b_grant_valid), - .grant_encoded(b_grant_encoded) - ); - - // write response mux - wire [S_ID_WIDTH-1:0] m_axi_bid_mux = {decerr_m_axi_bid_reg, int_m_axi_bid} >> b_grant_encoded*M_ID_WIDTH; - wire [1:0] m_axi_bresp_mux = {2'b11, int_m_axi_bresp} >> b_grant_encoded*2; - wire [BUSER_WIDTH-1:0] m_axi_buser_mux = {{BUSER_WIDTH{1'b0}}, int_m_axi_buser} >> b_grant_encoded*BUSER_WIDTH; - wire m_axi_bvalid_mux = ({decerr_m_axi_bvalid_reg, int_m_axi_bvalid} >> b_grant_encoded) & b_grant_valid; - wire m_axi_bready_mux; - - assign int_axi_bready[m*M_COUNT +: M_COUNT] = (b_grant_valid && m_axi_bready_mux) << b_grant_encoded; - assign decerr_m_axi_bready = (b_grant_valid && m_axi_bready_mux) && (b_grant_encoded == M_COUNT_P1-1); - - for (n = 0; n < M_COUNT; n = n + 1) begin - assign b_request[n] = int_axi_bvalid[n*S_COUNT+m] && !b_grant[n]; - assign b_acknowledge[n] = b_grant[n] && int_axi_bvalid[n*S_COUNT+m] && m_axi_bready_mux; - end - - assign b_request[M_COUNT_P1-1] = decerr_m_axi_bvalid_reg && !b_grant[M_COUNT_P1-1]; - assign b_acknowledge[M_COUNT_P1-1] = b_grant[M_COUNT_P1-1] && decerr_m_axi_bvalid_reg && m_axi_bready_mux; - - assign s_cpl_id = m_axi_bid_mux; - assign s_cpl_valid = m_axi_bvalid_mux && m_axi_bready_mux; - - // S side register - axi_register_wr #( - .DATA_WIDTH(DATA_WIDTH), - .ADDR_WIDTH(ADDR_WIDTH), - .STRB_WIDTH(STRB_WIDTH), - .ID_WIDTH(S_ID_WIDTH), - .AWUSER_ENABLE(AWUSER_ENABLE), - .AWUSER_WIDTH(AWUSER_WIDTH), - .WUSER_ENABLE(WUSER_ENABLE), - .WUSER_WIDTH(WUSER_WIDTH), - .BUSER_ENABLE(BUSER_ENABLE), - .BUSER_WIDTH(BUSER_WIDTH), - .AW_REG_TYPE(S_AW_REG_TYPE[m*2 +: 2]), - .W_REG_TYPE(S_W_REG_TYPE[m*2 +: 2]), - .B_REG_TYPE(S_B_REG_TYPE[m*2 +: 2]) - ) - reg_inst ( - .clk(clk), - .rst(rst), - .s_axi_awid(s_axi_awid[m*S_ID_WIDTH +: S_ID_WIDTH]), - .s_axi_awaddr(s_axi_awaddr[m*ADDR_WIDTH +: ADDR_WIDTH]), - .s_axi_awlen(s_axi_awlen[m*8 +: 8]), - .s_axi_awsize(s_axi_awsize[m*3 +: 3]), - .s_axi_awburst(s_axi_awburst[m*2 +: 2]), - .s_axi_awlock(s_axi_awlock[m]), - .s_axi_awcache(s_axi_awcache[m*4 +: 4]), - .s_axi_awprot(s_axi_awprot[m*3 +: 3]), - .s_axi_awqos(s_axi_awqos[m*4 +: 4]), - .s_axi_awregion(4'd0), - .s_axi_awuser(s_axi_awuser[m*AWUSER_WIDTH +: AWUSER_WIDTH]), - .s_axi_awvalid(s_axi_awvalid[m]), - .s_axi_awready(s_axi_awready[m]), - .s_axi_wdata(s_axi_wdata[m*DATA_WIDTH +: DATA_WIDTH]), - .s_axi_wstrb(s_axi_wstrb[m*STRB_WIDTH +: STRB_WIDTH]), - .s_axi_wlast(s_axi_wlast[m]), - .s_axi_wuser(s_axi_wuser[m*WUSER_WIDTH +: WUSER_WIDTH]), - .s_axi_wvalid(s_axi_wvalid[m]), - .s_axi_wready(s_axi_wready[m]), - .s_axi_bid(s_axi_bid[m*S_ID_WIDTH +: S_ID_WIDTH]), - .s_axi_bresp(s_axi_bresp[m*2 +: 2]), - .s_axi_buser(s_axi_buser[m*BUSER_WIDTH +: BUSER_WIDTH]), - .s_axi_bvalid(s_axi_bvalid[m]), - .s_axi_bready(s_axi_bready[m]), - .m_axi_awid(int_s_axi_awid[m*S_ID_WIDTH +: S_ID_WIDTH]), - .m_axi_awaddr(int_s_axi_awaddr[m*ADDR_WIDTH +: ADDR_WIDTH]), - .m_axi_awlen(int_s_axi_awlen[m*8 +: 8]), - .m_axi_awsize(int_s_axi_awsize[m*3 +: 3]), - .m_axi_awburst(int_s_axi_awburst[m*2 +: 2]), - .m_axi_awlock(int_s_axi_awlock[m]), - .m_axi_awcache(int_s_axi_awcache[m*4 +: 4]), - .m_axi_awprot(int_s_axi_awprot[m*3 +: 3]), - .m_axi_awqos(int_s_axi_awqos[m*4 +: 4]), - .m_axi_awregion(), - .m_axi_awuser(int_s_axi_awuser[m*AWUSER_WIDTH +: AWUSER_WIDTH]), - .m_axi_awvalid(int_s_axi_awvalid[m]), - .m_axi_awready(int_s_axi_awready[m]), - .m_axi_wdata(int_s_axi_wdata[m*DATA_WIDTH +: DATA_WIDTH]), - .m_axi_wstrb(int_s_axi_wstrb[m*STRB_WIDTH +: STRB_WIDTH]), - .m_axi_wlast(int_s_axi_wlast[m]), - .m_axi_wuser(int_s_axi_wuser[m*WUSER_WIDTH +: WUSER_WIDTH]), - .m_axi_wvalid(int_s_axi_wvalid[m]), - .m_axi_wready(int_s_axi_wready[m]), - .m_axi_bid(m_axi_bid_mux), - .m_axi_bresp(m_axi_bresp_mux), - .m_axi_buser(m_axi_buser_mux), - .m_axi_bvalid(m_axi_bvalid_mux), - .m_axi_bready(m_axi_bready_mux) - ); - end // s_ifaces - - for (n = 0; n < M_COUNT; n = n + 1) begin : m_ifaces - // in-flight transaction count - wire trans_start; - wire trans_complete; - reg [$clog2(M_ISSUE[n*32 +: 32]+1)-1:0] trans_count_reg = 0; - - wire trans_limit = trans_count_reg >= M_ISSUE[n*32 +: 32] && !trans_complete; - - always @(posedge clk) begin - if (rst) begin - trans_count_reg <= 0; - end else begin - if (trans_start && !trans_complete) begin - trans_count_reg <= trans_count_reg + 1; - end else if (!trans_start && trans_complete) begin - trans_count_reg <= trans_count_reg - 1; - end - end - end - - // address arbitration - reg [CL_S_COUNT-1:0] w_select_reg = 0, w_select_next; - reg w_select_valid_reg = 1'b0, w_select_valid_next; - reg w_select_new_reg = 1'b0, w_select_new_next; - - wire [S_COUNT-1:0] a_request; - wire [S_COUNT-1:0] a_acknowledge; - wire [S_COUNT-1:0] a_grant; - wire a_grant_valid; - wire [CL_S_COUNT-1:0] a_grant_encoded; - - arbiter #( - .PORTS(S_COUNT), - .ARB_TYPE_ROUND_ROBIN(1), - .ARB_BLOCK(1), - .ARB_BLOCK_ACK(1), - .ARB_LSB_HIGH_PRIORITY(1) - ) - a_arb_inst ( - .clk(clk), - .rst(rst), - .request(a_request), - .acknowledge(a_acknowledge), - .grant(a_grant), - .grant_valid(a_grant_valid), - .grant_encoded(a_grant_encoded) - ); - - // address mux - wire [M_ID_WIDTH-1:0] s_axi_awid_mux = int_s_axi_awid[a_grant_encoded*S_ID_WIDTH +: S_ID_WIDTH] | (a_grant_encoded << S_ID_WIDTH); - wire [ADDR_WIDTH-1:0] s_axi_awaddr_mux = int_s_axi_awaddr[a_grant_encoded*ADDR_WIDTH +: ADDR_WIDTH]; - wire [7:0] s_axi_awlen_mux = int_s_axi_awlen[a_grant_encoded*8 +: 8]; - wire [2:0] s_axi_awsize_mux = int_s_axi_awsize[a_grant_encoded*3 +: 3]; - wire [1:0] s_axi_awburst_mux = int_s_axi_awburst[a_grant_encoded*2 +: 2]; - wire s_axi_awlock_mux = int_s_axi_awlock[a_grant_encoded]; - wire [3:0] s_axi_awcache_mux = int_s_axi_awcache[a_grant_encoded*4 +: 4]; - wire [2:0] s_axi_awprot_mux = int_s_axi_awprot[a_grant_encoded*3 +: 3]; - wire [3:0] s_axi_awqos_mux = int_s_axi_awqos[a_grant_encoded*4 +: 4]; - wire [3:0] s_axi_awregion_mux = int_s_axi_awregion[a_grant_encoded*4 +: 4]; - wire [AWUSER_WIDTH-1:0] s_axi_awuser_mux = int_s_axi_awuser[a_grant_encoded*AWUSER_WIDTH +: AWUSER_WIDTH]; - wire s_axi_awvalid_mux = int_axi_awvalid[a_grant_encoded*M_COUNT+n] && a_grant_valid; - wire s_axi_awready_mux; - - assign int_axi_awready[n*S_COUNT +: S_COUNT] = (a_grant_valid && s_axi_awready_mux) << a_grant_encoded; - - for (m = 0; m < S_COUNT; m = m + 1) begin - assign a_request[m] = int_axi_awvalid[m*M_COUNT+n] && !a_grant[m] && !trans_limit && !w_select_valid_next; - assign a_acknowledge[m] = a_grant[m] && int_axi_awvalid[m*M_COUNT+n] && s_axi_awready_mux; - end - - assign trans_start = s_axi_awvalid_mux && s_axi_awready_mux && a_grant_valid; - - // write data mux - wire [DATA_WIDTH-1:0] s_axi_wdata_mux = int_s_axi_wdata[w_select_reg*DATA_WIDTH +: DATA_WIDTH]; - wire [STRB_WIDTH-1:0] s_axi_wstrb_mux = int_s_axi_wstrb[w_select_reg*STRB_WIDTH +: STRB_WIDTH]; - wire s_axi_wlast_mux = int_s_axi_wlast[w_select_reg]; - wire [WUSER_WIDTH-1:0] s_axi_wuser_mux = int_s_axi_wuser[w_select_reg*WUSER_WIDTH +: WUSER_WIDTH]; - wire s_axi_wvalid_mux = int_axi_wvalid[w_select_reg*M_COUNT+n] && w_select_valid_reg; - wire s_axi_wready_mux; - - assign int_axi_wready[n*S_COUNT +: S_COUNT] = (w_select_valid_reg && s_axi_wready_mux) << w_select_reg; - - // write data routing - always @* begin - w_select_next = w_select_reg; - w_select_valid_next = w_select_valid_reg && !(s_axi_wvalid_mux && s_axi_wready_mux && s_axi_wlast_mux); - w_select_new_next = w_select_new_reg || !a_grant_valid || a_acknowledge; - - if (a_grant_valid && !w_select_valid_reg && w_select_new_reg) begin - w_select_next = a_grant_encoded; - w_select_valid_next = a_grant_valid; - w_select_new_next = 1'b0; - end - end - - always @(posedge clk) begin - if (rst) begin - w_select_valid_reg <= 1'b0; - w_select_new_reg <= 1'b1; - end else begin - w_select_valid_reg <= w_select_valid_next; - w_select_new_reg <= w_select_new_next; - end - - w_select_reg <= w_select_next; - end - - // write response forwarding - wire [CL_S_COUNT-1:0] b_select = m_axi_bid[n*M_ID_WIDTH +: M_ID_WIDTH] >> S_ID_WIDTH; - - assign int_axi_bvalid[n*S_COUNT +: S_COUNT] = int_m_axi_bvalid[n] << b_select; - assign int_m_axi_bready[n] = int_axi_bready[b_select*M_COUNT+n]; - - assign trans_complete = int_m_axi_bvalid[n] && int_m_axi_bready[n]; - - // M side register - axi_register_wr #( - .DATA_WIDTH(DATA_WIDTH), - .ADDR_WIDTH(ADDR_WIDTH), - .STRB_WIDTH(STRB_WIDTH), - .ID_WIDTH(M_ID_WIDTH), - .AWUSER_ENABLE(AWUSER_ENABLE), - .AWUSER_WIDTH(AWUSER_WIDTH), - .WUSER_ENABLE(WUSER_ENABLE), - .WUSER_WIDTH(WUSER_WIDTH), - .BUSER_ENABLE(BUSER_ENABLE), - .BUSER_WIDTH(BUSER_WIDTH), - .AW_REG_TYPE(M_AW_REG_TYPE[n*2 +: 2]), - .W_REG_TYPE(M_W_REG_TYPE[n*2 +: 2]), - .B_REG_TYPE(M_B_REG_TYPE[n*2 +: 2]) - ) - reg_inst ( - .clk(clk), - .rst(rst), - .s_axi_awid(s_axi_awid_mux), - .s_axi_awaddr(s_axi_awaddr_mux), - .s_axi_awlen(s_axi_awlen_mux), - .s_axi_awsize(s_axi_awsize_mux), - .s_axi_awburst(s_axi_awburst_mux), - .s_axi_awlock(s_axi_awlock_mux), - .s_axi_awcache(s_axi_awcache_mux), - .s_axi_awprot(s_axi_awprot_mux), - .s_axi_awqos(s_axi_awqos_mux), - .s_axi_awregion(s_axi_awregion_mux), - .s_axi_awuser(s_axi_awuser_mux), - .s_axi_awvalid(s_axi_awvalid_mux), - .s_axi_awready(s_axi_awready_mux), - .s_axi_wdata(s_axi_wdata_mux), - .s_axi_wstrb(s_axi_wstrb_mux), - .s_axi_wlast(s_axi_wlast_mux), - .s_axi_wuser(s_axi_wuser_mux), - .s_axi_wvalid(s_axi_wvalid_mux), - .s_axi_wready(s_axi_wready_mux), - .s_axi_bid(int_m_axi_bid[n*M_ID_WIDTH +: M_ID_WIDTH]), - .s_axi_bresp(int_m_axi_bresp[n*2 +: 2]), - .s_axi_buser(int_m_axi_buser[n*BUSER_WIDTH +: BUSER_WIDTH]), - .s_axi_bvalid(int_m_axi_bvalid[n]), - .s_axi_bready(int_m_axi_bready[n]), - .m_axi_awid(m_axi_awid[n*M_ID_WIDTH +: M_ID_WIDTH]), - .m_axi_awaddr(m_axi_awaddr[n*ADDR_WIDTH +: ADDR_WIDTH]), - .m_axi_awlen(m_axi_awlen[n*8 +: 8]), - .m_axi_awsize(m_axi_awsize[n*3 +: 3]), - .m_axi_awburst(m_axi_awburst[n*2 +: 2]), - .m_axi_awlock(m_axi_awlock[n]), - .m_axi_awcache(m_axi_awcache[n*4 +: 4]), - .m_axi_awprot(m_axi_awprot[n*3 +: 3]), - .m_axi_awqos(m_axi_awqos[n*4 +: 4]), - .m_axi_awregion(m_axi_awregion[n*4 +: 4]), - .m_axi_awuser(m_axi_awuser[n*AWUSER_WIDTH +: AWUSER_WIDTH]), - .m_axi_awvalid(m_axi_awvalid[n]), - .m_axi_awready(m_axi_awready[n]), - .m_axi_wdata(m_axi_wdata[n*DATA_WIDTH +: DATA_WIDTH]), - .m_axi_wstrb(m_axi_wstrb[n*STRB_WIDTH +: STRB_WIDTH]), - .m_axi_wlast(m_axi_wlast[n]), - .m_axi_wuser(m_axi_wuser[n*WUSER_WIDTH +: WUSER_WIDTH]), - .m_axi_wvalid(m_axi_wvalid[n]), - .m_axi_wready(m_axi_wready[n]), - .m_axi_bid(m_axi_bid[n*M_ID_WIDTH +: M_ID_WIDTH]), - .m_axi_bresp(m_axi_bresp[n*2 +: 2]), - .m_axi_buser(m_axi_buser[n*BUSER_WIDTH +: BUSER_WIDTH]), - .m_axi_bvalid(m_axi_bvalid[n]), - .m_axi_bready(m_axi_bready[n]) - ); - end // m_ifaces - -endgenerate - -endmodule - -`resetall diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_pipeline.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_pipeline.v deleted file mode 100644 index 7f3d08fe..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_pipeline.v +++ /dev/null @@ -1,214 +0,0 @@ -module axi_pipeline #( - parameter - C_M_AXI_ID_WIDTH = 8, - C_M_AXI_ADDR_WIDTH = 32, - C_M_AXI_DATA_WIDTH = 512, - C_M_AXI_WSTRB_WIDTH = (512 / 8), - - PIPELINE_LEVEL = 3, - EnableReadChannel = 1, - EnableWriteChannel = 1 -) -( - input ap_clk, - - // pipeline in - input in_AWVALID, - output in_AWREADY, - input [C_M_AXI_ADDR_WIDTH - 1:0] in_AWADDR, - input [1:0] in_AWBURST, - input [7:0] in_AWLEN, - input [2:0] in_AWSIZE, - input [C_M_AXI_ID_WIDTH - 1:0] in_AWID, - - input in_WVALID, - output in_WREADY, - input [C_M_AXI_DATA_WIDTH - 1:0] in_WDATA, - input [C_M_AXI_WSTRB_WIDTH - 1:0] in_WSTRB, - input in_WLAST, - - output in_BVALID, - input in_BREADY, - output [1:0] in_BRESP, - output [C_M_AXI_ID_WIDTH - 1:0] in_BID, - - input in_ARVALID, - output in_ARREADY, - input [C_M_AXI_ADDR_WIDTH - 1:0] in_ARADDR, - input [1:0] in_ARBURST, - input [7:0] in_ARLEN, - input [2:0] in_ARSIZE, - input [C_M_AXI_ID_WIDTH - 1:0] in_ARID, - - output in_RVALID, - input in_RREADY, - output [C_M_AXI_DATA_WIDTH - 1:0] in_RDATA, - output in_RLAST, - output [C_M_AXI_ID_WIDTH - 1:0] in_RID, - output [1:0] in_RRESP, - - // pipeline out - output out_AWVALID, - input out_AWREADY, - output [C_M_AXI_ADDR_WIDTH - 1:0] out_AWADDR, - output [1:0] out_AWBURST, - output [7:0] out_AWLEN, - output [2:0] out_AWSIZE, - output [C_M_AXI_ID_WIDTH - 1:0] out_AWID, - - output out_WVALID, - input out_WREADY, - output [C_M_AXI_DATA_WIDTH - 1:0] out_WDATA, - output [C_M_AXI_WSTRB_WIDTH - 1:0] out_WSTRB, - output out_WLAST, - - input out_BVALID, - output out_BREADY, - input [1:0] out_BRESP, - input [C_M_AXI_ID_WIDTH - 1:0] out_BID, - - output out_ARVALID, - input out_ARREADY, - output [C_M_AXI_ADDR_WIDTH - 1:0] out_ARADDR, - output [1:0] out_ARBURST, - output [7:0] out_ARLEN, - output [2:0] out_ARSIZE, - output [C_M_AXI_ID_WIDTH - 1:0] out_ARID, - - input out_RVALID, - output out_RREADY, - input [C_M_AXI_DATA_WIDTH - 1:0] out_RDATA, - input out_RLAST, - input [C_M_AXI_ID_WIDTH - 1:0] out_RID, - input [1:0] out_RRESP -); - - relay_station - #( - .DATA_WIDTH ( C_M_AXI_ADDR_WIDTH + C_M_AXI_ID_WIDTH + 8 + 3 + 2 ), - .DEPTH ( 2 ), - .ADDR_WIDTH ( 1 ), - .LEVEL ( PIPELINE_LEVEL ), - .CONNECT ( EnableWriteChannel ) - ) - AW_pipeline - ( - .clk ( ap_clk ), - .reset ( 1'b0 ), - .if_read_ce ( 1'b1 ), - .if_write_ce ( 1'b1 ), - - .if_din ( {in_AWADDR, in_AWID, in_AWLEN, in_AWSIZE, in_AWBURST} ), - .if_full_n ( in_AWREADY ), - .if_write ( in_AWVALID ), - - .if_dout ( {out_AWADDR, out_AWID, out_AWLEN, out_AWSIZE, out_AWBURST} ), - .if_empty_n ( out_AWVALID ), - .if_read ( out_AWREADY ) - ); - - relay_station - #( - .DATA_WIDTH( - C_M_AXI_DATA_WIDTH + C_M_AXI_WSTRB_WIDTH + 1 - ), - .DEPTH(2), - .ADDR_WIDTH(1), - .LEVEL( PIPELINE_LEVEL ), - .CONNECT ( EnableWriteChannel ) - ) - W_pipeline - ( - .clk (ap_clk), - .reset ( 1'b0 ), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din ({in_WDATA, in_WSTRB, in_WLAST}), - .if_full_n ( in_WREADY), - .if_write ( in_WVALID), - - .if_dout ({out_WDATA, out_WSTRB, out_WLAST}), - .if_empty_n (out_WVALID), - .if_read (out_WREADY) - ); - - relay_station - #( - .DATA_WIDTH( - C_M_AXI_ADDR_WIDTH + C_M_AXI_ID_WIDTH + 8 + 3 + 2 - ), - .DEPTH(2), - .ADDR_WIDTH(1), - .LEVEL( PIPELINE_LEVEL ), - .CONNECT( EnableReadChannel ) - ) - AR_pipeline - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din ({ in_ARADDR, in_ARID, in_ARLEN, in_ARSIZE, in_ARBURST}), - .if_full_n ( in_ARREADY), - .if_write ( in_ARVALID), - - .if_dout ({out_ARADDR, out_ARID, out_ARLEN, out_ARSIZE, out_ARBURST}), - .if_empty_n (out_ARVALID), - .if_read (out_ARREADY) - ); - - relay_station - #( - .DATA_WIDTH( - C_M_AXI_DATA_WIDTH + 1 + C_M_AXI_ID_WIDTH + 2 - ), - .DEPTH(2), - .ADDR_WIDTH(1), - .LEVEL( PIPELINE_LEVEL ), - .CONNECT( EnableReadChannel ) - ) - R_pipeline - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din ({out_RDATA, out_RLAST, out_RID, out_RRESP}), - .if_full_n ( out_RREADY), - .if_write ( out_RVALID), - - .if_dout ({in_RDATA, in_RLAST, in_RID, in_RRESP}), - .if_empty_n (in_RVALID), - .if_read (in_RREADY) - ); - - relay_station - #( - .DATA_WIDTH( - 2 + C_M_AXI_ID_WIDTH - ), - .DEPTH(2), - .ADDR_WIDTH(1), - .LEVEL( PIPELINE_LEVEL ), - .CONNECT( EnableWriteChannel ) - ) - B_pipeline - ( - .clk (ap_clk), - .reset (1'b0), - .if_read_ce (1'b1), - .if_write_ce(1'b1), - - .if_din ({out_BRESP, out_BID}), - .if_full_n (out_BREADY), - .if_write (out_BVALID), - - .if_dout ({ in_BRESP, in_BID}), - .if_empty_n (in_BVALID), - .if_read (in_BREADY) - ); - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_register_rd.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_register_rd.v deleted file mode 100644 index c0df03a0..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_register_rd.v +++ /dev/null @@ -1,530 +0,0 @@ -/* - -Copyright (c) 2018 Alex Forencich - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -*/ - -// Language: Verilog 2001 - -`resetall -`timescale 1ns / 1ps -`default_nettype none - -/* - * AXI4 register (read) - */ -module axi_register_rd # -( - // Width of data bus in bits - parameter DATA_WIDTH = 32, - // Width of address bus in bits - parameter ADDR_WIDTH = 32, - // Width of wstrb (width of data bus in words) - parameter STRB_WIDTH = (DATA_WIDTH/8), - // Width of ID signal - parameter ID_WIDTH = 8, - // Propagate aruser signal - parameter ARUSER_ENABLE = 0, - // Width of aruser signal - parameter ARUSER_WIDTH = 1, - // Propagate ruser signal - parameter RUSER_ENABLE = 0, - // Width of ruser signal - parameter RUSER_WIDTH = 1, - // AR channel register type - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter AR_REG_TYPE = 1, - // R channel register type - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter R_REG_TYPE = 2 -) -( - input wire clk, - input wire rst, - - /* - * AXI slave interface - */ - input wire [ID_WIDTH-1:0] s_axi_arid, - input wire [ADDR_WIDTH-1:0] s_axi_araddr, - input wire [7:0] s_axi_arlen, - input wire [2:0] s_axi_arsize, - input wire [1:0] s_axi_arburst, - input wire s_axi_arlock, - input wire [3:0] s_axi_arcache, - input wire [2:0] s_axi_arprot, - input wire [3:0] s_axi_arqos, - input wire [3:0] s_axi_arregion, - input wire [ARUSER_WIDTH-1:0] s_axi_aruser, - input wire s_axi_arvalid, - output wire s_axi_arready, - output wire [ID_WIDTH-1:0] s_axi_rid, - output wire [DATA_WIDTH-1:0] s_axi_rdata, - output wire [1:0] s_axi_rresp, - output wire s_axi_rlast, - output wire [RUSER_WIDTH-1:0] s_axi_ruser, - output wire s_axi_rvalid, - input wire s_axi_rready, - - /* - * AXI master interface - */ - output wire [ID_WIDTH-1:0] m_axi_arid, - output wire [ADDR_WIDTH-1:0] m_axi_araddr, - output wire [7:0] m_axi_arlen, - output wire [2:0] m_axi_arsize, - output wire [1:0] m_axi_arburst, - output wire m_axi_arlock, - output wire [3:0] m_axi_arcache, - output wire [2:0] m_axi_arprot, - output wire [3:0] m_axi_arqos, - output wire [3:0] m_axi_arregion, - output wire [ARUSER_WIDTH-1:0] m_axi_aruser, - output wire m_axi_arvalid, - input wire m_axi_arready, - input wire [ID_WIDTH-1:0] m_axi_rid, - input wire [DATA_WIDTH-1:0] m_axi_rdata, - input wire [1:0] m_axi_rresp, - input wire m_axi_rlast, - input wire [RUSER_WIDTH-1:0] m_axi_ruser, - input wire m_axi_rvalid, - output wire m_axi_rready -); - -generate - -// AR channel - -if (AR_REG_TYPE > 1) begin -// skid buffer, no bubble cycles - -// datapath registers -reg s_axi_arready_reg = 1'b0; - -reg [ID_WIDTH-1:0] m_axi_arid_reg = {ID_WIDTH{1'b0}}; -reg [ADDR_WIDTH-1:0] m_axi_araddr_reg = {ADDR_WIDTH{1'b0}}; -reg [7:0] m_axi_arlen_reg = 8'd0; -reg [2:0] m_axi_arsize_reg = 3'd0; -reg [1:0] m_axi_arburst_reg = 2'd0; -reg m_axi_arlock_reg = 1'b0; -reg [3:0] m_axi_arcache_reg = 4'd0; -reg [2:0] m_axi_arprot_reg = 3'd0; -reg [3:0] m_axi_arqos_reg = 4'd0; -reg [3:0] m_axi_arregion_reg = 4'd0; -reg [ARUSER_WIDTH-1:0] m_axi_aruser_reg = {ARUSER_WIDTH{1'b0}}; -reg m_axi_arvalid_reg = 1'b0, m_axi_arvalid_next; - -reg [ID_WIDTH-1:0] temp_m_axi_arid_reg = {ID_WIDTH{1'b0}}; -reg [ADDR_WIDTH-1:0] temp_m_axi_araddr_reg = {ADDR_WIDTH{1'b0}}; -reg [7:0] temp_m_axi_arlen_reg = 8'd0; -reg [2:0] temp_m_axi_arsize_reg = 3'd0; -reg [1:0] temp_m_axi_arburst_reg = 2'd0; -reg temp_m_axi_arlock_reg = 1'b0; -reg [3:0] temp_m_axi_arcache_reg = 4'd0; -reg [2:0] temp_m_axi_arprot_reg = 3'd0; -reg [3:0] temp_m_axi_arqos_reg = 4'd0; -reg [3:0] temp_m_axi_arregion_reg = 4'd0; -reg [ARUSER_WIDTH-1:0] temp_m_axi_aruser_reg = {ARUSER_WIDTH{1'b0}}; -reg temp_m_axi_arvalid_reg = 1'b0, temp_m_axi_arvalid_next; - -// datapath control -reg store_axi_ar_input_to_output; -reg store_axi_ar_input_to_temp; -reg store_axi_ar_temp_to_output; - -assign s_axi_arready = s_axi_arready_reg; - -assign m_axi_arid = m_axi_arid_reg; -assign m_axi_araddr = m_axi_araddr_reg; -assign m_axi_arlen = m_axi_arlen_reg; -assign m_axi_arsize = m_axi_arsize_reg; -assign m_axi_arburst = m_axi_arburst_reg; -assign m_axi_arlock = m_axi_arlock_reg; -assign m_axi_arcache = m_axi_arcache_reg; -assign m_axi_arprot = m_axi_arprot_reg; -assign m_axi_arqos = m_axi_arqos_reg; -assign m_axi_arregion = m_axi_arregion_reg; -assign m_axi_aruser = ARUSER_ENABLE ? m_axi_aruser_reg : {ARUSER_WIDTH{1'b0}}; -assign m_axi_arvalid = m_axi_arvalid_reg; - -// enable ready input next cycle if output is ready or the temp reg will not be filled on the next cycle (output reg empty or no input) -wire s_axi_arready_early = m_axi_arready | (~temp_m_axi_arvalid_reg & (~m_axi_arvalid_reg | ~s_axi_arvalid)); - -always @* begin - // transfer sink ready state to source - m_axi_arvalid_next = m_axi_arvalid_reg; - temp_m_axi_arvalid_next = temp_m_axi_arvalid_reg; - - store_axi_ar_input_to_output = 1'b0; - store_axi_ar_input_to_temp = 1'b0; - store_axi_ar_temp_to_output = 1'b0; - - if (s_axi_arready_reg) begin - // input is ready - if (m_axi_arready | ~m_axi_arvalid_reg) begin - // output is ready or currently not valid, transfer data to output - m_axi_arvalid_next = s_axi_arvalid; - store_axi_ar_input_to_output = 1'b1; - end else begin - // output is not ready, store input in temp - temp_m_axi_arvalid_next = s_axi_arvalid; - store_axi_ar_input_to_temp = 1'b1; - end - end else if (m_axi_arready) begin - // input is not ready, but output is ready - m_axi_arvalid_next = temp_m_axi_arvalid_reg; - temp_m_axi_arvalid_next = 1'b0; - store_axi_ar_temp_to_output = 1'b1; - end -end - -always @(posedge clk) begin - if (rst) begin - s_axi_arready_reg <= 1'b0; - m_axi_arvalid_reg <= 1'b0; - temp_m_axi_arvalid_reg <= 1'b0; - end else begin - s_axi_arready_reg <= s_axi_arready_early; - m_axi_arvalid_reg <= m_axi_arvalid_next; - temp_m_axi_arvalid_reg <= temp_m_axi_arvalid_next; - end - - // datapath - if (store_axi_ar_input_to_output) begin - m_axi_arid_reg <= s_axi_arid; - m_axi_araddr_reg <= s_axi_araddr; - m_axi_arlen_reg <= s_axi_arlen; - m_axi_arsize_reg <= s_axi_arsize; - m_axi_arburst_reg <= s_axi_arburst; - m_axi_arlock_reg <= s_axi_arlock; - m_axi_arcache_reg <= s_axi_arcache; - m_axi_arprot_reg <= s_axi_arprot; - m_axi_arqos_reg <= s_axi_arqos; - m_axi_arregion_reg <= s_axi_arregion; - m_axi_aruser_reg <= s_axi_aruser; - end else if (store_axi_ar_temp_to_output) begin - m_axi_arid_reg <= temp_m_axi_arid_reg; - m_axi_araddr_reg <= temp_m_axi_araddr_reg; - m_axi_arlen_reg <= temp_m_axi_arlen_reg; - m_axi_arsize_reg <= temp_m_axi_arsize_reg; - m_axi_arburst_reg <= temp_m_axi_arburst_reg; - m_axi_arlock_reg <= temp_m_axi_arlock_reg; - m_axi_arcache_reg <= temp_m_axi_arcache_reg; - m_axi_arprot_reg <= temp_m_axi_arprot_reg; - m_axi_arqos_reg <= temp_m_axi_arqos_reg; - m_axi_arregion_reg <= temp_m_axi_arregion_reg; - m_axi_aruser_reg <= temp_m_axi_aruser_reg; - end - - if (store_axi_ar_input_to_temp) begin - temp_m_axi_arid_reg <= s_axi_arid; - temp_m_axi_araddr_reg <= s_axi_araddr; - temp_m_axi_arlen_reg <= s_axi_arlen; - temp_m_axi_arsize_reg <= s_axi_arsize; - temp_m_axi_arburst_reg <= s_axi_arburst; - temp_m_axi_arlock_reg <= s_axi_arlock; - temp_m_axi_arcache_reg <= s_axi_arcache; - temp_m_axi_arprot_reg <= s_axi_arprot; - temp_m_axi_arqos_reg <= s_axi_arqos; - temp_m_axi_arregion_reg <= s_axi_arregion; - temp_m_axi_aruser_reg <= s_axi_aruser; - end -end - -end else if (AR_REG_TYPE == 1) begin -// simple register, inserts bubble cycles - -// datapath registers -reg s_axi_arready_reg = 1'b0; - -reg [ID_WIDTH-1:0] m_axi_arid_reg = {ID_WIDTH{1'b0}}; -reg [ADDR_WIDTH-1:0] m_axi_araddr_reg = {ADDR_WIDTH{1'b0}}; -reg [7:0] m_axi_arlen_reg = 8'd0; -reg [2:0] m_axi_arsize_reg = 3'd0; -reg [1:0] m_axi_arburst_reg = 2'd0; -reg m_axi_arlock_reg = 1'b0; -reg [3:0] m_axi_arcache_reg = 4'd0; -reg [2:0] m_axi_arprot_reg = 3'd0; -reg [3:0] m_axi_arqos_reg = 4'd0; -reg [3:0] m_axi_arregion_reg = 4'd0; -reg [ARUSER_WIDTH-1:0] m_axi_aruser_reg = {ARUSER_WIDTH{1'b0}}; -reg m_axi_arvalid_reg = 1'b0, m_axi_arvalid_next; - -// datapath control -reg store_axi_ar_input_to_output; - -assign s_axi_arready = s_axi_arready_reg; - -assign m_axi_arid = m_axi_arid_reg; -assign m_axi_araddr = m_axi_araddr_reg; -assign m_axi_arlen = m_axi_arlen_reg; -assign m_axi_arsize = m_axi_arsize_reg; -assign m_axi_arburst = m_axi_arburst_reg; -assign m_axi_arlock = m_axi_arlock_reg; -assign m_axi_arcache = m_axi_arcache_reg; -assign m_axi_arprot = m_axi_arprot_reg; -assign m_axi_arqos = m_axi_arqos_reg; -assign m_axi_arregion = m_axi_arregion_reg; -assign m_axi_aruser = ARUSER_ENABLE ? m_axi_aruser_reg : {ARUSER_WIDTH{1'b0}}; -assign m_axi_arvalid = m_axi_arvalid_reg; - -// enable ready input next cycle if output buffer will be empty -wire s_axi_arready_early = !m_axi_arvalid_next; - -always @* begin - // transfer sink ready state to source - m_axi_arvalid_next = m_axi_arvalid_reg; - - store_axi_ar_input_to_output = 1'b0; - - if (s_axi_arready_reg) begin - m_axi_arvalid_next = s_axi_arvalid; - store_axi_ar_input_to_output = 1'b1; - end else if (m_axi_arready) begin - m_axi_arvalid_next = 1'b0; - end -end - -always @(posedge clk) begin - if (rst) begin - s_axi_arready_reg <= 1'b0; - m_axi_arvalid_reg <= 1'b0; - end else begin - s_axi_arready_reg <= s_axi_arready_early; - m_axi_arvalid_reg <= m_axi_arvalid_next; - end - - // datapath - if (store_axi_ar_input_to_output) begin - m_axi_arid_reg <= s_axi_arid; - m_axi_araddr_reg <= s_axi_araddr; - m_axi_arlen_reg <= s_axi_arlen; - m_axi_arsize_reg <= s_axi_arsize; - m_axi_arburst_reg <= s_axi_arburst; - m_axi_arlock_reg <= s_axi_arlock; - m_axi_arcache_reg <= s_axi_arcache; - m_axi_arprot_reg <= s_axi_arprot; - m_axi_arqos_reg <= s_axi_arqos; - m_axi_arregion_reg <= s_axi_arregion; - m_axi_aruser_reg <= s_axi_aruser; - end -end - -end else begin - - // bypass AR channel - assign m_axi_arid = s_axi_arid; - assign m_axi_araddr = s_axi_araddr; - assign m_axi_arlen = s_axi_arlen; - assign m_axi_arsize = s_axi_arsize; - assign m_axi_arburst = s_axi_arburst; - assign m_axi_arlock = s_axi_arlock; - assign m_axi_arcache = s_axi_arcache; - assign m_axi_arprot = s_axi_arprot; - assign m_axi_arqos = s_axi_arqos; - assign m_axi_arregion = s_axi_arregion; - assign m_axi_aruser = ARUSER_ENABLE ? s_axi_aruser : {ARUSER_WIDTH{1'b0}}; - assign m_axi_arvalid = s_axi_arvalid; - assign s_axi_arready = m_axi_arready; - -end - -// R channel - -if (R_REG_TYPE > 1) begin -// skid buffer, no bubble cycles - -// datapath registers -reg m_axi_rready_reg = 1'b0; - -reg [ID_WIDTH-1:0] s_axi_rid_reg = {ID_WIDTH{1'b0}}; -reg [DATA_WIDTH-1:0] s_axi_rdata_reg = {DATA_WIDTH{1'b0}}; -reg [1:0] s_axi_rresp_reg = 2'b0; -reg s_axi_rlast_reg = 1'b0; -reg [RUSER_WIDTH-1:0] s_axi_ruser_reg = {RUSER_WIDTH{1'b0}}; -reg s_axi_rvalid_reg = 1'b0, s_axi_rvalid_next; - -reg [ID_WIDTH-1:0] temp_s_axi_rid_reg = {ID_WIDTH{1'b0}}; -reg [DATA_WIDTH-1:0] temp_s_axi_rdata_reg = {DATA_WIDTH{1'b0}}; -reg [1:0] temp_s_axi_rresp_reg = 2'b0; -reg temp_s_axi_rlast_reg = 1'b0; -reg [RUSER_WIDTH-1:0] temp_s_axi_ruser_reg = {RUSER_WIDTH{1'b0}}; -reg temp_s_axi_rvalid_reg = 1'b0, temp_s_axi_rvalid_next; - -// datapath control -reg store_axi_r_input_to_output; -reg store_axi_r_input_to_temp; -reg store_axi_r_temp_to_output; - -assign m_axi_rready = m_axi_rready_reg; - -assign s_axi_rid = s_axi_rid_reg; -assign s_axi_rdata = s_axi_rdata_reg; -assign s_axi_rresp = s_axi_rresp_reg; -assign s_axi_rlast = s_axi_rlast_reg; -assign s_axi_ruser = RUSER_ENABLE ? s_axi_ruser_reg : {RUSER_WIDTH{1'b0}}; -assign s_axi_rvalid = s_axi_rvalid_reg; - -// enable ready input next cycle if output is ready or the temp reg will not be filled on the next cycle (output reg empty or no input) -wire m_axi_rready_early = s_axi_rready | (~temp_s_axi_rvalid_reg & (~s_axi_rvalid_reg | ~m_axi_rvalid)); - -always @* begin - // transfer sink ready state to source - s_axi_rvalid_next = s_axi_rvalid_reg; - temp_s_axi_rvalid_next = temp_s_axi_rvalid_reg; - - store_axi_r_input_to_output = 1'b0; - store_axi_r_input_to_temp = 1'b0; - store_axi_r_temp_to_output = 1'b0; - - if (m_axi_rready_reg) begin - // input is ready - if (s_axi_rready | ~s_axi_rvalid_reg) begin - // output is ready or currently not valid, transfer data to output - s_axi_rvalid_next = m_axi_rvalid; - store_axi_r_input_to_output = 1'b1; - end else begin - // output is not ready, store input in temp - temp_s_axi_rvalid_next = m_axi_rvalid; - store_axi_r_input_to_temp = 1'b1; - end - end else if (s_axi_rready) begin - // input is not ready, but output is ready - s_axi_rvalid_next = temp_s_axi_rvalid_reg; - temp_s_axi_rvalid_next = 1'b0; - store_axi_r_temp_to_output = 1'b1; - end -end - -always @(posedge clk) begin - if (rst) begin - m_axi_rready_reg <= 1'b0; - s_axi_rvalid_reg <= 1'b0; - temp_s_axi_rvalid_reg <= 1'b0; - end else begin - m_axi_rready_reg <= m_axi_rready_early; - s_axi_rvalid_reg <= s_axi_rvalid_next; - temp_s_axi_rvalid_reg <= temp_s_axi_rvalid_next; - end - - // datapath - if (store_axi_r_input_to_output) begin - s_axi_rid_reg <= m_axi_rid; - s_axi_rdata_reg <= m_axi_rdata; - s_axi_rresp_reg <= m_axi_rresp; - s_axi_rlast_reg <= m_axi_rlast; - s_axi_ruser_reg <= m_axi_ruser; - end else if (store_axi_r_temp_to_output) begin - s_axi_rid_reg <= temp_s_axi_rid_reg; - s_axi_rdata_reg <= temp_s_axi_rdata_reg; - s_axi_rresp_reg <= temp_s_axi_rresp_reg; - s_axi_rlast_reg <= temp_s_axi_rlast_reg; - s_axi_ruser_reg <= temp_s_axi_ruser_reg; - end - - if (store_axi_r_input_to_temp) begin - temp_s_axi_rid_reg <= m_axi_rid; - temp_s_axi_rdata_reg <= m_axi_rdata; - temp_s_axi_rresp_reg <= m_axi_rresp; - temp_s_axi_rlast_reg <= m_axi_rlast; - temp_s_axi_ruser_reg <= m_axi_ruser; - end -end - -end else if (R_REG_TYPE == 1) begin -// simple register, inserts bubble cycles - -// datapath registers -reg m_axi_rready_reg = 1'b0; - -reg [ID_WIDTH-1:0] s_axi_rid_reg = {ID_WIDTH{1'b0}}; -reg [DATA_WIDTH-1:0] s_axi_rdata_reg = {DATA_WIDTH{1'b0}}; -reg [1:0] s_axi_rresp_reg = 2'b0; -reg s_axi_rlast_reg = 1'b0; -reg [RUSER_WIDTH-1:0] s_axi_ruser_reg = {RUSER_WIDTH{1'b0}}; -reg s_axi_rvalid_reg = 1'b0, s_axi_rvalid_next; - -// datapath control -reg store_axi_r_input_to_output; - -assign m_axi_rready = m_axi_rready_reg; - -assign s_axi_rid = s_axi_rid_reg; -assign s_axi_rdata = s_axi_rdata_reg; -assign s_axi_rresp = s_axi_rresp_reg; -assign s_axi_rlast = s_axi_rlast_reg; -assign s_axi_ruser = RUSER_ENABLE ? s_axi_ruser_reg : {RUSER_WIDTH{1'b0}}; -assign s_axi_rvalid = s_axi_rvalid_reg; - -// enable ready input next cycle if output buffer will be empty -wire m_axi_rready_early = !s_axi_rvalid_next; - -always @* begin - // transfer sink ready state to source - s_axi_rvalid_next = s_axi_rvalid_reg; - - store_axi_r_input_to_output = 1'b0; - - if (m_axi_rready_reg) begin - s_axi_rvalid_next = m_axi_rvalid; - store_axi_r_input_to_output = 1'b1; - end else if (s_axi_rready) begin - s_axi_rvalid_next = 1'b0; - end -end - -always @(posedge clk) begin - if (rst) begin - m_axi_rready_reg <= 1'b0; - s_axi_rvalid_reg <= 1'b0; - end else begin - m_axi_rready_reg <= m_axi_rready_early; - s_axi_rvalid_reg <= s_axi_rvalid_next; - end - - // datapath - if (store_axi_r_input_to_output) begin - s_axi_rid_reg <= m_axi_rid; - s_axi_rdata_reg <= m_axi_rdata; - s_axi_rresp_reg <= m_axi_rresp; - s_axi_rlast_reg <= m_axi_rlast; - s_axi_ruser_reg <= m_axi_ruser; - end -end - -end else begin - - // bypass R channel - assign s_axi_rid = m_axi_rid; - assign s_axi_rdata = m_axi_rdata; - assign s_axi_rresp = m_axi_rresp; - assign s_axi_rlast = m_axi_rlast; - assign s_axi_ruser = RUSER_ENABLE ? m_axi_ruser : {RUSER_WIDTH{1'b0}}; - assign s_axi_rvalid = m_axi_rvalid; - assign m_axi_rready = s_axi_rready; - -end - -endgenerate - -endmodule - -`resetall diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_register_wr.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_register_wr.v deleted file mode 100644 index 9176d6ba..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/axi_register_wr.v +++ /dev/null @@ -1,691 +0,0 @@ -/* - -Copyright (c) 2018 Alex Forencich - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -*/ - -// Language: Verilog 2001 - -`resetall -`timescale 1ns / 1ps -`default_nettype none - -/* - * AXI4 register (write) - */ -module axi_register_wr # -( - // Width of data bus in bits - parameter DATA_WIDTH = 32, - // Width of address bus in bits - parameter ADDR_WIDTH = 32, - // Width of wstrb (width of data bus in words) - parameter STRB_WIDTH = (DATA_WIDTH/8), - // Width of ID signal - parameter ID_WIDTH = 8, - // Propagate awuser signal - parameter AWUSER_ENABLE = 0, - // Width of awuser signal - parameter AWUSER_WIDTH = 1, - // Propagate wuser signal - parameter WUSER_ENABLE = 0, - // Width of wuser signal - parameter WUSER_WIDTH = 1, - // Propagate buser signal - parameter BUSER_ENABLE = 0, - // Width of buser signal - parameter BUSER_WIDTH = 1, - // AW channel register type - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter AW_REG_TYPE = 1, - // W channel register type - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter W_REG_TYPE = 2, - // B channel register type - // 0 to bypass, 1 for simple buffer, 2 for skid buffer - parameter B_REG_TYPE = 1 -) -( - input wire clk, - input wire rst, - - /* - * AXI slave interface - */ - input wire [ID_WIDTH-1:0] s_axi_awid, - input wire [ADDR_WIDTH-1:0] s_axi_awaddr, - input wire [7:0] s_axi_awlen, - input wire [2:0] s_axi_awsize, - input wire [1:0] s_axi_awburst, - input wire s_axi_awlock, - input wire [3:0] s_axi_awcache, - input wire [2:0] s_axi_awprot, - input wire [3:0] s_axi_awqos, - input wire [3:0] s_axi_awregion, - input wire [AWUSER_WIDTH-1:0] s_axi_awuser, - input wire s_axi_awvalid, - output wire s_axi_awready, - input wire [DATA_WIDTH-1:0] s_axi_wdata, - input wire [STRB_WIDTH-1:0] s_axi_wstrb, - input wire s_axi_wlast, - input wire [WUSER_WIDTH-1:0] s_axi_wuser, - input wire s_axi_wvalid, - output wire s_axi_wready, - output wire [ID_WIDTH-1:0] s_axi_bid, - output wire [1:0] s_axi_bresp, - output wire [BUSER_WIDTH-1:0] s_axi_buser, - output wire s_axi_bvalid, - input wire s_axi_bready, - - /* - * AXI master interface - */ - output wire [ID_WIDTH-1:0] m_axi_awid, - output wire [ADDR_WIDTH-1:0] m_axi_awaddr, - output wire [7:0] m_axi_awlen, - output wire [2:0] m_axi_awsize, - output wire [1:0] m_axi_awburst, - output wire m_axi_awlock, - output wire [3:0] m_axi_awcache, - output wire [2:0] m_axi_awprot, - output wire [3:0] m_axi_awqos, - output wire [3:0] m_axi_awregion, - output wire [AWUSER_WIDTH-1:0] m_axi_awuser, - output wire m_axi_awvalid, - input wire m_axi_awready, - output wire [DATA_WIDTH-1:0] m_axi_wdata, - output wire [STRB_WIDTH-1:0] m_axi_wstrb, - output wire m_axi_wlast, - output wire [WUSER_WIDTH-1:0] m_axi_wuser, - output wire m_axi_wvalid, - input wire m_axi_wready, - input wire [ID_WIDTH-1:0] m_axi_bid, - input wire [1:0] m_axi_bresp, - input wire [BUSER_WIDTH-1:0] m_axi_buser, - input wire m_axi_bvalid, - output wire m_axi_bready -); - -generate - -// AW channel - -if (AW_REG_TYPE > 1) begin -// skid buffer, no bubble cycles - -// datapath registers -reg s_axi_awready_reg = 1'b0; - -reg [ID_WIDTH-1:0] m_axi_awid_reg = {ID_WIDTH{1'b0}}; -reg [ADDR_WIDTH-1:0] m_axi_awaddr_reg = {ADDR_WIDTH{1'b0}}; -reg [7:0] m_axi_awlen_reg = 8'd0; -reg [2:0] m_axi_awsize_reg = 3'd0; -reg [1:0] m_axi_awburst_reg = 2'd0; -reg m_axi_awlock_reg = 1'b0; -reg [3:0] m_axi_awcache_reg = 4'd0; -reg [2:0] m_axi_awprot_reg = 3'd0; -reg [3:0] m_axi_awqos_reg = 4'd0; -reg [3:0] m_axi_awregion_reg = 4'd0; -reg [AWUSER_WIDTH-1:0] m_axi_awuser_reg = {AWUSER_WIDTH{1'b0}}; -reg m_axi_awvalid_reg = 1'b0, m_axi_awvalid_next; - -reg [ID_WIDTH-1:0] temp_m_axi_awid_reg = {ID_WIDTH{1'b0}}; -reg [ADDR_WIDTH-1:0] temp_m_axi_awaddr_reg = {ADDR_WIDTH{1'b0}}; -reg [7:0] temp_m_axi_awlen_reg = 8'd0; -reg [2:0] temp_m_axi_awsize_reg = 3'd0; -reg [1:0] temp_m_axi_awburst_reg = 2'd0; -reg temp_m_axi_awlock_reg = 1'b0; -reg [3:0] temp_m_axi_awcache_reg = 4'd0; -reg [2:0] temp_m_axi_awprot_reg = 3'd0; -reg [3:0] temp_m_axi_awqos_reg = 4'd0; -reg [3:0] temp_m_axi_awregion_reg = 4'd0; -reg [AWUSER_WIDTH-1:0] temp_m_axi_awuser_reg = {AWUSER_WIDTH{1'b0}}; -reg temp_m_axi_awvalid_reg = 1'b0, temp_m_axi_awvalid_next; - -// datapath control -reg store_axi_aw_input_to_output; -reg store_axi_aw_input_to_temp; -reg store_axi_aw_temp_to_output; - -assign s_axi_awready = s_axi_awready_reg; - -assign m_axi_awid = m_axi_awid_reg; -assign m_axi_awaddr = m_axi_awaddr_reg; -assign m_axi_awlen = m_axi_awlen_reg; -assign m_axi_awsize = m_axi_awsize_reg; -assign m_axi_awburst = m_axi_awburst_reg; -assign m_axi_awlock = m_axi_awlock_reg; -assign m_axi_awcache = m_axi_awcache_reg; -assign m_axi_awprot = m_axi_awprot_reg; -assign m_axi_awqos = m_axi_awqos_reg; -assign m_axi_awregion = m_axi_awregion_reg; -assign m_axi_awuser = AWUSER_ENABLE ? m_axi_awuser_reg : {AWUSER_WIDTH{1'b0}}; -assign m_axi_awvalid = m_axi_awvalid_reg; - -// enable ready input next cycle if output is ready or the temp reg will not be filled on the next cycle (output reg empty or no input) -wire s_axi_awready_early = m_axi_awready | (~temp_m_axi_awvalid_reg & (~m_axi_awvalid_reg | ~s_axi_awvalid)); - -always @* begin - // transfer sink ready state to source - m_axi_awvalid_next = m_axi_awvalid_reg; - temp_m_axi_awvalid_next = temp_m_axi_awvalid_reg; - - store_axi_aw_input_to_output = 1'b0; - store_axi_aw_input_to_temp = 1'b0; - store_axi_aw_temp_to_output = 1'b0; - - if (s_axi_awready_reg) begin - // input is ready - if (m_axi_awready | ~m_axi_awvalid_reg) begin - // output is ready or currently not valid, transfer data to output - m_axi_awvalid_next = s_axi_awvalid; - store_axi_aw_input_to_output = 1'b1; - end else begin - // output is not ready, store input in temp - temp_m_axi_awvalid_next = s_axi_awvalid; - store_axi_aw_input_to_temp = 1'b1; - end - end else if (m_axi_awready) begin - // input is not ready, but output is ready - m_axi_awvalid_next = temp_m_axi_awvalid_reg; - temp_m_axi_awvalid_next = 1'b0; - store_axi_aw_temp_to_output = 1'b1; - end -end - -always @(posedge clk) begin - if (rst) begin - s_axi_awready_reg <= 1'b0; - m_axi_awvalid_reg <= 1'b0; - temp_m_axi_awvalid_reg <= 1'b0; - end else begin - s_axi_awready_reg <= s_axi_awready_early; - m_axi_awvalid_reg <= m_axi_awvalid_next; - temp_m_axi_awvalid_reg <= temp_m_axi_awvalid_next; - end - - // datapath - if (store_axi_aw_input_to_output) begin - m_axi_awid_reg <= s_axi_awid; - m_axi_awaddr_reg <= s_axi_awaddr; - m_axi_awlen_reg <= s_axi_awlen; - m_axi_awsize_reg <= s_axi_awsize; - m_axi_awburst_reg <= s_axi_awburst; - m_axi_awlock_reg <= s_axi_awlock; - m_axi_awcache_reg <= s_axi_awcache; - m_axi_awprot_reg <= s_axi_awprot; - m_axi_awqos_reg <= s_axi_awqos; - m_axi_awregion_reg <= s_axi_awregion; - m_axi_awuser_reg <= s_axi_awuser; - end else if (store_axi_aw_temp_to_output) begin - m_axi_awid_reg <= temp_m_axi_awid_reg; - m_axi_awaddr_reg <= temp_m_axi_awaddr_reg; - m_axi_awlen_reg <= temp_m_axi_awlen_reg; - m_axi_awsize_reg <= temp_m_axi_awsize_reg; - m_axi_awburst_reg <= temp_m_axi_awburst_reg; - m_axi_awlock_reg <= temp_m_axi_awlock_reg; - m_axi_awcache_reg <= temp_m_axi_awcache_reg; - m_axi_awprot_reg <= temp_m_axi_awprot_reg; - m_axi_awqos_reg <= temp_m_axi_awqos_reg; - m_axi_awregion_reg <= temp_m_axi_awregion_reg; - m_axi_awuser_reg <= temp_m_axi_awuser_reg; - end - - if (store_axi_aw_input_to_temp) begin - temp_m_axi_awid_reg <= s_axi_awid; - temp_m_axi_awaddr_reg <= s_axi_awaddr; - temp_m_axi_awlen_reg <= s_axi_awlen; - temp_m_axi_awsize_reg <= s_axi_awsize; - temp_m_axi_awburst_reg <= s_axi_awburst; - temp_m_axi_awlock_reg <= s_axi_awlock; - temp_m_axi_awcache_reg <= s_axi_awcache; - temp_m_axi_awprot_reg <= s_axi_awprot; - temp_m_axi_awqos_reg <= s_axi_awqos; - temp_m_axi_awregion_reg <= s_axi_awregion; - temp_m_axi_awuser_reg <= s_axi_awuser; - end -end - -end else if (AW_REG_TYPE == 1) begin -// simple register, inserts bubble cycles - -// datapath registers -reg s_axi_awready_reg = 1'b0; - -reg [ID_WIDTH-1:0] m_axi_awid_reg = {ID_WIDTH{1'b0}}; -reg [ADDR_WIDTH-1:0] m_axi_awaddr_reg = {ADDR_WIDTH{1'b0}}; -reg [7:0] m_axi_awlen_reg = 8'd0; -reg [2:0] m_axi_awsize_reg = 3'd0; -reg [1:0] m_axi_awburst_reg = 2'd0; -reg m_axi_awlock_reg = 1'b0; -reg [3:0] m_axi_awcache_reg = 4'd0; -reg [2:0] m_axi_awprot_reg = 3'd0; -reg [3:0] m_axi_awqos_reg = 4'd0; -reg [3:0] m_axi_awregion_reg = 4'd0; -reg [AWUSER_WIDTH-1:0] m_axi_awuser_reg = {AWUSER_WIDTH{1'b0}}; -reg m_axi_awvalid_reg = 1'b0, m_axi_awvalid_next; - -// datapath control -reg store_axi_aw_input_to_output; - -assign s_axi_awready = s_axi_awready_reg; - -assign m_axi_awid = m_axi_awid_reg; -assign m_axi_awaddr = m_axi_awaddr_reg; -assign m_axi_awlen = m_axi_awlen_reg; -assign m_axi_awsize = m_axi_awsize_reg; -assign m_axi_awburst = m_axi_awburst_reg; -assign m_axi_awlock = m_axi_awlock_reg; -assign m_axi_awcache = m_axi_awcache_reg; -assign m_axi_awprot = m_axi_awprot_reg; -assign m_axi_awqos = m_axi_awqos_reg; -assign m_axi_awregion = m_axi_awregion_reg; -assign m_axi_awuser = AWUSER_ENABLE ? m_axi_awuser_reg : {AWUSER_WIDTH{1'b0}}; -assign m_axi_awvalid = m_axi_awvalid_reg; - -// enable ready input next cycle if output buffer will be empty -wire s_axi_awready_eawly = !m_axi_awvalid_next; - -always @* begin - // transfer sink ready state to source - m_axi_awvalid_next = m_axi_awvalid_reg; - - store_axi_aw_input_to_output = 1'b0; - - if (s_axi_awready_reg) begin - m_axi_awvalid_next = s_axi_awvalid; - store_axi_aw_input_to_output = 1'b1; - end else if (m_axi_awready) begin - m_axi_awvalid_next = 1'b0; - end -end - -always @(posedge clk) begin - if (rst) begin - s_axi_awready_reg <= 1'b0; - m_axi_awvalid_reg <= 1'b0; - end else begin - s_axi_awready_reg <= s_axi_awready_eawly; - m_axi_awvalid_reg <= m_axi_awvalid_next; - end - - // datapath - if (store_axi_aw_input_to_output) begin - m_axi_awid_reg <= s_axi_awid; - m_axi_awaddr_reg <= s_axi_awaddr; - m_axi_awlen_reg <= s_axi_awlen; - m_axi_awsize_reg <= s_axi_awsize; - m_axi_awburst_reg <= s_axi_awburst; - m_axi_awlock_reg <= s_axi_awlock; - m_axi_awcache_reg <= s_axi_awcache; - m_axi_awprot_reg <= s_axi_awprot; - m_axi_awqos_reg <= s_axi_awqos; - m_axi_awregion_reg <= s_axi_awregion; - m_axi_awuser_reg <= s_axi_awuser; - end -end - -end else begin - - // bypass AW channel - assign m_axi_awid = s_axi_awid; - assign m_axi_awaddr = s_axi_awaddr; - assign m_axi_awlen = s_axi_awlen; - assign m_axi_awsize = s_axi_awsize; - assign m_axi_awburst = s_axi_awburst; - assign m_axi_awlock = s_axi_awlock; - assign m_axi_awcache = s_axi_awcache; - assign m_axi_awprot = s_axi_awprot; - assign m_axi_awqos = s_axi_awqos; - assign m_axi_awregion = s_axi_awregion; - assign m_axi_awuser = AWUSER_ENABLE ? s_axi_awuser : {AWUSER_WIDTH{1'b0}}; - assign m_axi_awvalid = s_axi_awvalid; - assign s_axi_awready = m_axi_awready; - -end - -// W channel - -if (W_REG_TYPE > 1) begin -// skid buffer, no bubble cycles - -// datapath registers -reg s_axi_wready_reg = 1'b0; - -reg [DATA_WIDTH-1:0] m_axi_wdata_reg = {DATA_WIDTH{1'b0}}; -reg [STRB_WIDTH-1:0] m_axi_wstrb_reg = {STRB_WIDTH{1'b0}}; -reg m_axi_wlast_reg = 1'b0; -reg [WUSER_WIDTH-1:0] m_axi_wuser_reg = {WUSER_WIDTH{1'b0}}; -reg m_axi_wvalid_reg = 1'b0, m_axi_wvalid_next; - -reg [DATA_WIDTH-1:0] temp_m_axi_wdata_reg = {DATA_WIDTH{1'b0}}; -reg [STRB_WIDTH-1:0] temp_m_axi_wstrb_reg = {STRB_WIDTH{1'b0}}; -reg temp_m_axi_wlast_reg = 1'b0; -reg [WUSER_WIDTH-1:0] temp_m_axi_wuser_reg = {WUSER_WIDTH{1'b0}}; -reg temp_m_axi_wvalid_reg = 1'b0, temp_m_axi_wvalid_next; - -// datapath control -reg store_axi_w_input_to_output; -reg store_axi_w_input_to_temp; -reg store_axi_w_temp_to_output; - -assign s_axi_wready = s_axi_wready_reg; - -assign m_axi_wdata = m_axi_wdata_reg; -assign m_axi_wstrb = m_axi_wstrb_reg; -assign m_axi_wlast = m_axi_wlast_reg; -assign m_axi_wuser = WUSER_ENABLE ? m_axi_wuser_reg : {WUSER_WIDTH{1'b0}}; -assign m_axi_wvalid = m_axi_wvalid_reg; - -// enable ready input next cycle if output is ready or the temp reg will not be filled on the next cycle (output reg empty or no input) -wire s_axi_wready_early = m_axi_wready | (~temp_m_axi_wvalid_reg & (~m_axi_wvalid_reg | ~s_axi_wvalid)); - -always @* begin - // transfer sink ready state to source - m_axi_wvalid_next = m_axi_wvalid_reg; - temp_m_axi_wvalid_next = temp_m_axi_wvalid_reg; - - store_axi_w_input_to_output = 1'b0; - store_axi_w_input_to_temp = 1'b0; - store_axi_w_temp_to_output = 1'b0; - - if (s_axi_wready_reg) begin - // input is ready - if (m_axi_wready | ~m_axi_wvalid_reg) begin - // output is ready or currently not valid, transfer data to output - m_axi_wvalid_next = s_axi_wvalid; - store_axi_w_input_to_output = 1'b1; - end else begin - // output is not ready, store input in temp - temp_m_axi_wvalid_next = s_axi_wvalid; - store_axi_w_input_to_temp = 1'b1; - end - end else if (m_axi_wready) begin - // input is not ready, but output is ready - m_axi_wvalid_next = temp_m_axi_wvalid_reg; - temp_m_axi_wvalid_next = 1'b0; - store_axi_w_temp_to_output = 1'b1; - end -end - -always @(posedge clk) begin - if (rst) begin - s_axi_wready_reg <= 1'b0; - m_axi_wvalid_reg <= 1'b0; - temp_m_axi_wvalid_reg <= 1'b0; - end else begin - s_axi_wready_reg <= s_axi_wready_early; - m_axi_wvalid_reg <= m_axi_wvalid_next; - temp_m_axi_wvalid_reg <= temp_m_axi_wvalid_next; - end - - // datapath - if (store_axi_w_input_to_output) begin - m_axi_wdata_reg <= s_axi_wdata; - m_axi_wstrb_reg <= s_axi_wstrb; - m_axi_wlast_reg <= s_axi_wlast; - m_axi_wuser_reg <= s_axi_wuser; - end else if (store_axi_w_temp_to_output) begin - m_axi_wdata_reg <= temp_m_axi_wdata_reg; - m_axi_wstrb_reg <= temp_m_axi_wstrb_reg; - m_axi_wlast_reg <= temp_m_axi_wlast_reg; - m_axi_wuser_reg <= temp_m_axi_wuser_reg; - end - - if (store_axi_w_input_to_temp) begin - temp_m_axi_wdata_reg <= s_axi_wdata; - temp_m_axi_wstrb_reg <= s_axi_wstrb; - temp_m_axi_wlast_reg <= s_axi_wlast; - temp_m_axi_wuser_reg <= s_axi_wuser; - end -end - -end else if (W_REG_TYPE == 1) begin -// simple register, inserts bubble cycles - -// datapath registers -reg s_axi_wready_reg = 1'b0; - -reg [DATA_WIDTH-1:0] m_axi_wdata_reg = {DATA_WIDTH{1'b0}}; -reg [STRB_WIDTH-1:0] m_axi_wstrb_reg = {STRB_WIDTH{1'b0}}; -reg m_axi_wlast_reg = 1'b0; -reg [WUSER_WIDTH-1:0] m_axi_wuser_reg = {WUSER_WIDTH{1'b0}}; -reg m_axi_wvalid_reg = 1'b0, m_axi_wvalid_next; - -// datapath control -reg store_axi_w_input_to_output; - -assign s_axi_wready = s_axi_wready_reg; - -assign m_axi_wdata = m_axi_wdata_reg; -assign m_axi_wstrb = m_axi_wstrb_reg; -assign m_axi_wlast = m_axi_wlast_reg; -assign m_axi_wuser = WUSER_ENABLE ? m_axi_wuser_reg : {WUSER_WIDTH{1'b0}}; -assign m_axi_wvalid = m_axi_wvalid_reg; - -// enable ready input next cycle if output buffer will be empty -wire s_axi_wready_ewly = !m_axi_wvalid_next; - -always @* begin - // transfer sink ready state to source - m_axi_wvalid_next = m_axi_wvalid_reg; - - store_axi_w_input_to_output = 1'b0; - - if (s_axi_wready_reg) begin - m_axi_wvalid_next = s_axi_wvalid; - store_axi_w_input_to_output = 1'b1; - end else if (m_axi_wready) begin - m_axi_wvalid_next = 1'b0; - end -end - -always @(posedge clk) begin - if (rst) begin - s_axi_wready_reg <= 1'b0; - m_axi_wvalid_reg <= 1'b0; - end else begin - s_axi_wready_reg <= s_axi_wready_ewly; - m_axi_wvalid_reg <= m_axi_wvalid_next; - end - - // datapath - if (store_axi_w_input_to_output) begin - m_axi_wdata_reg <= s_axi_wdata; - m_axi_wstrb_reg <= s_axi_wstrb; - m_axi_wlast_reg <= s_axi_wlast; - m_axi_wuser_reg <= s_axi_wuser; - end -end - -end else begin - - // bypass W channel - assign m_axi_wdata = s_axi_wdata; - assign m_axi_wstrb = s_axi_wstrb; - assign m_axi_wlast = s_axi_wlast; - assign m_axi_wuser = WUSER_ENABLE ? s_axi_wuser : {WUSER_WIDTH{1'b0}}; - assign m_axi_wvalid = s_axi_wvalid; - assign s_axi_wready = m_axi_wready; - -end - -// B channel - -if (B_REG_TYPE > 1) begin -// skid buffer, no bubble cycles - -// datapath registers -reg m_axi_bready_reg = 1'b0; - -reg [ID_WIDTH-1:0] s_axi_bid_reg = {ID_WIDTH{1'b0}}; -reg [1:0] s_axi_bresp_reg = 2'b0; -reg [BUSER_WIDTH-1:0] s_axi_buser_reg = {BUSER_WIDTH{1'b0}}; -reg s_axi_bvalid_reg = 1'b0, s_axi_bvalid_next; - -reg [ID_WIDTH-1:0] temp_s_axi_bid_reg = {ID_WIDTH{1'b0}}; -reg [1:0] temp_s_axi_bresp_reg = 2'b0; -reg [BUSER_WIDTH-1:0] temp_s_axi_buser_reg = {BUSER_WIDTH{1'b0}}; -reg temp_s_axi_bvalid_reg = 1'b0, temp_s_axi_bvalid_next; - -// datapath control -reg store_axi_b_input_to_output; -reg store_axi_b_input_to_temp; -reg store_axi_b_temp_to_output; - -assign m_axi_bready = m_axi_bready_reg; - -assign s_axi_bid = s_axi_bid_reg; -assign s_axi_bresp = s_axi_bresp_reg; -assign s_axi_buser = BUSER_ENABLE ? s_axi_buser_reg : {BUSER_WIDTH{1'b0}}; -assign s_axi_bvalid = s_axi_bvalid_reg; - -// enable ready input next cycle if output is ready or the temp reg will not be filled on the next cycle (output reg empty or no input) -wire m_axi_bready_early = s_axi_bready | (~temp_s_axi_bvalid_reg & (~s_axi_bvalid_reg | ~m_axi_bvalid)); - -always @* begin - // transfer sink ready state to source - s_axi_bvalid_next = s_axi_bvalid_reg; - temp_s_axi_bvalid_next = temp_s_axi_bvalid_reg; - - store_axi_b_input_to_output = 1'b0; - store_axi_b_input_to_temp = 1'b0; - store_axi_b_temp_to_output = 1'b0; - - if (m_axi_bready_reg) begin - // input is ready - if (s_axi_bready | ~s_axi_bvalid_reg) begin - // output is ready or currently not valid, transfer data to output - s_axi_bvalid_next = m_axi_bvalid; - store_axi_b_input_to_output = 1'b1; - end else begin - // output is not ready, store input in temp - temp_s_axi_bvalid_next = m_axi_bvalid; - store_axi_b_input_to_temp = 1'b1; - end - end else if (s_axi_bready) begin - // input is not ready, but output is ready - s_axi_bvalid_next = temp_s_axi_bvalid_reg; - temp_s_axi_bvalid_next = 1'b0; - store_axi_b_temp_to_output = 1'b1; - end -end - -always @(posedge clk) begin - if (rst) begin - m_axi_bready_reg <= 1'b0; - s_axi_bvalid_reg <= 1'b0; - temp_s_axi_bvalid_reg <= 1'b0; - end else begin - m_axi_bready_reg <= m_axi_bready_early; - s_axi_bvalid_reg <= s_axi_bvalid_next; - temp_s_axi_bvalid_reg <= temp_s_axi_bvalid_next; - end - - // datapath - if (store_axi_b_input_to_output) begin - s_axi_bid_reg <= m_axi_bid; - s_axi_bresp_reg <= m_axi_bresp; - s_axi_buser_reg <= m_axi_buser; - end else if (store_axi_b_temp_to_output) begin - s_axi_bid_reg <= temp_s_axi_bid_reg; - s_axi_bresp_reg <= temp_s_axi_bresp_reg; - s_axi_buser_reg <= temp_s_axi_buser_reg; - end - - if (store_axi_b_input_to_temp) begin - temp_s_axi_bid_reg <= m_axi_bid; - temp_s_axi_bresp_reg <= m_axi_bresp; - temp_s_axi_buser_reg <= m_axi_buser; - end -end - -end else if (B_REG_TYPE == 1) begin -// simple register, inserts bubble cycles - -// datapath registers -reg m_axi_bready_reg = 1'b0; - -reg [ID_WIDTH-1:0] s_axi_bid_reg = {ID_WIDTH{1'b0}}; -reg [1:0] s_axi_bresp_reg = 2'b0; -reg [BUSER_WIDTH-1:0] s_axi_buser_reg = {BUSER_WIDTH{1'b0}}; -reg s_axi_bvalid_reg = 1'b0, s_axi_bvalid_next; - -// datapath control -reg store_axi_b_input_to_output; - -assign m_axi_bready = m_axi_bready_reg; - -assign s_axi_bid = s_axi_bid_reg; -assign s_axi_bresp = s_axi_bresp_reg; -assign s_axi_buser = BUSER_ENABLE ? s_axi_buser_reg : {BUSER_WIDTH{1'b0}}; -assign s_axi_bvalid = s_axi_bvalid_reg; - -// enable ready input next cycle if output buffer will be empty -wire m_axi_bready_early = !s_axi_bvalid_next; - -always @* begin - // transfer sink ready state to source - s_axi_bvalid_next = s_axi_bvalid_reg; - - store_axi_b_input_to_output = 1'b0; - - if (m_axi_bready_reg) begin - s_axi_bvalid_next = m_axi_bvalid; - store_axi_b_input_to_output = 1'b1; - end else if (s_axi_bready) begin - s_axi_bvalid_next = 1'b0; - end -end - -always @(posedge clk) begin - if (rst) begin - m_axi_bready_reg <= 1'b0; - s_axi_bvalid_reg <= 1'b0; - end else begin - m_axi_bready_reg <= m_axi_bready_early; - s_axi_bvalid_reg <= s_axi_bvalid_next; - end - - // datapath - if (store_axi_b_input_to_output) begin - s_axi_bid_reg <= m_axi_bid; - s_axi_bresp_reg <= m_axi_bresp; - s_axi_buser_reg <= m_axi_buser; - end -end - -end else begin - - // bypass B channel - assign s_axi_bid = m_axi_bid; - assign s_axi_bresp = m_axi_bresp; - assign s_axi_buser = BUSER_ENABLE ? m_axi_buser : {BUSER_WIDTH{1'b0}}; - assign s_axi_bvalid = m_axi_bvalid; - assign m_axi_bready = s_axi_bready; - -end - -endgenerate - -endmodule - -`resetall diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_float_v16.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_float_v16.v deleted file mode 100644 index c04fd3cb..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_float_v16.v +++ /dev/null @@ -1,193 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -(* CORE_GENERATION_INFO="black_hole_float_v16_black_hole_float_v16,hls_ip_2022_2,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xcu280-fsvh2892-2L-e,HLS_INPUT_CLOCK=3.330000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=1.215450,HLS_SYN_LAT=-1,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=6,HLS_SYN_LUT=43,HLS_VERSION=2022_2}" *) - -module black_hole_float_v16 ( - ap_clk, - ap_rst_n, - ap_start, - ap_done, - ap_idle, - ap_ready, - fifo_in_s_dout, - fifo_in_s_empty_n, - fifo_in_s_read, - fifo_in_peek_dout, - fifo_in_peek_empty_n, - fifo_in_peek_read -); - -parameter ap_ST_fsm_state1 = 3'd1; -parameter ap_ST_fsm_state2 = 3'd2; -parameter ap_ST_fsm_state3 = 3'd4; - -input ap_clk; -input ap_rst_n; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [512:0] fifo_in_s_dout; -input fifo_in_s_empty_n; -output fifo_in_s_read; -input [512:0] fifo_in_peek_dout; -input fifo_in_peek_empty_n; -output fifo_in_peek_read; - -reg ap_done; -reg ap_idle; -reg ap_ready; -reg fifo_in_s_read; - - reg ap_rst_n_inv; -(* fsm_encoding = "none" *) reg [2:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -wire grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_start; -wire grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_done; -wire grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_idle; -wire grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_ready; -wire grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_fifo_in_s_read; -reg grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_start_reg; -wire ap_CS_fsm_state2; -wire ap_CS_fsm_state3; -reg [2:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -wire ap_ST_fsm_state2_blk; -reg ap_ST_fsm_state3_blk; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 3'd1; -#0 grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_start_reg = 1'b0; -end - -black_hole_float_v16_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1 grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_start), - .ap_done(grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_done), - .ap_idle(grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_idle), - .ap_ready(grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_ready), - .fifo_in_s_dout(fifo_in_s_dout), - .fifo_in_s_empty_n(fifo_in_s_empty_n), - .fifo_in_s_read(grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_fifo_in_s_read) -); - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_start_reg <= 1'b0; - end else begin - if ((1'b1 == ap_CS_fsm_state2)) begin - grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_start_reg <= 1'b1; - end else if ((grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_ready == 1'b1)) begin - grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_start_reg <= 1'b0; - end - end -end - -always @ (*) begin - if ((ap_start == 1'b0)) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -assign ap_ST_fsm_state2_blk = 1'b0; - -always @ (*) begin - if ((grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_done == 1'b0)) begin - ap_ST_fsm_state3_blk = 1'b1; - end else begin - ap_ST_fsm_state3_blk = 1'b0; - end -end - -always @ (*) begin - if (((grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin - ap_ready = 1'b1; - end else begin - ap_ready = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state3)) begin - fifo_in_s_read = grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_fifo_in_s_read; - end else begin - fifo_in_s_read = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - ap_NS_fsm = ap_ST_fsm_state3; - end - ap_ST_fsm_state3 : begin - if (((grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin - ap_NS_fsm = ap_ST_fsm_state1; - end else begin - ap_NS_fsm = ap_ST_fsm_state3; - end - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; - -assign ap_CS_fsm_state3 = ap_CS_fsm[32'd2]; - -always @ (*) begin - ap_rst_n_inv = ~ap_rst_n; -end - -assign fifo_in_peek_read = 1'b0; - -assign grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_start = grp_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_fu_44_ap_start_reg; - -endmodule //black_hole_float_v16 diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_float_v16_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_float_v16_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1.v deleted file mode 100644 index 37ca67f9..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_float_v16_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1.v +++ /dev/null @@ -1,118 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module black_hole_float_v16_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1 ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - fifo_in_s_dout, - fifo_in_s_empty_n, - fifo_in_s_read -); - -parameter ap_ST_fsm_state1 = 2'd1; -parameter ap_ST_fsm_state2 = 2'd2; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [512:0] fifo_in_s_dout; -input fifo_in_s_empty_n; -output fifo_in_s_read; - -reg ap_done; -reg ap_idle; -reg fifo_in_s_read; - -(* fsm_encoding = "none" *) reg [1:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -wire ap_CS_fsm_state2; -reg [1:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -wire ap_ST_fsm_state2_blk; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 2'd1; -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (*) begin - if ((ap_start == 1'b0)) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -assign ap_ST_fsm_state2_blk = 1'b0; - -always @ (*) begin - if (((ap_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((ap_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((fifo_in_s_empty_n == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin - fifo_in_s_read = 1'b1; - end else begin - fifo_in_s_read = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - ap_NS_fsm = ap_ST_fsm_state2; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; - -assign ap_ready = 1'b0; - -endmodule //black_hole_float_v16_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1 diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_int.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_int.v deleted file mode 100644 index 3fadb780..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_int.v +++ /dev/null @@ -1,193 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -(* CORE_GENERATION_INFO="black_hole_int_black_hole_int,hls_ip_2022_2,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xcu280-fsvh2892-2L-e,HLS_INPUT_CLOCK=3.330000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=1.215450,HLS_SYN_LAT=-1,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=6,HLS_SYN_LUT=43,HLS_VERSION=2022_2}" *) - -module black_hole_int ( - ap_clk, - ap_rst_n, - ap_start, - ap_done, - ap_idle, - ap_ready, - fifo_in_s_dout, - fifo_in_s_empty_n, - fifo_in_s_read, - fifo_in_peek_dout, - fifo_in_peek_empty_n, - fifo_in_peek_read -); - -parameter ap_ST_fsm_state1 = 3'd1; -parameter ap_ST_fsm_state2 = 3'd2; -parameter ap_ST_fsm_state3 = 3'd4; - -input ap_clk; -input ap_rst_n; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [32:0] fifo_in_s_dout; -input fifo_in_s_empty_n; -output fifo_in_s_read; -input [32:0] fifo_in_peek_dout; -input fifo_in_peek_empty_n; -output fifo_in_peek_read; - -reg ap_done; -reg ap_idle; -reg ap_ready; -reg fifo_in_s_read; - - reg ap_rst_n_inv; -(* fsm_encoding = "none" *) reg [2:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -wire grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_start; -wire grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_done; -wire grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_idle; -wire grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_ready; -wire grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_fifo_in_s_read; -reg grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_start_reg; -wire ap_CS_fsm_state2; -wire ap_CS_fsm_state3; -reg [2:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -wire ap_ST_fsm_state2_blk; -reg ap_ST_fsm_state3_blk; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 3'd1; -#0 grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_start_reg = 1'b0; -end - -black_hole_int_black_hole_int_Pipeline_VITIS_LOOP_399_1 grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_start), - .ap_done(grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_done), - .ap_idle(grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_idle), - .ap_ready(grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_ready), - .fifo_in_s_dout(fifo_in_s_dout), - .fifo_in_s_empty_n(fifo_in_s_empty_n), - .fifo_in_s_read(grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_fifo_in_s_read) -); - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_start_reg <= 1'b0; - end else begin - if ((1'b1 == ap_CS_fsm_state2)) begin - grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_start_reg <= 1'b1; - end else if ((grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_ready == 1'b1)) begin - grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_start_reg <= 1'b0; - end - end -end - -always @ (*) begin - if ((ap_start == 1'b0)) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -assign ap_ST_fsm_state2_blk = 1'b0; - -always @ (*) begin - if ((grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_done == 1'b0)) begin - ap_ST_fsm_state3_blk = 1'b1; - end else begin - ap_ST_fsm_state3_blk = 1'b0; - end -end - -always @ (*) begin - if (((grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin - ap_ready = 1'b1; - end else begin - ap_ready = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state3)) begin - fifo_in_s_read = grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_fifo_in_s_read; - end else begin - fifo_in_s_read = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - ap_NS_fsm = ap_ST_fsm_state3; - end - ap_ST_fsm_state3 : begin - if (((grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state3))) begin - ap_NS_fsm = ap_ST_fsm_state1; - end else begin - ap_NS_fsm = ap_ST_fsm_state3; - end - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; - -assign ap_CS_fsm_state3 = ap_CS_fsm[32'd2]; - -always @ (*) begin - ap_rst_n_inv = ~ap_rst_n; -end - -assign fifo_in_peek_read = 1'b0; - -assign grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_start = grp_black_hole_int_Pipeline_VITIS_LOOP_399_1_fu_44_ap_start_reg; - -endmodule //black_hole_int diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_int_black_hole_int_Pipeline_VITIS_LOOP_399_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_int_black_hole_int_Pipeline_VITIS_LOOP_399_1.v deleted file mode 100644 index b836045f..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/black_hole_int_black_hole_int_Pipeline_VITIS_LOOP_399_1.v +++ /dev/null @@ -1,118 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module black_hole_int_black_hole_int_Pipeline_VITIS_LOOP_399_1 ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - fifo_in_s_dout, - fifo_in_s_empty_n, - fifo_in_s_read -); - -parameter ap_ST_fsm_state1 = 2'd1; -parameter ap_ST_fsm_state2 = 2'd2; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [32:0] fifo_in_s_dout; -input fifo_in_s_empty_n; -output fifo_in_s_read; - -reg ap_done; -reg ap_idle; -reg fifo_in_s_read; - -(* fsm_encoding = "none" *) reg [1:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -wire ap_CS_fsm_state2; -reg [1:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -wire ap_ST_fsm_state2_blk; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 2'd1; -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (*) begin - if ((ap_start == 1'b0)) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -assign ap_ST_fsm_state2_blk = 1'b0; - -always @ (*) begin - if (((ap_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((ap_start == 1'b0) & (1'b1 == ap_CS_fsm_state1))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((fifo_in_s_empty_n == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin - fifo_in_s_read = 1'b1; - end else begin - fifo_in_s_read = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - ap_NS_fsm = ap_ST_fsm_state2; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; - -assign ap_ready = 1'b0; - -endmodule //black_hole_int_black_hole_int_Pipeline_VITIS_LOOP_399_1 diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/detect_burst.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/detect_burst.v deleted file mode 100644 index 8abeaa66..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/detect_burst.v +++ /dev/null @@ -1,156 +0,0 @@ -`default_nettype none - -// Detect burst from address stream. -module detect_burst #( - parameter AddrWidth = 64, - parameter DataWidthBytesLog = 6, - parameter WaitTimeWidth = 4, - parameter BurstLenWidth = 8 -) ( - input wire clk, - input wire rst, - - input wire [WaitTimeWidth-1:0] max_wait_time, - input wire [BurstLenWidth-1:0] max_burst_len, // 0 disables detection - - input wire [AddrWidth-1:0] addr_dout, - input wire addr_empty_n, - output reg addr_read, - - output wire [BurstLenWidth+AddrWidth-1:0] addr_din, - input wire addr_full_n, - output wire addr_write, - - output wire [BurstLenWidth-1:0] burst_len_0_din, - input wire burst_len_0_full_n, - output wire burst_len_0_write, - - output wire [BurstLenWidth-1:0] burst_len_1_din, - input wire burst_len_1_full_n, - output wire burst_len_1_write -); - // parameter - localparam NextAddrWidth = AddrWidth - DataWidthBytesLog; - - // state - reg [AddrWidth-1:0] base_addr; - reg base_valid; - reg [BurstLenWidth-1:0] burst_len; - reg [WaitTimeWidth-1:0] wait_time; - reg [NextAddrWidth-1:0] next_addr; - - // logic - reg write_enable; - reg [AddrWidth-1:0] base_addr_next; - reg base_valid_next; - reg [BurstLenWidth-1:0] burst_len_next; - reg [WaitTimeWidth-1:0] wait_time_next; - - wire [NextAddrWidth-1:0] next_addr_next = - base_addr_next[AddrWidth-1:DataWidthBytesLog] + - {{(NextAddrWidth-BurstLenWidth){1'b0}}, burst_len_next} + - {{(NextAddrWidth-1){1'b0}}, 1'b1}; - - assign addr_write = write_enable; - assign burst_len_0_write = write_enable; - assign burst_len_1_write = write_enable; - assign addr_din = {burst_len, base_addr}; - assign burst_len_0_din = burst_len; - assign burst_len_1_din = burst_len; - - // register the input for timing closure - reg addr_empty_n_q; - reg [AddrWidth-1:0] addr_dout_q; - always @(posedge clk) begin - if (addr_full_n && burst_len_0_full_n && burst_len_1_full_n) begin - addr_empty_n_q <= addr_empty_n; - addr_dout_q <= addr_dout; - end - end - wire [AddrWidth-1:0] curr_addr = addr_dout_q; - - always @* begin - // defaults - addr_read = 1'b0; - if (!addr_full_n || !burst_len_0_full_n || !burst_len_1_full_n) begin - addr_read = 1'b0; - end else if (addr_empty_n) begin - // read new item if non-empty - addr_read = 1'b1; - end else if (base_valid) begin - addr_read = 1'b0; - end - end - - always @* begin - // defaults - write_enable = 1'b0; - base_addr_next = base_addr; - base_valid_next = base_valid; - wait_time_next = wait_time; - burst_len_next = burst_len; - if (!addr_full_n || !burst_len_0_full_n || !burst_len_1_full_n) begin - // output FIFO full, do nothing - end else if (addr_empty_n_q) begin - wait_time_next = 0; - if (!base_valid) begin - base_addr_next = curr_addr; - base_valid_next = 1'b1; - - write_enable = 1'b0; - burst_len_next = burst_len; - end else begin - if (next_addr == curr_addr[AddrWidth-1:DataWidthBytesLog] && - burst_len < max_burst_len) begin - burst_len_next = burst_len + 1; - - write_enable = 1'b0; - base_addr_next = base_addr; - base_valid_next = base_valid; - end else begin - // no more burst detected - write_enable = 1'b1; - burst_len_next = 0; - base_addr_next = curr_addr; - - base_valid_next = base_valid; - end - end - end else if (base_valid) begin - if (wait_time < max_wait_time) begin - wait_time_next = wait_time + 1; - - write_enable = 1'b0; - base_addr_next = base_addr; - base_valid_next = base_valid; - burst_len_next = burst_len; - end else begin - write_enable = 1'b1; - wait_time_next = 0; - base_valid_next = 1'b0; - burst_len_next = 0; - - base_addr_next = base_addr; - end - end - end - - always @(posedge clk) begin - if (rst) begin - base_addr <= {AddrWidth{1'b0}}; - base_valid <= 1'd0; - burst_len <= {BurstLenWidth{1'b0}}; - wait_time <= {WaitTimeWidth{1'b0}}; - next_addr <= {{(NextAddrWidth-1){1'b0}}, 1'b1}; - end else begin - base_addr <= base_addr_next; - base_valid <= base_valid_next; - burst_len <= burst_len_next; - wait_time <= wait_time_next; - next_addr <= next_addr_next; - end - end - -endmodule // detect_burst - -`default_nettype wire diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/fifo.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/fifo.v deleted file mode 100644 index d2559d97..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/fifo.v +++ /dev/null @@ -1,107 +0,0 @@ -`default_nettype none - -// first-word fall-through (FWFT) FIFO -module fifo #( - parameter DATA_WIDTH = 32, - parameter ADDR_WIDTH = 5, - parameter DEPTH = 32 -) ( - input wire clk, - input wire reset, - - // write - output wire if_full_n, - input wire if_write_ce, - input wire if_write, - input wire [DATA_WIDTH-1:0] if_din, - - // read - output wire if_empty_n, - input wire if_read_ce, - input wire if_read, - output wire [DATA_WIDTH-1:0] if_dout -); - -generate - if (DEPTH == 1) begin : d1 - fifo_fwd #( - .DATA_WIDTH(DATA_WIDTH) - ) unit ( - .clk (clk), - .reset(reset), - - .if_full_n (if_full_n), - .if_write_ce(if_write_ce), - .if_write (if_write), - .if_din (if_din), - - .if_empty_n(if_empty_n), - .if_read_ce(if_read_ce), - .if_read (if_read), - .if_dout (if_dout) - ); - end else if (DATA_WIDTH >= 36 && DEPTH >= 4096) begin : uram - fifo_bram #( - .MEM_STYLE ("ultra"), - .DATA_WIDTH(DATA_WIDTH), - .ADDR_WIDTH(ADDR_WIDTH), - .DEPTH (DEPTH) - ) unit ( - .clk (clk), - .reset(reset), - - .if_full_n (if_full_n), - .if_write_ce(if_write_ce), - .if_write (if_write), - .if_din (if_din), - - .if_empty_n(if_empty_n), - .if_read_ce(if_read_ce), - .if_read (if_read), - .if_dout (if_dout) - ); - end else if (DEPTH >=128) begin : bram - fifo_bram #( - .MEM_STYLE ("block"), - .DATA_WIDTH(DATA_WIDTH), - .ADDR_WIDTH(ADDR_WIDTH), - .DEPTH (DEPTH) - ) unit ( - .clk (clk), - .reset(reset), - - .if_full_n (if_full_n), - .if_write_ce(if_write_ce), - .if_write (if_write), - .if_din (if_din), - - .if_empty_n(if_empty_n), - .if_read_ce(if_read_ce), - .if_read (if_read), - .if_dout (if_dout) - ); - end else begin : srl - fifo_srl #( - .DATA_WIDTH(DATA_WIDTH), - .ADDR_WIDTH(ADDR_WIDTH), - .DEPTH (DEPTH) - ) unit ( - .clk (clk), - .reset(reset), - - .if_full_n (if_full_n), - .if_write_ce(if_write_ce), - .if_write (if_write), - .if_din (if_din), - - .if_empty_n(if_empty_n), - .if_read_ce(if_read_ce), - .if_read (if_read), - .if_dout (if_dout) - ); - end -endgenerate - -endmodule // fifo - -`default_nettype wire diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/fifo_bram.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/fifo_bram.v deleted file mode 100644 index 8b5aea64..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/fifo_bram.v +++ /dev/null @@ -1,151 +0,0 @@ -`default_nettype none - -// first-word fall-through (FWFT) FIFO using block RAM -// based on HLS generated code -module fifo_bram #( - parameter MEM_STYLE = "auto", - parameter DATA_WIDTH = 32, - parameter ADDR_WIDTH = 5, - parameter DEPTH = 32 -) ( - input wire clk, - input wire reset, - - // write - output wire if_full_n, - input wire if_write_ce, - input wire if_write, - input wire [DATA_WIDTH-1:0] if_din, - - // read - output wire if_empty_n, - input wire if_read_ce, - input wire if_read, - output wire [DATA_WIDTH-1:0] if_dout -); - -(* ram_style = MEM_STYLE *) -reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; -reg [DATA_WIDTH-1:0] q_buf; -reg [ADDR_WIDTH-1:0] waddr; -reg [ADDR_WIDTH-1:0] raddr; -wire [ADDR_WIDTH-1:0] wnext; -wire [ADDR_WIDTH-1:0] rnext; -wire push; -wire pop; -reg [ADDR_WIDTH-1:0] used; -reg full_n; -reg empty_n; -reg [DATA_WIDTH-1:0] q_tmp; -reg show_ahead; -reg [DATA_WIDTH-1:0] dout_buf; -reg dout_valid; - -localparam DepthM1 = DEPTH[ADDR_WIDTH-1:0] - 1'd1; - -assign if_full_n = full_n; -assign if_empty_n = dout_valid; -assign if_dout = dout_buf; -assign push = full_n & if_write_ce & if_write; -assign pop = empty_n & if_read_ce & (~dout_valid | if_read); -assign wnext = !push ? waddr : - (waddr == DepthM1) ? {ADDR_WIDTH{1'b0}} : waddr + 1'd1; -assign rnext = !pop ? raddr : - (raddr == DepthM1) ? {ADDR_WIDTH{1'b0}} : raddr + 1'd1; - -// waddr -always @(posedge clk) begin - if (reset) - waddr <= {ADDR_WIDTH{1'b0}}; - else - waddr <= wnext; -end - -// raddr -always @(posedge clk) begin - if (reset) - raddr <= {ADDR_WIDTH{1'b0}}; - else - raddr <= rnext; -end - -// used -always @(posedge clk) begin - if (reset) - used <= {ADDR_WIDTH{1'b0}}; - else if (push && !pop) - used <= used + 1'b1; - else if (!push && pop) - used <= used - 1'b1; -end - -// full_n -always @(posedge clk) begin - if (reset) - full_n <= 1'b1; - else if (push && !pop) - full_n <= (used != DepthM1); - else if (!push && pop) - full_n <= 1'b1; -end - -// empty_n -always @(posedge clk) begin - if (reset) - empty_n <= 1'b0; - else if (push && !pop) - empty_n <= 1'b1; - else if (!push && pop) - empty_n <= (used != {{(ADDR_WIDTH-1){1'b0}},1'b1}); -end - -// mem -always @(posedge clk) begin - if (push) - mem[waddr] <= if_din; -end - -// q_buf -always @(posedge clk) begin - q_buf <= mem[rnext]; -end - -// q_tmp -always @(posedge clk) begin - if (reset) - q_tmp <= {DATA_WIDTH{1'b0}}; - else if (push) - q_tmp <= if_din; -end - -// show_ahead -always @(posedge clk) begin - if (reset) - show_ahead <= 1'b0; - else if (push && used == {{(ADDR_WIDTH-1){1'b0}},pop}) - show_ahead <= 1'b1; - else - show_ahead <= 1'b0; -end - -// dout_buf -always @(posedge clk) begin - if (reset) - dout_buf <= {DATA_WIDTH{1'b0}}; - else if (pop) - dout_buf <= show_ahead? q_tmp : q_buf; -end - -// dout_valid -always @(posedge clk) begin - if (reset) - dout_valid <= 1'b0; - else if (pop) - dout_valid <= 1'b1; - else if (if_read_ce & if_read) - dout_valid <= 1'b0; -end - -endmodule // fifo_bram - -`default_nettype wire diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/fifo_fwd.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/fifo_fwd.v deleted file mode 100644 index 870695ea..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/fifo_fwd.v +++ /dev/null @@ -1,58 +0,0 @@ -`default_nettype none - -// first-word fall-through (FWFT) FIFO with latency=0 and depth=1 -module fifo_fwd #( - parameter MEM_STYLE = "", // ignored - parameter DATA_WIDTH = 32, - parameter ADDR_WIDTH = 0, // ignored - parameter DEPTH = 1 // ignored -) ( - input wire clk, - input wire reset, - - // write - output wire if_full_n, - input wire if_write_ce, - input wire if_write, - input wire [DATA_WIDTH-1:0] if_din, - - // read - output wire if_empty_n, - input wire if_read_ce, - input wire if_read, - output wire [DATA_WIDTH-1:0] if_dout -); - reg [DATA_WIDTH-1:0] mem; - reg is_mem_valid; - - // If mem is valid, the FIFO is not empty and is full; if read, mem becomes - // invalid. If mem is not valid, the FIFO is not empty if and only if written - // and is not full; if written but not read, mem becomes valid. - - assign if_empty_n = is_mem_valid || (if_write && if_write_ce); - assign if_full_n = !is_mem_valid; - assign if_dout = is_mem_valid ? mem : if_din; - - always @(posedge clk) begin - if (reset) begin - is_mem_valid <= 1'b0; - end else begin - if (is_mem_valid) begin - if (if_read && if_read_ce) begin - is_mem_valid <= 1'b0; - end - end else begin - if (if_write && if_write_ce && !(if_read && if_read_ce)) begin - is_mem_valid <= 1'b1; - end - end - - if (if_write && if_write_ce) begin - mem <= if_din; - end - end - end - -endmodule // fifo_fwd - -`default_nettype wire diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/fifo_srl.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/fifo_srl.v deleted file mode 100644 index 8ed7a247..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/fifo_srl.v +++ /dev/null @@ -1,84 +0,0 @@ -`default_nettype none - -// first-word fall-through (FWFT) FIFO using shift register LUT -// based on HLS generated code -module fifo_srl #( - parameter MEM_STYLE = "shiftreg", - parameter DATA_WIDTH = 32, - parameter ADDR_WIDTH = 5, - parameter DEPTH = 32 -) ( - input wire clk, - input wire reset, - - // write - output wire if_full_n, - input wire if_write_ce, - input wire if_write, - input wire [DATA_WIDTH-1:0] if_din, - - // read - output wire if_empty_n, - input wire if_read_ce, - input wire if_read, - output wire [DATA_WIDTH-1:0] if_dout -); - parameter REAL_DEPTH = DEPTH < 4 ? 4 : DEPTH; - parameter REAL_ADDR_WIDTH = $clog2(REAL_DEPTH)+1; - - wire [REAL_ADDR_WIDTH - 1:0] shift_reg_addr; - wire [DATA_WIDTH - 1:0] shift_reg_data; - wire [DATA_WIDTH - 1:0] shift_reg_q; - wire shift_reg_ce; - reg [REAL_ADDR_WIDTH:0] out_ptr; - reg internal_empty_n; - reg internal_full_n; - - (* shreg_extract = "yes" *) reg [DATA_WIDTH-1:0] mem [0:REAL_DEPTH-1]; - - assign if_empty_n = internal_empty_n; - assign if_full_n = internal_full_n; - assign shift_reg_data = if_din; - assign if_dout = shift_reg_q; - - assign shift_reg_addr = out_ptr[REAL_ADDR_WIDTH] == 1'b0 ? out_ptr[REAL_ADDR_WIDTH-1:0] : {REAL_ADDR_WIDTH{1'b0}}; - assign shift_reg_ce = (if_write & if_write_ce) & internal_full_n; - - assign shift_reg_q = mem[shift_reg_addr]; - - always @(posedge clk) begin - if (reset) begin - out_ptr <= ~{REAL_ADDR_WIDTH+1{1'b0}}; - internal_empty_n <= 1'b0; - internal_full_n <= 1'b1; - end else begin - if (((if_read && if_read_ce) && internal_empty_n) && - (!(if_write && if_write_ce) || !internal_full_n)) begin - out_ptr <= out_ptr - 1'b1; - if (out_ptr == {(REAL_ADDR_WIDTH+1){1'b0}}) - internal_empty_n <= 1'b0; - internal_full_n <= 1'b1; - end - else if (((if_read & if_read_ce) == 0 | internal_empty_n == 0) && - ((if_write & if_write_ce) == 1 & internal_full_n == 1)) - begin - out_ptr <= out_ptr + 1'b1; - internal_empty_n <= 1'b1; - if (out_ptr == REAL_DEPTH - {{(REAL_ADDR_WIDTH-1){1'b0}}, 2'd2}) - internal_full_n <= 1'b0; - end - end - end - - integer i; - always @(posedge clk) begin - if (shift_reg_ce) begin - for (i = 0; i < REAL_DEPTH - 1; i = i + 1) - mem[i + 1] <= mem[i]; - mem[0] <= shift_reg_data; - end - end - -endmodule // fifo_srl - -`default_nettype wire diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/generate_last.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/generate_last.v deleted file mode 100644 index f592117d..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/generate_last.v +++ /dev/null @@ -1,71 +0,0 @@ -`default_nettype none - -module generate_last #( - parameter BurstLenWidth = 8 -) ( - input wire clk, - input wire rst, - - input wire [BurstLenWidth-1:0] burst_len_dout, - input wire burst_len_empty_n, - output reg burst_len_read, - - output reg last_din, - input wire last_full_n, - output reg last_write -); - - // state - reg busy; - reg [BurstLenWidth-1:0] count; - - // logic - reg busy_next; - reg [BurstLenWidth-1:0] count_next; - - always @* begin - busy_next = busy; - count_next = count; - burst_len_read = 1'b0; - last_write = 1'b0; - - if (last_full_n) begin - if (busy == 1'b0) begin - if (burst_len_empty_n) begin - // read from burst_len - burst_len_read = 1'b1; - count_next = burst_len_dout; - - // write to last - last_write = 1'b1; - last_din = ~|count_next; - - // change busy - if (|count_next) busy_next = 1'b1; - end - end else begin - count_next = count - 1'b1; - - // write to last - last_write = 1'b1; - last_din = ~|count_next; - - // change busy - if (~|count_next) busy_next = 1'b0; - end - end - end - - always @(posedge clk) begin - if (rst) begin - busy <= 1'b0; - count <= {BurstLenWidth{1'b0}}; - end else begin - busy <= busy_next; - count <= count_next; - end - end - -endmodule // generate_last - -`default_nettype wire diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/priority_encoder.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/priority_encoder.v deleted file mode 100644 index cf82512b..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/priority_encoder.v +++ /dev/null @@ -1,92 +0,0 @@ -/* - -Copyright (c) 2014-2021 Alex Forencich - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -*/ - -// Language: Verilog 2001 - -`resetall -`timescale 1ns / 1ps -`default_nettype none - -/* - * Priority encoder module - */ -module priority_encoder # -( - parameter WIDTH = 4, - // LSB priority selection - parameter LSB_HIGH_PRIORITY = 0 -) -( - input wire [WIDTH-1:0] input_unencoded, - output wire output_valid, - output wire [$clog2(WIDTH)-1:0] output_encoded, - output wire [WIDTH-1:0] output_unencoded -); - -parameter LEVELS = WIDTH > 2 ? $clog2(WIDTH) : 1; -parameter W = 2**LEVELS; - -// pad input to even power of two -wire [W-1:0] input_padded = {{W-WIDTH{1'b0}}, input_unencoded}; - -wire [W/2-1:0] stage_valid[LEVELS-1:0]; -wire [W/2-1:0] stage_enc[LEVELS-1:0]; - -generate - genvar l, n; - - // process input bits; generate valid bit and encoded bit for each pair - for (n = 0; n < W/2; n = n + 1) begin : loop_in - assign stage_valid[0][n] = |input_padded[n*2+1:n*2]; - if (LSB_HIGH_PRIORITY) begin - // bit 0 is highest priority - assign stage_enc[0][n] = !input_padded[n*2+0]; - end else begin - // bit 0 is lowest priority - assign stage_enc[0][n] = input_padded[n*2+1]; - end - end - - // compress down to single valid bit and encoded bus - for (l = 1; l < LEVELS; l = l + 1) begin : loop_levels - for (n = 0; n < W/(2*2**l); n = n + 1) begin : loop_compress - assign stage_valid[l][n] = |stage_valid[l-1][n*2+1:n*2]; - if (LSB_HIGH_PRIORITY) begin - // bit 0 is highest priority - assign stage_enc[l][(n+1)*(l+1)-1:n*(l+1)] = stage_valid[l-1][n*2+0] ? {1'b0, stage_enc[l-1][(n*2+1)*l-1:(n*2+0)*l]} : {1'b1, stage_enc[l-1][(n*2+2)*l-1:(n*2+1)*l]}; - end else begin - // bit 0 is lowest priority - assign stage_enc[l][(n+1)*(l+1)-1:n*(l+1)] = stage_valid[l-1][n*2+1] ? {1'b1, stage_enc[l-1][(n*2+2)*l-1:(n*2+1)*l]} : {1'b0, stage_enc[l-1][(n*2+1)*l-1:(n*2+0)*l]}; - end - end - end -endgenerate - -assign output_valid = stage_valid[LEVELS-1]; -assign output_encoded = stage_enc[LEVELS-1]; -assign output_unencoded = 1 << output_encoded; - -endmodule - -`resetall diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_A.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_A.v deleted file mode 100644 index 4512bcfd..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_A.v +++ /dev/null @@ -1,374 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -(* CORE_GENERATION_INFO="read_A_read_A,hls_ip_2022_2,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xcu280-fsvh2892-2L-e,HLS_INPUT_CLOCK=3.330000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=2.430900,HLS_SYN_LAT=40036,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=132,HLS_SYN_LUT=346,HLS_VERSION=2022_2}" *) - -module read_A ( - ap_clk, - ap_rst_n, - ap_start, - ap_done, - ap_idle, - ap_ready, - A_read_addr_din, - A_read_addr_full_n, - A_read_addr_write, - A_read_data_s_dout, - A_read_data_s_empty_n, - A_read_data_s_read, - A_read_data_peek_dout, - A_read_data_peek_empty_n, - A_read_data_peek_read, - A_write_addr_din, - A_write_addr_full_n, - A_write_addr_write, - A_write_data_din, - A_write_data_full_n, - A_write_data_write, - A_write_resp_s_dout, - A_write_resp_s_empty_n, - A_write_resp_s_read, - A_write_resp_peek_dout, - A_write_resp_peek_empty_n, - A_write_resp_peek_read, - fifo_A_din, - fifo_A_full_n, - fifo_A_write, - A_len, - P_N -); - -parameter ap_ST_fsm_state1 = 6'd1; -parameter ap_ST_fsm_state2 = 6'd2; -parameter ap_ST_fsm_state3 = 6'd4; -parameter ap_ST_fsm_state4 = 6'd8; -parameter ap_ST_fsm_state5 = 6'd16; -parameter ap_ST_fsm_state6 = 6'd32; - -input ap_clk; -input ap_rst_n; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -output [64:0] A_read_addr_din; -input A_read_addr_full_n; -output A_read_addr_write; -input [512:0] A_read_data_s_dout; -input A_read_data_s_empty_n; -output A_read_data_s_read; -input [512:0] A_read_data_peek_dout; -input A_read_data_peek_empty_n; -output A_read_data_peek_read; -output [64:0] A_write_addr_din; -input A_write_addr_full_n; -output A_write_addr_write; -output [512:0] A_write_data_din; -input A_write_data_full_n; -output A_write_data_write; -input [8:0] A_write_resp_s_dout; -input A_write_resp_s_empty_n; -output A_write_resp_s_read; -input [8:0] A_write_resp_peek_dout; -input A_write_resp_peek_empty_n; -output A_write_resp_peek_read; -output [512:0] fifo_A_din; -input fifo_A_full_n; -output fifo_A_write; -input [31:0] A_len; -input [31:0] P_N; - -reg ap_done; -reg ap_idle; -reg ap_ready; -reg A_read_addr_write; -reg A_read_data_s_read; -reg fifo_A_write; - - reg ap_rst_n_inv; -(* fsm_encoding = "none" *) reg [5:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -wire ap_CS_fsm_state4; -wire signed [29:0] grp_fu_261_p2; -reg signed [29:0] rp_time_N_reg_289; -wire grp_read_A_Pipeline_rd_A_fu_166_ap_start; -wire grp_read_A_Pipeline_rd_A_fu_166_ap_done; -wire grp_read_A_Pipeline_rd_A_fu_166_ap_idle; -wire grp_read_A_Pipeline_rd_A_fu_166_ap_ready; -wire [512:0] grp_read_A_Pipeline_rd_A_fu_166_fifo_A_din; -wire grp_read_A_Pipeline_rd_A_fu_166_fifo_A_write; -wire grp_read_A_Pipeline_rd_A_fu_166_A_read_data_s_read; -wire [64:0] grp_read_A_Pipeline_rd_A_fu_166_A_read_addr_din; -wire grp_read_A_Pipeline_rd_A_fu_166_A_read_addr_write; -reg grp_read_A_Pipeline_rd_A_fu_166_ap_start_reg; -wire ap_CS_fsm_state5; -wire [0:0] icmp_ln97_fu_245_p2; -wire ap_CS_fsm_state6; -reg [27:0] rp_fu_86; -wire [27:0] rp_2_fu_250_p2; -wire [15:0] N16_fu_181_p4; -wire [0:0] icmp_ln93_fu_191_p2; -wire signed [15:0] rp_time_fu_197_p3; -wire [15:0] N_fu_177_p1; -wire [16:0] zext_ln94_fu_209_p1; -wire [16:0] add_ln95_fu_213_p2; -wire [13:0] lshr_ln_fu_219_p4; -wire [29:0] zext_ln97_fu_241_p1; -wire [13:0] grp_fu_261_p1; -reg [5:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -wire ap_ST_fsm_state2_blk; -wire ap_ST_fsm_state3_blk; -wire ap_ST_fsm_state4_blk; -wire ap_ST_fsm_state5_blk; -reg ap_ST_fsm_state6_blk; -wire [29:0] grp_fu_261_p10; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 6'd1; -#0 grp_read_A_Pipeline_rd_A_fu_166_ap_start_reg = 1'b0; -end - -read_A_read_A_Pipeline_rd_A grp_read_A_Pipeline_rd_A_fu_166( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_read_A_Pipeline_rd_A_fu_166_ap_start), - .ap_done(grp_read_A_Pipeline_rd_A_fu_166_ap_done), - .ap_idle(grp_read_A_Pipeline_rd_A_fu_166_ap_idle), - .ap_ready(grp_read_A_Pipeline_rd_A_fu_166_ap_ready), - .A_len(A_len), - .fifo_A_din(grp_read_A_Pipeline_rd_A_fu_166_fifo_A_din), - .fifo_A_full_n(fifo_A_full_n), - .fifo_A_write(grp_read_A_Pipeline_rd_A_fu_166_fifo_A_write), - .A_read_data_s_dout(A_read_data_s_dout), - .A_read_data_s_empty_n(A_read_data_s_empty_n), - .A_read_data_s_read(grp_read_A_Pipeline_rd_A_fu_166_A_read_data_s_read), - .A_read_addr_din(grp_read_A_Pipeline_rd_A_fu_166_A_read_addr_din), - .A_read_addr_full_n(A_read_addr_full_n), - .A_read_addr_write(grp_read_A_Pipeline_rd_A_fu_166_A_read_addr_write) -); - -read_A_mul_mul_16s_14ns_30_4_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 16 ), - .din1_WIDTH( 14 ), - .dout_WIDTH( 30 )) -mul_mul_16s_14ns_30_4_1_U5( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .din0(rp_time_fu_197_p3), - .din1(grp_fu_261_p1), - .ce(1'b1), - .dout(grp_fu_261_p2) -); - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_read_A_Pipeline_rd_A_fu_166_ap_start_reg <= 1'b0; - end else begin - if (((icmp_ln97_fu_245_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state5))) begin - grp_read_A_Pipeline_rd_A_fu_166_ap_start_reg <= 1'b1; - end else if ((grp_read_A_Pipeline_rd_A_fu_166_ap_ready == 1'b1)) begin - grp_read_A_Pipeline_rd_A_fu_166_ap_start_reg <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b1))) begin - rp_fu_86 <= 28'd0; - end else if (((icmp_ln97_fu_245_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state5))) begin - rp_fu_86 <= rp_2_fu_250_p2; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state4)) begin - rp_time_N_reg_289 <= grp_fu_261_p2; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state6)) begin - A_read_addr_write = grp_read_A_Pipeline_rd_A_fu_166_A_read_addr_write; - end else begin - A_read_addr_write = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state6)) begin - A_read_data_s_read = grp_read_A_Pipeline_rd_A_fu_166_A_read_data_s_read; - end else begin - A_read_data_s_read = 1'b0; - end -end - -always @ (*) begin - if ((ap_start == 1'b0)) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -assign ap_ST_fsm_state2_blk = 1'b0; - -assign ap_ST_fsm_state3_blk = 1'b0; - -assign ap_ST_fsm_state4_blk = 1'b0; - -assign ap_ST_fsm_state5_blk = 1'b0; - -always @ (*) begin - if ((grp_read_A_Pipeline_rd_A_fu_166_ap_done == 1'b0)) begin - ap_ST_fsm_state6_blk = 1'b1; - end else begin - ap_ST_fsm_state6_blk = 1'b0; - end -end - -always @ (*) begin - if (((icmp_ln97_fu_245_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state5))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((icmp_ln97_fu_245_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state5))) begin - ap_ready = 1'b1; - end else begin - ap_ready = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state6)) begin - fifo_A_write = grp_read_A_Pipeline_rd_A_fu_166_fifo_A_write; - end else begin - fifo_A_write = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - ap_NS_fsm = ap_ST_fsm_state3; - end - ap_ST_fsm_state3 : begin - ap_NS_fsm = ap_ST_fsm_state4; - end - ap_ST_fsm_state4 : begin - ap_NS_fsm = ap_ST_fsm_state5; - end - ap_ST_fsm_state5 : begin - if (((icmp_ln97_fu_245_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state5))) begin - ap_NS_fsm = ap_ST_fsm_state1; - end else begin - ap_NS_fsm = ap_ST_fsm_state6; - end - end - ap_ST_fsm_state6 : begin - if (((grp_read_A_Pipeline_rd_A_fu_166_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state6))) begin - ap_NS_fsm = ap_ST_fsm_state5; - end else begin - ap_NS_fsm = ap_ST_fsm_state6; - end - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign A_read_addr_din = grp_read_A_Pipeline_rd_A_fu_166_A_read_addr_din; - -assign A_read_data_peek_read = 1'b0; - -assign A_write_addr_din = 65'd0; - -assign A_write_addr_write = 1'b0; - -assign A_write_data_din = 513'd0; - -assign A_write_data_write = 1'b0; - -assign A_write_resp_peek_read = 1'b0; - -assign A_write_resp_s_read = 1'b0; - -assign N16_fu_181_p4 = {{P_N[31:16]}}; - -assign N_fu_177_p1 = P_N[15:0]; - -assign add_ln95_fu_213_p2 = (zext_ln94_fu_209_p1 + 17'd7); - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state4 = ap_CS_fsm[32'd3]; - -assign ap_CS_fsm_state5 = ap_CS_fsm[32'd4]; - -assign ap_CS_fsm_state6 = ap_CS_fsm[32'd5]; - -always @ (*) begin - ap_rst_n_inv = ~ap_rst_n; -end - -assign fifo_A_din = grp_read_A_Pipeline_rd_A_fu_166_fifo_A_din; - -assign grp_fu_261_p1 = grp_fu_261_p10; - -assign grp_fu_261_p10 = lshr_ln_fu_219_p4; - -assign grp_read_A_Pipeline_rd_A_fu_166_ap_start = grp_read_A_Pipeline_rd_A_fu_166_ap_start_reg; - -assign icmp_ln93_fu_191_p2 = ((N16_fu_181_p4 == 16'd0) ? 1'b1 : 1'b0); - -assign icmp_ln97_fu_245_p2 = (($signed(zext_ln97_fu_241_p1) < $signed(rp_time_N_reg_289)) ? 1'b1 : 1'b0); - -assign lshr_ln_fu_219_p4 = {{add_ln95_fu_213_p2[16:3]}}; - -assign rp_2_fu_250_p2 = (rp_fu_86 + 28'd1); - -assign rp_time_fu_197_p3 = ((icmp_ln93_fu_191_p2[0:0] == 1'b1) ? 16'd1 : N16_fu_181_p4); - -assign zext_ln94_fu_209_p1 = N_fu_177_p1; - -assign zext_ln97_fu_241_p1 = rp_fu_86; - -endmodule //read_A diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_A_flow_control_loop_pipe_sequential_init.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_A_flow_control_loop_pipe_sequential_init.v deleted file mode 100644 index 712338d5..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_A_flow_control_loop_pipe_sequential_init.v +++ /dev/null @@ -1,104 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Tool Version Limit: 2019.12 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1 ns / 1 ps - -module read_A_flow_control_loop_pipe_sequential_init( - ap_clk, - ap_rst, - ap_start, - ap_ready, - ap_done, - ap_start_int, - ap_ready_int, - ap_done_int, - ap_continue_int, - ap_loop_init, - ap_loop_exit_ready, - ap_loop_exit_done -); - -input ap_clk; -input ap_rst; - -//Block level handshake with outside loop -input ap_start; -output ap_ready; -output ap_done; - -//Block level handshake with loop body -output ap_start_int; -input ap_ready_int; -input ap_done_int; -output ap_continue_int; - -//Init live in variables -output ap_loop_init; -wire ap_loop_init; -reg ap_loop_init_int; -reg ap_done; -reg ap_done_cache; - -//Exit signal from loop body -input ap_loop_exit_ready; -input ap_loop_exit_done; - -// power-on initialization -initial begin -#0 ap_loop_init_int = 1'b1; -#0 ap_done_cache = 1'b0; -end - -assign ap_start_int = ap_start; - -assign ap_continue_int = 1'b1; - -assign ap_ready = ap_loop_exit_ready; - -//ap_loop_init is valid for the first II -//of the first loop run so as to enable -//the init block ops which are pushed into -//the first state of the pipeline region -always @ (posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_loop_exit_done == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_ready_int == 1'b1) begin - ap_loop_init_int <= 1'b0; - end -end - -assign ap_loop_init = ap_loop_init_int & ap_start; - -// if no ap_continue port and current module is not top module, -// ap_done handshakes with ap_start. Internally, flow control sends out -// ap_conintue_int = 1'b1 so the ap_done_int is asserted high for 1 clock cycle. -// ap_done_cache is used to record ap_done_int, and de-assert if ap_start_int -// is asserted, so DUT can start the next run -always @(posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_done_cache <= 1'b0; - end else if (ap_done_int == 1'b1) begin - ap_done_cache <= 1'b1; - end else if (ap_start_int == 1'b1) begin - ap_done_cache <= 1'b0; - end -end - -// if no ap_continue port and current module is not top module, ap_done handshakes with ap_start -always @(*) -begin - if ((ap_done_int == 1'b1) || ((ap_done_cache == 1'b1) && (ap_start_int == 1'b0))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_A_mul_mul_16s_14ns_30_4_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_A_mul_mul_16s_14ns_30_4_1.v deleted file mode 100644 index 41c196e8..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_A_mul_mul_16s_14ns_30_4_1.v +++ /dev/null @@ -1,62 +0,0 @@ - -`timescale 1 ns / 1 ps - - module read_A_mul_mul_16s_14ns_30_4_1_DSP48_0(clk, rst, ce, a, b, p); -input clk; -input rst; -input ce; -input signed [16 - 1 : 0] a; -input [14 - 1 : 0] b; -output signed [30 - 1 : 0] p; - -reg signed [30 - 1 : 0] p_reg; - -reg signed [16 - 1 : 0] a_reg; -reg [14 - 1 : 0] b_reg; - -reg signed [30 - 1 : 0] p_reg_tmp; - -always @ (posedge clk) begin - if (ce) begin - a_reg <= a; - b_reg <= b; - p_reg_tmp <= a_reg * $signed({1'b0, b_reg}); - p_reg <= p_reg_tmp; - end -end - -assign p = p_reg; - -endmodule -`timescale 1 ns / 1 ps -module read_A_mul_mul_16s_14ns_30_4_1( - clk, - reset, - ce, - din0, - din1, - dout); - -parameter ID = 32'd1; -parameter NUM_STAGE = 32'd1; -parameter din0_WIDTH = 32'd1; -parameter din1_WIDTH = 32'd1; -parameter dout_WIDTH = 32'd1; -input clk; -input reset; -input ce; -input[din0_WIDTH - 1:0] din0; -input[din1_WIDTH - 1:0] din1; -output[dout_WIDTH - 1:0] dout; - - - -read_A_mul_mul_16s_14ns_30_4_1_DSP48_0 read_A_mul_mul_16s_14ns_30_4_1_DSP48_0_U( - .clk( clk ), - .rst( reset ), - .ce( ce ), - .a( din0 ), - .b( din1 ), - .p( dout )); - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_A_read_A_Pipeline_rd_A.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_A_read_A_Pipeline_rd_A.v deleted file mode 100644 index ce65c67b..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_A_read_A_Pipeline_rd_A.v +++ /dev/null @@ -1,303 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module read_A_read_A_Pipeline_rd_A ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - A_len, - fifo_A_din, - fifo_A_full_n, - fifo_A_write, - A_read_data_s_dout, - A_read_data_s_empty_n, - A_read_data_s_read, - A_read_addr_din, - A_read_addr_full_n, - A_read_addr_write -); - -parameter ap_ST_fsm_pp0_stage0 = 1'd1; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [31:0] A_len; -output [512:0] fifo_A_din; -input fifo_A_full_n; -output fifo_A_write; -input [512:0] A_read_data_s_dout; -input A_read_data_s_empty_n; -output A_read_data_s_read; -output [64:0] A_read_addr_din; -input A_read_addr_full_n; -output A_read_addr_write; - -reg ap_idle; -reg fifo_A_write; -reg A_read_data_s_read; -reg A_read_addr_write; - -(* fsm_encoding = "none" *) reg [0:0] ap_CS_fsm; -wire ap_CS_fsm_pp0_stage0; -wire ap_enable_reg_pp0_iter0; -reg ap_enable_reg_pp0_iter1; -reg ap_idle_pp0; -wire ap_block_state1_pp0_stage0_iter0; -wire ap_block_state2_pp0_stage0_iter1; -wire ap_block_pp0_stage0_subdone; -wire [0:0] icmp_ln101_fu_128_p2; -reg ap_condition_exit_pp0_iter1_stage0; -wire ap_loop_exit_ready; -reg ap_ready_int; -wire ap_block_pp0_stage0_11001; -reg [31:0] i_resp_fu_54; -wire [31:0] i_resp_2_fu_191_p2; -wire [0:0] and_ln47_fu_168_p2; -wire ap_loop_init; -wire ap_block_pp0_stage0; -reg [31:0] i_req_fu_58; -wire [31:0] i_req_2_fu_157_p2; -wire [0:0] and_ln43_fu_138_p2; -wire ap_block_pp0_stage0_01001; -wire [0:0] tmp_4_nbreadreq_fu_91_p3; -wire signed [31:0] icmp_ln43_fu_133_p0; -wire [0:0] icmp_ln43_fu_133_p2; -wire [0:0] and_ln43_fu_138_p1; -wire signed [31:0] sext_ln44_fu_144_p0; -wire signed [63:0] sext_ln44_fu_144_p1; -wire signed [31:0] i_req_2_fu_157_p0; -wire [0:0] and_ln47_fu_168_p0; -wire [511:0] trunc_ln78_fu_178_p1; -reg ap_done_reg; -wire ap_continue_int; -reg ap_done_int; -reg [0:0] ap_NS_fsm; -wire ap_enable_pp0; -wire ap_start_int; -reg ap_condition_190; -reg ap_condition_193; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 1'd1; -#0 ap_enable_reg_pp0_iter1 = 1'b0; -#0 ap_done_reg = 1'b0; -end - -read_A_flow_control_loop_pipe_sequential_init flow_control_loop_pipe_sequential_init_U( - .ap_clk(ap_clk), - .ap_rst(ap_rst), - .ap_start(ap_start), - .ap_ready(ap_ready), - .ap_done(ap_done), - .ap_start_int(ap_start_int), - .ap_loop_init(ap_loop_init), - .ap_ready_int(ap_ready_int), - .ap_loop_exit_ready(ap_condition_exit_pp0_iter1_stage0), - .ap_loop_exit_done(ap_done_int), - .ap_continue_int(ap_continue_int), - .ap_done_int(ap_done_int) -); - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_pp0_stage0; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_done_reg <= 1'b0; - end else begin - if ((ap_continue_int == 1'b1)) begin - ap_done_reg <= 1'b0; - end else if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_done_reg <= 1'b1; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else begin - if ((1'b1 == ap_condition_exit_pp0_iter1_stage0)) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_enable_reg_pp0_iter1 <= ap_start_int; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if ((ap_loop_init == 1'b1)) begin - i_req_fu_58 <= 32'd0; - end else if ((1'b1 == ap_condition_190)) begin - i_req_fu_58 <= i_req_2_fu_157_p2; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if ((ap_loop_init == 1'b1)) begin - i_resp_fu_54 <= 32'd0; - end else if ((1'b1 == ap_condition_193)) begin - i_resp_fu_54 <= i_resp_2_fu_191_p2; - end - end -end - -always @ (*) begin - if (((1'd1 == and_ln43_fu_138_p2) & (icmp_ln101_fu_128_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == A_read_addr_full_n) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - A_read_addr_write = 1'b1; - end else begin - A_read_addr_write = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln47_fu_168_p2) & (icmp_ln101_fu_128_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == A_read_data_s_empty_n) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - A_read_data_s_read = 1'b1; - end else begin - A_read_data_s_read = 1'b0; - end -end - -always @ (*) begin - if (((icmp_ln101_fu_128_p2 == 1'd0) & (1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_condition_exit_pp0_iter1_stage0 = 1'b1; - end else begin - ap_condition_exit_pp0_iter1_stage0 = 1'b0; - end -end - -always @ (*) begin - if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_done_int = 1'b1; - end else begin - ap_done_int = ap_done_reg; - end -end - -always @ (*) begin - if (((ap_idle_pp0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (ap_start_int == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0))) begin - ap_idle_pp0 = 1'b1; - end else begin - ap_idle_pp0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_ready_int = 1'b1; - end else begin - ap_ready_int = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln47_fu_168_p2) & (fifo_A_full_n == 1'b1) & (icmp_ln101_fu_128_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - fifo_A_write = 1'b1; - end else begin - fifo_A_write = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_pp0_stage0 : begin - ap_NS_fsm = ap_ST_fsm_pp0_stage0; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign A_read_addr_din = {{1'd0}, {sext_ln44_fu_144_p1}}; - -assign and_ln43_fu_138_p1 = A_read_addr_full_n; - -assign and_ln43_fu_138_p2 = (icmp_ln43_fu_133_p2 & and_ln43_fu_138_p1); - -assign and_ln47_fu_168_p0 = fifo_A_full_n; - -assign and_ln47_fu_168_p2 = (tmp_4_nbreadreq_fu_91_p3 & and_ln47_fu_168_p0); - -assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd0]; - -assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_01001 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_11001 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_subdone = ~(1'b1 == 1'b1); - -assign ap_block_state1_pp0_stage0_iter0 = ~(1'b1 == 1'b1); - -assign ap_block_state2_pp0_stage0_iter1 = ~(1'b1 == 1'b1); - -always @ (*) begin - ap_condition_190 = ((1'd1 == and_ln43_fu_138_p2) & (icmp_ln101_fu_128_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b1)); -end - -always @ (*) begin - ap_condition_193 = ((1'd1 == and_ln47_fu_168_p2) & (icmp_ln101_fu_128_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b1)); -end - -assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); - -assign ap_enable_reg_pp0_iter0 = ap_start_int; - -assign ap_loop_exit_ready = ap_condition_exit_pp0_iter1_stage0; - -assign fifo_A_din = {{1'd0}, {trunc_ln78_fu_178_p1}}; - -assign i_req_2_fu_157_p0 = i_req_fu_58; - -assign i_req_2_fu_157_p2 = ($signed(i_req_2_fu_157_p0) + $signed(32'd1)); - -assign i_resp_2_fu_191_p2 = (i_resp_fu_54 + 32'd1); - -assign icmp_ln101_fu_128_p2 = (($signed(i_resp_fu_54) < $signed(A_len)) ? 1'b1 : 1'b0); - -assign icmp_ln43_fu_133_p0 = i_req_fu_58; - -assign icmp_ln43_fu_133_p2 = (($signed(icmp_ln43_fu_133_p0) < $signed(A_len)) ? 1'b1 : 1'b0); - -assign sext_ln44_fu_144_p0 = i_req_fu_58; - -assign sext_ln44_fu_144_p1 = sext_ln44_fu_144_p0; - -assign tmp_4_nbreadreq_fu_91_p3 = A_read_data_s_empty_n; - -assign trunc_ln78_fu_178_p1 = A_read_data_s_dout[511:0]; - -endmodule //read_A_read_A_Pipeline_rd_A diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_B.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_B.v deleted file mode 100644 index 548809b5..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_B.v +++ /dev/null @@ -1,380 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -(* CORE_GENERATION_INFO="read_B_read_B,hls_ip_2022_2,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xcu280-fsvh2892-2L-e,HLS_INPUT_CLOCK=3.330000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=2.430900,HLS_SYN_LAT=2000035,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=348,HLS_SYN_LUT=403,HLS_VERSION=2022_2}" *) - -module read_B ( - ap_clk, - ap_rst_n, - ap_start, - ap_done, - ap_idle, - ap_ready, - B_read_addr_din, - B_read_addr_full_n, - B_read_addr_write, - B_read_data_s_dout, - B_read_data_s_empty_n, - B_read_data_s_read, - B_read_data_peek_dout, - B_read_data_peek_empty_n, - B_read_data_peek_read, - B_write_addr_din, - B_write_addr_full_n, - B_write_addr_write, - B_write_data_din, - B_write_data_full_n, - B_write_data_write, - B_write_resp_s_dout, - B_write_resp_s_empty_n, - B_write_resp_s_read, - B_write_resp_peek_dout, - B_write_resp_peek_empty_n, - B_write_resp_peek_read, - fifo_B_din, - fifo_B_full_n, - fifo_B_write, - K, - P_N -); - -parameter ap_ST_fsm_state1 = 5'd1; -parameter ap_ST_fsm_state2 = 5'd2; -parameter ap_ST_fsm_state3 = 5'd4; -parameter ap_ST_fsm_state4 = 5'd8; -parameter ap_ST_fsm_state5 = 5'd16; - -input ap_clk; -input ap_rst_n; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -output [64:0] B_read_addr_din; -input B_read_addr_full_n; -output B_read_addr_write; -input [512:0] B_read_data_s_dout; -input B_read_data_s_empty_n; -output B_read_data_s_read; -input [512:0] B_read_data_peek_dout; -input B_read_data_peek_empty_n; -output B_read_data_peek_read; -output [64:0] B_write_addr_din; -input B_write_addr_full_n; -output B_write_addr_write; -output [512:0] B_write_data_din; -input B_write_data_full_n; -output B_write_data_write; -input [8:0] B_write_resp_s_dout; -input B_write_resp_s_empty_n; -output B_write_resp_s_read; -input [8:0] B_write_resp_peek_dout; -input B_write_resp_peek_empty_n; -output B_write_resp_peek_read; -output [512:0] fifo_B_din; -input fifo_B_full_n; -output fifo_B_write; -input [31:0] K; -input [31:0] P_N; - -reg ap_done; -reg ap_idle; -reg ap_ready; -reg B_read_addr_write; -reg B_read_data_s_read; -reg fifo_B_write; - - reg ap_rst_n_inv; -(* fsm_encoding = "none" *) reg [4:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -reg [15:0] N16_reg_290; -reg signed [28:0] trunc_ln_reg_296; -reg [13:0] lshr_ln_reg_301; -wire ap_CS_fsm_state2; -wire [15:0] rp_time_fu_253_p3; -reg [15:0] rp_time_reg_316; -wire ap_CS_fsm_state3; -wire [31:0] grp_fu_242_p2; -reg [31:0] num_ite_B_reg_321; -wire grp_read_B_Pipeline_rd_B_fu_170_ap_start; -wire grp_read_B_Pipeline_rd_B_fu_170_ap_done; -wire grp_read_B_Pipeline_rd_B_fu_170_ap_idle; -wire grp_read_B_Pipeline_rd_B_fu_170_ap_ready; -wire [512:0] grp_read_B_Pipeline_rd_B_fu_170_fifo_B_din; -wire grp_read_B_Pipeline_rd_B_fu_170_fifo_B_write; -wire grp_read_B_Pipeline_rd_B_fu_170_B_read_data_s_read; -wire [64:0] grp_read_B_Pipeline_rd_B_fu_170_B_read_addr_din; -wire grp_read_B_Pipeline_rd_B_fu_170_B_read_addr_write; -reg grp_read_B_Pipeline_rd_B_fu_170_ap_start_reg; -wire ap_CS_fsm_state4; -wire [0:0] icmp_ln98_fu_267_p2; -wire ap_CS_fsm_state5; -reg [14:0] rp_fu_90; -wire [14:0] rp_2_fu_272_p2; -wire [15:0] N_fu_181_p1; -wire [31:0] add_ln96_fu_199_p2; -wire [16:0] zext_ln95_fu_195_p1; -wire [16:0] add_ln96_1_fu_215_p2; -wire [13:0] grp_fu_242_p0; -wire [0:0] icmp_ln94_fu_248_p2; -wire [15:0] zext_ln98_fu_263_p1; -reg [4:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -wire ap_ST_fsm_state2_blk; -wire ap_ST_fsm_state3_blk; -wire ap_ST_fsm_state4_blk; -reg ap_ST_fsm_state5_blk; -wire [31:0] grp_fu_242_p00; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 5'd1; -#0 grp_read_B_Pipeline_rd_B_fu_170_ap_start_reg = 1'b0; -end - -read_B_read_B_Pipeline_rd_B grp_read_B_Pipeline_rd_B_fu_170( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_read_B_Pipeline_rd_B_fu_170_ap_start), - .ap_done(grp_read_B_Pipeline_rd_B_fu_170_ap_done), - .ap_idle(grp_read_B_Pipeline_rd_B_fu_170_ap_idle), - .ap_ready(grp_read_B_Pipeline_rd_B_fu_170_ap_ready), - .num_ite_B(num_ite_B_reg_321), - .fifo_B_din(grp_read_B_Pipeline_rd_B_fu_170_fifo_B_din), - .fifo_B_full_n(fifo_B_full_n), - .fifo_B_write(grp_read_B_Pipeline_rd_B_fu_170_fifo_B_write), - .B_read_data_s_dout(B_read_data_s_dout), - .B_read_data_s_empty_n(B_read_data_s_empty_n), - .B_read_data_s_read(grp_read_B_Pipeline_rd_B_fu_170_B_read_data_s_read), - .B_read_addr_din(grp_read_B_Pipeline_rd_B_fu_170_B_read_addr_din), - .B_read_addr_full_n(B_read_addr_full_n), - .B_read_addr_write(grp_read_B_Pipeline_rd_B_fu_170_B_read_addr_write) -); - -read_B_mul_14ns_29s_32_2_1 #( - .ID( 1 ), - .NUM_STAGE( 2 ), - .din0_WIDTH( 14 ), - .din1_WIDTH( 29 ), - .dout_WIDTH( 32 )) -mul_14ns_29s_32_2_1_U5( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .din0(grp_fu_242_p0), - .din1(trunc_ln_reg_296), - .ce(1'b1), - .dout(grp_fu_242_p2) -); - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_read_B_Pipeline_rd_B_fu_170_ap_start_reg <= 1'b0; - end else begin - if (((1'b1 == ap_CS_fsm_state4) & (icmp_ln98_fu_267_p2 == 1'd1))) begin - grp_read_B_Pipeline_rd_B_fu_170_ap_start_reg <= 1'b1; - end else if ((grp_read_B_Pipeline_rd_B_fu_170_ap_ready == 1'b1)) begin - grp_read_B_Pipeline_rd_B_fu_170_ap_start_reg <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b1))) begin - rp_fu_90 <= 15'd0; - end else if (((1'b1 == ap_CS_fsm_state4) & (icmp_ln98_fu_267_p2 == 1'd1))) begin - rp_fu_90 <= rp_2_fu_272_p2; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state1)) begin - N16_reg_290 <= {{P_N[31:16]}}; - lshr_ln_reg_301 <= {{add_ln96_1_fu_215_p2[16:3]}}; - trunc_ln_reg_296 <= {{add_ln96_fu_199_p2[31:3]}}; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state3)) begin - num_ite_B_reg_321 <= grp_fu_242_p2; - rp_time_reg_316 <= rp_time_fu_253_p3; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state5)) begin - B_read_addr_write = grp_read_B_Pipeline_rd_B_fu_170_B_read_addr_write; - end else begin - B_read_addr_write = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state5)) begin - B_read_data_s_read = grp_read_B_Pipeline_rd_B_fu_170_B_read_data_s_read; - end else begin - B_read_data_s_read = 1'b0; - end -end - -always @ (*) begin - if ((ap_start == 1'b0)) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -assign ap_ST_fsm_state2_blk = 1'b0; - -assign ap_ST_fsm_state3_blk = 1'b0; - -assign ap_ST_fsm_state4_blk = 1'b0; - -always @ (*) begin - if ((grp_read_B_Pipeline_rd_B_fu_170_ap_done == 1'b0)) begin - ap_ST_fsm_state5_blk = 1'b1; - end else begin - ap_ST_fsm_state5_blk = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state4) & (icmp_ln98_fu_267_p2 == 1'd0))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state4) & (icmp_ln98_fu_267_p2 == 1'd0))) begin - ap_ready = 1'b1; - end else begin - ap_ready = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state5)) begin - fifo_B_write = grp_read_B_Pipeline_rd_B_fu_170_fifo_B_write; - end else begin - fifo_B_write = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - ap_NS_fsm = ap_ST_fsm_state3; - end - ap_ST_fsm_state3 : begin - ap_NS_fsm = ap_ST_fsm_state4; - end - ap_ST_fsm_state4 : begin - if (((1'b1 == ap_CS_fsm_state4) & (icmp_ln98_fu_267_p2 == 1'd0))) begin - ap_NS_fsm = ap_ST_fsm_state1; - end else begin - ap_NS_fsm = ap_ST_fsm_state5; - end - end - ap_ST_fsm_state5 : begin - if (((grp_read_B_Pipeline_rd_B_fu_170_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state5))) begin - ap_NS_fsm = ap_ST_fsm_state4; - end else begin - ap_NS_fsm = ap_ST_fsm_state5; - end - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign B_read_addr_din = grp_read_B_Pipeline_rd_B_fu_170_B_read_addr_din; - -assign B_read_data_peek_read = 1'b0; - -assign B_write_addr_din = 65'd0; - -assign B_write_addr_write = 1'b0; - -assign B_write_data_din = 513'd0; - -assign B_write_data_write = 1'b0; - -assign B_write_resp_peek_read = 1'b0; - -assign B_write_resp_s_read = 1'b0; - -assign N_fu_181_p1 = P_N[15:0]; - -assign add_ln96_1_fu_215_p2 = (zext_ln95_fu_195_p1 + 17'd7); - -assign add_ln96_fu_199_p2 = (K + 32'd7); - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; - -assign ap_CS_fsm_state3 = ap_CS_fsm[32'd2]; - -assign ap_CS_fsm_state4 = ap_CS_fsm[32'd3]; - -assign ap_CS_fsm_state5 = ap_CS_fsm[32'd4]; - -always @ (*) begin - ap_rst_n_inv = ~ap_rst_n; -end - -assign fifo_B_din = grp_read_B_Pipeline_rd_B_fu_170_fifo_B_din; - -assign grp_fu_242_p0 = grp_fu_242_p00; - -assign grp_fu_242_p00 = lshr_ln_reg_301; - -assign grp_read_B_Pipeline_rd_B_fu_170_ap_start = grp_read_B_Pipeline_rd_B_fu_170_ap_start_reg; - -assign icmp_ln94_fu_248_p2 = ((N16_reg_290 == 16'd0) ? 1'b1 : 1'b0); - -assign icmp_ln98_fu_267_p2 = (($signed(zext_ln98_fu_263_p1) < $signed(rp_time_reg_316)) ? 1'b1 : 1'b0); - -assign rp_2_fu_272_p2 = (rp_fu_90 + 15'd1); - -assign rp_time_fu_253_p3 = ((icmp_ln94_fu_248_p2[0:0] == 1'b1) ? 16'd1 : N16_reg_290); - -assign zext_ln95_fu_195_p1 = N_fu_181_p1; - -assign zext_ln98_fu_263_p1 = rp_fu_90; - -endmodule //read_B diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_B_flow_control_loop_pipe_sequential_init.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_B_flow_control_loop_pipe_sequential_init.v deleted file mode 100644 index b42b1d9d..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_B_flow_control_loop_pipe_sequential_init.v +++ /dev/null @@ -1,104 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Tool Version Limit: 2019.12 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1 ns / 1 ps - -module read_B_flow_control_loop_pipe_sequential_init( - ap_clk, - ap_rst, - ap_start, - ap_ready, - ap_done, - ap_start_int, - ap_ready_int, - ap_done_int, - ap_continue_int, - ap_loop_init, - ap_loop_exit_ready, - ap_loop_exit_done -); - -input ap_clk; -input ap_rst; - -//Block level handshake with outside loop -input ap_start; -output ap_ready; -output ap_done; - -//Block level handshake with loop body -output ap_start_int; -input ap_ready_int; -input ap_done_int; -output ap_continue_int; - -//Init live in variables -output ap_loop_init; -wire ap_loop_init; -reg ap_loop_init_int; -reg ap_done; -reg ap_done_cache; - -//Exit signal from loop body -input ap_loop_exit_ready; -input ap_loop_exit_done; - -// power-on initialization -initial begin -#0 ap_loop_init_int = 1'b1; -#0 ap_done_cache = 1'b0; -end - -assign ap_start_int = ap_start; - -assign ap_continue_int = 1'b1; - -assign ap_ready = ap_loop_exit_ready; - -//ap_loop_init is valid for the first II -//of the first loop run so as to enable -//the init block ops which are pushed into -//the first state of the pipeline region -always @ (posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_loop_exit_done == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_ready_int == 1'b1) begin - ap_loop_init_int <= 1'b0; - end -end - -assign ap_loop_init = ap_loop_init_int & ap_start; - -// if no ap_continue port and current module is not top module, -// ap_done handshakes with ap_start. Internally, flow control sends out -// ap_conintue_int = 1'b1 so the ap_done_int is asserted high for 1 clock cycle. -// ap_done_cache is used to record ap_done_int, and de-assert if ap_start_int -// is asserted, so DUT can start the next run -always @(posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_done_cache <= 1'b0; - end else if (ap_done_int == 1'b1) begin - ap_done_cache <= 1'b1; - end else if (ap_start_int == 1'b1) begin - ap_done_cache <= 1'b0; - end -end - -// if no ap_continue port and current module is not top module, ap_done handshakes with ap_start -always @(*) -begin - if ((ap_done_int == 1'b1) || ((ap_done_cache == 1'b1) && (ap_start_int == 1'b0))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_B_mul_14ns_29s_32_2_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_B_mul_14ns_29s_32_2_1.v deleted file mode 100644 index 2e5508d9..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_B_mul_14ns_29s_32_2_1.v +++ /dev/null @@ -1,30 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1 ns / 1 ps - -module read_B_mul_14ns_29s_32_2_1(clk, ce, reset, din0, din1, dout); -parameter ID = 1; -parameter NUM_STAGE = 1; -parameter din0_WIDTH = 14; -parameter din1_WIDTH = 12; -parameter dout_WIDTH = 26; -input clk; -input ce; -input reset; -input [din0_WIDTH - 1 : 0] din0; -input signed [din1_WIDTH - 1 : 0] din1; -output[dout_WIDTH - 1 : 0] dout; -reg signed [dout_WIDTH - 1 : 0] dout; -wire signed [dout_WIDTH - 1 : 0] tmp_product; - -assign tmp_product = $signed({1'b0, din0}) * $signed(din1); -always @ (posedge clk) begin - if (ce) begin - dout <= tmp_product; - end -end -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_B_read_B_Pipeline_rd_B.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_B_read_B_Pipeline_rd_B.v deleted file mode 100644 index f2e5b480..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_B_read_B_Pipeline_rd_B.v +++ /dev/null @@ -1,303 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module read_B_read_B_Pipeline_rd_B ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - num_ite_B, - fifo_B_din, - fifo_B_full_n, - fifo_B_write, - B_read_data_s_dout, - B_read_data_s_empty_n, - B_read_data_s_read, - B_read_addr_din, - B_read_addr_full_n, - B_read_addr_write -); - -parameter ap_ST_fsm_pp0_stage0 = 1'd1; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [31:0] num_ite_B; -output [512:0] fifo_B_din; -input fifo_B_full_n; -output fifo_B_write; -input [512:0] B_read_data_s_dout; -input B_read_data_s_empty_n; -output B_read_data_s_read; -output [64:0] B_read_addr_din; -input B_read_addr_full_n; -output B_read_addr_write; - -reg ap_idle; -reg fifo_B_write; -reg B_read_data_s_read; -reg B_read_addr_write; - -(* fsm_encoding = "none" *) reg [0:0] ap_CS_fsm; -wire ap_CS_fsm_pp0_stage0; -wire ap_enable_reg_pp0_iter0; -reg ap_enable_reg_pp0_iter1; -reg ap_idle_pp0; -wire ap_block_state1_pp0_stage0_iter0; -wire ap_block_state2_pp0_stage0_iter1; -wire ap_block_pp0_stage0_subdone; -wire [0:0] icmp_ln102_fu_128_p2; -reg ap_condition_exit_pp0_iter1_stage0; -wire ap_loop_exit_ready; -reg ap_ready_int; -wire ap_block_pp0_stage0_11001; -reg [31:0] i_resp_fu_54; -wire [31:0] i_resp_2_fu_191_p2; -wire [0:0] and_ln47_fu_168_p2; -wire ap_loop_init; -wire ap_block_pp0_stage0; -reg [31:0] i_req_fu_58; -wire [31:0] i_req_2_fu_157_p2; -wire [0:0] and_ln43_fu_138_p2; -wire ap_block_pp0_stage0_01001; -wire [0:0] tmp_4_nbreadreq_fu_91_p3; -wire signed [31:0] icmp_ln43_fu_133_p0; -wire [0:0] icmp_ln43_fu_133_p2; -wire [0:0] and_ln43_fu_138_p1; -wire signed [31:0] sext_ln44_fu_144_p0; -wire signed [63:0] sext_ln44_fu_144_p1; -wire signed [31:0] i_req_2_fu_157_p0; -wire [0:0] and_ln47_fu_168_p0; -wire [511:0] trunc_ln146_fu_178_p1; -reg ap_done_reg; -wire ap_continue_int; -reg ap_done_int; -reg [0:0] ap_NS_fsm; -wire ap_enable_pp0; -wire ap_start_int; -reg ap_condition_190; -reg ap_condition_193; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 1'd1; -#0 ap_enable_reg_pp0_iter1 = 1'b0; -#0 ap_done_reg = 1'b0; -end - -read_B_flow_control_loop_pipe_sequential_init flow_control_loop_pipe_sequential_init_U( - .ap_clk(ap_clk), - .ap_rst(ap_rst), - .ap_start(ap_start), - .ap_ready(ap_ready), - .ap_done(ap_done), - .ap_start_int(ap_start_int), - .ap_loop_init(ap_loop_init), - .ap_ready_int(ap_ready_int), - .ap_loop_exit_ready(ap_condition_exit_pp0_iter1_stage0), - .ap_loop_exit_done(ap_done_int), - .ap_continue_int(ap_continue_int), - .ap_done_int(ap_done_int) -); - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_pp0_stage0; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_done_reg <= 1'b0; - end else begin - if ((ap_continue_int == 1'b1)) begin - ap_done_reg <= 1'b0; - end else if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_done_reg <= 1'b1; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else begin - if ((1'b1 == ap_condition_exit_pp0_iter1_stage0)) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_enable_reg_pp0_iter1 <= ap_start_int; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if ((ap_loop_init == 1'b1)) begin - i_req_fu_58 <= 32'd0; - end else if ((1'b1 == ap_condition_190)) begin - i_req_fu_58 <= i_req_2_fu_157_p2; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if ((ap_loop_init == 1'b1)) begin - i_resp_fu_54 <= 32'd0; - end else if ((1'b1 == ap_condition_193)) begin - i_resp_fu_54 <= i_resp_2_fu_191_p2; - end - end -end - -always @ (*) begin - if (((1'd1 == and_ln43_fu_138_p2) & (icmp_ln102_fu_128_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == B_read_addr_full_n) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - B_read_addr_write = 1'b1; - end else begin - B_read_addr_write = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln47_fu_168_p2) & (icmp_ln102_fu_128_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == B_read_data_s_empty_n) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - B_read_data_s_read = 1'b1; - end else begin - B_read_data_s_read = 1'b0; - end -end - -always @ (*) begin - if (((icmp_ln102_fu_128_p2 == 1'd0) & (1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_condition_exit_pp0_iter1_stage0 = 1'b1; - end else begin - ap_condition_exit_pp0_iter1_stage0 = 1'b0; - end -end - -always @ (*) begin - if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_done_int = 1'b1; - end else begin - ap_done_int = ap_done_reg; - end -end - -always @ (*) begin - if (((ap_idle_pp0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (ap_start_int == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0))) begin - ap_idle_pp0 = 1'b1; - end else begin - ap_idle_pp0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_ready_int = 1'b1; - end else begin - ap_ready_int = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln47_fu_168_p2) & (fifo_B_full_n == 1'b1) & (icmp_ln102_fu_128_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - fifo_B_write = 1'b1; - end else begin - fifo_B_write = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_pp0_stage0 : begin - ap_NS_fsm = ap_ST_fsm_pp0_stage0; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign B_read_addr_din = {{1'd0}, {sext_ln44_fu_144_p1}}; - -assign and_ln43_fu_138_p1 = B_read_addr_full_n; - -assign and_ln43_fu_138_p2 = (icmp_ln43_fu_133_p2 & and_ln43_fu_138_p1); - -assign and_ln47_fu_168_p0 = fifo_B_full_n; - -assign and_ln47_fu_168_p2 = (tmp_4_nbreadreq_fu_91_p3 & and_ln47_fu_168_p0); - -assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd0]; - -assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_01001 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_11001 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_subdone = ~(1'b1 == 1'b1); - -assign ap_block_state1_pp0_stage0_iter0 = ~(1'b1 == 1'b1); - -assign ap_block_state2_pp0_stage0_iter1 = ~(1'b1 == 1'b1); - -always @ (*) begin - ap_condition_190 = ((1'd1 == and_ln43_fu_138_p2) & (icmp_ln102_fu_128_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b1)); -end - -always @ (*) begin - ap_condition_193 = ((1'd1 == and_ln47_fu_168_p2) & (icmp_ln102_fu_128_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b1)); -end - -assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); - -assign ap_enable_reg_pp0_iter0 = ap_start_int; - -assign ap_loop_exit_ready = ap_condition_exit_pp0_iter1_stage0; - -assign fifo_B_din = {{1'd0}, {trunc_ln146_fu_178_p1}}; - -assign i_req_2_fu_157_p0 = i_req_fu_58; - -assign i_req_2_fu_157_p2 = ($signed(i_req_2_fu_157_p0) + $signed(32'd1)); - -assign i_resp_2_fu_191_p2 = (i_resp_fu_54 + 32'd1); - -assign icmp_ln102_fu_128_p2 = (($signed(i_resp_fu_54) < $signed(num_ite_B)) ? 1'b1 : 1'b0); - -assign icmp_ln43_fu_133_p0 = i_req_fu_58; - -assign icmp_ln43_fu_133_p2 = (($signed(icmp_ln43_fu_133_p0) < $signed(num_ite_B)) ? 1'b1 : 1'b0); - -assign sext_ln44_fu_144_p0 = i_req_fu_58; - -assign sext_ln44_fu_144_p1 = sext_ln44_fu_144_p0; - -assign tmp_4_nbreadreq_fu_91_p3 = B_read_data_s_empty_n; - -assign trunc_ln146_fu_178_p1 = B_read_data_s_dout[511:0]; - -endmodule //read_B_read_B_Pipeline_rd_B diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_C.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_C.v deleted file mode 100644 index 2e536fec..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_C.v +++ /dev/null @@ -1,457 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -(* CORE_GENERATION_INFO="read_C_read_C,hls_ip_2022_2,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xcu280-fsvh2892-2L-e,HLS_INPUT_CLOCK=3.330000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=2.430900,HLS_SYN_LAT=2000036,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=153,HLS_SYN_LUT=391,HLS_VERSION=2022_2}" *) - -module read_C ( - ap_clk, - ap_rst_n, - ap_start, - ap_done, - ap_idle, - ap_ready, - C_read_addr_din, - C_read_addr_full_n, - C_read_addr_write, - C_read_data_s_dout, - C_read_data_s_empty_n, - C_read_data_s_read, - C_read_data_peek_dout, - C_read_data_peek_empty_n, - C_read_data_peek_read, - C_write_addr_din, - C_write_addr_full_n, - C_write_addr_write, - C_write_data_din, - C_write_data_full_n, - C_write_data_write, - C_write_resp_s_dout, - C_write_resp_s_empty_n, - C_write_resp_s_read, - C_write_resp_peek_dout, - C_write_resp_peek_empty_n, - C_write_resp_peek_read, - fifo_C_din, - fifo_C_full_n, - fifo_C_write, - M, - P_N, - wrC_inst_din, - wrC_inst_full_n, - wrC_inst_write -); - -parameter ap_ST_fsm_state1 = 6'd1; -parameter ap_ST_fsm_state2 = 6'd2; -parameter ap_ST_fsm_state3 = 6'd4; -parameter ap_ST_fsm_state4 = 6'd8; -parameter ap_ST_fsm_state5 = 6'd16; -parameter ap_ST_fsm_state6 = 6'd32; - -input ap_clk; -input ap_rst_n; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -output [64:0] C_read_addr_din; -input C_read_addr_full_n; -output C_read_addr_write; -input [512:0] C_read_data_s_dout; -input C_read_data_s_empty_n; -output C_read_data_s_read; -input [512:0] C_read_data_peek_dout; -input C_read_data_peek_empty_n; -output C_read_data_peek_read; -output [64:0] C_write_addr_din; -input C_write_addr_full_n; -output C_write_addr_write; -output [512:0] C_write_data_din; -input C_write_data_full_n; -output C_write_data_write; -input [8:0] C_write_resp_s_dout; -input C_write_resp_s_empty_n; -output C_write_resp_s_read; -input [8:0] C_write_resp_peek_dout; -input C_write_resp_peek_empty_n; -output C_write_resp_peek_read; -output [512:0] fifo_C_din; -input fifo_C_full_n; -output fifo_C_write; -input [31:0] M; -input [31:0] P_N; -output [32:0] wrC_inst_din; -input wrC_inst_full_n; -output wrC_inst_write; - -reg ap_done; -reg ap_idle; -reg ap_ready; -reg C_read_addr_write; -reg C_read_data_s_read; -reg fifo_C_write; -reg[32:0] wrC_inst_din; -reg wrC_inst_write; - - reg ap_rst_n_inv; -(* fsm_encoding = "none" *) reg [5:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -reg wrC_inst_blk_n; -wire ap_CS_fsm_state2; -reg [15:0] N16_reg_341; -wire [15:0] rp_time_fu_293_p3; -reg [15:0] rp_time_reg_357; -wire ap_CS_fsm_state4; -wire signed [31:0] grp_fu_323_p2; -reg [31:0] num_ite_C_reg_362; -wire grp_read_C_Pipeline_rd_C_fu_197_ap_start; -wire grp_read_C_Pipeline_rd_C_fu_197_ap_done; -wire grp_read_C_Pipeline_rd_C_fu_197_ap_idle; -wire grp_read_C_Pipeline_rd_C_fu_197_ap_ready; -wire [512:0] grp_read_C_Pipeline_rd_C_fu_197_fifo_C_din; -wire grp_read_C_Pipeline_rd_C_fu_197_fifo_C_write; -wire grp_read_C_Pipeline_rd_C_fu_197_C_read_data_s_read; -wire [64:0] grp_read_C_Pipeline_rd_C_fu_197_C_read_addr_din; -wire grp_read_C_Pipeline_rd_C_fu_197_C_read_addr_write; -reg grp_read_C_Pipeline_rd_C_fu_197_ap_start_reg; -wire ap_CS_fsm_state5; -wire [0:0] icmp_ln107_fu_307_p2; -wire ap_CS_fsm_state6; -reg [14:0] rp_fu_102; -wire [14:0] rp_2_fu_312_p2; -reg ap_block_state1; -wire [32:0] p_s_fu_212_p3; -wire [32:0] p_0_fu_280_p3; -wire [15:0] N_fu_208_p1; -wire [31:0] add_ln105_fu_235_p2; -wire signed [27:0] trunc_ln_fu_241_p4; -wire [16:0] zext_ln104_fu_231_p1; -wire [16:0] add_ln105_1_fu_255_p2; -wire [13:0] lshr_ln_fu_261_p4; -wire [0:0] icmp_ln103_fu_288_p2; -wire [15:0] zext_ln107_fu_303_p1; -wire [13:0] grp_fu_323_p0; -reg grp_fu_323_ce; -wire ap_CS_fsm_state3; -reg [5:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -reg ap_ST_fsm_state2_blk; -wire ap_ST_fsm_state3_blk; -wire ap_ST_fsm_state4_blk; -wire ap_ST_fsm_state5_blk; -reg ap_ST_fsm_state6_blk; -wire [31:0] grp_fu_323_p00; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 6'd1; -#0 grp_read_C_Pipeline_rd_C_fu_197_ap_start_reg = 1'b0; -end - -read_C_read_C_Pipeline_rd_C grp_read_C_Pipeline_rd_C_fu_197( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_read_C_Pipeline_rd_C_fu_197_ap_start), - .ap_done(grp_read_C_Pipeline_rd_C_fu_197_ap_done), - .ap_idle(grp_read_C_Pipeline_rd_C_fu_197_ap_idle), - .ap_ready(grp_read_C_Pipeline_rd_C_fu_197_ap_ready), - .num_ite_C(num_ite_C_reg_362), - .fifo_C_din(grp_read_C_Pipeline_rd_C_fu_197_fifo_C_din), - .fifo_C_full_n(fifo_C_full_n), - .fifo_C_write(grp_read_C_Pipeline_rd_C_fu_197_fifo_C_write), - .C_read_data_s_dout(C_read_data_s_dout), - .C_read_data_s_empty_n(C_read_data_s_empty_n), - .C_read_data_s_read(grp_read_C_Pipeline_rd_C_fu_197_C_read_data_s_read), - .C_read_addr_din(grp_read_C_Pipeline_rd_C_fu_197_C_read_addr_din), - .C_read_addr_full_n(C_read_addr_full_n), - .C_read_addr_write(grp_read_C_Pipeline_rd_C_fu_197_C_read_addr_write) -); - -read_C_mul_mul_14ns_28s_32_4_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 14 ), - .din1_WIDTH( 28 ), - .dout_WIDTH( 32 )) -mul_mul_14ns_28s_32_4_1_U5( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .din0(grp_fu_323_p0), - .din1(trunc_ln_fu_241_p4), - .ce(grp_fu_323_ce), - .dout(grp_fu_323_p2) -); - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_read_C_Pipeline_rd_C_fu_197_ap_start_reg <= 1'b0; - end else begin - if (((1'b1 == ap_CS_fsm_state5) & (icmp_ln107_fu_307_p2 == 1'd1))) begin - grp_read_C_Pipeline_rd_C_fu_197_ap_start_reg <= 1'b1; - end else if ((grp_read_C_Pipeline_rd_C_fu_197_ap_ready == 1'b1)) begin - grp_read_C_Pipeline_rd_C_fu_197_ap_start_reg <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if ((~((wrC_inst_full_n == 1'b0) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1))) begin - rp_fu_102 <= 15'd0; - end else if (((1'b1 == ap_CS_fsm_state5) & (icmp_ln107_fu_307_p2 == 1'd1))) begin - rp_fu_102 <= rp_2_fu_312_p2; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state1)) begin - N16_reg_341 <= {{P_N[31:16]}}; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state4)) begin - num_ite_C_reg_362 <= grp_fu_323_p2; - rp_time_reg_357 <= rp_time_fu_293_p3; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state6)) begin - C_read_addr_write = grp_read_C_Pipeline_rd_C_fu_197_C_read_addr_write; - end else begin - C_read_addr_write = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state6)) begin - C_read_data_s_read = grp_read_C_Pipeline_rd_C_fu_197_C_read_data_s_read; - end else begin - C_read_data_s_read = 1'b0; - end -end - -always @ (*) begin - if (((wrC_inst_full_n == 1'b0) | (ap_start == 1'b0))) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -always @ (*) begin - if ((wrC_inst_full_n == 1'b0)) begin - ap_ST_fsm_state2_blk = 1'b1; - end else begin - ap_ST_fsm_state2_blk = 1'b0; - end -end - -assign ap_ST_fsm_state3_blk = 1'b0; - -assign ap_ST_fsm_state4_blk = 1'b0; - -assign ap_ST_fsm_state5_blk = 1'b0; - -always @ (*) begin - if ((grp_read_C_Pipeline_rd_C_fu_197_ap_done == 1'b0)) begin - ap_ST_fsm_state6_blk = 1'b1; - end else begin - ap_ST_fsm_state6_blk = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state5) & (icmp_ln107_fu_307_p2 == 1'd0))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state5) & (icmp_ln107_fu_307_p2 == 1'd0))) begin - ap_ready = 1'b1; - end else begin - ap_ready = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state6)) begin - fifo_C_write = grp_read_C_Pipeline_rd_C_fu_197_fifo_C_write; - end else begin - fifo_C_write = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state4) | (1'b1 == ap_CS_fsm_state3) | ((wrC_inst_full_n == 1'b1) & (1'b1 == ap_CS_fsm_state2)) | (~((wrC_inst_full_n == 1'b0) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1)))) begin - grp_fu_323_ce = 1'b1; - end else begin - grp_fu_323_ce = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state2) | ((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b1)))) begin - wrC_inst_blk_n = wrC_inst_full_n; - end else begin - wrC_inst_blk_n = 1'b1; - end -end - -always @ (*) begin - if (((wrC_inst_full_n == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin - wrC_inst_din = p_0_fu_280_p3; - end else if ((~((wrC_inst_full_n == 1'b0) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1))) begin - wrC_inst_din = p_s_fu_212_p3; - end else begin - wrC_inst_din = 'bx; - end -end - -always @ (*) begin - if ((((wrC_inst_full_n == 1'b1) & (1'b1 == ap_CS_fsm_state2)) | (~((wrC_inst_full_n == 1'b0) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1)))) begin - wrC_inst_write = 1'b1; - end else begin - wrC_inst_write = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if ((~((wrC_inst_full_n == 1'b0) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - if (((wrC_inst_full_n == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin - ap_NS_fsm = ap_ST_fsm_state3; - end else begin - ap_NS_fsm = ap_ST_fsm_state2; - end - end - ap_ST_fsm_state3 : begin - ap_NS_fsm = ap_ST_fsm_state4; - end - ap_ST_fsm_state4 : begin - ap_NS_fsm = ap_ST_fsm_state5; - end - ap_ST_fsm_state5 : begin - if (((1'b1 == ap_CS_fsm_state5) & (icmp_ln107_fu_307_p2 == 1'd0))) begin - ap_NS_fsm = ap_ST_fsm_state1; - end else begin - ap_NS_fsm = ap_ST_fsm_state6; - end - end - ap_ST_fsm_state6 : begin - if (((grp_read_C_Pipeline_rd_C_fu_197_ap_done == 1'b1) & (1'b1 == ap_CS_fsm_state6))) begin - ap_NS_fsm = ap_ST_fsm_state5; - end else begin - ap_NS_fsm = ap_ST_fsm_state6; - end - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign C_read_addr_din = grp_read_C_Pipeline_rd_C_fu_197_C_read_addr_din; - -assign C_read_data_peek_read = 1'b0; - -assign C_write_addr_din = 65'd0; - -assign C_write_addr_write = 1'b0; - -assign C_write_data_din = 513'd0; - -assign C_write_data_write = 1'b0; - -assign C_write_resp_peek_read = 1'b0; - -assign C_write_resp_s_read = 1'b0; - -assign N_fu_208_p1 = P_N[15:0]; - -assign add_ln105_1_fu_255_p2 = (zext_ln104_fu_231_p1 + 17'd7); - -assign add_ln105_fu_235_p2 = (M + 32'd15); - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; - -assign ap_CS_fsm_state3 = ap_CS_fsm[32'd2]; - -assign ap_CS_fsm_state4 = ap_CS_fsm[32'd3]; - -assign ap_CS_fsm_state5 = ap_CS_fsm[32'd4]; - -assign ap_CS_fsm_state6 = ap_CS_fsm[32'd5]; - -always @ (*) begin - ap_block_state1 = ((wrC_inst_full_n == 1'b0) | (ap_start == 1'b0)); -end - -always @ (*) begin - ap_rst_n_inv = ~ap_rst_n; -end - -assign fifo_C_din = grp_read_C_Pipeline_rd_C_fu_197_fifo_C_din; - -assign grp_fu_323_p0 = grp_fu_323_p00; - -assign grp_fu_323_p00 = lshr_ln_fu_261_p4; - -assign grp_read_C_Pipeline_rd_C_fu_197_ap_start = grp_read_C_Pipeline_rd_C_fu_197_ap_start_reg; - -assign icmp_ln103_fu_288_p2 = ((N16_reg_341 == 16'd0) ? 1'b1 : 1'b0); - -assign icmp_ln107_fu_307_p2 = (($signed(zext_ln107_fu_303_p1) < $signed(rp_time_reg_357)) ? 1'b1 : 1'b0); - -assign lshr_ln_fu_261_p4 = {{add_ln105_1_fu_255_p2[16:3]}}; - -assign p_0_fu_280_p3 = {{1'd0}, {P_N}}; - -assign p_s_fu_212_p3 = {{1'd0}, {M}}; - -assign rp_2_fu_312_p2 = (rp_fu_102 + 15'd1); - -assign rp_time_fu_293_p3 = ((icmp_ln103_fu_288_p2[0:0] == 1'b1) ? 16'd1 : N16_reg_341); - -assign trunc_ln_fu_241_p4 = {{add_ln105_fu_235_p2[31:4]}}; - -assign zext_ln104_fu_231_p1 = N_fu_208_p1; - -assign zext_ln107_fu_303_p1 = rp_fu_102; - -endmodule //read_C diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_C_flow_control_loop_pipe_sequential_init.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_C_flow_control_loop_pipe_sequential_init.v deleted file mode 100644 index d347ecf7..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_C_flow_control_loop_pipe_sequential_init.v +++ /dev/null @@ -1,104 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Tool Version Limit: 2019.12 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1 ns / 1 ps - -module read_C_flow_control_loop_pipe_sequential_init( - ap_clk, - ap_rst, - ap_start, - ap_ready, - ap_done, - ap_start_int, - ap_ready_int, - ap_done_int, - ap_continue_int, - ap_loop_init, - ap_loop_exit_ready, - ap_loop_exit_done -); - -input ap_clk; -input ap_rst; - -//Block level handshake with outside loop -input ap_start; -output ap_ready; -output ap_done; - -//Block level handshake with loop body -output ap_start_int; -input ap_ready_int; -input ap_done_int; -output ap_continue_int; - -//Init live in variables -output ap_loop_init; -wire ap_loop_init; -reg ap_loop_init_int; -reg ap_done; -reg ap_done_cache; - -//Exit signal from loop body -input ap_loop_exit_ready; -input ap_loop_exit_done; - -// power-on initialization -initial begin -#0 ap_loop_init_int = 1'b1; -#0 ap_done_cache = 1'b0; -end - -assign ap_start_int = ap_start; - -assign ap_continue_int = 1'b1; - -assign ap_ready = ap_loop_exit_ready; - -//ap_loop_init is valid for the first II -//of the first loop run so as to enable -//the init block ops which are pushed into -//the first state of the pipeline region -always @ (posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_loop_exit_done == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_ready_int == 1'b1) begin - ap_loop_init_int <= 1'b0; - end -end - -assign ap_loop_init = ap_loop_init_int & ap_start; - -// if no ap_continue port and current module is not top module, -// ap_done handshakes with ap_start. Internally, flow control sends out -// ap_conintue_int = 1'b1 so the ap_done_int is asserted high for 1 clock cycle. -// ap_done_cache is used to record ap_done_int, and de-assert if ap_start_int -// is asserted, so DUT can start the next run -always @(posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_done_cache <= 1'b0; - end else if (ap_done_int == 1'b1) begin - ap_done_cache <= 1'b1; - end else if (ap_start_int == 1'b1) begin - ap_done_cache <= 1'b0; - end -end - -// if no ap_continue port and current module is not top module, ap_done handshakes with ap_start -always @(*) -begin - if ((ap_done_int == 1'b1) || ((ap_done_cache == 1'b1) && (ap_start_int == 1'b0))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_C_mul_mul_14ns_28s_32_4_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_C_mul_mul_14ns_28s_32_4_1.v deleted file mode 100644 index 59c84132..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_C_mul_mul_14ns_28s_32_4_1.v +++ /dev/null @@ -1,62 +0,0 @@ - -`timescale 1 ns / 1 ps - - module read_C_mul_mul_14ns_28s_32_4_1_DSP48_0(clk, rst, ce, a, b, p); -input clk; -input rst; -input ce; -input [14 - 1 : 0] a; -input signed [28 - 1 : 0] b; -output signed [32 - 1 : 0] p; - -reg signed [32 - 1 : 0] p_reg; - -reg [14 - 1 : 0] a_reg; -reg signed [28 - 1 : 0] b_reg; - -reg signed [32 - 1 : 0] p_reg_tmp; - -always @ (posedge clk) begin - if (ce) begin - a_reg <= a; - b_reg <= b; - p_reg_tmp <= $signed({1'b0, a_reg}) * b_reg; - p_reg <= p_reg_tmp; - end -end - -assign p = p_reg; - -endmodule -`timescale 1 ns / 1 ps -module read_C_mul_mul_14ns_28s_32_4_1( - clk, - reset, - ce, - din0, - din1, - dout); - -parameter ID = 32'd1; -parameter NUM_STAGE = 32'd1; -parameter din0_WIDTH = 32'd1; -parameter din1_WIDTH = 32'd1; -parameter dout_WIDTH = 32'd1; -input clk; -input reset; -input ce; -input[din0_WIDTH - 1:0] din0; -input[din1_WIDTH - 1:0] din1; -output[dout_WIDTH - 1:0] dout; - - - -read_C_mul_mul_14ns_28s_32_4_1_DSP48_0 read_C_mul_mul_14ns_28s_32_4_1_DSP48_0_U( - .clk( clk ), - .rst( reset ), - .ce( ce ), - .a( din0 ), - .b( din1 ), - .p( dout )); - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_C_read_C_Pipeline_rd_C.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_C_read_C_Pipeline_rd_C.v deleted file mode 100644 index 35ca451d..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_C_read_C_Pipeline_rd_C.v +++ /dev/null @@ -1,303 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module read_C_read_C_Pipeline_rd_C ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - num_ite_C, - fifo_C_din, - fifo_C_full_n, - fifo_C_write, - C_read_data_s_dout, - C_read_data_s_empty_n, - C_read_data_s_read, - C_read_addr_din, - C_read_addr_full_n, - C_read_addr_write -); - -parameter ap_ST_fsm_pp0_stage0 = 1'd1; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [31:0] num_ite_C; -output [512:0] fifo_C_din; -input fifo_C_full_n; -output fifo_C_write; -input [512:0] C_read_data_s_dout; -input C_read_data_s_empty_n; -output C_read_data_s_read; -output [64:0] C_read_addr_din; -input C_read_addr_full_n; -output C_read_addr_write; - -reg ap_idle; -reg fifo_C_write; -reg C_read_data_s_read; -reg C_read_addr_write; - -(* fsm_encoding = "none" *) reg [0:0] ap_CS_fsm; -wire ap_CS_fsm_pp0_stage0; -wire ap_enable_reg_pp0_iter0; -reg ap_enable_reg_pp0_iter1; -reg ap_idle_pp0; -wire ap_block_state1_pp0_stage0_iter0; -wire ap_block_state2_pp0_stage0_iter1; -wire ap_block_pp0_stage0_subdone; -wire [0:0] icmp_ln111_fu_128_p2; -reg ap_condition_exit_pp0_iter1_stage0; -wire ap_loop_exit_ready; -reg ap_ready_int; -wire ap_block_pp0_stage0_11001; -reg [31:0] i_resp_fu_54; -wire [31:0] i_resp_2_fu_191_p2; -wire [0:0] and_ln47_fu_168_p2; -wire ap_loop_init; -wire ap_block_pp0_stage0; -reg [31:0] i_req_fu_58; -wire [31:0] i_req_2_fu_157_p2; -wire [0:0] and_ln43_fu_138_p2; -wire ap_block_pp0_stage0_01001; -wire [0:0] tmp_8_nbreadreq_fu_91_p3; -wire signed [31:0] icmp_ln43_fu_133_p0; -wire [0:0] icmp_ln43_fu_133_p2; -wire [0:0] and_ln43_fu_138_p1; -wire signed [31:0] sext_ln44_fu_144_p0; -wire signed [63:0] sext_ln44_fu_144_p1; -wire signed [31:0] i_req_2_fu_157_p0; -wire [0:0] and_ln47_fu_168_p0; -wire [511:0] trunc_ln146_fu_178_p1; -reg ap_done_reg; -wire ap_continue_int; -reg ap_done_int; -reg [0:0] ap_NS_fsm; -wire ap_enable_pp0; -wire ap_start_int; -reg ap_condition_190; -reg ap_condition_193; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 1'd1; -#0 ap_enable_reg_pp0_iter1 = 1'b0; -#0 ap_done_reg = 1'b0; -end - -read_C_flow_control_loop_pipe_sequential_init flow_control_loop_pipe_sequential_init_U( - .ap_clk(ap_clk), - .ap_rst(ap_rst), - .ap_start(ap_start), - .ap_ready(ap_ready), - .ap_done(ap_done), - .ap_start_int(ap_start_int), - .ap_loop_init(ap_loop_init), - .ap_ready_int(ap_ready_int), - .ap_loop_exit_ready(ap_condition_exit_pp0_iter1_stage0), - .ap_loop_exit_done(ap_done_int), - .ap_continue_int(ap_continue_int), - .ap_done_int(ap_done_int) -); - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_pp0_stage0; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_done_reg <= 1'b0; - end else begin - if ((ap_continue_int == 1'b1)) begin - ap_done_reg <= 1'b0; - end else if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_done_reg <= 1'b1; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else begin - if ((1'b1 == ap_condition_exit_pp0_iter1_stage0)) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_enable_reg_pp0_iter1 <= ap_start_int; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if ((ap_loop_init == 1'b1)) begin - i_req_fu_58 <= 32'd0; - end else if ((1'b1 == ap_condition_190)) begin - i_req_fu_58 <= i_req_2_fu_157_p2; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if ((ap_loop_init == 1'b1)) begin - i_resp_fu_54 <= 32'd0; - end else if ((1'b1 == ap_condition_193)) begin - i_resp_fu_54 <= i_resp_2_fu_191_p2; - end - end -end - -always @ (*) begin - if (((1'd1 == and_ln43_fu_138_p2) & (icmp_ln111_fu_128_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == C_read_addr_full_n) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - C_read_addr_write = 1'b1; - end else begin - C_read_addr_write = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln47_fu_168_p2) & (icmp_ln111_fu_128_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == C_read_data_s_empty_n) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - C_read_data_s_read = 1'b1; - end else begin - C_read_data_s_read = 1'b0; - end -end - -always @ (*) begin - if (((icmp_ln111_fu_128_p2 == 1'd0) & (1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_condition_exit_pp0_iter1_stage0 = 1'b1; - end else begin - ap_condition_exit_pp0_iter1_stage0 = 1'b0; - end -end - -always @ (*) begin - if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_done_int = 1'b1; - end else begin - ap_done_int = ap_done_reg; - end -end - -always @ (*) begin - if (((ap_idle_pp0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (ap_start_int == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0))) begin - ap_idle_pp0 = 1'b1; - end else begin - ap_idle_pp0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_ready_int = 1'b1; - end else begin - ap_ready_int = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln47_fu_168_p2) & (fifo_C_full_n == 1'b1) & (icmp_ln111_fu_128_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - fifo_C_write = 1'b1; - end else begin - fifo_C_write = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_pp0_stage0 : begin - ap_NS_fsm = ap_ST_fsm_pp0_stage0; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign C_read_addr_din = {{1'd0}, {sext_ln44_fu_144_p1}}; - -assign and_ln43_fu_138_p1 = C_read_addr_full_n; - -assign and_ln43_fu_138_p2 = (icmp_ln43_fu_133_p2 & and_ln43_fu_138_p1); - -assign and_ln47_fu_168_p0 = fifo_C_full_n; - -assign and_ln47_fu_168_p2 = (tmp_8_nbreadreq_fu_91_p3 & and_ln47_fu_168_p0); - -assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd0]; - -assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_01001 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_11001 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_subdone = ~(1'b1 == 1'b1); - -assign ap_block_state1_pp0_stage0_iter0 = ~(1'b1 == 1'b1); - -assign ap_block_state2_pp0_stage0_iter1 = ~(1'b1 == 1'b1); - -always @ (*) begin - ap_condition_190 = ((1'd1 == and_ln43_fu_138_p2) & (icmp_ln111_fu_128_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b1)); -end - -always @ (*) begin - ap_condition_193 = ((1'd1 == and_ln47_fu_168_p2) & (icmp_ln111_fu_128_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b1)); -end - -assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); - -assign ap_enable_reg_pp0_iter0 = ap_start_int; - -assign ap_loop_exit_ready = ap_condition_exit_pp0_iter1_stage0; - -assign fifo_C_din = {{1'd0}, {trunc_ln146_fu_178_p1}}; - -assign i_req_2_fu_157_p0 = i_req_fu_58; - -assign i_req_2_fu_157_p2 = ($signed(i_req_2_fu_157_p0) + $signed(32'd1)); - -assign i_resp_2_fu_191_p2 = (i_resp_fu_54 + 32'd1); - -assign icmp_ln111_fu_128_p2 = (($signed(i_resp_fu_54) < $signed(num_ite_C)) ? 1'b1 : 1'b0); - -assign icmp_ln43_fu_133_p0 = i_req_fu_58; - -assign icmp_ln43_fu_133_p2 = (($signed(icmp_ln43_fu_133_p0) < $signed(num_ite_C)) ? 1'b1 : 1'b0); - -assign sext_ln44_fu_144_p0 = i_req_fu_58; - -assign sext_ln44_fu_144_p1 = sext_ln44_fu_144_p0; - -assign tmp_8_nbreadreq_fu_91_p3 = C_read_data_s_empty_n; - -assign trunc_ln146_fu_178_p1 = C_read_data_s_dout[511:0]; - -endmodule //read_C_read_C_Pipeline_rd_C diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr.v deleted file mode 100644 index 7dfacc79..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr.v +++ /dev/null @@ -1,484 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -(* CORE_GENERATION_INFO="read_edge_list_ptr_read_edge_list_ptr,hls_ip_2022_2,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xcu280-fsvh2892-2L-e,HLS_INPUT_CLOCK=3.330000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=2.430900,HLS_SYN_LAT=3236,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=164,HLS_SYN_LUT=422,HLS_VERSION=2022_2}" *) - -module read_edge_list_ptr ( - ap_clk, - ap_rst_n, - ap_start, - ap_done, - ap_idle, - ap_ready, - num_ite, - M, - P_N, - K, - edge_list_ptr_read_addr_din, - edge_list_ptr_read_addr_full_n, - edge_list_ptr_read_addr_write, - edge_list_ptr_read_data_s_dout, - edge_list_ptr_read_data_s_empty_n, - edge_list_ptr_read_data_s_read, - edge_list_ptr_read_data_peek_dout, - edge_list_ptr_read_data_peek_empty_n, - edge_list_ptr_read_data_peek_read, - edge_list_ptr_write_addr_din, - edge_list_ptr_write_addr_full_n, - edge_list_ptr_write_addr_write, - edge_list_ptr_write_data_din, - edge_list_ptr_write_data_full_n, - edge_list_ptr_write_data_write, - edge_list_ptr_write_resp_s_dout, - edge_list_ptr_write_resp_s_empty_n, - edge_list_ptr_write_resp_s_read, - edge_list_ptr_write_resp_peek_dout, - edge_list_ptr_write_resp_peek_empty_n, - edge_list_ptr_write_resp_peek_read, - fifo_edge_list_ptr_din, - fifo_edge_list_ptr_full_n, - fifo_edge_list_ptr_write, - PE_inst_din, - PE_inst_full_n, - PE_inst_write -); - -parameter ap_ST_fsm_state1 = 6'd1; -parameter ap_ST_fsm_state2 = 6'd2; -parameter ap_ST_fsm_state3 = 6'd4; -parameter ap_ST_fsm_state4 = 6'd8; -parameter ap_ST_fsm_state5 = 6'd16; -parameter ap_ST_fsm_state6 = 6'd32; - -input ap_clk; -input ap_rst_n; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [31:0] num_ite; -input [31:0] M; -input [31:0] P_N; -input [31:0] K; -output [64:0] edge_list_ptr_read_addr_din; -input edge_list_ptr_read_addr_full_n; -output edge_list_ptr_read_addr_write; -input [32:0] edge_list_ptr_read_data_s_dout; -input edge_list_ptr_read_data_s_empty_n; -output edge_list_ptr_read_data_s_read; -input [32:0] edge_list_ptr_read_data_peek_dout; -input edge_list_ptr_read_data_peek_empty_n; -output edge_list_ptr_read_data_peek_read; -output [64:0] edge_list_ptr_write_addr_din; -input edge_list_ptr_write_addr_full_n; -output edge_list_ptr_write_addr_write; -output [32:0] edge_list_ptr_write_data_din; -input edge_list_ptr_write_data_full_n; -output edge_list_ptr_write_data_write; -input [8:0] edge_list_ptr_write_resp_s_dout; -input edge_list_ptr_write_resp_s_empty_n; -output edge_list_ptr_write_resp_s_read; -input [8:0] edge_list_ptr_write_resp_peek_dout; -input edge_list_ptr_write_resp_peek_empty_n; -output edge_list_ptr_write_resp_peek_read; -output [32:0] fifo_edge_list_ptr_din; -input fifo_edge_list_ptr_full_n; -output fifo_edge_list_ptr_write; -output [32:0] PE_inst_din; -input PE_inst_full_n; -output PE_inst_write; - -reg ap_done; -reg ap_idle; -reg ap_ready; -reg edge_list_ptr_read_addr_write; -reg edge_list_ptr_read_data_s_read; -reg fifo_edge_list_ptr_write; -reg[32:0] PE_inst_din; -reg PE_inst_write; - - reg ap_rst_n_inv; -(* fsm_encoding = "none" *) reg [5:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -reg PE_inst_blk_n; -wire ap_CS_fsm_state2; -wire ap_CS_fsm_state3; -wire ap_CS_fsm_state4; -wire [31:0] num_ite_plus1_fu_312_p2; -reg [31:0] num_ite_plus1_reg_373; -wire signed [29:0] grp_fu_340_p2; -reg signed [29:0] rp_time_N_reg_378; -wire grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_start; -wire grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_done; -wire grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_idle; -wire grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_ready; -wire [32:0] grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_fifo_edge_list_ptr_din; -wire grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_fifo_edge_list_ptr_write; -wire grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_edge_list_ptr_read_data_s_read; -wire [64:0] grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_edge_list_ptr_read_addr_din; -wire grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_edge_list_ptr_read_addr_write; -reg grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_start_reg; -wire ap_CS_fsm_state5; -wire [0:0] icmp_ln105_fu_324_p2; -wire ap_CS_fsm_state6; -reg [27:0] rp_fu_98; -wire [27:0] rp_2_fu_329_p2; -reg ap_block_state1; -wire [32:0] p_s_fu_220_p3; -wire [32:0] p_2_fu_286_p3; -wire [32:0] p_3_fu_295_p3; -wire [32:0] p_0_fu_303_p3; -wire [15:0] N_fu_216_p1; -wire [15:0] N16_fu_233_p4; -wire [0:0] icmp_ln101_fu_243_p2; -wire signed [15:0] rp_time_fu_249_p3; -wire [16:0] zext_ln99_fu_229_p1; -wire [16:0] add_ln103_fu_261_p2; -wire [13:0] lshr_ln_fu_267_p4; -wire [29:0] zext_ln105_fu_320_p1; -wire [13:0] grp_fu_340_p1; -reg grp_fu_340_ce; -reg [5:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -reg ap_ST_fsm_state2_blk; -reg ap_ST_fsm_state3_blk; -reg ap_ST_fsm_state4_blk; -wire ap_ST_fsm_state5_blk; -reg ap_ST_fsm_state6_blk; -wire [29:0] grp_fu_340_p10; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 6'd1; -#0 grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_start_reg = 1'b0; -end - -read_edge_list_ptr_read_edge_list_ptr_Pipeline_rd_ptr grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_start), - .ap_done(grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_done), - .ap_idle(grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_idle), - .ap_ready(grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_ready), - .num_ite_plus1(num_ite_plus1_reg_373), - .fifo_edge_list_ptr_din(grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_fifo_edge_list_ptr_din), - .fifo_edge_list_ptr_full_n(fifo_edge_list_ptr_full_n), - .fifo_edge_list_ptr_write(grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_fifo_edge_list_ptr_write), - .edge_list_ptr_read_data_s_dout(edge_list_ptr_read_data_s_dout), - .edge_list_ptr_read_data_s_empty_n(edge_list_ptr_read_data_s_empty_n), - .edge_list_ptr_read_data_s_read(grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_edge_list_ptr_read_data_s_read), - .edge_list_ptr_read_addr_din(grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_edge_list_ptr_read_addr_din), - .edge_list_ptr_read_addr_full_n(edge_list_ptr_read_addr_full_n), - .edge_list_ptr_read_addr_write(grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_edge_list_ptr_read_addr_write) -); - -read_edge_list_ptr_mul_mul_16s_14ns_30_4_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 16 ), - .din1_WIDTH( 14 ), - .dout_WIDTH( 30 )) -mul_mul_16s_14ns_30_4_1_U5( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .din0(rp_time_fu_249_p3), - .din1(grp_fu_340_p1), - .ce(grp_fu_340_ce), - .dout(grp_fu_340_p2) -); - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_start_reg <= 1'b0; - end else begin - if (((1'b1 == ap_CS_fsm_state5) & (icmp_ln105_fu_324_p2 == 1'd1))) begin - grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_start_reg <= 1'b1; - end else if ((grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_ready == 1'b1)) begin - grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_start_reg <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if ((~((1'b0 == PE_inst_full_n) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1))) begin - rp_fu_98 <= 28'd0; - end else if (((1'b1 == ap_CS_fsm_state5) & (icmp_ln105_fu_324_p2 == 1'd1))) begin - rp_fu_98 <= rp_2_fu_329_p2; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state4)) begin - num_ite_plus1_reg_373 <= num_ite_plus1_fu_312_p2; - rp_time_N_reg_378 <= grp_fu_340_p2; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state4) | (1'b1 == ap_CS_fsm_state3) | (1'b1 == ap_CS_fsm_state2) | ((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b1)))) begin - PE_inst_blk_n = PE_inst_full_n; - end else begin - PE_inst_blk_n = 1'b1; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state4) & (1'b1 == PE_inst_full_n))) begin - PE_inst_din = p_0_fu_303_p3; - end else if (((1'b1 == ap_CS_fsm_state3) & (1'b1 == PE_inst_full_n))) begin - PE_inst_din = p_3_fu_295_p3; - end else if (((1'b1 == ap_CS_fsm_state2) & (1'b1 == PE_inst_full_n))) begin - PE_inst_din = p_2_fu_286_p3; - end else if ((~((1'b0 == PE_inst_full_n) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1))) begin - PE_inst_din = p_s_fu_220_p3; - end else begin - PE_inst_din = 'bx; - end -end - -always @ (*) begin - if ((((1'b1 == ap_CS_fsm_state4) & (1'b1 == PE_inst_full_n)) | ((1'b1 == ap_CS_fsm_state3) & (1'b1 == PE_inst_full_n)) | ((1'b1 == ap_CS_fsm_state2) & (1'b1 == PE_inst_full_n)) | (~((1'b0 == PE_inst_full_n) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1)))) begin - PE_inst_write = 1'b1; - end else begin - PE_inst_write = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == PE_inst_full_n) | (ap_start == 1'b0))) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -always @ (*) begin - if ((1'b0 == PE_inst_full_n)) begin - ap_ST_fsm_state2_blk = 1'b1; - end else begin - ap_ST_fsm_state2_blk = 1'b0; - end -end - -always @ (*) begin - if ((1'b0 == PE_inst_full_n)) begin - ap_ST_fsm_state3_blk = 1'b1; - end else begin - ap_ST_fsm_state3_blk = 1'b0; - end -end - -always @ (*) begin - if ((1'b0 == PE_inst_full_n)) begin - ap_ST_fsm_state4_blk = 1'b1; - end else begin - ap_ST_fsm_state4_blk = 1'b0; - end -end - -assign ap_ST_fsm_state5_blk = 1'b0; - -always @ (*) begin - if ((grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_done == 1'b0)) begin - ap_ST_fsm_state6_blk = 1'b1; - end else begin - ap_ST_fsm_state6_blk = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state5) & (icmp_ln105_fu_324_p2 == 1'd0))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state5) & (icmp_ln105_fu_324_p2 == 1'd0))) begin - ap_ready = 1'b1; - end else begin - ap_ready = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state6)) begin - edge_list_ptr_read_addr_write = grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_edge_list_ptr_read_addr_write; - end else begin - edge_list_ptr_read_addr_write = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state6)) begin - edge_list_ptr_read_data_s_read = grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_edge_list_ptr_read_data_s_read; - end else begin - edge_list_ptr_read_data_s_read = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state6)) begin - fifo_edge_list_ptr_write = grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_fifo_edge_list_ptr_write; - end else begin - fifo_edge_list_ptr_write = 1'b0; - end -end - -always @ (*) begin - if ((((1'b1 == ap_CS_fsm_state4) & (1'b1 == PE_inst_full_n)) | ((1'b1 == ap_CS_fsm_state3) & (1'b1 == PE_inst_full_n)) | ((1'b1 == ap_CS_fsm_state2) & (1'b1 == PE_inst_full_n)) | (~((1'b0 == PE_inst_full_n) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1)))) begin - grp_fu_340_ce = 1'b1; - end else begin - grp_fu_340_ce = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if ((~((1'b0 == PE_inst_full_n) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - if (((1'b1 == ap_CS_fsm_state2) & (1'b1 == PE_inst_full_n))) begin - ap_NS_fsm = ap_ST_fsm_state3; - end else begin - ap_NS_fsm = ap_ST_fsm_state2; - end - end - ap_ST_fsm_state3 : begin - if (((1'b1 == ap_CS_fsm_state3) & (1'b1 == PE_inst_full_n))) begin - ap_NS_fsm = ap_ST_fsm_state4; - end else begin - ap_NS_fsm = ap_ST_fsm_state3; - end - end - ap_ST_fsm_state4 : begin - if (((1'b1 == ap_CS_fsm_state4) & (1'b1 == PE_inst_full_n))) begin - ap_NS_fsm = ap_ST_fsm_state5; - end else begin - ap_NS_fsm = ap_ST_fsm_state4; - end - end - ap_ST_fsm_state5 : begin - if (((1'b1 == ap_CS_fsm_state5) & (icmp_ln105_fu_324_p2 == 1'd0))) begin - ap_NS_fsm = ap_ST_fsm_state1; - end else begin - ap_NS_fsm = ap_ST_fsm_state6; - end - end - ap_ST_fsm_state6 : begin - if (((1'b1 == ap_CS_fsm_state6) & (grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_done == 1'b1))) begin - ap_NS_fsm = ap_ST_fsm_state5; - end else begin - ap_NS_fsm = ap_ST_fsm_state6; - end - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign N16_fu_233_p4 = {{P_N[31:16]}}; - -assign N_fu_216_p1 = P_N[15:0]; - -assign add_ln103_fu_261_p2 = (zext_ln99_fu_229_p1 + 17'd7); - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; - -assign ap_CS_fsm_state3 = ap_CS_fsm[32'd2]; - -assign ap_CS_fsm_state4 = ap_CS_fsm[32'd3]; - -assign ap_CS_fsm_state5 = ap_CS_fsm[32'd4]; - -assign ap_CS_fsm_state6 = ap_CS_fsm[32'd5]; - -always @ (*) begin - ap_block_state1 = ((1'b0 == PE_inst_full_n) | (ap_start == 1'b0)); -end - -always @ (*) begin - ap_rst_n_inv = ~ap_rst_n; -end - -assign edge_list_ptr_read_addr_din = grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_edge_list_ptr_read_addr_din; - -assign edge_list_ptr_read_data_peek_read = 1'b0; - -assign edge_list_ptr_write_addr_din = 65'd0; - -assign edge_list_ptr_write_addr_write = 1'b0; - -assign edge_list_ptr_write_data_din = 33'd0; - -assign edge_list_ptr_write_data_write = 1'b0; - -assign edge_list_ptr_write_resp_peek_read = 1'b0; - -assign edge_list_ptr_write_resp_s_read = 1'b0; - -assign fifo_edge_list_ptr_din = grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_fifo_edge_list_ptr_din; - -assign grp_fu_340_p1 = grp_fu_340_p10; - -assign grp_fu_340_p10 = lshr_ln_fu_267_p4; - -assign grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_start = grp_read_edge_list_ptr_Pipeline_rd_ptr_fu_205_ap_start_reg; - -assign icmp_ln101_fu_243_p2 = ((N16_fu_233_p4 == 16'd0) ? 1'b1 : 1'b0); - -assign icmp_ln105_fu_324_p2 = (($signed(zext_ln105_fu_320_p1) < $signed(rp_time_N_reg_378)) ? 1'b1 : 1'b0); - -assign lshr_ln_fu_267_p4 = {{add_ln103_fu_261_p2[16:3]}}; - -assign num_ite_plus1_fu_312_p2 = (num_ite + 32'd1); - -assign p_0_fu_303_p3 = {{1'd0}, {K}}; - -assign p_2_fu_286_p3 = {{1'd0}, {M}}; - -assign p_3_fu_295_p3 = {{1'd0}, {P_N}}; - -assign p_s_fu_220_p3 = {{1'd0}, {num_ite}}; - -assign rp_2_fu_329_p2 = (rp_fu_98 + 28'd1); - -assign rp_time_fu_249_p3 = ((icmp_ln101_fu_243_p2[0:0] == 1'b1) ? 16'd1 : N16_fu_233_p4); - -assign zext_ln105_fu_320_p1 = rp_fu_98; - -assign zext_ln99_fu_229_p1 = N_fu_216_p1; - -endmodule //read_edge_list_ptr diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr_flow_control_loop_pipe_sequential_init.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr_flow_control_loop_pipe_sequential_init.v deleted file mode 100644 index e13e855f..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr_flow_control_loop_pipe_sequential_init.v +++ /dev/null @@ -1,104 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Tool Version Limit: 2019.12 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1 ns / 1 ps - -module read_edge_list_ptr_flow_control_loop_pipe_sequential_init( - ap_clk, - ap_rst, - ap_start, - ap_ready, - ap_done, - ap_start_int, - ap_ready_int, - ap_done_int, - ap_continue_int, - ap_loop_init, - ap_loop_exit_ready, - ap_loop_exit_done -); - -input ap_clk; -input ap_rst; - -//Block level handshake with outside loop -input ap_start; -output ap_ready; -output ap_done; - -//Block level handshake with loop body -output ap_start_int; -input ap_ready_int; -input ap_done_int; -output ap_continue_int; - -//Init live in variables -output ap_loop_init; -wire ap_loop_init; -reg ap_loop_init_int; -reg ap_done; -reg ap_done_cache; - -//Exit signal from loop body -input ap_loop_exit_ready; -input ap_loop_exit_done; - -// power-on initialization -initial begin -#0 ap_loop_init_int = 1'b1; -#0 ap_done_cache = 1'b0; -end - -assign ap_start_int = ap_start; - -assign ap_continue_int = 1'b1; - -assign ap_ready = ap_loop_exit_ready; - -//ap_loop_init is valid for the first II -//of the first loop run so as to enable -//the init block ops which are pushed into -//the first state of the pipeline region -always @ (posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_loop_exit_done == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_ready_int == 1'b1) begin - ap_loop_init_int <= 1'b0; - end -end - -assign ap_loop_init = ap_loop_init_int & ap_start; - -// if no ap_continue port and current module is not top module, -// ap_done handshakes with ap_start. Internally, flow control sends out -// ap_conintue_int = 1'b1 so the ap_done_int is asserted high for 1 clock cycle. -// ap_done_cache is used to record ap_done_int, and de-assert if ap_start_int -// is asserted, so DUT can start the next run -always @(posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_done_cache <= 1'b0; - end else if (ap_done_int == 1'b1) begin - ap_done_cache <= 1'b1; - end else if (ap_start_int == 1'b1) begin - ap_done_cache <= 1'b0; - end -end - -// if no ap_continue port and current module is not top module, ap_done handshakes with ap_start -always @(*) -begin - if ((ap_done_int == 1'b1) || ((ap_done_cache == 1'b1) && (ap_start_int == 1'b0))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr_mul_mul_16s_14ns_30_4_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr_mul_mul_16s_14ns_30_4_1.v deleted file mode 100644 index 362acc6a..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr_mul_mul_16s_14ns_30_4_1.v +++ /dev/null @@ -1,62 +0,0 @@ - -`timescale 1 ns / 1 ps - - module read_edge_list_ptr_mul_mul_16s_14ns_30_4_1_DSP48_0(clk, rst, ce, a, b, p); -input clk; -input rst; -input ce; -input signed [16 - 1 : 0] a; -input [14 - 1 : 0] b; -output signed [30 - 1 : 0] p; - -reg signed [30 - 1 : 0] p_reg; - -reg signed [16 - 1 : 0] a_reg; -reg [14 - 1 : 0] b_reg; - -reg signed [30 - 1 : 0] p_reg_tmp; - -always @ (posedge clk) begin - if (ce) begin - a_reg <= a; - b_reg <= b; - p_reg_tmp <= a_reg * $signed({1'b0, b_reg}); - p_reg <= p_reg_tmp; - end -end - -assign p = p_reg; - -endmodule -`timescale 1 ns / 1 ps -module read_edge_list_ptr_mul_mul_16s_14ns_30_4_1( - clk, - reset, - ce, - din0, - din1, - dout); - -parameter ID = 32'd1; -parameter NUM_STAGE = 32'd1; -parameter din0_WIDTH = 32'd1; -parameter din1_WIDTH = 32'd1; -parameter dout_WIDTH = 32'd1; -input clk; -input reset; -input ce; -input[din0_WIDTH - 1:0] din0; -input[din1_WIDTH - 1:0] din1; -output[dout_WIDTH - 1:0] dout; - - - -read_edge_list_ptr_mul_mul_16s_14ns_30_4_1_DSP48_0 read_edge_list_ptr_mul_mul_16s_14ns_30_4_1_DSP48_0_U( - .clk( clk ), - .rst( reset ), - .ce( ce ), - .a( din0 ), - .b( din1 ), - .p( dout )); - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr_read_edge_list_ptr_Pipeline_rd_ptr.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr_read_edge_list_ptr_Pipeline_rd_ptr.v deleted file mode 100644 index fffbc6e3..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/read_edge_list_ptr_read_edge_list_ptr_Pipeline_rd_ptr.v +++ /dev/null @@ -1,303 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module read_edge_list_ptr_read_edge_list_ptr_Pipeline_rd_ptr ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - num_ite_plus1, - fifo_edge_list_ptr_din, - fifo_edge_list_ptr_full_n, - fifo_edge_list_ptr_write, - edge_list_ptr_read_data_s_dout, - edge_list_ptr_read_data_s_empty_n, - edge_list_ptr_read_data_s_read, - edge_list_ptr_read_addr_din, - edge_list_ptr_read_addr_full_n, - edge_list_ptr_read_addr_write -); - -parameter ap_ST_fsm_pp0_stage0 = 1'd1; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [31:0] num_ite_plus1; -output [32:0] fifo_edge_list_ptr_din; -input fifo_edge_list_ptr_full_n; -output fifo_edge_list_ptr_write; -input [32:0] edge_list_ptr_read_data_s_dout; -input edge_list_ptr_read_data_s_empty_n; -output edge_list_ptr_read_data_s_read; -output [64:0] edge_list_ptr_read_addr_din; -input edge_list_ptr_read_addr_full_n; -output edge_list_ptr_read_addr_write; - -reg ap_idle; -reg fifo_edge_list_ptr_write; -reg edge_list_ptr_read_data_s_read; -reg edge_list_ptr_read_addr_write; - -(* fsm_encoding = "none" *) reg [0:0] ap_CS_fsm; -wire ap_CS_fsm_pp0_stage0; -wire ap_enable_reg_pp0_iter0; -reg ap_enable_reg_pp0_iter1; -reg ap_idle_pp0; -wire ap_block_state1_pp0_stage0_iter0; -wire ap_block_state2_pp0_stage0_iter1; -wire ap_block_pp0_stage0_subdone; -wire [0:0] icmp_ln109_fu_128_p2; -reg ap_condition_exit_pp0_iter1_stage0; -wire ap_loop_exit_ready; -reg ap_ready_int; -wire ap_block_pp0_stage0_11001; -reg [31:0] i_resp_fu_54; -wire [31:0] i_resp_2_fu_191_p2; -wire [0:0] and_ln47_fu_168_p2; -wire ap_loop_init; -wire ap_block_pp0_stage0; -reg [31:0] i_req_fu_58; -wire [31:0] i_req_2_fu_157_p2; -wire [0:0] and_ln43_fu_138_p2; -wire ap_block_pp0_stage0_01001; -wire [0:0] tmp_4_nbreadreq_fu_91_p3; -wire signed [31:0] icmp_ln43_fu_133_p0; -wire [0:0] icmp_ln43_fu_133_p2; -wire [0:0] and_ln43_fu_138_p1; -wire signed [31:0] sext_ln44_fu_144_p0; -wire signed [63:0] sext_ln44_fu_144_p1; -wire signed [31:0] i_req_2_fu_157_p0; -wire [0:0] and_ln47_fu_168_p0; -wire [31:0] trunc_ln78_fu_178_p1; -reg ap_done_reg; -wire ap_continue_int; -reg ap_done_int; -reg [0:0] ap_NS_fsm; -wire ap_enable_pp0; -wire ap_start_int; -reg ap_condition_190; -reg ap_condition_193; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 1'd1; -#0 ap_enable_reg_pp0_iter1 = 1'b0; -#0 ap_done_reg = 1'b0; -end - -read_edge_list_ptr_flow_control_loop_pipe_sequential_init flow_control_loop_pipe_sequential_init_U( - .ap_clk(ap_clk), - .ap_rst(ap_rst), - .ap_start(ap_start), - .ap_ready(ap_ready), - .ap_done(ap_done), - .ap_start_int(ap_start_int), - .ap_loop_init(ap_loop_init), - .ap_ready_int(ap_ready_int), - .ap_loop_exit_ready(ap_condition_exit_pp0_iter1_stage0), - .ap_loop_exit_done(ap_done_int), - .ap_continue_int(ap_continue_int), - .ap_done_int(ap_done_int) -); - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_pp0_stage0; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_done_reg <= 1'b0; - end else begin - if ((ap_continue_int == 1'b1)) begin - ap_done_reg <= 1'b0; - end else if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_done_reg <= 1'b1; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else begin - if ((1'b1 == ap_condition_exit_pp0_iter1_stage0)) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_enable_reg_pp0_iter1 <= ap_start_int; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if ((ap_loop_init == 1'b1)) begin - i_req_fu_58 <= 32'd0; - end else if ((1'b1 == ap_condition_190)) begin - i_req_fu_58 <= i_req_2_fu_157_p2; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if ((ap_loop_init == 1'b1)) begin - i_resp_fu_54 <= 32'd0; - end else if ((1'b1 == ap_condition_193)) begin - i_resp_fu_54 <= i_resp_2_fu_191_p2; - end - end -end - -always @ (*) begin - if (((icmp_ln109_fu_128_p2 == 1'd0) & (1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_condition_exit_pp0_iter1_stage0 = 1'b1; - end else begin - ap_condition_exit_pp0_iter1_stage0 = 1'b0; - end -end - -always @ (*) begin - if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_done_int = 1'b1; - end else begin - ap_done_int = ap_done_reg; - end -end - -always @ (*) begin - if (((ap_idle_pp0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0) & (ap_start_int == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0))) begin - ap_idle_pp0 = 1'b1; - end else begin - ap_idle_pp0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_ready_int = 1'b1; - end else begin - ap_ready_int = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln43_fu_138_p2) & (edge_list_ptr_read_addr_full_n == 1'b1) & (icmp_ln109_fu_128_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - edge_list_ptr_read_addr_write = 1'b1; - end else begin - edge_list_ptr_read_addr_write = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln47_fu_168_p2) & (edge_list_ptr_read_data_s_empty_n == 1'b1) & (icmp_ln109_fu_128_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - edge_list_ptr_read_data_s_read = 1'b1; - end else begin - edge_list_ptr_read_data_s_read = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln47_fu_168_p2) & (fifo_edge_list_ptr_full_n == 1'b1) & (icmp_ln109_fu_128_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - fifo_edge_list_ptr_write = 1'b1; - end else begin - fifo_edge_list_ptr_write = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_pp0_stage0 : begin - ap_NS_fsm = ap_ST_fsm_pp0_stage0; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign and_ln43_fu_138_p1 = edge_list_ptr_read_addr_full_n; - -assign and_ln43_fu_138_p2 = (icmp_ln43_fu_133_p2 & and_ln43_fu_138_p1); - -assign and_ln47_fu_168_p0 = fifo_edge_list_ptr_full_n; - -assign and_ln47_fu_168_p2 = (tmp_4_nbreadreq_fu_91_p3 & and_ln47_fu_168_p0); - -assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd0]; - -assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_01001 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_11001 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_subdone = ~(1'b1 == 1'b1); - -assign ap_block_state1_pp0_stage0_iter0 = ~(1'b1 == 1'b1); - -assign ap_block_state2_pp0_stage0_iter1 = ~(1'b1 == 1'b1); - -always @ (*) begin - ap_condition_190 = ((1'd1 == and_ln43_fu_138_p2) & (icmp_ln109_fu_128_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b1)); -end - -always @ (*) begin - ap_condition_193 = ((1'd1 == and_ln47_fu_168_p2) & (icmp_ln109_fu_128_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b1)); -end - -assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); - -assign ap_enable_reg_pp0_iter0 = ap_start_int; - -assign ap_loop_exit_ready = ap_condition_exit_pp0_iter1_stage0; - -assign edge_list_ptr_read_addr_din = {{1'd0}, {sext_ln44_fu_144_p1}}; - -assign fifo_edge_list_ptr_din = {{1'd0}, {trunc_ln78_fu_178_p1}}; - -assign i_req_2_fu_157_p0 = i_req_fu_58; - -assign i_req_2_fu_157_p2 = ($signed(i_req_2_fu_157_p0) + $signed(32'd1)); - -assign i_resp_2_fu_191_p2 = (i_resp_fu_54 + 32'd1); - -assign icmp_ln109_fu_128_p2 = (($signed(i_resp_fu_54) < $signed(num_ite_plus1)) ? 1'b1 : 1'b0); - -assign icmp_ln43_fu_133_p0 = i_req_fu_58; - -assign icmp_ln43_fu_133_p2 = (($signed(icmp_ln43_fu_133_p0) < $signed(num_ite_plus1)) ? 1'b1 : 1'b0); - -assign sext_ln44_fu_144_p0 = i_req_fu_58; - -assign sext_ln44_fu_144_p1 = sext_ln44_fu_144_p0; - -assign tmp_4_nbreadreq_fu_91_p3 = edge_list_ptr_read_data_s_empty_n; - -assign trunc_ln78_fu_178_p1 = edge_list_ptr_read_data_s_dout[31:0]; - -endmodule //read_edge_list_ptr_read_edge_list_ptr_Pipeline_rd_ptr diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/relay_station.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/relay_station.v deleted file mode 100644 index 632152cc..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/relay_station.v +++ /dev/null @@ -1,525 +0,0 @@ -`default_nettype none - -// first-word fall-through (FWFT) FIFO that is friendly for floorplanning -module relay_station #( - parameter DATA_WIDTH = 32, - parameter ADDR_WIDTH = 5, - parameter DEPTH = 2, - parameter LEVEL = 2, - parameter CONNECT = 1 // add api to disconnect the relay station -) ( - input wire clk, - input wire reset, - - // write - output wire if_full_n, - input wire if_write_ce, - input wire if_write, - input wire [DATA_WIDTH-1:0] if_din, - - // read - output wire if_empty_n, - input wire if_read_ce, - input wire if_read, - output wire [DATA_WIDTH-1:0] if_dout -); - - wire full_n [LEVEL:0]; - wire empty_n [LEVEL:0]; - wire [DATA_WIDTH-1:0] data [LEVEL:0]; - - // both full_n and write are registered, thus one level of relay_station cause - // two additional latency for the almost full fifo - parameter GRACE_PERIOD = LEVEL * 2; - parameter REAL_DEPTH = GRACE_PERIOD + DEPTH + 4; - parameter REAL_ADDR_WIDTH = $clog2(REAL_DEPTH); - - genvar i; - generate - if (CONNECT > 0) begin - if (LEVEL > 0) begin - - for (i = 0; i < LEVEL; i = i + 1) begin : inst - if (i < LEVEL - 1) begin - fifo_reg #( - .DATA_WIDTH(DATA_WIDTH) - ) unit ( - .clk(clk), - .reset(reset), - - // connect to fifo[i+1] - .if_empty_n(empty_n[i+1]), - .if_read_ce(if_read_ce), - .if_read (full_n[i+1]), - .if_dout (data[i+1]), - - // connect to fifo[i-1] - .if_full_n (full_n[i]), - .if_write_ce(if_write_ce), - .if_write (empty_n[i]), - .if_din (data[i]) - ); - - end else begin - (* keep = "true" *) fifo_almost_full #( - .DATA_WIDTH(DATA_WIDTH), - .ADDR_WIDTH(REAL_ADDR_WIDTH), - .DEPTH(REAL_DEPTH), - .GRACE_PERIOD(GRACE_PERIOD) - ) unit ( - .clk(clk), - .reset(reset), - - // connect to fifo[i+1] - .if_empty_n(empty_n[i+1]), - .if_read_ce(if_read_ce), - .if_read (full_n[i+1]), - .if_dout (data[i+1]), - - // connect to fifo[i-1] - .if_full_n (full_n[i]), - .if_write_ce(if_write_ce), - .if_write (empty_n[i]), - .if_din (data[i]) - ); - end - end - - // write - assign if_full_n = full_n[0]; // output - assign empty_n[0] = if_write & full_n[0]; // input - assign data[0] = if_din; // input - - // read - assign if_empty_n = empty_n[LEVEL]; // output - assign full_n[LEVEL] = if_read; // input - assign if_dout = data[LEVEL]; // output - - end - - // LEVEL == 0 - else begin - assign if_full_n = if_read; // output - assign if_empty_n = if_write; // output - assign if_dout = if_din; // output - end - end - - // disconnect the relay station - else begin - assign if_full_n = 0; // output - assign if_empty_n = 0; // output - // leave the dout port dangling to facilitate pruning - // assign if_dout = 0; // output - end - endgenerate - -endmodule // relay_station - -///////////////////////////////////////////////////////////// - -module fifo_reg #( - parameter DATA_WIDTH = 32 -) ( - input wire clk, - input wire reset, - - // write - (* keep = "true" *) - output reg if_full_n, - input wire if_write_ce, - input wire if_write, - input wire [DATA_WIDTH-1:0] if_din, - - // read - (* keep = "true" *) - output reg if_empty_n, - input wire if_read_ce, - input wire if_read, - (* keep = "true" *) - output reg [DATA_WIDTH-1:0] if_dout -); - - always @ (posedge clk) begin - if_dout <= if_din; - if_empty_n <= if_write; - if_full_n <= if_read; - end - -endmodule - -///////////////////////////////////////////////////////////////// - -// first-word fall-through (FWFT) FIFO -module fifo_almost_full #( - parameter DATA_WIDTH = 32, - parameter ADDR_WIDTH = 5, - parameter DEPTH = 32, - parameter GRACE_PERIOD = 2 -) ( - input wire clk, - input wire reset, - - // write - output wire if_full_n, - input wire if_write_ce, - input wire if_write, - input wire [DATA_WIDTH-1:0] if_din, - - // read - output wire if_empty_n, - input wire if_read_ce, - input wire if_read, - output wire [DATA_WIDTH-1:0] if_dout -); - -generate - if (DATA_WIDTH >= 36 && DEPTH >= 4096) begin : uram - fifo_bram_almost_full #( - .MEM_STYLE ("ultra"), - .DATA_WIDTH (DATA_WIDTH), - .ADDR_WIDTH (ADDR_WIDTH), - .DEPTH (DEPTH), - .GRACE_PERIOD(GRACE_PERIOD) - ) unit ( - .clk (clk), - .reset(reset), - - .if_full_n (if_full_n), - .if_write_ce(if_write_ce), - .if_write (if_write), - .if_din (if_din), - - .if_empty_n(if_empty_n), - .if_read_ce(if_read_ce), - .if_read (if_read), - .if_dout (if_dout) - ); - end else if (DEPTH >= 128) begin : bram - fifo_bram_almost_full #( - .MEM_STYLE ("block"), - .DATA_WIDTH(DATA_WIDTH), - .ADDR_WIDTH(ADDR_WIDTH), - .DEPTH (DEPTH), - .GRACE_PERIOD(GRACE_PERIOD) /*********/ - ) unit ( - .clk (clk), - .reset(reset), - - .if_full_n (if_full_n), - .if_write_ce(if_write_ce), - .if_write (if_write), - .if_din (if_din), - - .if_empty_n(if_empty_n), - .if_read_ce(if_read_ce), - .if_read (if_read), - .if_dout (if_dout) - ); - end else begin : srl - fifo_srl_almost_full #( - .DATA_WIDTH(DATA_WIDTH), - .ADDR_WIDTH(ADDR_WIDTH), - .DEPTH (DEPTH), - .GRACE_PERIOD(GRACE_PERIOD) /*********/ - ) unit ( - .clk (clk), - .reset(reset), - - .if_full_n (if_full_n), - .if_write_ce(if_write_ce), - .if_write (if_write), - .if_din (if_din), - - .if_empty_n(if_empty_n), - .if_read_ce(if_read_ce), - .if_read (if_read), - .if_dout (if_dout) - ); - end -endgenerate - -endmodule // fifo - -///////////////////////////////////////////////////////////////// - -module fifo_srl_almost_full ( - input wire clk, - input wire reset, - - // write - output wire if_full_n, - input wire if_write_ce, - input wire if_write, - input wire [DATA_WIDTH-1:0] if_din, - - // read - output wire if_empty_n, - input wire if_read_ce, - input wire if_read, - output wire [DATA_WIDTH-1:0] if_dout -); - -parameter MEM_STYLE = "shiftreg"; -parameter DATA_WIDTH = 32'd32; -parameter ADDR_WIDTH = 32'd4; -parameter DEPTH = 5'd16; - -/*******************************************/ -parameter GRACE_PERIOD = 2; -/*******************************************/ - -parameter REAL_DEPTH = DEPTH < 4 ? 4 : DEPTH; -parameter REAL_ADDR_WIDTH = $clog2(REAL_DEPTH)+1; - -wire[REAL_ADDR_WIDTH - 1:0] shiftReg_addr ; -wire[DATA_WIDTH - 1:0] shiftReg_data, shiftReg_q; -wire shiftReg_ce; -reg[REAL_ADDR_WIDTH:0] mOutPtr = ~{(REAL_ADDR_WIDTH+1){1'b0}}; -reg internal_empty_n = 0, internal_full_n = 1; - -assign if_empty_n = internal_empty_n; - -/*******************************************/ -// assign if_full_n = internal_full_n; -reg almost_full_q; -wire almost_full = mOutPtr >= REAL_DEPTH - 1 - GRACE_PERIOD - 1 && mOutPtr != ~{REAL_ADDR_WIDTH+1{1'b0}}; -always @ (posedge clk) almost_full_q <= almost_full; -assign if_full_n = ~almost_full_q; -/*******************************************/ - -assign shiftReg_data = if_din; -assign if_dout = shiftReg_q; - -always @ (posedge clk) begin - if (reset == 1'b1) - begin - mOutPtr <= ~{REAL_ADDR_WIDTH+1{1'b0}}; - internal_empty_n <= 1'b0; - internal_full_n <= 1'b1; - end - else begin - if (((if_read & if_read_ce) == 1 & internal_empty_n == 1) && - ((if_write & if_write_ce) == 0 | internal_full_n == 0)) - begin - mOutPtr <= mOutPtr - 5'd1; - if (mOutPtr == 0) - internal_empty_n <= 1'b0; - internal_full_n <= 1'b1; - end - else if (((if_read & if_read_ce) == 0 | internal_empty_n == 0) && - ((if_write & if_write_ce) == 1 & internal_full_n == 1)) - begin - mOutPtr <= mOutPtr + 5'd1; - internal_empty_n <= 1'b1; - if (mOutPtr == REAL_DEPTH - 5'd2) - internal_full_n <= 1'b0; - end - end -end - -assign shiftReg_addr = mOutPtr[REAL_ADDR_WIDTH] == 1'b0 ? mOutPtr[REAL_ADDR_WIDTH-1:0]:{REAL_ADDR_WIDTH{1'b0}}; -assign shiftReg_ce = (if_write & if_write_ce) & internal_full_n; - -fifo_srl_almost_full_internal -#( - .DATA_WIDTH(DATA_WIDTH), - .ADDR_WIDTH(REAL_ADDR_WIDTH), - .DEPTH(REAL_DEPTH)) -U_fifo_w32_d16_A_ram ( - .clk(clk), - .data(shiftReg_data), - .ce(shiftReg_ce), - .a(shiftReg_addr), - .q(shiftReg_q)); - -endmodule - -module fifo_srl_almost_full_internal ( - input wire clk, - input wire [DATA_WIDTH-1:0] data, - input wire ce, - input wire [ADDR_WIDTH-1:0] a, - output wire [DATA_WIDTH-1:0] q -); - -parameter DATA_WIDTH = 32'd32; -parameter ADDR_WIDTH = 32'd4; -parameter DEPTH = 5'd16; - -(* shreg_extract = "yes" *) reg[DATA_WIDTH-1:0] SRL_SIG [0:DEPTH-1]; -integer i; - -always @ (posedge clk) - begin - if (ce) - begin - for (i=0;i= DEPTH - 1 - GRACE_PERIOD); -//assign if_full_n = full_n; -assign if_full_n = ~almost_full; -/**************************************/ - -assign if_empty_n = dout_valid; -assign if_dout = dout_buf; -assign push = full_n & if_write_ce & if_write; -assign pop = empty_n & if_read_ce & (~dout_valid | if_read); -assign wnext = !push ? waddr : - (waddr == DepthM1) ? {ADDR_WIDTH{1'b0}} : waddr + 1'd1; -assign rnext = !pop ? raddr : - (raddr == DepthM1) ? {ADDR_WIDTH{1'b0}} : raddr + 1'd1; - - - -// waddr -always @(posedge clk) begin - if (reset) - waddr <= {ADDR_WIDTH{1'b0}}; - else - waddr <= wnext; -end - -// raddr -always @(posedge clk) begin - if (reset) - raddr <= {ADDR_WIDTH{1'b0}}; - else - raddr <= rnext; -end - -// used -always @(posedge clk) begin - if (reset) - used <= {ADDR_WIDTH{1'b0}}; - else if (push && !pop) - used <= used + 1'b1; - else if (!push && pop) - used <= used - 1'b1; -end - -// full_n -always @(posedge clk) begin - if (reset) - full_n <= 1'b1; - else if (push && !pop) - full_n <= (used != DepthM1); - else if (!push && pop) - full_n <= 1'b1; -end - -// empty_n -always @(posedge clk) begin - if (reset) - empty_n <= 1'b0; - else if (push && !pop) - empty_n <= 1'b1; - else if (!push && pop) - empty_n <= (used != {{(ADDR_WIDTH-1){1'b0}},1'b1}); -end - -// mem -always @(posedge clk) begin - if (push) - mem[waddr] <= if_din; -end - -// q_buf -always @(posedge clk) begin - q_buf <= mem[rnext]; -end - -// q_tmp -always @(posedge clk) begin - if (reset) - q_tmp <= {DATA_WIDTH{1'b0}}; - else if (push) - q_tmp <= if_din; -end - -// show_ahead -always @(posedge clk) begin - if (reset) - show_ahead <= 1'b0; - else if (push && used == {{(ADDR_WIDTH-1){1'b0}},pop}) - show_ahead <= 1'b1; - else - show_ahead <= 1'b0; -end - -// dout_buf -always @(posedge clk) begin - if (reset) - dout_buf <= {DATA_WIDTH{1'b0}}; - else if (pop) - dout_buf <= show_ahead? q_tmp : q_buf; -end - -// dout_valid -always @(posedge clk) begin - if (reset) - dout_valid <= 1'b0; - else if (pop) - dout_valid <= 1'b1; - else if (if_read_ce & if_read) - dout_valid <= 1'b0; -end - -endmodule // fifo_bram - -`default_nettype wire diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/write_C.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/write_C.v deleted file mode 100644 index 51a8c8db..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/write_C.v +++ /dev/null @@ -1,472 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -(* CORE_GENERATION_INFO="write_C_write_C,hls_ip_2022_2,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xcu280-fsvh2892-2L-e,HLS_INPUT_CLOCK=3.330000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=3.414450,HLS_SYN_LAT=2000038,HLS_SYN_TPT=none,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=197,HLS_SYN_LUT=448,HLS_VERSION=2022_2}" *) - -module write_C ( - ap_clk, - ap_rst_n, - ap_start, - ap_done, - ap_idle, - ap_ready, - wrC_inst_s_dout, - wrC_inst_s_empty_n, - wrC_inst_s_read, - wrC_inst_peek_dout, - wrC_inst_peek_empty_n, - wrC_inst_peek_read, - fifo_C_s_dout, - fifo_C_s_empty_n, - fifo_C_s_read, - fifo_C_peek_dout, - fifo_C_peek_empty_n, - fifo_C_peek_read, - C_out_read_addr_din, - C_out_read_addr_full_n, - C_out_read_addr_write, - C_out_read_data_s_dout, - C_out_read_data_s_empty_n, - C_out_read_data_s_read, - C_out_read_data_peek_dout, - C_out_read_data_peek_empty_n, - C_out_read_data_peek_read, - C_out_write_addr_din, - C_out_write_addr_full_n, - C_out_write_addr_write, - C_out_write_data_din, - C_out_write_data_full_n, - C_out_write_data_write, - C_out_write_resp_s_dout, - C_out_write_resp_s_empty_n, - C_out_write_resp_s_read, - C_out_write_resp_peek_dout, - C_out_write_resp_peek_empty_n, - C_out_write_resp_peek_read -); - -parameter ap_ST_fsm_state1 = 8'd1; -parameter ap_ST_fsm_state2 = 8'd2; -parameter ap_ST_fsm_state3 = 8'd4; -parameter ap_ST_fsm_state4 = 8'd8; -parameter ap_ST_fsm_state5 = 8'd16; -parameter ap_ST_fsm_state6 = 8'd32; -parameter ap_ST_fsm_state7 = 8'd64; -parameter ap_ST_fsm_state8 = 8'd128; - -input ap_clk; -input ap_rst_n; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [32:0] wrC_inst_s_dout; -input wrC_inst_s_empty_n; -output wrC_inst_s_read; -input [32:0] wrC_inst_peek_dout; -input wrC_inst_peek_empty_n; -output wrC_inst_peek_read; -input [512:0] fifo_C_s_dout; -input fifo_C_s_empty_n; -output fifo_C_s_read; -input [512:0] fifo_C_peek_dout; -input fifo_C_peek_empty_n; -output fifo_C_peek_read; -output [64:0] C_out_read_addr_din; -input C_out_read_addr_full_n; -output C_out_read_addr_write; -input [512:0] C_out_read_data_s_dout; -input C_out_read_data_s_empty_n; -output C_out_read_data_s_read; -input [512:0] C_out_read_data_peek_dout; -input C_out_read_data_peek_empty_n; -output C_out_read_data_peek_read; -output [64:0] C_out_write_addr_din; -input C_out_write_addr_full_n; -output C_out_write_addr_write; -output [512:0] C_out_write_data_din; -input C_out_write_data_full_n; -output C_out_write_data_write; -input [8:0] C_out_write_resp_s_dout; -input C_out_write_resp_s_empty_n; -output C_out_write_resp_s_read; -input [8:0] C_out_write_resp_peek_dout; -input C_out_write_resp_peek_empty_n; -output C_out_write_resp_peek_read; - -reg ap_done; -reg ap_idle; -reg ap_ready; -reg wrC_inst_s_read; -reg fifo_C_s_read; -reg C_out_write_addr_write; -reg C_out_write_data_write; -reg C_out_write_resp_s_read; - - reg ap_rst_n_inv; -(* fsm_encoding = "none" *) reg [7:0] ap_CS_fsm; -wire ap_CS_fsm_state1; -reg wrC_inst_s_blk_n; -wire ap_CS_fsm_state2; -reg signed [27:0] trunc_ln_reg_318; -reg [15:0] N16_reg_323; -reg [13:0] lshr_ln_reg_329; -wire ap_CS_fsm_state3; -wire [15:0] rp_time_fu_275_p3; -reg [15:0] rp_time_reg_344; -wire ap_CS_fsm_state6; -wire signed [31:0] grp_fu_305_p2; -reg [31:0] num_ite_C_reg_349; -wire grp_write_C_Pipeline_wr_C_fu_192_ap_start; -wire grp_write_C_Pipeline_wr_C_fu_192_ap_done; -wire grp_write_C_Pipeline_wr_C_fu_192_ap_idle; -wire grp_write_C_Pipeline_wr_C_fu_192_ap_ready; -wire grp_write_C_Pipeline_wr_C_fu_192_C_out_write_resp_s_read; -wire grp_write_C_Pipeline_wr_C_fu_192_fifo_C_s_read; -wire [64:0] grp_write_C_Pipeline_wr_C_fu_192_C_out_write_addr_din; -wire grp_write_C_Pipeline_wr_C_fu_192_C_out_write_addr_write; -wire [512:0] grp_write_C_Pipeline_wr_C_fu_192_C_out_write_data_din; -wire grp_write_C_Pipeline_wr_C_fu_192_C_out_write_data_write; -reg grp_write_C_Pipeline_wr_C_fu_192_ap_start_reg; -wire ap_CS_fsm_state7; -wire [0:0] icmp_ln115_fu_289_p2; -wire ap_CS_fsm_state8; -reg [14:0] rp_fu_94; -wire [14:0] rp_2_fu_294_p2; -reg ap_block_state1; -wire [31:0] M_fu_205_p1; -wire [31:0] add_ln113_fu_209_p2; -wire [15:0] N_fu_230_p1; -wire [16:0] zext_ln112_fu_244_p1; -wire [16:0] add_ln113_1_fu_248_p2; -wire [0:0] icmp_ln111_fu_270_p2; -wire [15:0] zext_ln115_fu_285_p1; -wire [13:0] grp_fu_305_p0; -reg [7:0] ap_NS_fsm; -reg ap_ST_fsm_state1_blk; -reg ap_ST_fsm_state2_blk; -wire ap_ST_fsm_state3_blk; -wire ap_ST_fsm_state4_blk; -wire ap_ST_fsm_state5_blk; -wire ap_ST_fsm_state6_blk; -wire ap_ST_fsm_state7_blk; -reg ap_ST_fsm_state8_blk; -wire [31:0] grp_fu_305_p00; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 8'd1; -#0 grp_write_C_Pipeline_wr_C_fu_192_ap_start_reg = 1'b0; -end - -write_C_write_C_Pipeline_wr_C grp_write_C_Pipeline_wr_C_fu_192( - .ap_clk(ap_clk), - .ap_rst(ap_rst_n_inv), - .ap_start(grp_write_C_Pipeline_wr_C_fu_192_ap_start), - .ap_done(grp_write_C_Pipeline_wr_C_fu_192_ap_done), - .ap_idle(grp_write_C_Pipeline_wr_C_fu_192_ap_idle), - .ap_ready(grp_write_C_Pipeline_wr_C_fu_192_ap_ready), - .num_ite_C(num_ite_C_reg_349), - .C_out_write_resp_s_dout(C_out_write_resp_s_dout), - .C_out_write_resp_s_empty_n(C_out_write_resp_s_empty_n), - .C_out_write_resp_s_read(grp_write_C_Pipeline_wr_C_fu_192_C_out_write_resp_s_read), - .fifo_C_s_dout(fifo_C_s_dout), - .fifo_C_s_empty_n(fifo_C_s_empty_n), - .fifo_C_s_read(grp_write_C_Pipeline_wr_C_fu_192_fifo_C_s_read), - .C_out_write_addr_din(grp_write_C_Pipeline_wr_C_fu_192_C_out_write_addr_din), - .C_out_write_addr_full_n(C_out_write_addr_full_n), - .C_out_write_addr_write(grp_write_C_Pipeline_wr_C_fu_192_C_out_write_addr_write), - .C_out_write_data_din(grp_write_C_Pipeline_wr_C_fu_192_C_out_write_data_din), - .C_out_write_data_full_n(C_out_write_data_full_n), - .C_out_write_data_write(grp_write_C_Pipeline_wr_C_fu_192_C_out_write_data_write) -); - -write_C_mul_mul_14ns_28s_32_4_1 #( - .ID( 1 ), - .NUM_STAGE( 4 ), - .din0_WIDTH( 14 ), - .din1_WIDTH( 28 ), - .dout_WIDTH( 32 )) -mul_mul_14ns_28s_32_4_1_U6( - .clk(ap_clk), - .reset(ap_rst_n_inv), - .din0(grp_fu_305_p0), - .din1(trunc_ln_reg_318), - .ce(1'b1), - .dout(grp_fu_305_p2) -); - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_state1; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst_n_inv == 1'b1) begin - grp_write_C_Pipeline_wr_C_fu_192_ap_start_reg <= 1'b0; - end else begin - if (((1'b1 == ap_CS_fsm_state7) & (icmp_ln115_fu_289_p2 == 1'd1))) begin - grp_write_C_Pipeline_wr_C_fu_192_ap_start_reg <= 1'b1; - end else if ((grp_write_C_Pipeline_wr_C_fu_192_ap_ready == 1'b1)) begin - grp_write_C_Pipeline_wr_C_fu_192_ap_start_reg <= 1'b0; - end - end -end - -always @ (posedge ap_clk) begin - if ((~((wrC_inst_s_empty_n == 1'b0) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1))) begin - rp_fu_94 <= 15'd0; - end else if (((1'b1 == ap_CS_fsm_state7) & (icmp_ln115_fu_289_p2 == 1'd1))) begin - rp_fu_94 <= rp_2_fu_294_p2; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state2)) begin - N16_reg_323 <= {{wrC_inst_s_dout[31:16]}}; - lshr_ln_reg_329 <= {{add_ln113_1_fu_248_p2[16:3]}}; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state6)) begin - num_ite_C_reg_349 <= grp_fu_305_p2; - rp_time_reg_344 <= rp_time_fu_275_p3; - end -end - -always @ (posedge ap_clk) begin - if ((1'b1 == ap_CS_fsm_state1)) begin - trunc_ln_reg_318 <= {{add_ln113_fu_209_p2[31:4]}}; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state8)) begin - C_out_write_addr_write = grp_write_C_Pipeline_wr_C_fu_192_C_out_write_addr_write; - end else begin - C_out_write_addr_write = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state8)) begin - C_out_write_data_write = grp_write_C_Pipeline_wr_C_fu_192_C_out_write_data_write; - end else begin - C_out_write_data_write = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state8)) begin - C_out_write_resp_s_read = grp_write_C_Pipeline_wr_C_fu_192_C_out_write_resp_s_read; - end else begin - C_out_write_resp_s_read = 1'b0; - end -end - -always @ (*) begin - if (((wrC_inst_s_empty_n == 1'b0) | (ap_start == 1'b0))) begin - ap_ST_fsm_state1_blk = 1'b1; - end else begin - ap_ST_fsm_state1_blk = 1'b0; - end -end - -always @ (*) begin - if ((wrC_inst_s_empty_n == 1'b0)) begin - ap_ST_fsm_state2_blk = 1'b1; - end else begin - ap_ST_fsm_state2_blk = 1'b0; - end -end - -assign ap_ST_fsm_state3_blk = 1'b0; - -assign ap_ST_fsm_state4_blk = 1'b0; - -assign ap_ST_fsm_state5_blk = 1'b0; - -assign ap_ST_fsm_state6_blk = 1'b0; - -assign ap_ST_fsm_state7_blk = 1'b0; - -always @ (*) begin - if ((grp_write_C_Pipeline_wr_C_fu_192_ap_done == 1'b0)) begin - ap_ST_fsm_state8_blk = 1'b1; - end else begin - ap_ST_fsm_state8_blk = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state7) & (icmp_ln115_fu_289_p2 == 1'd0))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state7) & (icmp_ln115_fu_289_p2 == 1'd0))) begin - ap_ready = 1'b1; - end else begin - ap_ready = 1'b0; - end -end - -always @ (*) begin - if ((1'b1 == ap_CS_fsm_state8)) begin - fifo_C_s_read = grp_write_C_Pipeline_wr_C_fu_192_fifo_C_s_read; - end else begin - fifo_C_s_read = 1'b0; - end -end - -always @ (*) begin - if (((1'b1 == ap_CS_fsm_state2) | ((1'b1 == ap_CS_fsm_state1) & (ap_start == 1'b1)))) begin - wrC_inst_s_blk_n = wrC_inst_s_empty_n; - end else begin - wrC_inst_s_blk_n = 1'b1; - end -end - -always @ (*) begin - if ((((wrC_inst_s_empty_n == 1'b1) & (1'b1 == ap_CS_fsm_state2)) | (~((wrC_inst_s_empty_n == 1'b0) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1)))) begin - wrC_inst_s_read = 1'b1; - end else begin - wrC_inst_s_read = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_state1 : begin - if ((~((wrC_inst_s_empty_n == 1'b0) | (ap_start == 1'b0)) & (1'b1 == ap_CS_fsm_state1))) begin - ap_NS_fsm = ap_ST_fsm_state2; - end else begin - ap_NS_fsm = ap_ST_fsm_state1; - end - end - ap_ST_fsm_state2 : begin - if (((wrC_inst_s_empty_n == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin - ap_NS_fsm = ap_ST_fsm_state3; - end else begin - ap_NS_fsm = ap_ST_fsm_state2; - end - end - ap_ST_fsm_state3 : begin - ap_NS_fsm = ap_ST_fsm_state4; - end - ap_ST_fsm_state4 : begin - ap_NS_fsm = ap_ST_fsm_state5; - end - ap_ST_fsm_state5 : begin - ap_NS_fsm = ap_ST_fsm_state6; - end - ap_ST_fsm_state6 : begin - ap_NS_fsm = ap_ST_fsm_state7; - end - ap_ST_fsm_state7 : begin - if (((1'b1 == ap_CS_fsm_state7) & (icmp_ln115_fu_289_p2 == 1'd0))) begin - ap_NS_fsm = ap_ST_fsm_state1; - end else begin - ap_NS_fsm = ap_ST_fsm_state8; - end - end - ap_ST_fsm_state8 : begin - if (((1'b1 == ap_CS_fsm_state8) & (grp_write_C_Pipeline_wr_C_fu_192_ap_done == 1'b1))) begin - ap_NS_fsm = ap_ST_fsm_state7; - end else begin - ap_NS_fsm = ap_ST_fsm_state8; - end - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign C_out_read_addr_din = 65'd0; - -assign C_out_read_addr_write = 1'b0; - -assign C_out_read_data_peek_read = 1'b0; - -assign C_out_read_data_s_read = 1'b0; - -assign C_out_write_addr_din = grp_write_C_Pipeline_wr_C_fu_192_C_out_write_addr_din; - -assign C_out_write_data_din = grp_write_C_Pipeline_wr_C_fu_192_C_out_write_data_din; - -assign C_out_write_resp_peek_read = 1'b0; - -assign M_fu_205_p1 = wrC_inst_s_dout[31:0]; - -assign N_fu_230_p1 = wrC_inst_s_dout[15:0]; - -assign add_ln113_1_fu_248_p2 = (zext_ln112_fu_244_p1 + 17'd7); - -assign add_ln113_fu_209_p2 = (M_fu_205_p1 + 32'd15); - -assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; - -assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; - -assign ap_CS_fsm_state3 = ap_CS_fsm[32'd2]; - -assign ap_CS_fsm_state6 = ap_CS_fsm[32'd5]; - -assign ap_CS_fsm_state7 = ap_CS_fsm[32'd6]; - -assign ap_CS_fsm_state8 = ap_CS_fsm[32'd7]; - -always @ (*) begin - ap_block_state1 = ((wrC_inst_s_empty_n == 1'b0) | (ap_start == 1'b0)); -end - -always @ (*) begin - ap_rst_n_inv = ~ap_rst_n; -end - -assign fifo_C_peek_read = 1'b0; - -assign grp_fu_305_p0 = grp_fu_305_p00; - -assign grp_fu_305_p00 = lshr_ln_reg_329; - -assign grp_write_C_Pipeline_wr_C_fu_192_ap_start = grp_write_C_Pipeline_wr_C_fu_192_ap_start_reg; - -assign icmp_ln111_fu_270_p2 = ((N16_reg_323 == 16'd0) ? 1'b1 : 1'b0); - -assign icmp_ln115_fu_289_p2 = (($signed(zext_ln115_fu_285_p1) < $signed(rp_time_reg_344)) ? 1'b1 : 1'b0); - -assign rp_2_fu_294_p2 = (rp_fu_94 + 15'd1); - -assign rp_time_fu_275_p3 = ((icmp_ln111_fu_270_p2[0:0] == 1'b1) ? 16'd1 : N16_reg_323); - -assign wrC_inst_peek_read = 1'b0; - -assign zext_ln112_fu_244_p1 = N_fu_230_p1; - -assign zext_ln115_fu_285_p1 = rp_fu_94; - -endmodule //write_C diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/write_C_flow_control_loop_pipe_sequential_init.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/write_C_flow_control_loop_pipe_sequential_init.v deleted file mode 100644 index 85ef1b7c..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/write_C_flow_control_loop_pipe_sequential_init.v +++ /dev/null @@ -1,104 +0,0 @@ -// ============================================================== -// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Tool Version Limit: 2019.12 -// Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// ============================================================== - -`timescale 1 ns / 1 ps - -module write_C_flow_control_loop_pipe_sequential_init( - ap_clk, - ap_rst, - ap_start, - ap_ready, - ap_done, - ap_start_int, - ap_ready_int, - ap_done_int, - ap_continue_int, - ap_loop_init, - ap_loop_exit_ready, - ap_loop_exit_done -); - -input ap_clk; -input ap_rst; - -//Block level handshake with outside loop -input ap_start; -output ap_ready; -output ap_done; - -//Block level handshake with loop body -output ap_start_int; -input ap_ready_int; -input ap_done_int; -output ap_continue_int; - -//Init live in variables -output ap_loop_init; -wire ap_loop_init; -reg ap_loop_init_int; -reg ap_done; -reg ap_done_cache; - -//Exit signal from loop body -input ap_loop_exit_ready; -input ap_loop_exit_done; - -// power-on initialization -initial begin -#0 ap_loop_init_int = 1'b1; -#0 ap_done_cache = 1'b0; -end - -assign ap_start_int = ap_start; - -assign ap_continue_int = 1'b1; - -assign ap_ready = ap_loop_exit_ready; - -//ap_loop_init is valid for the first II -//of the first loop run so as to enable -//the init block ops which are pushed into -//the first state of the pipeline region -always @ (posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_loop_exit_done == 1'b1) begin - ap_loop_init_int <= 1'b1; - end else if(ap_ready_int == 1'b1) begin - ap_loop_init_int <= 1'b0; - end -end - -assign ap_loop_init = ap_loop_init_int & ap_start; - -// if no ap_continue port and current module is not top module, -// ap_done handshakes with ap_start. Internally, flow control sends out -// ap_conintue_int = 1'b1 so the ap_done_int is asserted high for 1 clock cycle. -// ap_done_cache is used to record ap_done_int, and de-assert if ap_start_int -// is asserted, so DUT can start the next run -always @(posedge ap_clk) -begin - if (ap_rst == 1'b1) begin - ap_done_cache <= 1'b0; - end else if (ap_done_int == 1'b1) begin - ap_done_cache <= 1'b1; - end else if (ap_start_int == 1'b1) begin - ap_done_cache <= 1'b0; - end -end - -// if no ap_continue port and current module is not top module, ap_done handshakes with ap_start -always @(*) -begin - if ((ap_done_int == 1'b1) || ((ap_done_cache == 1'b1) && (ap_start_int == 1'b0))) begin - ap_done = 1'b1; - end else begin - ap_done = 1'b0; - end -end - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/write_C_mul_mul_14ns_28s_32_4_1.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/write_C_mul_mul_14ns_28s_32_4_1.v deleted file mode 100644 index f19eee65..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/write_C_mul_mul_14ns_28s_32_4_1.v +++ /dev/null @@ -1,62 +0,0 @@ - -`timescale 1 ns / 1 ps - - module write_C_mul_mul_14ns_28s_32_4_1_DSP48_0(clk, rst, ce, a, b, p); -input clk; -input rst; -input ce; -input [14 - 1 : 0] a; -input signed [28 - 1 : 0] b; -output signed [32 - 1 : 0] p; - -reg signed [32 - 1 : 0] p_reg; - -reg [14 - 1 : 0] a_reg; -reg signed [28 - 1 : 0] b_reg; - -reg signed [32 - 1 : 0] p_reg_tmp; - -always @ (posedge clk) begin - if (ce) begin - a_reg <= a; - b_reg <= b; - p_reg_tmp <= $signed({1'b0, a_reg}) * b_reg; - p_reg <= p_reg_tmp; - end -end - -assign p = p_reg; - -endmodule -`timescale 1 ns / 1 ps -module write_C_mul_mul_14ns_28s_32_4_1( - clk, - reset, - ce, - din0, - din1, - dout); - -parameter ID = 32'd1; -parameter NUM_STAGE = 32'd1; -parameter din0_WIDTH = 32'd1; -parameter din1_WIDTH = 32'd1; -parameter dout_WIDTH = 32'd1; -input clk; -input reset; -input ce; -input[din0_WIDTH - 1:0] din0; -input[din1_WIDTH - 1:0] din1; -output[dout_WIDTH - 1:0] dout; - - - -write_C_mul_mul_14ns_28s_32_4_1_DSP48_0 write_C_mul_mul_14ns_28s_32_4_1_DSP48_0_U( - .clk( clk ), - .rst( reset ), - .ce( ce ), - .a( din0 ), - .b( din1 ), - .p( dout )); - -endmodule diff --git a/benchmarks/tapa_flow/sextans/design/generated/hdl/write_C_write_C_Pipeline_wr_C.v b/benchmarks/tapa_flow/sextans/design/generated/hdl/write_C_write_C_Pipeline_wr_C.v deleted file mode 100644 index 37a221c4..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/hdl/write_C_write_C_Pipeline_wr_C.v +++ /dev/null @@ -1,334 +0,0 @@ -// ============================================================== -// RTL generated by Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.2 (64-bit) -// Version: 2022.2 -// Copyright (C) Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -// -// =========================================================== - -`timescale 1 ns / 1 ps - -module write_C_write_C_Pipeline_wr_C ( - ap_clk, - ap_rst, - ap_start, - ap_done, - ap_idle, - ap_ready, - num_ite_C, - C_out_write_resp_s_dout, - C_out_write_resp_s_empty_n, - C_out_write_resp_s_read, - fifo_C_s_dout, - fifo_C_s_empty_n, - fifo_C_s_read, - C_out_write_addr_din, - C_out_write_addr_full_n, - C_out_write_addr_write, - C_out_write_data_din, - C_out_write_data_full_n, - C_out_write_data_write -); - -parameter ap_ST_fsm_pp0_stage0 = 1'd1; - -input ap_clk; -input ap_rst; -input ap_start; -output ap_done; -output ap_idle; -output ap_ready; -input [31:0] num_ite_C; -input [8:0] C_out_write_resp_s_dout; -input C_out_write_resp_s_empty_n; -output C_out_write_resp_s_read; -input [512:0] fifo_C_s_dout; -input fifo_C_s_empty_n; -output fifo_C_s_read; -output [64:0] C_out_write_addr_din; -input C_out_write_addr_full_n; -output C_out_write_addr_write; -output [512:0] C_out_write_data_din; -input C_out_write_data_full_n; -output C_out_write_data_write; - -reg ap_idle; -reg C_out_write_resp_s_read; -reg fifo_C_s_read; -reg C_out_write_addr_write; -reg C_out_write_data_write; - -(* fsm_encoding = "none" *) reg [0:0] ap_CS_fsm; -wire ap_CS_fsm_pp0_stage0; -wire ap_enable_reg_pp0_iter0; -reg ap_enable_reg_pp0_iter1; -reg ap_idle_pp0; -wire ap_block_state1_pp0_stage0_iter0; -wire ap_block_state2_pp0_stage0_iter1; -wire ap_block_pp0_stage0_subdone; -wire [0:0] icmp_ln119_fu_140_p2; -reg ap_condition_exit_pp0_iter1_stage0; -wire ap_loop_exit_ready; -reg ap_ready_int; -wire ap_block_pp0_stage0_11001; -reg [31:0] i_resp_fu_60; -wire [31:0] i_resp_5_fu_241_p3; -wire ap_loop_init; -wire ap_block_pp0_stage0; -reg [31:0] i_req_fu_64; -wire [31:0] i_req_2_fu_198_p2; -wire [0:0] and_ln122_2_fu_162_p2; -wire [0:0] tmp_nbreadreq_fu_74_p3; -wire ap_block_pp0_stage0_01001; -wire [0:0] C_out_write_resp_s_read_nbread_fu_118_p2_0; -wire signed [31:0] icmp_ln122_fu_145_p0; -wire [0:0] and_ln122_1_fu_150_p0; -wire [0:0] and_ln122_1_fu_150_p1; -wire [0:0] and_ln122_1_fu_150_p2; -wire [0:0] and_ln122_fu_156_p2; -wire [0:0] icmp_ln122_fu_145_p2; -wire signed [31:0] sext_ln124_fu_168_p0; -wire signed [63:0] sext_ln124_fu_168_p1; -wire [511:0] trunc_ln146_fu_185_p1; -wire signed [31:0] i_req_2_fu_198_p0; -wire [7:0] elem_val_fu_217_p1; -wire [8:0] zext_ln132_fu_221_p1; -wire [8:0] add_ln132_fu_225_p2; -wire [31:0] zext_ln132_1_fu_231_p1; -wire [31:0] i_resp_4_fu_235_p2; -reg ap_done_reg; -wire ap_continue_int; -reg ap_done_int; -reg [0:0] ap_NS_fsm; -wire ap_enable_pp0; -wire ap_start_int; -reg ap_condition_227; -wire ap_ce_reg; - -// power-on initialization -initial begin -#0 ap_CS_fsm = 1'd1; -#0 ap_enable_reg_pp0_iter1 = 1'b0; -#0 ap_done_reg = 1'b0; -end - -write_C_flow_control_loop_pipe_sequential_init flow_control_loop_pipe_sequential_init_U( - .ap_clk(ap_clk), - .ap_rst(ap_rst), - .ap_start(ap_start), - .ap_ready(ap_ready), - .ap_done(ap_done), - .ap_start_int(ap_start_int), - .ap_loop_init(ap_loop_init), - .ap_ready_int(ap_ready_int), - .ap_loop_exit_ready(ap_condition_exit_pp0_iter1_stage0), - .ap_loop_exit_done(ap_done_int), - .ap_continue_int(ap_continue_int), - .ap_done_int(ap_done_int) -); - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_CS_fsm <= ap_ST_fsm_pp0_stage0; - end else begin - ap_CS_fsm <= ap_NS_fsm; - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_done_reg <= 1'b0; - end else begin - if ((ap_continue_int == 1'b1)) begin - ap_done_reg <= 1'b0; - end else if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_done_reg <= 1'b1; - end - end -end - -always @ (posedge ap_clk) begin - if (ap_rst == 1'b1) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else begin - if ((1'b1 == ap_condition_exit_pp0_iter1_stage0)) begin - ap_enable_reg_pp0_iter1 <= 1'b0; - end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_enable_reg_pp0_iter1 <= ap_start_int; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if ((ap_loop_init == 1'b1)) begin - i_req_fu_64 <= 32'd0; - end else if ((1'b1 == ap_condition_227)) begin - i_req_fu_64 <= i_req_2_fu_198_p2; - end - end -end - -always @ (posedge ap_clk) begin - if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - if ((ap_loop_init == 1'b1)) begin - i_resp_fu_60 <= 32'd0; - end else if (((icmp_ln119_fu_140_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b1))) begin - i_resp_fu_60 <= i_resp_5_fu_241_p3; - end - end -end - -always @ (*) begin - if (((1'd1 == and_ln122_2_fu_162_p2) & (icmp_ln119_fu_140_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == C_out_write_addr_full_n) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - C_out_write_addr_write = 1'b1; - end else begin - C_out_write_addr_write = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln122_2_fu_162_p2) & (icmp_ln119_fu_140_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == C_out_write_data_full_n) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - C_out_write_data_write = 1'b1; - end else begin - C_out_write_data_write = 1'b0; - end -end - -always @ (*) begin - if (((icmp_ln119_fu_140_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == C_out_write_resp_s_empty_n) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - C_out_write_resp_s_read = 1'b1; - end else begin - C_out_write_resp_s_read = 1'b0; - end -end - -always @ (*) begin - if (((icmp_ln119_fu_140_p2 == 1'd0) & (1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_condition_exit_pp0_iter1_stage0 = 1'b1; - end else begin - ap_condition_exit_pp0_iter1_stage0 = 1'b0; - end -end - -always @ (*) begin - if (((ap_loop_exit_ready == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_done_int = 1'b1; - end else begin - ap_done_int = ap_done_reg; - end -end - -always @ (*) begin - if (((ap_idle_pp0 == 1'b1) & (ap_start_int == 1'b0) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_idle = 1'b1; - end else begin - ap_idle = 1'b0; - end -end - -always @ (*) begin - if (((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0))) begin - ap_idle_pp0 = 1'b1; - end else begin - ap_idle_pp0 = 1'b0; - end -end - -always @ (*) begin - if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - ap_ready_int = 1'b1; - end else begin - ap_ready_int = 1'b0; - end -end - -always @ (*) begin - if (((1'd1 == and_ln122_2_fu_162_p2) & (fifo_C_s_empty_n == 1'b1) & (icmp_ln119_fu_140_p2 == 1'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin - fifo_C_s_read = 1'b1; - end else begin - fifo_C_s_read = 1'b0; - end -end - -always @ (*) begin - case (ap_CS_fsm) - ap_ST_fsm_pp0_stage0 : begin - ap_NS_fsm = ap_ST_fsm_pp0_stage0; - end - default : begin - ap_NS_fsm = 'bx; - end - endcase -end - -assign C_out_write_addr_din = {{1'd0}, {sext_ln124_fu_168_p1}}; - -assign C_out_write_data_din = {{1'd0}, {trunc_ln146_fu_185_p1}}; - -assign C_out_write_resp_s_read_nbread_fu_118_p2_0 = C_out_write_resp_s_empty_n; - -assign add_ln132_fu_225_p2 = (zext_ln132_fu_221_p1 + 9'd1); - -assign and_ln122_1_fu_150_p0 = C_out_write_addr_full_n; - -assign and_ln122_1_fu_150_p1 = C_out_write_data_full_n; - -assign and_ln122_1_fu_150_p2 = (and_ln122_1_fu_150_p1 & and_ln122_1_fu_150_p0); - -assign and_ln122_2_fu_162_p2 = (icmp_ln122_fu_145_p2 & and_ln122_fu_156_p2); - -assign and_ln122_fu_156_p2 = (tmp_nbreadreq_fu_74_p3 & and_ln122_1_fu_150_p2); - -assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd0]; - -assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_01001 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_11001 = ~(1'b1 == 1'b1); - -assign ap_block_pp0_stage0_subdone = ~(1'b1 == 1'b1); - -assign ap_block_state1_pp0_stage0_iter0 = ~(1'b1 == 1'b1); - -assign ap_block_state2_pp0_stage0_iter1 = ~(1'b1 == 1'b1); - -always @ (*) begin - ap_condition_227 = ((1'd1 == and_ln122_2_fu_162_p2) & (icmp_ln119_fu_140_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b1)); -end - -assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); - -assign ap_enable_reg_pp0_iter0 = ap_start_int; - -assign ap_loop_exit_ready = ap_condition_exit_pp0_iter1_stage0; - -assign elem_val_fu_217_p1 = C_out_write_resp_s_dout[7:0]; - -assign i_req_2_fu_198_p0 = i_req_fu_64; - -assign i_req_2_fu_198_p2 = ($signed(i_req_2_fu_198_p0) + $signed(32'd1)); - -assign i_resp_4_fu_235_p2 = (zext_ln132_1_fu_231_p1 + i_resp_fu_60); - -assign i_resp_5_fu_241_p3 = ((C_out_write_resp_s_read_nbread_fu_118_p2_0[0:0] == 1'b1) ? i_resp_4_fu_235_p2 : i_resp_fu_60); - -assign icmp_ln119_fu_140_p2 = (($signed(i_resp_fu_60) < $signed(num_ite_C)) ? 1'b1 : 1'b0); - -assign icmp_ln122_fu_145_p0 = i_req_fu_64; - -assign icmp_ln122_fu_145_p2 = (($signed(icmp_ln122_fu_145_p0) < $signed(num_ite_C)) ? 1'b1 : 1'b0); - -assign sext_ln124_fu_168_p0 = i_req_fu_64; - -assign sext_ln124_fu_168_p1 = sext_ln124_fu_168_p0; - -assign tmp_nbreadreq_fu_74_p3 = fifo_C_s_empty_n; - -assign trunc_ln146_fu_185_p1 = fifo_C_s_dout[511:0]; - -assign zext_ln132_1_fu_231_p1 = add_ln132_fu_225_p2; - -assign zext_ln132_fu_221_p1 = elem_val_fu_217_p1; - -endmodule //write_C_write_C_Pipeline_wr_C diff --git a/benchmarks/tapa_flow/sextans/design/generated/log/tapac.INFO b/benchmarks/tapa_flow/sextans/design/generated/log/tapac.INFO deleted file mode 120000 index a4197cac..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/log/tapac.INFO +++ /dev/null @@ -1 +0,0 @@ -tapac.inglewood.Licheng-Guo.log.INFO.20240329-144003.2834442 \ No newline at end of file diff --git a/benchmarks/tapa_flow/sextans/design/generated/log/tapac.inglewood.Licheng-Guo.log.INFO.20240329-144003.2834442 b/benchmarks/tapa_flow/sextans/design/generated/log/tapac.inglewood.Licheng-Guo.log.INFO.20240329-144003.2834442 deleted file mode 100644 index ef96fb78..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/log/tapac.inglewood.Licheng-Guo.log.INFO.20240329-144003.2834442 +++ /dev/null @@ -1,3487 +0,0 @@ -I0329 14:40:03.060 tapa.util:184] logging level set to INFO -I0329 14:40:03.061 tapa.tapac:407] Executing all steps of tapac -I0329 14:40:03.061 tapa.tapac:521] running translated command: `tapa --work-dir=generated analyze --input=src/sextans.cpp --top=Sextans synth --part-num=xcu280-fsvh2892-2L-e --clock-period=3.33 link pack --output=generated/Sextans.xo` -I0329 14:40:03.062 tapa.util:184] logging level set to INFO -I0329 14:40:03.062 tapa.util:184] logging level set to INFO -I0329 14:40:03.062 tapa.tapa:54] tapa version: 0.0.20240120.1 -I0329 14:40:03.062 tapa.tapa:54] tapa version: 0.0.20240120.1 -I0329 14:40:03.062 tapa.tapa:58] Python recursion limit set to 3000 -I0329 14:40:03.062 tapa.tapa:58] Python recursion limit set to 3000 -I0329 14:40:03.142 tapa.steps.analyze:151] added vendor include path `/opt/tools/xilinx/Vitis_HLS/2022.2/include` -I0329 14:40:03.142 tapa.steps.analyze:151] added vendor include path `/opt/tools/xilinx/Vitis_HLS/2022.2/include` -I0329 14:40:03.143 tapa.steps.analyze:248] Running tapacc command: /usr/bin/tapacc generated/flatten/flatten-f5eeaffa-sextans.cpp -top Sextans -- -std=c++17 -I /home/Licheng-Guo/dev/tapa/backend/python/tapa/../../../src -isystem /opt/tools/xilinx/Vitis_HLS/2022.2/include -stdlib=libc++ -isystem /usr/lib/llvm-17/include/c++/v1/ -isystem /usr/include/clang/17/include/ -isystem /usr/lib/clang/17/include/ -I0329 14:40:03.143 tapa.steps.analyze:248] Running tapacc command: /usr/bin/tapacc generated/flatten/flatten-f5eeaffa-sextans.cpp -top Sextans -- -std=c++17 -I /home/Licheng-Guo/dev/tapa/backend/python/tapa/../../../src -isystem /opt/tools/xilinx/Vitis_HLS/2022.2/include -stdlib=libc++ -isystem /usr/lib/llvm-17/include/c++/v1/ -isystem /usr/include/clang/17/include/ -isystem /usr/lib/clang/17/include/ -I0329 14:40:06.925 tapa.steps.common:92] writing TAPA graph to json `generated/graph.json`. -I0329 14:40:06.925 tapa.steps.common:92] writing TAPA graph to json `generated/graph.json`. -I0329 14:40:06.934 tapa.steps.common:92] writing TAPA settings to json `generated/settings.json`. -I0329 14:40:06.934 tapa.steps.common:92] writing TAPA settings to json `generated/settings.json`. -I0329 14:40:06.934 tapa.steps.common:46] reusing TAPA settings from upstream flows. -I0329 14:40:06.934 tapa.steps.common:46] reusing TAPA settings from upstream flows. -I0329 14:40:06.934 tapa.core:184] extracting HLS C++ files -I0329 14:40:06.934 tapa.core:184] extracting HLS C++ files -I0329 14:40:07.558 tapa.core:216] running HLS -I0329 14:40:07.558 tapa.core:216] running HLS -I0329 14:40:07.561 tapa.core:262] spawn 128 workers for parallel HLS synthesis of the tasks -I0329 14:40:07.561 tapa.core:262] spawn 128 workers for parallel HLS synthesis of the tasks -I0329 14:40:53.393 tapa.core:277] extracting RTL files -I0329 14:40:53.393 tapa.core:277] extracting RTL files -I0329 14:40:53.456 tapa.core:308] parsing RTL files and populating tasks -I0329 14:40:53.456 tapa.core:308] parsing RTL files and populating tasks -D0329 14:40:54.755 tapa.core:317] parsing FloatvAddFloatv -D0329 14:40:54.755 tapa.core:317] parsing FloatvAddFloatv -D0329 14:40:54.756 tapa.core:321] populating FloatvAddFloatv -D0329 14:40:54.756 tapa.core:321] populating FloatvAddFloatv -D0329 14:40:54.759 tapa.core:317] parsing FloatvMultConst -D0329 14:40:54.759 tapa.core:317] parsing FloatvMultConst -D0329 14:40:54.760 tapa.core:321] populating FloatvMultConst -D0329 14:40:54.760 tapa.core:321] populating FloatvMultConst -D0329 14:40:54.760 tapa.core:317] parsing Merger -D0329 14:40:54.760 tapa.core:317] parsing Merger -D0329 14:40:54.760 tapa.core:321] populating Merger -D0329 14:40:54.760 tapa.core:321] populating Merger -D0329 14:40:54.760 tapa.core:317] parsing PEG_Bmtx -D0329 14:40:54.760 tapa.core:317] parsing PEG_Bmtx -D0329 14:40:54.761 tapa.core:321] populating PEG_Bmtx -D0329 14:40:54.761 tapa.core:321] populating PEG_Bmtx -D0329 14:40:54.761 tapa.core:317] parsing PEG_Cmtx -D0329 14:40:54.761 tapa.core:317] parsing PEG_Cmtx -D0329 14:40:54.762 tapa.core:321] populating PEG_Cmtx -D0329 14:40:54.762 tapa.core:321] populating PEG_Cmtx -D0329 14:40:54.762 tapa.core:317] parsing Scatter_1_2 -D0329 14:40:54.762 tapa.core:317] parsing Scatter_1_2 -D0329 14:40:54.762 tapa.core:321] populating Scatter_1_2 -D0329 14:40:54.762 tapa.core:321] populating Scatter_1_2 -D0329 14:40:54.762 tapa.core:317] parsing black_hole_float_v16 -D0329 14:40:54.762 tapa.core:317] parsing black_hole_float_v16 -D0329 14:40:54.764 tapa.core:321] populating black_hole_float_v16 -D0329 14:40:54.764 tapa.core:321] populating black_hole_float_v16 -D0329 14:40:54.764 tapa.core:317] parsing black_hole_int -D0329 14:40:54.764 tapa.core:317] parsing black_hole_int -D0329 14:40:54.765 tapa.core:321] populating black_hole_int -D0329 14:40:54.765 tapa.core:321] populating black_hole_int -D0329 14:40:54.765 tapa.core:317] parsing read_A -D0329 14:40:54.765 tapa.core:317] parsing read_A -D0329 14:40:54.765 tapa.core:321] populating read_A -D0329 14:40:54.765 tapa.core:321] populating read_A -D0329 14:40:54.765 tapa.core:317] parsing read_B -D0329 14:40:54.765 tapa.core:317] parsing read_B -D0329 14:40:54.766 tapa.core:321] populating read_B -D0329 14:40:54.766 tapa.core:321] populating read_B -D0329 14:40:54.766 tapa.core:317] parsing read_C -D0329 14:40:54.766 tapa.core:317] parsing read_C -D0329 14:40:54.766 tapa.core:321] populating read_C -D0329 14:40:54.766 tapa.core:321] populating read_C -D0329 14:40:54.766 tapa.core:317] parsing read_edge_list_ptr -D0329 14:40:54.766 tapa.core:317] parsing read_edge_list_ptr -D0329 14:40:54.767 tapa.core:321] populating read_edge_list_ptr -D0329 14:40:54.767 tapa.core:321] populating read_edge_list_ptr -D0329 14:40:54.767 tapa.core:317] parsing write_C -D0329 14:40:54.767 tapa.core:317] parsing write_C -D0329 14:40:54.767 tapa.core:321] populating write_C -D0329 14:40:54.767 tapa.core:321] populating write_C -D0329 14:40:54.767 tapa.core:317] parsing Sextans -D0329 14:40:54.767 tapa.core:317] parsing Sextans -D0329 14:40:54.768 tapa.core:321] populating Sextans -D0329 14:40:54.768 tapa.core:321] populating Sextans -D0329 14:40:54.774 tapa.task:149] mmap argument 'Sextans.edge_list_ch_0' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_0.A' -D0329 14:40:54.774 tapa.task:149] mmap argument 'Sextans.edge_list_ch_0' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_0.A' -D0329 14:40:54.774 tapa.task:149] mmap argument 'Sextans.edge_list_ch_1' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_1.A' -D0329 14:40:54.774 tapa.task:149] mmap argument 'Sextans.edge_list_ch_1' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_1.A' -D0329 14:40:54.774 tapa.task:149] mmap argument 'Sextans.edge_list_ch_2' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_2.A' -D0329 14:40:54.774 tapa.task:149] mmap argument 'Sextans.edge_list_ch_2' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_2.A' -D0329 14:40:54.774 tapa.task:149] mmap argument 'Sextans.edge_list_ch_3' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_3.A' -D0329 14:40:54.774 tapa.task:149] mmap argument 'Sextans.edge_list_ch_3' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_3.A' -D0329 14:40:54.774 tapa.task:149] mmap argument 'Sextans.edge_list_ch_4' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_4.A' -D0329 14:40:54.774 tapa.task:149] mmap argument 'Sextans.edge_list_ch_4' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_4.A' -D0329 14:40:54.774 tapa.task:149] mmap argument 'Sextans.edge_list_ch_5' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_5.A' -D0329 14:40:54.774 tapa.task:149] mmap argument 'Sextans.edge_list_ch_5' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_5.A' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.edge_list_ch_6' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_6.A' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.edge_list_ch_6' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_6.A' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.edge_list_ch_7' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_7.A' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.edge_list_ch_7' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_A_7.A' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_B_ch_0' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_B_0.B' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_B_ch_0' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_B_0.B' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_B_ch_1' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_B_1.B' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_B_ch_1' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_B_1.B' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_B_ch_2' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_B_2.B' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_B_ch_2' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_B_2.B' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_B_ch_3' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_B_3.B' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_B_ch_3' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_B_3.B' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_0' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_0.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_0' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_0.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_1' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_1.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_1' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_1.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_2' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_2.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_2' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_2.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_3' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_3.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_3' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_3.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_4' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_4.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_4' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_4.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_5' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_5.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_5' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_5.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_6' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_6.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_6' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_6.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_7' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_7.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_in_7' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_C_7.C' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.edge_list_ptr' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_edge_list_ptr_0.edge_list_ptr' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.edge_list_ptr' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'read_edge_list_ptr_0.edge_list_ptr' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_0' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_0.C_out' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_0' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_0.C_out' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_1' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_1.C_out' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_1' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_1.C_out' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_2' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_2.C_out' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_2' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_2.C_out' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_3' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_3.C_out' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_3' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_3.C_out' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_4' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_4.C_out' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_4' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_4.C_out' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_5' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_5.C_out' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_5' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_5.C_out' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_6' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_6.C_out' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_6' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_6.C_out' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_7' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_7.C_out' -D0329 14:40:54.775 tapa.task:149] mmap argument 'Sextans.mat_C_ch_7' (id_width=1, thread_count=1, chan_size=None, chan_count=None) is connected to port 'write_C_7.C_out' -I0329 14:40:54.776 tapa.core:325] instrumenting upper-level RTL -I0329 14:40:54.776 tapa.core:325] instrumenting upper-level RTL -I0329 14:40:54.776 tapa.steps.common:92] writing TAPA settings to json `generated/settings.json`. -I0329 14:40:54.776 tapa.steps.common:92] writing TAPA settings to json `generated/settings.json`. -I0329 14:40:54.778 tapa.steps.common:46] reusing TAPA settings from upstream flows. -I0329 14:40:54.778 tapa.steps.common:46] reusing TAPA settings from upstream flows. -I0329 14:40:54.778 tapa.core:452] top task register level set to 0 -I0329 14:40:54.778 tapa.core:452] top task register level set to 0 -I0329 14:40:54.778 tapa.core:456] instrumenting top-level RTL -I0329 14:40:54.778 tapa.core:456] instrumenting top-level RTL -D0329 14:40:54.781 tapa.core:529] instantiating FIFOs in Sextans -D0329 14:40:54.781 tapa.core:529] instantiating FIFOs in Sextans -D0329 14:40:54.782 tapa.core:542] instantiating Sextans.PE_inst_Sextans[0] -D0329 14:40:54.782 tapa.core:542] instantiating Sextans.PE_inst_Sextans[0] -D0329 14:40:54.782 tapa.core:542] instantiating Sextans.PE_inst_Sextans[10] -D0329 14:40:54.782 tapa.core:542] instantiating Sextans.PE_inst_Sextans[10] -D0329 14:40:54.783 tapa.core:542] instantiating Sextans.PE_inst_Sextans[11] -D0329 14:40:54.783 tapa.core:542] instantiating Sextans.PE_inst_Sextans[11] -D0329 14:40:54.783 tapa.core:542] instantiating Sextans.PE_inst_Sextans[12] -D0329 14:40:54.783 tapa.core:542] instantiating Sextans.PE_inst_Sextans[12] -D0329 14:40:54.783 tapa.core:542] instantiating Sextans.PE_inst_Sextans[13] -D0329 14:40:54.783 tapa.core:542] instantiating Sextans.PE_inst_Sextans[13] -D0329 14:40:54.783 tapa.core:542] instantiating Sextans.PE_inst_Sextans[14] -D0329 14:40:54.783 tapa.core:542] instantiating Sextans.PE_inst_Sextans[14] -D0329 14:40:54.784 tapa.core:542] instantiating Sextans.PE_inst_Sextans[15] -D0329 14:40:54.784 tapa.core:542] instantiating Sextans.PE_inst_Sextans[15] -D0329 14:40:54.784 tapa.core:542] instantiating Sextans.PE_inst_Sextans[16] -D0329 14:40:54.784 tapa.core:542] instantiating Sextans.PE_inst_Sextans[16] -D0329 14:40:54.784 tapa.core:542] instantiating Sextans.PE_inst_Sextans[1] -D0329 14:40:54.784 tapa.core:542] instantiating Sextans.PE_inst_Sextans[1] -D0329 14:40:54.784 tapa.core:542] instantiating Sextans.PE_inst_Sextans[2] -D0329 14:40:54.784 tapa.core:542] instantiating Sextans.PE_inst_Sextans[2] -D0329 14:40:54.784 tapa.core:542] instantiating Sextans.PE_inst_Sextans[3] -D0329 14:40:54.784 tapa.core:542] instantiating Sextans.PE_inst_Sextans[3] -D0329 14:40:54.785 tapa.core:542] instantiating Sextans.PE_inst_Sextans[4] -D0329 14:40:54.785 tapa.core:542] instantiating Sextans.PE_inst_Sextans[4] -D0329 14:40:54.785 tapa.core:542] instantiating Sextans.PE_inst_Sextans[5] -D0329 14:40:54.785 tapa.core:542] instantiating Sextans.PE_inst_Sextans[5] -D0329 14:40:54.785 tapa.core:542] instantiating Sextans.PE_inst_Sextans[6] -D0329 14:40:54.785 tapa.core:542] instantiating Sextans.PE_inst_Sextans[6] -D0329 14:40:54.785 tapa.core:542] instantiating Sextans.PE_inst_Sextans[7] -D0329 14:40:54.785 tapa.core:542] instantiating Sextans.PE_inst_Sextans[7] -D0329 14:40:54.785 tapa.core:542] instantiating Sextans.PE_inst_Sextans[8] -D0329 14:40:54.785 tapa.core:542] instantiating Sextans.PE_inst_Sextans[8] -D0329 14:40:54.785 tapa.core:542] instantiating Sextans.PE_inst_Sextans[9] -D0329 14:40:54.785 tapa.core:542] instantiating Sextans.PE_inst_Sextans[9] -D0329 14:40:54.786 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[0] -D0329 14:40:54.786 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[0] -D0329 14:40:54.786 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[10] -D0329 14:40:54.786 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[10] -D0329 14:40:54.786 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[11] -D0329 14:40:54.786 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[11] -D0329 14:40:54.786 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[12] -D0329 14:40:54.786 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[12] -D0329 14:40:54.786 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[13] -D0329 14:40:54.786 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[13] -D0329 14:40:54.787 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[14] -D0329 14:40:54.787 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[14] -D0329 14:40:54.787 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[15] -D0329 14:40:54.787 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[15] -D0329 14:40:54.787 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[1] -D0329 14:40:54.787 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[1] -D0329 14:40:54.787 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[2] -D0329 14:40:54.787 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[2] -D0329 14:40:54.787 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[3] -D0329 14:40:54.787 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[3] -D0329 14:40:54.788 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[4] -D0329 14:40:54.788 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[4] -D0329 14:40:54.788 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[5] -D0329 14:40:54.788 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[5] -D0329 14:40:54.788 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[6] -D0329 14:40:54.788 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[6] -D0329 14:40:54.788 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[7] -D0329 14:40:54.788 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[7] -D0329 14:40:54.788 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[8] -D0329 14:40:54.788 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[8] -D0329 14:40:54.789 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[9] -D0329 14:40:54.789 tapa.core:542] instantiating Sextans.PE_inst_to_Cmtx_Sextans[9] -D0329 14:40:54.789 tapa.core:542] instantiating Sextans.fifo_A_Sextans[0] -D0329 14:40:54.789 tapa.core:542] instantiating Sextans.fifo_A_Sextans[0] -D0329 14:40:54.789 tapa.core:542] instantiating Sextans.fifo_A_Sextans[1] -D0329 14:40:54.789 tapa.core:542] instantiating Sextans.fifo_A_Sextans[1] -D0329 14:40:54.789 tapa.core:542] instantiating Sextans.fifo_A_Sextans[2] -D0329 14:40:54.789 tapa.core:542] instantiating Sextans.fifo_A_Sextans[2] -D0329 14:40:54.789 tapa.core:542] instantiating Sextans.fifo_A_Sextans[3] -D0329 14:40:54.789 tapa.core:542] instantiating Sextans.fifo_A_Sextans[3] -D0329 14:40:54.789 tapa.core:542] instantiating Sextans.fifo_A_Sextans[4] -D0329 14:40:54.789 tapa.core:542] instantiating Sextans.fifo_A_Sextans[4] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_Sextans[5] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_Sextans[5] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_Sextans[6] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_Sextans[6] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_Sextans[7] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_Sextans[7] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[0] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[0] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[10] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[10] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[11] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[11] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[12] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[12] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[13] -D0329 14:40:54.790 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[13] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[14] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[14] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[15] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[15] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[1] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[1] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[2] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[2] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[3] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[3] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[4] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[4] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[5] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[5] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[6] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[6] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[7] -D0329 14:40:54.791 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[7] -D0329 14:40:54.792 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[8] -D0329 14:40:54.792 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[8] -D0329 14:40:54.792 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[9] -D0329 14:40:54.792 tapa.core:542] instantiating Sextans.fifo_A_pe_Sextans[9] -D0329 14:40:54.792 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[0] -D0329 14:40:54.792 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[0] -D0329 14:40:54.792 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[10] -D0329 14:40:54.792 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[10] -D0329 14:40:54.792 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[11] -D0329 14:40:54.792 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[11] -D0329 14:40:54.792 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[12] -D0329 14:40:54.792 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[12] -D0329 14:40:54.793 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[13] -D0329 14:40:54.793 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[13] -D0329 14:40:54.793 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[14] -D0329 14:40:54.793 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[14] -D0329 14:40:54.793 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[15] -D0329 14:40:54.793 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[15] -D0329 14:40:54.793 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[16] -D0329 14:40:54.793 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[16] -D0329 14:40:54.793 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[17] -D0329 14:40:54.793 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[17] -D0329 14:40:54.794 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[18] -D0329 14:40:54.794 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[18] -D0329 14:40:54.794 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[19] -D0329 14:40:54.794 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[19] -D0329 14:40:54.794 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[1] -D0329 14:40:54.794 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[1] -D0329 14:40:54.794 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[20] -D0329 14:40:54.794 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[20] -D0329 14:40:54.794 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[21] -D0329 14:40:54.794 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[21] -D0329 14:40:54.794 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[22] -D0329 14:40:54.794 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[22] -D0329 14:40:54.795 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[23] -D0329 14:40:54.795 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[23] -D0329 14:40:54.795 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[24] -D0329 14:40:54.795 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[24] -D0329 14:40:54.795 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[25] -D0329 14:40:54.795 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[25] -D0329 14:40:54.795 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[26] -D0329 14:40:54.795 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[26] -D0329 14:40:54.795 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[27] -D0329 14:40:54.795 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[27] -D0329 14:40:54.796 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[28] -D0329 14:40:54.796 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[28] -D0329 14:40:54.796 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[29] -D0329 14:40:54.796 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[29] -D0329 14:40:54.796 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[2] -D0329 14:40:54.796 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[2] -D0329 14:40:54.796 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[30] -D0329 14:40:54.796 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[30] -D0329 14:40:54.796 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[31] -D0329 14:40:54.796 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[31] -D0329 14:40:54.796 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[32] -D0329 14:40:54.796 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[32] -D0329 14:40:54.797 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[33] -D0329 14:40:54.797 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[33] -D0329 14:40:54.797 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[34] -D0329 14:40:54.797 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[34] -D0329 14:40:54.797 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[35] -D0329 14:40:54.797 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[35] -D0329 14:40:54.797 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[36] -D0329 14:40:54.797 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[36] -D0329 14:40:54.797 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[37] -D0329 14:40:54.797 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[37] -D0329 14:40:54.798 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[38] -D0329 14:40:54.798 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[38] -D0329 14:40:54.798 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[39] -D0329 14:40:54.798 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[39] -D0329 14:40:54.798 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[3] -D0329 14:40:54.798 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[3] -D0329 14:40:54.798 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[40] -D0329 14:40:54.798 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[40] -D0329 14:40:54.798 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[41] -D0329 14:40:54.798 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[41] -D0329 14:40:54.798 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[42] -D0329 14:40:54.798 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[42] -D0329 14:40:54.799 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[43] -D0329 14:40:54.799 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[43] -D0329 14:40:54.799 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[44] -D0329 14:40:54.799 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[44] -D0329 14:40:54.799 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[45] -D0329 14:40:54.799 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[45] -D0329 14:40:54.799 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[46] -D0329 14:40:54.799 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[46] -D0329 14:40:54.799 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[47] -D0329 14:40:54.799 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[47] -D0329 14:40:54.799 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[48] -D0329 14:40:54.799 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[48] -D0329 14:40:54.800 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[49] -D0329 14:40:54.800 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[49] -D0329 14:40:54.800 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[4] -D0329 14:40:54.800 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[4] -D0329 14:40:54.800 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[50] -D0329 14:40:54.800 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[50] -D0329 14:40:54.800 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[51] -D0329 14:40:54.800 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[51] -D0329 14:40:54.801 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[52] -D0329 14:40:54.801 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[52] -D0329 14:40:54.801 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[53] -D0329 14:40:54.801 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[53] -D0329 14:40:54.801 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[54] -D0329 14:40:54.801 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[54] -D0329 14:40:54.801 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[55] -D0329 14:40:54.801 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[55] -D0329 14:40:54.801 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[56] -D0329 14:40:54.801 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[56] -D0329 14:40:54.801 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[57] -D0329 14:40:54.801 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[57] -D0329 14:40:54.802 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[58] -D0329 14:40:54.802 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[58] -D0329 14:40:54.802 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[59] -D0329 14:40:54.802 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[59] -D0329 14:40:54.802 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[5] -D0329 14:40:54.802 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[5] -D0329 14:40:54.802 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[60] -D0329 14:40:54.802 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[60] -D0329 14:40:54.802 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[61] -D0329 14:40:54.802 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[61] -D0329 14:40:54.802 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[62] -D0329 14:40:54.802 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[62] -D0329 14:40:54.803 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[63] -D0329 14:40:54.803 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[63] -D0329 14:40:54.803 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[64] -D0329 14:40:54.803 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[64] -D0329 14:40:54.803 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[65] -D0329 14:40:54.803 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[65] -D0329 14:40:54.803 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[66] -D0329 14:40:54.803 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[66] -D0329 14:40:54.803 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[67] -D0329 14:40:54.803 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[67] -D0329 14:40:54.803 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[6] -D0329 14:40:54.803 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[6] -D0329 14:40:54.804 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[7] -D0329 14:40:54.804 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[7] -D0329 14:40:54.804 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[8] -D0329 14:40:54.804 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[8] -D0329 14:40:54.804 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[9] -D0329 14:40:54.804 tapa.core:542] instantiating Sextans.fifo_B_pe_Sextans[9] -D0329 14:40:54.804 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[0] -D0329 14:40:54.804 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[0] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[1] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[1] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[2] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[2] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[3] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[3] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[4] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[4] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[5] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[5] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[6] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[6] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[7] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_Sextans[7] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[0] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[0] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[1] -D0329 14:40:54.805 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[1] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[2] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[2] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[3] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[3] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[4] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[4] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[5] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[5] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[6] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[6] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[7] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_Sextans[7] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[0] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[0] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[1] -D0329 14:40:54.806 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[1] -D0329 14:40:54.807 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[2] -D0329 14:40:54.807 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[2] -D0329 14:40:54.807 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[3] -D0329 14:40:54.807 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[3] -D0329 14:40:54.807 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[4] -D0329 14:40:54.807 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[4] -D0329 14:40:54.807 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[5] -D0329 14:40:54.807 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[5] -D0329 14:40:54.807 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[6] -D0329 14:40:54.807 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[6] -D0329 14:40:54.807 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[7] -D0329 14:40:54.807 tapa.core:542] instantiating Sextans.fifo_C_ch_result_alpha_Sextans[7] -D0329 14:40:54.807 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[0] -D0329 14:40:54.807 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[0] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[10] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[10] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[11] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[11] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[12] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[12] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[13] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[13] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[14] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[14] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[15] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[15] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[1] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[1] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[2] -D0329 14:40:54.808 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[2] -D0329 14:40:54.809 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[3] -D0329 14:40:54.809 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[3] -D0329 14:40:54.809 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[4] -D0329 14:40:54.809 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[4] -D0329 14:40:54.809 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[5] -D0329 14:40:54.809 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[5] -D0329 14:40:54.809 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[6] -D0329 14:40:54.809 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[6] -D0329 14:40:54.809 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[7] -D0329 14:40:54.809 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[7] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[8] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[8] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[9] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_pe_Sextans[9] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[0] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[0] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[1] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[1] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[2] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[2] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[3] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[3] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[4] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[4] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[5] -D0329 14:40:54.810 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[5] -D0329 14:40:54.811 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[6] -D0329 14:40:54.811 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[6] -D0329 14:40:54.811 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[7] -D0329 14:40:54.811 tapa.core:542] instantiating Sextans.fifo_C_read_in_Sextans[7] -D0329 14:40:54.811 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[0] -D0329 14:40:54.811 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[0] -D0329 14:40:54.811 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[1] -D0329 14:40:54.811 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[1] -D0329 14:40:54.811 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[2] -D0329 14:40:54.811 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[2] -D0329 14:40:54.811 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[3] -D0329 14:40:54.811 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[3] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[4] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[4] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[5] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[5] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[6] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[6] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[7] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_C_read_in_beta_Sextans[7] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[0] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[0] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[10] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[10] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[11] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[11] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[12] -D0329 14:40:54.812 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[12] -D0329 14:40:54.813 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[13] -D0329 14:40:54.813 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[13] -D0329 14:40:54.813 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[14] -D0329 14:40:54.813 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[14] -D0329 14:40:54.813 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[15] -D0329 14:40:54.813 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[15] -D0329 14:40:54.813 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[16] -D0329 14:40:54.813 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[16] -D0329 14:40:54.813 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[17] -D0329 14:40:54.813 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[17] -D0329 14:40:54.813 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[18] -D0329 14:40:54.813 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[18] -D0329 14:40:54.814 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[19] -D0329 14:40:54.814 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[19] -D0329 14:40:54.814 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[1] -D0329 14:40:54.814 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[1] -D0329 14:40:54.814 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[20] -D0329 14:40:54.814 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[20] -D0329 14:40:54.814 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[21] -D0329 14:40:54.814 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[21] -D0329 14:40:54.814 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[22] -D0329 14:40:54.814 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[22] -D0329 14:40:54.815 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[23] -D0329 14:40:54.815 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[23] -D0329 14:40:54.815 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[24] -D0329 14:40:54.815 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[24] -D0329 14:40:54.815 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[25] -D0329 14:40:54.815 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[25] -D0329 14:40:54.815 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[26] -D0329 14:40:54.815 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[26] -D0329 14:40:54.815 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[27] -D0329 14:40:54.815 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[27] -D0329 14:40:54.815 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[28] -D0329 14:40:54.815 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[28] -D0329 14:40:54.815 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[29] -D0329 14:40:54.815 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[29] -D0329 14:40:54.816 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[2] -D0329 14:40:54.816 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[2] -D0329 14:40:54.816 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[30] -D0329 14:40:54.816 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[30] -D0329 14:40:54.816 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[31] -D0329 14:40:54.816 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[31] -D0329 14:40:54.816 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[32] -D0329 14:40:54.816 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[32] -D0329 14:40:54.816 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[33] -D0329 14:40:54.816 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[33] -D0329 14:40:54.816 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[34] -D0329 14:40:54.816 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[34] -D0329 14:40:54.817 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[35] -D0329 14:40:54.817 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[35] -D0329 14:40:54.817 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[36] -D0329 14:40:54.817 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[36] -D0329 14:40:54.817 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[37] -D0329 14:40:54.817 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[37] -D0329 14:40:54.817 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[38] -D0329 14:40:54.817 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[38] -D0329 14:40:54.817 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[39] -D0329 14:40:54.817 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[39] -D0329 14:40:54.818 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[3] -D0329 14:40:54.818 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[3] -D0329 14:40:54.818 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[40] -D0329 14:40:54.818 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[40] -D0329 14:40:54.818 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[41] -D0329 14:40:54.818 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[41] -D0329 14:40:54.818 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[42] -D0329 14:40:54.818 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[42] -D0329 14:40:54.818 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[43] -D0329 14:40:54.818 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[43] -D0329 14:40:54.818 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[44] -D0329 14:40:54.818 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[44] -D0329 14:40:54.818 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[45] -D0329 14:40:54.818 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[45] -D0329 14:40:54.819 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[46] -D0329 14:40:54.819 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[46] -D0329 14:40:54.819 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[47] -D0329 14:40:54.819 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[47] -D0329 14:40:54.819 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[48] -D0329 14:40:54.819 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[48] -D0329 14:40:54.819 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[49] -D0329 14:40:54.819 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[49] -D0329 14:40:54.819 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[4] -D0329 14:40:54.819 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[4] -D0329 14:40:54.819 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[50] -D0329 14:40:54.819 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[50] -D0329 14:40:54.820 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[51] -D0329 14:40:54.820 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[51] -D0329 14:40:54.820 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[52] -D0329 14:40:54.820 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[52] -D0329 14:40:54.820 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[53] -D0329 14:40:54.820 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[53] -D0329 14:40:54.820 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[54] -D0329 14:40:54.820 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[54] -D0329 14:40:54.820 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[55] -D0329 14:40:54.820 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[55] -D0329 14:40:54.820 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[56] -D0329 14:40:54.820 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[56] -D0329 14:40:54.821 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[57] -D0329 14:40:54.821 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[57] -D0329 14:40:54.821 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[58] -D0329 14:40:54.821 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[58] -D0329 14:40:54.821 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[59] -D0329 14:40:54.821 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[59] -D0329 14:40:54.821 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[5] -D0329 14:40:54.821 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[5] -D0329 14:40:54.822 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[60] -D0329 14:40:54.822 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[60] -D0329 14:40:54.822 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[61] -D0329 14:40:54.822 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[61] -D0329 14:40:54.822 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[62] -D0329 14:40:54.822 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[62] -D0329 14:40:54.822 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[63] -D0329 14:40:54.822 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[63] -D0329 14:40:54.822 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[6] -D0329 14:40:54.822 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[6] -D0329 14:40:54.822 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[7] -D0329 14:40:54.822 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[7] -D0329 14:40:54.823 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[8] -D0329 14:40:54.823 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[8] -D0329 14:40:54.823 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[9] -D0329 14:40:54.823 tapa.core:542] instantiating Sextans.fifo_aBvec_Sextans[9] -D0329 14:40:54.823 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[0] -D0329 14:40:54.823 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[0] -D0329 14:40:54.823 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[10] -D0329 14:40:54.823 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[10] -D0329 14:40:54.823 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[11] -D0329 14:40:54.823 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[11] -D0329 14:40:54.824 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[12] -D0329 14:40:54.824 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[12] -D0329 14:40:54.824 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[13] -D0329 14:40:54.824 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[13] -D0329 14:40:54.824 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[14] -D0329 14:40:54.824 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[14] -D0329 14:40:54.824 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[15] -D0329 14:40:54.824 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[15] -D0329 14:40:54.824 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[16] -D0329 14:40:54.824 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[16] -D0329 14:40:54.825 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[1] -D0329 14:40:54.825 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[1] -D0329 14:40:54.825 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[2] -D0329 14:40:54.825 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[2] -D0329 14:40:54.825 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[3] -D0329 14:40:54.825 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[3] -D0329 14:40:54.825 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[4] -D0329 14:40:54.825 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[4] -D0329 14:40:54.825 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[5] -D0329 14:40:54.825 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[5] -D0329 14:40:54.825 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[6] -D0329 14:40:54.825 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[6] -D0329 14:40:54.826 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[7] -D0329 14:40:54.826 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[7] -D0329 14:40:54.826 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[8] -D0329 14:40:54.826 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[8] -D0329 14:40:54.826 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[9] -D0329 14:40:54.826 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_Sextans[9] -D0329 14:40:54.826 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[0] -D0329 14:40:54.826 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[0] -D0329 14:40:54.826 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[10] -D0329 14:40:54.826 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[10] -D0329 14:40:54.827 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[11] -D0329 14:40:54.827 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[11] -D0329 14:40:54.827 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[12] -D0329 14:40:54.827 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[12] -D0329 14:40:54.827 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[13] -D0329 14:40:54.827 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[13] -D0329 14:40:54.827 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[14] -D0329 14:40:54.827 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[14] -D0329 14:40:54.827 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[15] -D0329 14:40:54.827 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[15] -D0329 14:40:54.827 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[1] -D0329 14:40:54.827 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[1] -D0329 14:40:54.828 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[2] -D0329 14:40:54.828 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[2] -D0329 14:40:54.828 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[3] -D0329 14:40:54.828 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[3] -D0329 14:40:54.828 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[4] -D0329 14:40:54.828 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[4] -D0329 14:40:54.828 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[5] -D0329 14:40:54.828 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[5] -D0329 14:40:54.828 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[6] -D0329 14:40:54.828 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[6] -D0329 14:40:54.829 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[7] -D0329 14:40:54.829 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[7] -D0329 14:40:54.829 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[8] -D0329 14:40:54.829 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[8] -D0329 14:40:54.829 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[9] -D0329 14:40:54.829 tapa.core:542] instantiating Sextans.fifo_edge_list_ptr_to_Cmtx_Sextans[9] -D0329 14:40:54.829 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[0] -D0329 14:40:54.829 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[0] -D0329 14:40:54.829 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[1] -D0329 14:40:54.829 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[1] -D0329 14:40:54.829 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[2] -D0329 14:40:54.829 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[2] -D0329 14:40:54.830 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[3] -D0329 14:40:54.830 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[3] -D0329 14:40:54.830 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[4] -D0329 14:40:54.830 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[4] -D0329 14:40:54.830 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[5] -D0329 14:40:54.830 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[5] -D0329 14:40:54.830 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[6] -D0329 14:40:54.830 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[6] -D0329 14:40:54.830 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[7] -D0329 14:40:54.830 tapa.core:542] instantiating Sextans.wrC_inst_Sextans[7] -D0329 14:40:54.830 tapa.core:507] connecting Sextans's children tasks -D0329 14:40:54.830 tapa.core:507] connecting Sextans's children tasks -D0329 14:40:54.983 tapa.core:598] instantiating children tasks in Sextans -D0329 14:40:54.983 tapa.core:598] instantiating children tasks in Sextans -D0329 14:40:55.012 tapa.core:671] pipelined signal: M => FloatvMultConst_0___M -D0329 14:40:55.012 tapa.core:671] pipelined signal: M => FloatvMultConst_0___M -D0329 14:40:55.012 tapa.core:671] pipelined signal: P_N => FloatvMultConst_0___P_N -D0329 14:40:55.012 tapa.core:671] pipelined signal: P_N => FloatvMultConst_0___P_N -D0329 14:40:55.012 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_0___beta_u -D0329 14:40:55.012 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_0___beta_u -D0329 14:40:55.013 tapa.core:671] pipelined signal: M => FloatvMultConst_1___M -D0329 14:40:55.013 tapa.core:671] pipelined signal: M => FloatvMultConst_1___M -D0329 14:40:55.013 tapa.core:671] pipelined signal: P_N => FloatvMultConst_1___P_N -D0329 14:40:55.013 tapa.core:671] pipelined signal: P_N => FloatvMultConst_1___P_N -D0329 14:40:55.013 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_1___beta_u -D0329 14:40:55.013 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_1___beta_u -D0329 14:40:55.014 tapa.core:671] pipelined signal: M => FloatvMultConst_2___M -D0329 14:40:55.014 tapa.core:671] pipelined signal: M => FloatvMultConst_2___M -D0329 14:40:55.014 tapa.core:671] pipelined signal: P_N => FloatvMultConst_2___P_N -D0329 14:40:55.014 tapa.core:671] pipelined signal: P_N => FloatvMultConst_2___P_N -D0329 14:40:55.014 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_2___beta_u -D0329 14:40:55.014 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_2___beta_u -D0329 14:40:55.015 tapa.core:671] pipelined signal: M => FloatvMultConst_3___M -D0329 14:40:55.015 tapa.core:671] pipelined signal: M => FloatvMultConst_3___M -D0329 14:40:55.015 tapa.core:671] pipelined signal: P_N => FloatvMultConst_3___P_N -D0329 14:40:55.015 tapa.core:671] pipelined signal: P_N => FloatvMultConst_3___P_N -D0329 14:40:55.015 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_3___beta_u -D0329 14:40:55.015 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_3___beta_u -D0329 14:40:55.016 tapa.core:671] pipelined signal: M => FloatvMultConst_4___M -D0329 14:40:55.016 tapa.core:671] pipelined signal: M => FloatvMultConst_4___M -D0329 14:40:55.016 tapa.core:671] pipelined signal: P_N => FloatvMultConst_4___P_N -D0329 14:40:55.016 tapa.core:671] pipelined signal: P_N => FloatvMultConst_4___P_N -D0329 14:40:55.017 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_4___beta_u -D0329 14:40:55.017 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_4___beta_u -D0329 14:40:55.017 tapa.core:671] pipelined signal: M => FloatvMultConst_5___M -D0329 14:40:55.017 tapa.core:671] pipelined signal: M => FloatvMultConst_5___M -D0329 14:40:55.018 tapa.core:671] pipelined signal: P_N => FloatvMultConst_5___P_N -D0329 14:40:55.018 tapa.core:671] pipelined signal: P_N => FloatvMultConst_5___P_N -D0329 14:40:55.018 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_5___beta_u -D0329 14:40:55.018 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_5___beta_u -D0329 14:40:55.019 tapa.core:671] pipelined signal: M => FloatvMultConst_6___M -D0329 14:40:55.019 tapa.core:671] pipelined signal: M => FloatvMultConst_6___M -D0329 14:40:55.019 tapa.core:671] pipelined signal: P_N => FloatvMultConst_6___P_N -D0329 14:40:55.019 tapa.core:671] pipelined signal: P_N => FloatvMultConst_6___P_N -D0329 14:40:55.019 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_6___beta_u -D0329 14:40:55.019 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_6___beta_u -D0329 14:40:55.020 tapa.core:671] pipelined signal: M => FloatvMultConst_7___M -D0329 14:40:55.020 tapa.core:671] pipelined signal: M => FloatvMultConst_7___M -D0329 14:40:55.020 tapa.core:671] pipelined signal: P_N => FloatvMultConst_7___P_N -D0329 14:40:55.020 tapa.core:671] pipelined signal: P_N => FloatvMultConst_7___P_N -D0329 14:40:55.020 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_7___beta_u -D0329 14:40:55.020 tapa.core:671] pipelined signal: beta_u => FloatvMultConst_7___beta_u -D0329 14:40:55.021 tapa.core:671] pipelined signal: M => FloatvMultConst_8___M -D0329 14:40:55.021 tapa.core:671] pipelined signal: M => FloatvMultConst_8___M -D0329 14:40:55.021 tapa.core:671] pipelined signal: P_N => FloatvMultConst_8___P_N -D0329 14:40:55.021 tapa.core:671] pipelined signal: P_N => FloatvMultConst_8___P_N -D0329 14:40:55.021 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_8___alpha_u -D0329 14:40:55.021 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_8___alpha_u -D0329 14:40:55.022 tapa.core:671] pipelined signal: M => FloatvMultConst_9___M -D0329 14:40:55.022 tapa.core:671] pipelined signal: M => FloatvMultConst_9___M -D0329 14:40:55.022 tapa.core:671] pipelined signal: P_N => FloatvMultConst_9___P_N -D0329 14:40:55.022 tapa.core:671] pipelined signal: P_N => FloatvMultConst_9___P_N -D0329 14:40:55.022 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_9___alpha_u -D0329 14:40:55.022 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_9___alpha_u -D0329 14:40:55.023 tapa.core:671] pipelined signal: M => FloatvMultConst_10___M -D0329 14:40:55.023 tapa.core:671] pipelined signal: M => FloatvMultConst_10___M -D0329 14:40:55.023 tapa.core:671] pipelined signal: P_N => FloatvMultConst_10___P_N -D0329 14:40:55.023 tapa.core:671] pipelined signal: P_N => FloatvMultConst_10___P_N -D0329 14:40:55.023 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_10___alpha_u -D0329 14:40:55.023 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_10___alpha_u -D0329 14:40:55.024 tapa.core:671] pipelined signal: M => FloatvMultConst_11___M -D0329 14:40:55.024 tapa.core:671] pipelined signal: M => FloatvMultConst_11___M -D0329 14:40:55.024 tapa.core:671] pipelined signal: P_N => FloatvMultConst_11___P_N -D0329 14:40:55.024 tapa.core:671] pipelined signal: P_N => FloatvMultConst_11___P_N -D0329 14:40:55.025 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_11___alpha_u -D0329 14:40:55.025 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_11___alpha_u -D0329 14:40:55.026 tapa.core:671] pipelined signal: M => FloatvMultConst_12___M -D0329 14:40:55.026 tapa.core:671] pipelined signal: M => FloatvMultConst_12___M -D0329 14:40:55.026 tapa.core:671] pipelined signal: P_N => FloatvMultConst_12___P_N -D0329 14:40:55.026 tapa.core:671] pipelined signal: P_N => FloatvMultConst_12___P_N -D0329 14:40:55.026 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_12___alpha_u -D0329 14:40:55.026 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_12___alpha_u -D0329 14:40:55.027 tapa.core:671] pipelined signal: M => FloatvMultConst_13___M -D0329 14:40:55.027 tapa.core:671] pipelined signal: M => FloatvMultConst_13___M -D0329 14:40:55.027 tapa.core:671] pipelined signal: P_N => FloatvMultConst_13___P_N -D0329 14:40:55.027 tapa.core:671] pipelined signal: P_N => FloatvMultConst_13___P_N -D0329 14:40:55.027 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_13___alpha_u -D0329 14:40:55.027 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_13___alpha_u -D0329 14:40:55.028 tapa.core:671] pipelined signal: M => FloatvMultConst_14___M -D0329 14:40:55.028 tapa.core:671] pipelined signal: M => FloatvMultConst_14___M -D0329 14:40:55.028 tapa.core:671] pipelined signal: P_N => FloatvMultConst_14___P_N -D0329 14:40:55.028 tapa.core:671] pipelined signal: P_N => FloatvMultConst_14___P_N -D0329 14:40:55.029 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_14___alpha_u -D0329 14:40:55.029 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_14___alpha_u -D0329 14:40:55.029 tapa.core:671] pipelined signal: M => FloatvMultConst_15___M -D0329 14:40:55.029 tapa.core:671] pipelined signal: M => FloatvMultConst_15___M -D0329 14:40:55.030 tapa.core:671] pipelined signal: P_N => FloatvMultConst_15___P_N -D0329 14:40:55.030 tapa.core:671] pipelined signal: P_N => FloatvMultConst_15___P_N -D0329 14:40:55.030 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_15___alpha_u -D0329 14:40:55.030 tapa.core:671] pipelined signal: alpha_u => FloatvMultConst_15___alpha_u -D0329 14:40:55.213 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_0___NUM_A_LEN -D0329 14:40:55.213 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_0___NUM_A_LEN -D0329 14:40:55.214 tapa.core:671] pipelined signal: P_N => read_A_0___P_N -D0329 14:40:55.214 tapa.core:671] pipelined signal: P_N => read_A_0___P_N -D0329 14:40:55.214 tapa.core:671] pipelined signal: edge_list_ch_0 => read_A_0___edge_list_ch_0 -D0329 14:40:55.214 tapa.core:671] pipelined signal: edge_list_ch_0 => read_A_0___edge_list_ch_0 -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_addr_din` is connected to async_mmap port `edge_list_ch_0.read_addr` -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_addr_din` is connected to async_mmap port `edge_list_ch_0.read_addr` -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_0.read_addr` -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_0.read_addr` -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_addr_write` is connected to async_mmap port `edge_list_ch_0.read_addr` -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_addr_write` is connected to async_mmap port `edge_list_ch_0.read_addr` -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.214 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_addr_din` is connected to async_mmap port `edge_list_ch_0.write_addr` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_addr_din` is connected to async_mmap port `edge_list_ch_0.write_addr` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_0.write_addr` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_0.write_addr` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_addr_write` is connected to async_mmap port `edge_list_ch_0.write_addr` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_addr_write` is connected to async_mmap port `edge_list_ch_0.write_addr` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_data_din` is connected to async_mmap port `edge_list_ch_0.write_data` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_data_din` is connected to async_mmap port `edge_list_ch_0.write_data` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_0.write_data` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_0.write_data` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_data_write` is connected to async_mmap port `edge_list_ch_0.write_data` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_data_write` is connected to async_mmap port `edge_list_ch_0.write_data` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.215 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.216 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_addr_din` is connected to async_mmap port `edge_list_ch_0.read_addr` -D0329 14:40:55.216 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_addr_din` is connected to async_mmap port `edge_list_ch_0.read_addr` -D0329 14:40:55.216 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_0.read_addr` -D0329 14:40:55.216 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_0.read_addr` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_addr_write` is connected to async_mmap port `edge_list_ch_0.read_addr` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_addr_write` is connected to async_mmap port `edge_list_ch_0.read_addr` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_0.read_data` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_addr_din` is connected to async_mmap port `edge_list_ch_0.write_addr` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_addr_din` is connected to async_mmap port `edge_list_ch_0.write_addr` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_0.write_addr` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_0.write_addr` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_addr_write` is connected to async_mmap port `edge_list_ch_0.write_addr` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_addr_write` is connected to async_mmap port `edge_list_ch_0.write_addr` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_data_din` is connected to async_mmap port `edge_list_ch_0.write_data` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_data_din` is connected to async_mmap port `edge_list_ch_0.write_data` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_0.write_data` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_0.write_data` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_data_write` is connected to async_mmap port `edge_list_ch_0.write_data` -D0329 14:40:55.217 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_data_write` is connected to async_mmap port `edge_list_ch_0.write_data` -D0329 14:40:55.218 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.218 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.218 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.218 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.218 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.218 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.218 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.218 tapa.verilog.xilinx.async_mmap:81] `read_A_0.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.218 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.218 tapa.verilog.xilinx.async_mmap:71] `read_A_0.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_0.write_resp` -D0329 14:40:55.218 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_1___NUM_A_LEN -D0329 14:40:55.218 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_1___NUM_A_LEN -D0329 14:40:55.218 tapa.core:671] pipelined signal: P_N => read_A_1___P_N -D0329 14:40:55.218 tapa.core:671] pipelined signal: P_N => read_A_1___P_N -D0329 14:40:55.219 tapa.core:671] pipelined signal: edge_list_ch_1 => read_A_1___edge_list_ch_1 -D0329 14:40:55.219 tapa.core:671] pipelined signal: edge_list_ch_1 => read_A_1___edge_list_ch_1 -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_addr_din` is connected to async_mmap port `edge_list_ch_1.read_addr` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_addr_din` is connected to async_mmap port `edge_list_ch_1.read_addr` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_1.read_addr` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_1.read_addr` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_addr_write` is connected to async_mmap port `edge_list_ch_1.read_addr` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_addr_write` is connected to async_mmap port `edge_list_ch_1.read_addr` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_addr_din` is connected to async_mmap port `edge_list_ch_1.write_addr` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_addr_din` is connected to async_mmap port `edge_list_ch_1.write_addr` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_1.write_addr` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_1.write_addr` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_addr_write` is connected to async_mmap port `edge_list_ch_1.write_addr` -D0329 14:40:55.219 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_addr_write` is connected to async_mmap port `edge_list_ch_1.write_addr` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_data_din` is connected to async_mmap port `edge_list_ch_1.write_data` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_data_din` is connected to async_mmap port `edge_list_ch_1.write_data` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_1.write_data` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_1.write_data` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_data_write` is connected to async_mmap port `edge_list_ch_1.write_data` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_data_write` is connected to async_mmap port `edge_list_ch_1.write_data` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.220 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.221 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_addr_din` is connected to async_mmap port `edge_list_ch_1.read_addr` -D0329 14:40:55.221 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_addr_din` is connected to async_mmap port `edge_list_ch_1.read_addr` -D0329 14:40:55.221 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_1.read_addr` -D0329 14:40:55.221 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_1.read_addr` -D0329 14:40:55.221 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_addr_write` is connected to async_mmap port `edge_list_ch_1.read_addr` -D0329 14:40:55.221 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_addr_write` is connected to async_mmap port `edge_list_ch_1.read_addr` -D0329 14:40:55.221 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.221 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_1.read_data` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_addr_din` is connected to async_mmap port `edge_list_ch_1.write_addr` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_addr_din` is connected to async_mmap port `edge_list_ch_1.write_addr` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_1.write_addr` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_1.write_addr` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_addr_write` is connected to async_mmap port `edge_list_ch_1.write_addr` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_addr_write` is connected to async_mmap port `edge_list_ch_1.write_addr` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_data_din` is connected to async_mmap port `edge_list_ch_1.write_data` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_data_din` is connected to async_mmap port `edge_list_ch_1.write_data` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_1.write_data` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_1.write_data` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_data_write` is connected to async_mmap port `edge_list_ch_1.write_data` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_data_write` is connected to async_mmap port `edge_list_ch_1.write_data` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.222 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.223 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.223 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.223 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.223 tapa.verilog.xilinx.async_mmap:81] `read_A_1.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.223 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.223 tapa.verilog.xilinx.async_mmap:71] `read_A_1.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_1.write_resp` -D0329 14:40:55.223 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_2___NUM_A_LEN -D0329 14:40:55.223 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_2___NUM_A_LEN -D0329 14:40:55.223 tapa.core:671] pipelined signal: P_N => read_A_2___P_N -D0329 14:40:55.223 tapa.core:671] pipelined signal: P_N => read_A_2___P_N -D0329 14:40:55.223 tapa.core:671] pipelined signal: edge_list_ch_2 => read_A_2___edge_list_ch_2 -D0329 14:40:55.223 tapa.core:671] pipelined signal: edge_list_ch_2 => read_A_2___edge_list_ch_2 -D0329 14:40:55.223 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_addr_din` is connected to async_mmap port `edge_list_ch_2.read_addr` -D0329 14:40:55.223 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_addr_din` is connected to async_mmap port `edge_list_ch_2.read_addr` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_2.read_addr` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_2.read_addr` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_addr_write` is connected to async_mmap port `edge_list_ch_2.read_addr` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_addr_write` is connected to async_mmap port `edge_list_ch_2.read_addr` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_addr_din` is connected to async_mmap port `edge_list_ch_2.write_addr` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_addr_din` is connected to async_mmap port `edge_list_ch_2.write_addr` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_2.write_addr` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_2.write_addr` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_addr_write` is connected to async_mmap port `edge_list_ch_2.write_addr` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_addr_write` is connected to async_mmap port `edge_list_ch_2.write_addr` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_data_din` is connected to async_mmap port `edge_list_ch_2.write_data` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_data_din` is connected to async_mmap port `edge_list_ch_2.write_data` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_2.write_data` -D0329 14:40:55.224 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_2.write_data` -D0329 14:40:55.225 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_data_write` is connected to async_mmap port `edge_list_ch_2.write_data` -D0329 14:40:55.225 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_data_write` is connected to async_mmap port `edge_list_ch_2.write_data` -D0329 14:40:55.225 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.225 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.225 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.225 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.225 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.225 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.225 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.225 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.225 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.225 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_addr_din` is connected to async_mmap port `edge_list_ch_2.read_addr` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_addr_din` is connected to async_mmap port `edge_list_ch_2.read_addr` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_2.read_addr` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_2.read_addr` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_addr_write` is connected to async_mmap port `edge_list_ch_2.read_addr` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_addr_write` is connected to async_mmap port `edge_list_ch_2.read_addr` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.226 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_2.read_data` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_addr_din` is connected to async_mmap port `edge_list_ch_2.write_addr` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_addr_din` is connected to async_mmap port `edge_list_ch_2.write_addr` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_2.write_addr` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_2.write_addr` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_addr_write` is connected to async_mmap port `edge_list_ch_2.write_addr` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_addr_write` is connected to async_mmap port `edge_list_ch_2.write_addr` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_data_din` is connected to async_mmap port `edge_list_ch_2.write_data` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_data_din` is connected to async_mmap port `edge_list_ch_2.write_data` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_2.write_data` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_2.write_data` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_data_write` is connected to async_mmap port `edge_list_ch_2.write_data` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_data_write` is connected to async_mmap port `edge_list_ch_2.write_data` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:81] `read_A_2.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.227 tapa.verilog.xilinx.async_mmap:71] `read_A_2.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_2.write_resp` -D0329 14:40:55.228 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_3___NUM_A_LEN -D0329 14:40:55.228 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_3___NUM_A_LEN -D0329 14:40:55.228 tapa.core:671] pipelined signal: P_N => read_A_3___P_N -D0329 14:40:55.228 tapa.core:671] pipelined signal: P_N => read_A_3___P_N -D0329 14:40:55.228 tapa.core:671] pipelined signal: edge_list_ch_3 => read_A_3___edge_list_ch_3 -D0329 14:40:55.228 tapa.core:671] pipelined signal: edge_list_ch_3 => read_A_3___edge_list_ch_3 -D0329 14:40:55.228 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_addr_din` is connected to async_mmap port `edge_list_ch_3.read_addr` -D0329 14:40:55.228 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_addr_din` is connected to async_mmap port `edge_list_ch_3.read_addr` -D0329 14:40:55.228 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_3.read_addr` -D0329 14:40:55.228 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_3.read_addr` -D0329 14:40:55.228 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_addr_write` is connected to async_mmap port `edge_list_ch_3.read_addr` -D0329 14:40:55.228 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_addr_write` is connected to async_mmap port `edge_list_ch_3.read_addr` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_addr_din` is connected to async_mmap port `edge_list_ch_3.write_addr` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_addr_din` is connected to async_mmap port `edge_list_ch_3.write_addr` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_3.write_addr` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_3.write_addr` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_addr_write` is connected to async_mmap port `edge_list_ch_3.write_addr` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_addr_write` is connected to async_mmap port `edge_list_ch_3.write_addr` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_data_din` is connected to async_mmap port `edge_list_ch_3.write_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_data_din` is connected to async_mmap port `edge_list_ch_3.write_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_3.write_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_3.write_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_data_write` is connected to async_mmap port `edge_list_ch_3.write_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_data_write` is connected to async_mmap port `edge_list_ch_3.write_data` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.229 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.230 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.230 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.230 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.230 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.230 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.230 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_addr_din` is connected to async_mmap port `edge_list_ch_3.read_addr` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_addr_din` is connected to async_mmap port `edge_list_ch_3.read_addr` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_3.read_addr` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_3.read_addr` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_addr_write` is connected to async_mmap port `edge_list_ch_3.read_addr` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_addr_write` is connected to async_mmap port `edge_list_ch_3.read_addr` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_3.read_data` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_addr_din` is connected to async_mmap port `edge_list_ch_3.write_addr` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_addr_din` is connected to async_mmap port `edge_list_ch_3.write_addr` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_3.write_addr` -D0329 14:40:55.231 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_3.write_addr` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_addr_write` is connected to async_mmap port `edge_list_ch_3.write_addr` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_addr_write` is connected to async_mmap port `edge_list_ch_3.write_addr` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_data_din` is connected to async_mmap port `edge_list_ch_3.write_data` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_data_din` is connected to async_mmap port `edge_list_ch_3.write_data` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_3.write_data` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_3.write_data` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_data_write` is connected to async_mmap port `edge_list_ch_3.write_data` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_data_write` is connected to async_mmap port `edge_list_ch_3.write_data` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:81] `read_A_3.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.232 tapa.verilog.xilinx.async_mmap:71] `read_A_3.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_3.write_resp` -D0329 14:40:55.233 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_4___NUM_A_LEN -D0329 14:40:55.233 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_4___NUM_A_LEN -D0329 14:40:55.233 tapa.core:671] pipelined signal: P_N => read_A_4___P_N -D0329 14:40:55.233 tapa.core:671] pipelined signal: P_N => read_A_4___P_N -D0329 14:40:55.233 tapa.core:671] pipelined signal: edge_list_ch_4 => read_A_4___edge_list_ch_4 -D0329 14:40:55.233 tapa.core:671] pipelined signal: edge_list_ch_4 => read_A_4___edge_list_ch_4 -D0329 14:40:55.233 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_addr_din` is connected to async_mmap port `edge_list_ch_4.read_addr` -D0329 14:40:55.233 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_addr_din` is connected to async_mmap port `edge_list_ch_4.read_addr` -D0329 14:40:55.233 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_4.read_addr` -D0329 14:40:55.233 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_4.read_addr` -D0329 14:40:55.233 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_addr_write` is connected to async_mmap port `edge_list_ch_4.read_addr` -D0329 14:40:55.233 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_addr_write` is connected to async_mmap port `edge_list_ch_4.read_addr` -D0329 14:40:55.233 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.233 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.233 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.233 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.233 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.233 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.233 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.233 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_addr_din` is connected to async_mmap port `edge_list_ch_4.write_addr` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_addr_din` is connected to async_mmap port `edge_list_ch_4.write_addr` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_4.write_addr` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_4.write_addr` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_addr_write` is connected to async_mmap port `edge_list_ch_4.write_addr` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_addr_write` is connected to async_mmap port `edge_list_ch_4.write_addr` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_data_din` is connected to async_mmap port `edge_list_ch_4.write_data` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_data_din` is connected to async_mmap port `edge_list_ch_4.write_data` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_4.write_data` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_4.write_data` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_data_write` is connected to async_mmap port `edge_list_ch_4.write_data` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_data_write` is connected to async_mmap port `edge_list_ch_4.write_data` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.234 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.235 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_addr_din` is connected to async_mmap port `edge_list_ch_4.read_addr` -D0329 14:40:55.235 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_addr_din` is connected to async_mmap port `edge_list_ch_4.read_addr` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_4.read_addr` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_4.read_addr` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_addr_write` is connected to async_mmap port `edge_list_ch_4.read_addr` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_addr_write` is connected to async_mmap port `edge_list_ch_4.read_addr` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_4.read_data` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_addr_din` is connected to async_mmap port `edge_list_ch_4.write_addr` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_addr_din` is connected to async_mmap port `edge_list_ch_4.write_addr` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_4.write_addr` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_4.write_addr` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_addr_write` is connected to async_mmap port `edge_list_ch_4.write_addr` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_addr_write` is connected to async_mmap port `edge_list_ch_4.write_addr` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_data_din` is connected to async_mmap port `edge_list_ch_4.write_data` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_data_din` is connected to async_mmap port `edge_list_ch_4.write_data` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_4.write_data` -D0329 14:40:55.236 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_4.write_data` -D0329 14:40:55.237 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_data_write` is connected to async_mmap port `edge_list_ch_4.write_data` -D0329 14:40:55.237 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_data_write` is connected to async_mmap port `edge_list_ch_4.write_data` -D0329 14:40:55.237 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.237 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.237 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.237 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.237 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.237 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.237 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.237 tapa.verilog.xilinx.async_mmap:81] `read_A_4.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.237 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.237 tapa.verilog.xilinx.async_mmap:71] `read_A_4.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_4.write_resp` -D0329 14:40:55.237 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_5___NUM_A_LEN -D0329 14:40:55.237 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_5___NUM_A_LEN -D0329 14:40:55.237 tapa.core:671] pipelined signal: P_N => read_A_5___P_N -D0329 14:40:55.237 tapa.core:671] pipelined signal: P_N => read_A_5___P_N -D0329 14:40:55.238 tapa.core:671] pipelined signal: edge_list_ch_5 => read_A_5___edge_list_ch_5 -D0329 14:40:55.238 tapa.core:671] pipelined signal: edge_list_ch_5 => read_A_5___edge_list_ch_5 -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_addr_din` is connected to async_mmap port `edge_list_ch_5.read_addr` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_addr_din` is connected to async_mmap port `edge_list_ch_5.read_addr` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_5.read_addr` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_5.read_addr` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_addr_write` is connected to async_mmap port `edge_list_ch_5.read_addr` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_addr_write` is connected to async_mmap port `edge_list_ch_5.read_addr` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_addr_din` is connected to async_mmap port `edge_list_ch_5.write_addr` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_addr_din` is connected to async_mmap port `edge_list_ch_5.write_addr` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_5.write_addr` -D0329 14:40:55.238 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_5.write_addr` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_addr_write` is connected to async_mmap port `edge_list_ch_5.write_addr` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_addr_write` is connected to async_mmap port `edge_list_ch_5.write_addr` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_data_din` is connected to async_mmap port `edge_list_ch_5.write_data` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_data_din` is connected to async_mmap port `edge_list_ch_5.write_data` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_5.write_data` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_5.write_data` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_data_write` is connected to async_mmap port `edge_list_ch_5.write_data` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_data_write` is connected to async_mmap port `edge_list_ch_5.write_data` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.239 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.240 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_addr_din` is connected to async_mmap port `edge_list_ch_5.read_addr` -D0329 14:40:55.240 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_addr_din` is connected to async_mmap port `edge_list_ch_5.read_addr` -D0329 14:40:55.240 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_5.read_addr` -D0329 14:40:55.240 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_5.read_addr` -D0329 14:40:55.240 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_addr_write` is connected to async_mmap port `edge_list_ch_5.read_addr` -D0329 14:40:55.240 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_addr_write` is connected to async_mmap port `edge_list_ch_5.read_addr` -D0329 14:40:55.240 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.240 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.240 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.240 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_5.read_data` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_addr_din` is connected to async_mmap port `edge_list_ch_5.write_addr` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_addr_din` is connected to async_mmap port `edge_list_ch_5.write_addr` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_5.write_addr` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_5.write_addr` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_addr_write` is connected to async_mmap port `edge_list_ch_5.write_addr` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_addr_write` is connected to async_mmap port `edge_list_ch_5.write_addr` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_data_din` is connected to async_mmap port `edge_list_ch_5.write_data` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_data_din` is connected to async_mmap port `edge_list_ch_5.write_data` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_5.write_data` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_5.write_data` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_data_write` is connected to async_mmap port `edge_list_ch_5.write_data` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_data_write` is connected to async_mmap port `edge_list_ch_5.write_data` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.241 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.242 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.242 tapa.verilog.xilinx.async_mmap:81] `read_A_5.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.242 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.242 tapa.verilog.xilinx.async_mmap:71] `read_A_5.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_5.write_resp` -D0329 14:40:55.242 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_6___NUM_A_LEN -D0329 14:40:55.242 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_6___NUM_A_LEN -D0329 14:40:55.242 tapa.core:671] pipelined signal: P_N => read_A_6___P_N -D0329 14:40:55.242 tapa.core:671] pipelined signal: P_N => read_A_6___P_N -D0329 14:40:55.242 tapa.core:671] pipelined signal: edge_list_ch_6 => read_A_6___edge_list_ch_6 -D0329 14:40:55.242 tapa.core:671] pipelined signal: edge_list_ch_6 => read_A_6___edge_list_ch_6 -D0329 14:40:55.242 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_addr_din` is connected to async_mmap port `edge_list_ch_6.read_addr` -D0329 14:40:55.242 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_addr_din` is connected to async_mmap port `edge_list_ch_6.read_addr` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_6.read_addr` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_6.read_addr` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_addr_write` is connected to async_mmap port `edge_list_ch_6.read_addr` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_addr_write` is connected to async_mmap port `edge_list_ch_6.read_addr` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_addr_din` is connected to async_mmap port `edge_list_ch_6.write_addr` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_addr_din` is connected to async_mmap port `edge_list_ch_6.write_addr` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_6.write_addr` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_6.write_addr` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_addr_write` is connected to async_mmap port `edge_list_ch_6.write_addr` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_addr_write` is connected to async_mmap port `edge_list_ch_6.write_addr` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_data_din` is connected to async_mmap port `edge_list_ch_6.write_data` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_data_din` is connected to async_mmap port `edge_list_ch_6.write_data` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_6.write_data` -D0329 14:40:55.243 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_6.write_data` -D0329 14:40:55.244 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_data_write` is connected to async_mmap port `edge_list_ch_6.write_data` -D0329 14:40:55.244 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_data_write` is connected to async_mmap port `edge_list_ch_6.write_data` -D0329 14:40:55.244 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.244 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.244 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.244 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.244 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.244 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.244 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.244 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.244 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.244 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.245 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_addr_din` is connected to async_mmap port `edge_list_ch_6.read_addr` -D0329 14:40:55.245 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_addr_din` is connected to async_mmap port `edge_list_ch_6.read_addr` -D0329 14:40:55.245 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_6.read_addr` -D0329 14:40:55.245 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_6.read_addr` -D0329 14:40:55.245 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_addr_write` is connected to async_mmap port `edge_list_ch_6.read_addr` -D0329 14:40:55.245 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_addr_write` is connected to async_mmap port `edge_list_ch_6.read_addr` -D0329 14:40:55.245 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.245 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.245 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.245 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.245 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.245 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.245 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.245 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_6.read_data` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_addr_din` is connected to async_mmap port `edge_list_ch_6.write_addr` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_addr_din` is connected to async_mmap port `edge_list_ch_6.write_addr` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_6.write_addr` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_6.write_addr` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_addr_write` is connected to async_mmap port `edge_list_ch_6.write_addr` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_addr_write` is connected to async_mmap port `edge_list_ch_6.write_addr` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_data_din` is connected to async_mmap port `edge_list_ch_6.write_data` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_data_din` is connected to async_mmap port `edge_list_ch_6.write_data` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_6.write_data` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_6.write_data` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_data_write` is connected to async_mmap port `edge_list_ch_6.write_data` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_data_write` is connected to async_mmap port `edge_list_ch_6.write_data` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:81] `read_A_6.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.246 tapa.verilog.xilinx.async_mmap:71] `read_A_6.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_6.write_resp` -D0329 14:40:55.247 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_7___NUM_A_LEN -D0329 14:40:55.247 tapa.core:671] pipelined signal: NUM_A_LEN => read_A_7___NUM_A_LEN -D0329 14:40:55.247 tapa.core:671] pipelined signal: P_N => read_A_7___P_N -D0329 14:40:55.247 tapa.core:671] pipelined signal: P_N => read_A_7___P_N -D0329 14:40:55.247 tapa.core:671] pipelined signal: edge_list_ch_7 => read_A_7___edge_list_ch_7 -D0329 14:40:55.247 tapa.core:671] pipelined signal: edge_list_ch_7 => read_A_7___edge_list_ch_7 -D0329 14:40:55.247 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_addr_din` is connected to async_mmap port `edge_list_ch_7.read_addr` -D0329 14:40:55.247 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_addr_din` is connected to async_mmap port `edge_list_ch_7.read_addr` -D0329 14:40:55.247 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_7.read_addr` -D0329 14:40:55.247 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_7.read_addr` -D0329 14:40:55.247 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_addr_write` is connected to async_mmap port `edge_list_ch_7.read_addr` -D0329 14:40:55.247 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_addr_write` is connected to async_mmap port `edge_list_ch_7.read_addr` -D0329 14:40:55.247 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.247 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_addr_din` is connected to async_mmap port `edge_list_ch_7.write_addr` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_addr_din` is connected to async_mmap port `edge_list_ch_7.write_addr` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_7.write_addr` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_7.write_addr` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_addr_write` is connected to async_mmap port `edge_list_ch_7.write_addr` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_addr_write` is connected to async_mmap port `edge_list_ch_7.write_addr` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_data_din` is connected to async_mmap port `edge_list_ch_7.write_data` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_data_din` is connected to async_mmap port `edge_list_ch_7.write_data` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_7.write_data` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_7.write_data` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_data_write` is connected to async_mmap port `edge_list_ch_7.write_data` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_data_write` is connected to async_mmap port `edge_list_ch_7.write_data` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.248 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.249 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.249 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.249 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.249 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_addr_din` is connected to async_mmap port `edge_list_ch_7.read_addr` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_addr_din` is connected to async_mmap port `edge_list_ch_7.read_addr` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_7.read_addr` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_addr_full_n` is connected to async_mmap port `edge_list_ch_7.read_addr` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_addr_write` is connected to async_mmap port `edge_list_ch_7.read_addr` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_addr_write` is connected to async_mmap port `edge_list_ch_7.read_addr` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_data_s_dout` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_read_data_peek_dout` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_data_s_empty_n` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_read_data_s_read` is connected to async_mmap port `edge_list_ch_7.read_data` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_addr_din` is connected to async_mmap port `edge_list_ch_7.write_addr` -D0329 14:40:55.250 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_addr_din` is connected to async_mmap port `edge_list_ch_7.write_addr` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_7.write_addr` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_addr_full_n` is connected to async_mmap port `edge_list_ch_7.write_addr` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_addr_write` is connected to async_mmap port `edge_list_ch_7.write_addr` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_addr_write` is connected to async_mmap port `edge_list_ch_7.write_addr` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_data_din` is connected to async_mmap port `edge_list_ch_7.write_data` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_data_din` is connected to async_mmap port `edge_list_ch_7.write_data` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_7.write_data` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_data_full_n` is connected to async_mmap port `edge_list_ch_7.write_data` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_data_write` is connected to async_mmap port `edge_list_ch_7.write_data` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_data_write` is connected to async_mmap port `edge_list_ch_7.write_data` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_resp_s_dout` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_write_resp_peek_dout` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:81] `read_A_7.A_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.251 tapa.verilog.xilinx.async_mmap:71] `read_A_7.A_write_resp_s_read` is connected to async_mmap port `edge_list_ch_7.write_resp` -D0329 14:40:55.252 tapa.core:671] pipelined signal: K => read_B_0___K -D0329 14:40:55.252 tapa.core:671] pipelined signal: K => read_B_0___K -D0329 14:40:55.252 tapa.core:671] pipelined signal: P_N => read_B_0___P_N -D0329 14:40:55.252 tapa.core:671] pipelined signal: P_N => read_B_0___P_N -D0329 14:40:55.252 tapa.core:671] pipelined signal: mat_B_ch_0 => read_B_0___mat_B_ch_0 -D0329 14:40:55.252 tapa.core:671] pipelined signal: mat_B_ch_0 => read_B_0___mat_B_ch_0 -D0329 14:40:55.252 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_addr_din` is connected to async_mmap port `mat_B_ch_0.read_addr` -D0329 14:40:55.252 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_addr_din` is connected to async_mmap port `mat_B_ch_0.read_addr` -D0329 14:40:55.252 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_0.read_addr` -D0329 14:40:55.252 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_0.read_addr` -D0329 14:40:55.252 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_addr_write` is connected to async_mmap port `mat_B_ch_0.read_addr` -D0329 14:40:55.252 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_addr_write` is connected to async_mmap port `mat_B_ch_0.read_addr` -D0329 14:40:55.252 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.252 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.252 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.252 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_addr_din` is connected to async_mmap port `mat_B_ch_0.write_addr` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_addr_din` is connected to async_mmap port `mat_B_ch_0.write_addr` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_0.write_addr` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_0.write_addr` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_addr_write` is connected to async_mmap port `mat_B_ch_0.write_addr` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_addr_write` is connected to async_mmap port `mat_B_ch_0.write_addr` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_data_din` is connected to async_mmap port `mat_B_ch_0.write_data` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_data_din` is connected to async_mmap port `mat_B_ch_0.write_data` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_0.write_data` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_0.write_data` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_data_write` is connected to async_mmap port `mat_B_ch_0.write_data` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_data_write` is connected to async_mmap port `mat_B_ch_0.write_data` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.253 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.254 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.254 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_addr_din` is connected to async_mmap port `mat_B_ch_0.read_addr` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_addr_din` is connected to async_mmap port `mat_B_ch_0.read_addr` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_0.read_addr` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_0.read_addr` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_addr_write` is connected to async_mmap port `mat_B_ch_0.read_addr` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_addr_write` is connected to async_mmap port `mat_B_ch_0.read_addr` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_0.read_data` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_addr_din` is connected to async_mmap port `mat_B_ch_0.write_addr` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_addr_din` is connected to async_mmap port `mat_B_ch_0.write_addr` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_0.write_addr` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_0.write_addr` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_addr_write` is connected to async_mmap port `mat_B_ch_0.write_addr` -D0329 14:40:55.255 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_addr_write` is connected to async_mmap port `mat_B_ch_0.write_addr` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_data_din` is connected to async_mmap port `mat_B_ch_0.write_data` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_data_din` is connected to async_mmap port `mat_B_ch_0.write_data` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_0.write_data` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_0.write_data` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_data_write` is connected to async_mmap port `mat_B_ch_0.write_data` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_data_write` is connected to async_mmap port `mat_B_ch_0.write_data` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:81] `read_B_0.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.256 tapa.verilog.xilinx.async_mmap:71] `read_B_0.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_0.write_resp` -D0329 14:40:55.256 tapa.core:671] pipelined signal: K => read_B_1___K -D0329 14:40:55.256 tapa.core:671] pipelined signal: K => read_B_1___K -D0329 14:40:55.257 tapa.core:671] pipelined signal: P_N => read_B_1___P_N -D0329 14:40:55.257 tapa.core:671] pipelined signal: P_N => read_B_1___P_N -D0329 14:40:55.257 tapa.core:671] pipelined signal: mat_B_ch_1 => read_B_1___mat_B_ch_1 -D0329 14:40:55.257 tapa.core:671] pipelined signal: mat_B_ch_1 => read_B_1___mat_B_ch_1 -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_addr_din` is connected to async_mmap port `mat_B_ch_1.read_addr` -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_addr_din` is connected to async_mmap port `mat_B_ch_1.read_addr` -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_1.read_addr` -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_1.read_addr` -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_addr_write` is connected to async_mmap port `mat_B_ch_1.read_addr` -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_addr_write` is connected to async_mmap port `mat_B_ch_1.read_addr` -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.257 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_addr_din` is connected to async_mmap port `mat_B_ch_1.write_addr` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_addr_din` is connected to async_mmap port `mat_B_ch_1.write_addr` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_1.write_addr` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_1.write_addr` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_addr_write` is connected to async_mmap port `mat_B_ch_1.write_addr` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_addr_write` is connected to async_mmap port `mat_B_ch_1.write_addr` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_data_din` is connected to async_mmap port `mat_B_ch_1.write_data` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_data_din` is connected to async_mmap port `mat_B_ch_1.write_data` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_1.write_data` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_1.write_data` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_data_write` is connected to async_mmap port `mat_B_ch_1.write_data` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_data_write` is connected to async_mmap port `mat_B_ch_1.write_data` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.258 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.259 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_addr_din` is connected to async_mmap port `mat_B_ch_1.read_addr` -D0329 14:40:55.259 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_addr_din` is connected to async_mmap port `mat_B_ch_1.read_addr` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_1.read_addr` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_1.read_addr` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_addr_write` is connected to async_mmap port `mat_B_ch_1.read_addr` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_addr_write` is connected to async_mmap port `mat_B_ch_1.read_addr` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_1.read_data` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_addr_din` is connected to async_mmap port `mat_B_ch_1.write_addr` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_addr_din` is connected to async_mmap port `mat_B_ch_1.write_addr` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_1.write_addr` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_1.write_addr` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_addr_write` is connected to async_mmap port `mat_B_ch_1.write_addr` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_addr_write` is connected to async_mmap port `mat_B_ch_1.write_addr` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_data_din` is connected to async_mmap port `mat_B_ch_1.write_data` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_data_din` is connected to async_mmap port `mat_B_ch_1.write_data` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_1.write_data` -D0329 14:40:55.260 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_1.write_data` -D0329 14:40:55.261 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_data_write` is connected to async_mmap port `mat_B_ch_1.write_data` -D0329 14:40:55.261 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_data_write` is connected to async_mmap port `mat_B_ch_1.write_data` -D0329 14:40:55.261 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.261 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.261 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.261 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.261 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.261 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.261 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.261 tapa.verilog.xilinx.async_mmap:81] `read_B_1.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.261 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.261 tapa.verilog.xilinx.async_mmap:71] `read_B_1.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_1.write_resp` -D0329 14:40:55.261 tapa.core:671] pipelined signal: K => read_B_2___K -D0329 14:40:55.261 tapa.core:671] pipelined signal: K => read_B_2___K -D0329 14:40:55.261 tapa.core:671] pipelined signal: P_N => read_B_2___P_N -D0329 14:40:55.261 tapa.core:671] pipelined signal: P_N => read_B_2___P_N -D0329 14:40:55.262 tapa.core:671] pipelined signal: mat_B_ch_2 => read_B_2___mat_B_ch_2 -D0329 14:40:55.262 tapa.core:671] pipelined signal: mat_B_ch_2 => read_B_2___mat_B_ch_2 -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_addr_din` is connected to async_mmap port `mat_B_ch_2.read_addr` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_addr_din` is connected to async_mmap port `mat_B_ch_2.read_addr` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_2.read_addr` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_2.read_addr` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_addr_write` is connected to async_mmap port `mat_B_ch_2.read_addr` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_addr_write` is connected to async_mmap port `mat_B_ch_2.read_addr` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_addr_din` is connected to async_mmap port `mat_B_ch_2.write_addr` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_addr_din` is connected to async_mmap port `mat_B_ch_2.write_addr` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_2.write_addr` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_2.write_addr` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_addr_write` is connected to async_mmap port `mat_B_ch_2.write_addr` -D0329 14:40:55.262 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_addr_write` is connected to async_mmap port `mat_B_ch_2.write_addr` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_data_din` is connected to async_mmap port `mat_B_ch_2.write_data` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_data_din` is connected to async_mmap port `mat_B_ch_2.write_data` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_2.write_data` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_2.write_data` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_data_write` is connected to async_mmap port `mat_B_ch_2.write_data` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_data_write` is connected to async_mmap port `mat_B_ch_2.write_data` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.263 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.264 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_addr_din` is connected to async_mmap port `mat_B_ch_2.read_addr` -D0329 14:40:55.264 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_addr_din` is connected to async_mmap port `mat_B_ch_2.read_addr` -D0329 14:40:55.264 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_2.read_addr` -D0329 14:40:55.264 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_2.read_addr` -D0329 14:40:55.264 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_addr_write` is connected to async_mmap port `mat_B_ch_2.read_addr` -D0329 14:40:55.264 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_addr_write` is connected to async_mmap port `mat_B_ch_2.read_addr` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_2.read_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_addr_din` is connected to async_mmap port `mat_B_ch_2.write_addr` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_addr_din` is connected to async_mmap port `mat_B_ch_2.write_addr` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_2.write_addr` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_2.write_addr` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_addr_write` is connected to async_mmap port `mat_B_ch_2.write_addr` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_addr_write` is connected to async_mmap port `mat_B_ch_2.write_addr` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_data_din` is connected to async_mmap port `mat_B_ch_2.write_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_data_din` is connected to async_mmap port `mat_B_ch_2.write_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_2.write_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_2.write_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_data_write` is connected to async_mmap port `mat_B_ch_2.write_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_data_write` is connected to async_mmap port `mat_B_ch_2.write_data` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.265 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.266 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.266 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.266 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.266 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.266 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.266 tapa.verilog.xilinx.async_mmap:81] `read_B_2.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.266 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.266 tapa.verilog.xilinx.async_mmap:71] `read_B_2.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_2.write_resp` -D0329 14:40:55.266 tapa.core:671] pipelined signal: K => read_B_3___K -D0329 14:40:55.266 tapa.core:671] pipelined signal: K => read_B_3___K -D0329 14:40:55.266 tapa.core:671] pipelined signal: P_N => read_B_3___P_N -D0329 14:40:55.266 tapa.core:671] pipelined signal: P_N => read_B_3___P_N -D0329 14:40:55.266 tapa.core:671] pipelined signal: mat_B_ch_3 => read_B_3___mat_B_ch_3 -D0329 14:40:55.266 tapa.core:671] pipelined signal: mat_B_ch_3 => read_B_3___mat_B_ch_3 -D0329 14:40:55.266 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_addr_din` is connected to async_mmap port `mat_B_ch_3.read_addr` -D0329 14:40:55.266 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_addr_din` is connected to async_mmap port `mat_B_ch_3.read_addr` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_3.read_addr` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_3.read_addr` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_addr_write` is connected to async_mmap port `mat_B_ch_3.read_addr` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_addr_write` is connected to async_mmap port `mat_B_ch_3.read_addr` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_addr_din` is connected to async_mmap port `mat_B_ch_3.write_addr` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_addr_din` is connected to async_mmap port `mat_B_ch_3.write_addr` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_3.write_addr` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_3.write_addr` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_addr_write` is connected to async_mmap port `mat_B_ch_3.write_addr` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_addr_write` is connected to async_mmap port `mat_B_ch_3.write_addr` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_data_din` is connected to async_mmap port `mat_B_ch_3.write_data` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_data_din` is connected to async_mmap port `mat_B_ch_3.write_data` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_3.write_data` -D0329 14:40:55.267 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_3.write_data` -D0329 14:40:55.268 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_data_write` is connected to async_mmap port `mat_B_ch_3.write_data` -D0329 14:40:55.268 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_data_write` is connected to async_mmap port `mat_B_ch_3.write_data` -D0329 14:40:55.268 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.268 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.268 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.268 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.268 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.268 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.268 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.268 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.268 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.268 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.269 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_addr_din` is connected to async_mmap port `mat_B_ch_3.read_addr` -D0329 14:40:55.269 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_addr_din` is connected to async_mmap port `mat_B_ch_3.read_addr` -D0329 14:40:55.269 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_3.read_addr` -D0329 14:40:55.269 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_addr_full_n` is connected to async_mmap port `mat_B_ch_3.read_addr` -D0329 14:40:55.269 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_addr_write` is connected to async_mmap port `mat_B_ch_3.read_addr` -D0329 14:40:55.269 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_addr_write` is connected to async_mmap port `mat_B_ch_3.read_addr` -D0329 14:40:55.269 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.269 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_data_s_dout` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.269 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.269 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_read_data_peek_dout` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.269 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.269 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_data_s_empty_n` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.270 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.270 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_read_data_peek_empty_n` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.270 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.270 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_read_data_s_read` is connected to async_mmap port `mat_B_ch_3.read_data` -D0329 14:40:55.270 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_addr_din` is connected to async_mmap port `mat_B_ch_3.write_addr` -D0329 14:40:55.270 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_addr_din` is connected to async_mmap port `mat_B_ch_3.write_addr` -D0329 14:40:55.270 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_3.write_addr` -D0329 14:40:55.270 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_addr_full_n` is connected to async_mmap port `mat_B_ch_3.write_addr` -D0329 14:40:55.270 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_addr_write` is connected to async_mmap port `mat_B_ch_3.write_addr` -D0329 14:40:55.270 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_addr_write` is connected to async_mmap port `mat_B_ch_3.write_addr` -D0329 14:40:55.270 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_data_din` is connected to async_mmap port `mat_B_ch_3.write_data` -D0329 14:40:55.270 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_data_din` is connected to async_mmap port `mat_B_ch_3.write_data` -D0329 14:40:55.271 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_3.write_data` -D0329 14:40:55.271 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_data_full_n` is connected to async_mmap port `mat_B_ch_3.write_data` -D0329 14:40:55.271 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_data_write` is connected to async_mmap port `mat_B_ch_3.write_data` -D0329 14:40:55.271 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_data_write` is connected to async_mmap port `mat_B_ch_3.write_data` -D0329 14:40:55.271 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.271 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_resp_s_dout` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.271 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.271 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_write_resp_peek_dout` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.271 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.271 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_resp_s_empty_n` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.271 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.271 tapa.verilog.xilinx.async_mmap:81] `read_B_3.B_write_resp_peek_empty_n` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.271 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.271 tapa.verilog.xilinx.async_mmap:71] `read_B_3.B_write_resp_s_read` is connected to async_mmap port `mat_B_ch_3.write_resp` -D0329 14:40:55.271 tapa.core:671] pipelined signal: M => read_C_0___M -D0329 14:40:55.271 tapa.core:671] pipelined signal: M => read_C_0___M -D0329 14:40:55.272 tapa.core:671] pipelined signal: P_N => read_C_0___P_N -D0329 14:40:55.272 tapa.core:671] pipelined signal: P_N => read_C_0___P_N -D0329 14:40:55.272 tapa.core:671] pipelined signal: mat_C_ch_in_0 => read_C_0___mat_C_ch_in_0 -D0329 14:40:55.272 tapa.core:671] pipelined signal: mat_C_ch_in_0 => read_C_0___mat_C_ch_in_0 -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_0.read_addr` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_0.read_addr` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_0.read_addr` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_0.read_addr` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_0.read_addr` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_0.read_addr` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_0.write_addr` -D0329 14:40:55.272 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_0.write_addr` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_0.write_addr` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_0.write_addr` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_0.write_addr` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_0.write_addr` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_0.write_data` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_0.write_data` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_0.write_data` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_0.write_data` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_0.write_data` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_0.write_data` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.273 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.274 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_0.read_addr` -D0329 14:40:55.274 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_0.read_addr` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_0.read_addr` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_0.read_addr` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_0.read_addr` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_0.read_addr` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_0.read_data` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_0.write_addr` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_0.write_addr` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_0.write_addr` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_0.write_addr` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_0.write_addr` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_0.write_addr` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_0.write_data` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_0.write_data` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_0.write_data` -D0329 14:40:55.275 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_0.write_data` -D0329 14:40:55.276 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_0.write_data` -D0329 14:40:55.276 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_0.write_data` -D0329 14:40:55.276 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.276 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.276 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.276 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.276 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.276 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.276 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.276 tapa.verilog.xilinx.async_mmap:81] `read_C_0.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.276 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.276 tapa.verilog.xilinx.async_mmap:71] `read_C_0.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_0.write_resp` -D0329 14:40:55.276 tapa.core:671] pipelined signal: M => read_C_1___M -D0329 14:40:55.276 tapa.core:671] pipelined signal: M => read_C_1___M -D0329 14:40:55.277 tapa.core:671] pipelined signal: P_N => read_C_1___P_N -D0329 14:40:55.277 tapa.core:671] pipelined signal: P_N => read_C_1___P_N -D0329 14:40:55.277 tapa.core:671] pipelined signal: mat_C_ch_in_1 => read_C_1___mat_C_ch_in_1 -D0329 14:40:55.277 tapa.core:671] pipelined signal: mat_C_ch_in_1 => read_C_1___mat_C_ch_in_1 -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_1.read_addr` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_1.read_addr` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_1.read_addr` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_1.read_addr` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_1.read_addr` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_1.read_addr` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_1.write_addr` -D0329 14:40:55.277 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_1.write_addr` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_1.write_addr` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_1.write_addr` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_1.write_addr` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_1.write_addr` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_1.write_data` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_1.write_data` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_1.write_data` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_1.write_data` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_1.write_data` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_1.write_data` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.278 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.279 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_1.read_addr` -D0329 14:40:55.279 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_1.read_addr` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_1.read_addr` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_1.read_addr` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_1.read_addr` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_1.read_addr` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_1.read_data` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_1.write_addr` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_1.write_addr` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_1.write_addr` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_1.write_addr` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_1.write_addr` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_1.write_addr` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_1.write_data` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_1.write_data` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_1.write_data` -D0329 14:40:55.280 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_1.write_data` -D0329 14:40:55.281 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_1.write_data` -D0329 14:40:55.281 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_1.write_data` -D0329 14:40:55.281 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.281 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.281 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.281 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.281 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.281 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.281 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.281 tapa.verilog.xilinx.async_mmap:81] `read_C_1.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.281 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.281 tapa.verilog.xilinx.async_mmap:71] `read_C_1.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_1.write_resp` -D0329 14:40:55.281 tapa.core:671] pipelined signal: M => read_C_2___M -D0329 14:40:55.281 tapa.core:671] pipelined signal: M => read_C_2___M -D0329 14:40:55.282 tapa.core:671] pipelined signal: P_N => read_C_2___P_N -D0329 14:40:55.282 tapa.core:671] pipelined signal: P_N => read_C_2___P_N -D0329 14:40:55.282 tapa.core:671] pipelined signal: mat_C_ch_in_2 => read_C_2___mat_C_ch_in_2 -D0329 14:40:55.282 tapa.core:671] pipelined signal: mat_C_ch_in_2 => read_C_2___mat_C_ch_in_2 -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_2.read_addr` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_2.read_addr` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_2.read_addr` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_2.read_addr` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_2.read_addr` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_2.read_addr` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_2.write_addr` -D0329 14:40:55.282 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_2.write_addr` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_2.write_addr` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_2.write_addr` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_2.write_addr` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_2.write_addr` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_2.write_data` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_2.write_data` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_2.write_data` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_2.write_data` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_2.write_data` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_2.write_data` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.283 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_2.read_addr` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_2.read_addr` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_2.read_addr` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_2.read_addr` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_2.read_addr` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_2.read_addr` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_2.read_data` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_2.write_addr` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_2.write_addr` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_2.write_addr` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_2.write_addr` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_2.write_addr` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_2.write_addr` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_2.write_data` -D0329 14:40:55.285 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_2.write_data` -D0329 14:40:55.286 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_2.write_data` -D0329 14:40:55.286 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_2.write_data` -D0329 14:40:55.286 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_2.write_data` -D0329 14:40:55.286 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_2.write_data` -D0329 14:40:55.286 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.286 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.286 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.286 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.286 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.286 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.286 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.286 tapa.verilog.xilinx.async_mmap:81] `read_C_2.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.286 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.286 tapa.verilog.xilinx.async_mmap:71] `read_C_2.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_2.write_resp` -D0329 14:40:55.286 tapa.core:671] pipelined signal: M => read_C_3___M -D0329 14:40:55.286 tapa.core:671] pipelined signal: M => read_C_3___M -D0329 14:40:55.287 tapa.core:671] pipelined signal: P_N => read_C_3___P_N -D0329 14:40:55.287 tapa.core:671] pipelined signal: P_N => read_C_3___P_N -D0329 14:40:55.287 tapa.core:671] pipelined signal: mat_C_ch_in_3 => read_C_3___mat_C_ch_in_3 -D0329 14:40:55.287 tapa.core:671] pipelined signal: mat_C_ch_in_3 => read_C_3___mat_C_ch_in_3 -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_3.read_addr` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_3.read_addr` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_3.read_addr` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_3.read_addr` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_3.read_addr` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_3.read_addr` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_3.write_addr` -D0329 14:40:55.287 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_3.write_addr` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_3.write_addr` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_3.write_addr` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_3.write_addr` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_3.write_addr` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_3.write_data` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_3.write_data` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_3.write_data` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_3.write_data` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_3.write_data` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_3.write_data` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.288 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.289 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_3.read_addr` -D0329 14:40:55.289 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_3.read_addr` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_3.read_addr` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_3.read_addr` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_3.read_addr` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_3.read_addr` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_3.read_data` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_3.write_addr` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_3.write_addr` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_3.write_addr` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_3.write_addr` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_3.write_addr` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_3.write_addr` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_3.write_data` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_3.write_data` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_3.write_data` -D0329 14:40:55.290 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_3.write_data` -D0329 14:40:55.291 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_3.write_data` -D0329 14:40:55.291 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_3.write_data` -D0329 14:40:55.291 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.291 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.291 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.291 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.291 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.291 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.291 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.291 tapa.verilog.xilinx.async_mmap:81] `read_C_3.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.291 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.291 tapa.verilog.xilinx.async_mmap:71] `read_C_3.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_3.write_resp` -D0329 14:40:55.291 tapa.core:671] pipelined signal: M => read_C_4___M -D0329 14:40:55.291 tapa.core:671] pipelined signal: M => read_C_4___M -D0329 14:40:55.292 tapa.core:671] pipelined signal: P_N => read_C_4___P_N -D0329 14:40:55.292 tapa.core:671] pipelined signal: P_N => read_C_4___P_N -D0329 14:40:55.292 tapa.core:671] pipelined signal: mat_C_ch_in_4 => read_C_4___mat_C_ch_in_4 -D0329 14:40:55.292 tapa.core:671] pipelined signal: mat_C_ch_in_4 => read_C_4___mat_C_ch_in_4 -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_4.read_addr` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_4.read_addr` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_4.read_addr` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_4.read_addr` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_4.read_addr` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_4.read_addr` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_4.write_addr` -D0329 14:40:55.292 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_4.write_addr` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_4.write_addr` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_4.write_addr` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_4.write_addr` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_4.write_addr` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_4.write_data` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_4.write_data` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_4.write_data` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_4.write_data` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_4.write_data` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_4.write_data` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.293 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.294 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_4.read_addr` -D0329 14:40:55.294 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_4.read_addr` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_4.read_addr` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_4.read_addr` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_4.read_addr` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_4.read_addr` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_4.read_data` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_4.write_addr` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_4.write_addr` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_4.write_addr` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_4.write_addr` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_4.write_addr` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_4.write_addr` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_4.write_data` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_4.write_data` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_4.write_data` -D0329 14:40:55.295 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_4.write_data` -D0329 14:40:55.296 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_4.write_data` -D0329 14:40:55.296 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_4.write_data` -D0329 14:40:55.296 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.296 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.296 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.296 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.296 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.296 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.296 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.296 tapa.verilog.xilinx.async_mmap:81] `read_C_4.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.296 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.296 tapa.verilog.xilinx.async_mmap:71] `read_C_4.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_4.write_resp` -D0329 14:40:55.296 tapa.core:671] pipelined signal: M => read_C_5___M -D0329 14:40:55.296 tapa.core:671] pipelined signal: M => read_C_5___M -D0329 14:40:55.297 tapa.core:671] pipelined signal: P_N => read_C_5___P_N -D0329 14:40:55.297 tapa.core:671] pipelined signal: P_N => read_C_5___P_N -D0329 14:40:55.297 tapa.core:671] pipelined signal: mat_C_ch_in_5 => read_C_5___mat_C_ch_in_5 -D0329 14:40:55.297 tapa.core:671] pipelined signal: mat_C_ch_in_5 => read_C_5___mat_C_ch_in_5 -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_5.read_addr` -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_5.read_addr` -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_5.read_addr` -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_5.read_addr` -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_5.read_addr` -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_5.read_addr` -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.297 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_5.write_addr` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_5.write_addr` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_5.write_addr` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_5.write_addr` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_5.write_addr` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_5.write_addr` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_5.write_data` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_5.write_data` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_5.write_data` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_5.write_data` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_5.write_data` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_5.write_data` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.298 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_5.read_addr` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_5.read_addr` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_5.read_addr` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_5.read_addr` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_5.read_addr` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_5.read_addr` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_5.read_data` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_5.write_addr` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_5.write_addr` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_5.write_addr` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_5.write_addr` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_5.write_addr` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_5.write_addr` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_5.write_data` -D0329 14:40:55.300 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_5.write_data` -D0329 14:40:55.301 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_5.write_data` -D0329 14:40:55.301 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_5.write_data` -D0329 14:40:55.301 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_5.write_data` -D0329 14:40:55.301 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_5.write_data` -D0329 14:40:55.301 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.301 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.301 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.301 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.301 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.301 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.301 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.301 tapa.verilog.xilinx.async_mmap:81] `read_C_5.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.301 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.301 tapa.verilog.xilinx.async_mmap:71] `read_C_5.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_5.write_resp` -D0329 14:40:55.301 tapa.core:671] pipelined signal: M => read_C_6___M -D0329 14:40:55.301 tapa.core:671] pipelined signal: M => read_C_6___M -D0329 14:40:55.302 tapa.core:671] pipelined signal: P_N => read_C_6___P_N -D0329 14:40:55.302 tapa.core:671] pipelined signal: P_N => read_C_6___P_N -D0329 14:40:55.302 tapa.core:671] pipelined signal: mat_C_ch_in_6 => read_C_6___mat_C_ch_in_6 -D0329 14:40:55.302 tapa.core:671] pipelined signal: mat_C_ch_in_6 => read_C_6___mat_C_ch_in_6 -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_6.read_addr` -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_6.read_addr` -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_6.read_addr` -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_6.read_addr` -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_6.read_addr` -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_6.read_addr` -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.302 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_6.write_addr` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_6.write_addr` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_6.write_addr` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_6.write_addr` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_6.write_addr` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_6.write_addr` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_6.write_data` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_6.write_data` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_6.write_data` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_6.write_data` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_6.write_data` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_6.write_data` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.303 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_6.read_addr` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_6.read_addr` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_6.read_addr` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_6.read_addr` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_6.read_addr` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_6.read_addr` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_6.read_data` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_6.write_addr` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_6.write_addr` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_6.write_addr` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_6.write_addr` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_6.write_addr` -D0329 14:40:55.305 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_6.write_addr` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_6.write_data` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_6.write_data` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_6.write_data` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_6.write_data` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_6.write_data` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_6.write_data` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:81] `read_C_6.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.306 tapa.verilog.xilinx.async_mmap:71] `read_C_6.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_6.write_resp` -D0329 14:40:55.306 tapa.core:671] pipelined signal: M => read_C_7___M -D0329 14:40:55.306 tapa.core:671] pipelined signal: M => read_C_7___M -D0329 14:40:55.307 tapa.core:671] pipelined signal: P_N => read_C_7___P_N -D0329 14:40:55.307 tapa.core:671] pipelined signal: P_N => read_C_7___P_N -D0329 14:40:55.307 tapa.core:671] pipelined signal: mat_C_ch_in_7 => read_C_7___mat_C_ch_in_7 -D0329 14:40:55.307 tapa.core:671] pipelined signal: mat_C_ch_in_7 => read_C_7___mat_C_ch_in_7 -D0329 14:40:55.307 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_7.read_addr` -D0329 14:40:55.307 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_7.read_addr` -D0329 14:40:55.307 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_7.read_addr` -D0329 14:40:55.307 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_7.read_addr` -D0329 14:40:55.307 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_7.read_addr` -D0329 14:40:55.307 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_7.read_addr` -D0329 14:40:55.307 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.307 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.307 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.307 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.307 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.307 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.307 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.307 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_7.write_addr` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_7.write_addr` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_7.write_addr` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_7.write_addr` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_7.write_addr` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_7.write_addr` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_7.write_data` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_7.write_data` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_7.write_data` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_7.write_data` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_7.write_data` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_7.write_data` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.308 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_7.read_addr` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_addr_din` is connected to async_mmap port `mat_C_ch_in_7.read_addr` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_7.read_addr` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_addr_full_n` is connected to async_mmap port `mat_C_ch_in_7.read_addr` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_7.read_addr` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_addr_write` is connected to async_mmap port `mat_C_ch_in_7.read_addr` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_data_s_dout` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_read_data_s_read` is connected to async_mmap port `mat_C_ch_in_7.read_data` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_7.write_addr` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_addr_din` is connected to async_mmap port `mat_C_ch_in_7.write_addr` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_7.write_addr` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_addr_full_n` is connected to async_mmap port `mat_C_ch_in_7.write_addr` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_7.write_addr` -D0329 14:40:55.310 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_addr_write` is connected to async_mmap port `mat_C_ch_in_7.write_addr` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_7.write_data` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_data_din` is connected to async_mmap port `mat_C_ch_in_7.write_data` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_7.write_data` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_data_full_n` is connected to async_mmap port `mat_C_ch_in_7.write_data` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_7.write_data` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_data_write` is connected to async_mmap port `mat_C_ch_in_7.write_data` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:81] `read_C_7.C_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.311 tapa.verilog.xilinx.async_mmap:71] `read_C_7.C_write_resp_s_read` is connected to async_mmap port `mat_C_ch_in_7.write_resp` -D0329 14:40:55.312 tapa.core:671] pipelined signal: K => read_edge_list_ptr_0___K -D0329 14:40:55.312 tapa.core:671] pipelined signal: K => read_edge_list_ptr_0___K -D0329 14:40:55.312 tapa.core:671] pipelined signal: M => read_edge_list_ptr_0___M -D0329 14:40:55.312 tapa.core:671] pipelined signal: M => read_edge_list_ptr_0___M -D0329 14:40:55.312 tapa.core:671] pipelined signal: NUM_ITE => read_edge_list_ptr_0___NUM_ITE -D0329 14:40:55.312 tapa.core:671] pipelined signal: NUM_ITE => read_edge_list_ptr_0___NUM_ITE -D0329 14:40:55.312 tapa.core:671] pipelined signal: P_N => read_edge_list_ptr_0___P_N -D0329 14:40:55.312 tapa.core:671] pipelined signal: P_N => read_edge_list_ptr_0___P_N -D0329 14:40:55.312 tapa.core:671] pipelined signal: edge_list_ptr => read_edge_list_ptr_0___edge_list_ptr -D0329 14:40:55.312 tapa.core:671] pipelined signal: edge_list_ptr => read_edge_list_ptr_0___edge_list_ptr -D0329 14:40:55.312 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_addr_din` is connected to async_mmap port `edge_list_ptr.read_addr` -D0329 14:40:55.312 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_addr_din` is connected to async_mmap port `edge_list_ptr.read_addr` -D0329 14:40:55.312 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_addr_full_n` is connected to async_mmap port `edge_list_ptr.read_addr` -D0329 14:40:55.312 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_addr_full_n` is connected to async_mmap port `edge_list_ptr.read_addr` -D0329 14:40:55.312 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_addr_write` is connected to async_mmap port `edge_list_ptr.read_addr` -D0329 14:40:55.312 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_addr_write` is connected to async_mmap port `edge_list_ptr.read_addr` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_data_s_dout` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_data_s_dout` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_read_data_peek_dout` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_read_data_peek_dout` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_data_s_empty_n` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_data_s_empty_n` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_data_s_read` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_data_s_read` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_addr_din` is connected to async_mmap port `edge_list_ptr.write_addr` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_addr_din` is connected to async_mmap port `edge_list_ptr.write_addr` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_addr_full_n` is connected to async_mmap port `edge_list_ptr.write_addr` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_addr_full_n` is connected to async_mmap port `edge_list_ptr.write_addr` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_addr_write` is connected to async_mmap port `edge_list_ptr.write_addr` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_addr_write` is connected to async_mmap port `edge_list_ptr.write_addr` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_data_din` is connected to async_mmap port `edge_list_ptr.write_data` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_data_din` is connected to async_mmap port `edge_list_ptr.write_data` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_data_full_n` is connected to async_mmap port `edge_list_ptr.write_data` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_data_full_n` is connected to async_mmap port `edge_list_ptr.write_data` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_data_write` is connected to async_mmap port `edge_list_ptr.write_data` -D0329 14:40:55.313 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_data_write` is connected to async_mmap port `edge_list_ptr.write_data` -D0329 14:40:55.314 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_resp_s_dout` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.314 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_resp_s_dout` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.314 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_write_resp_peek_dout` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.314 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_write_resp_peek_dout` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.314 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.314 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.314 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.314 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.314 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_resp_s_read` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.314 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_resp_s_read` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.315 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_addr_din` is connected to async_mmap port `edge_list_ptr.read_addr` -D0329 14:40:55.315 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_addr_din` is connected to async_mmap port `edge_list_ptr.read_addr` -D0329 14:40:55.315 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_addr_full_n` is connected to async_mmap port `edge_list_ptr.read_addr` -D0329 14:40:55.315 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_addr_full_n` is connected to async_mmap port `edge_list_ptr.read_addr` -D0329 14:40:55.315 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_addr_write` is connected to async_mmap port `edge_list_ptr.read_addr` -D0329 14:40:55.315 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_addr_write` is connected to async_mmap port `edge_list_ptr.read_addr` -D0329 14:40:55.315 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_data_s_dout` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.315 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_data_s_dout` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.315 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_read_data_peek_dout` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.315 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_read_data_peek_dout` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_data_s_empty_n` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_data_s_empty_n` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_read_data_peek_empty_n` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_data_s_read` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_read_data_s_read` is connected to async_mmap port `edge_list_ptr.read_data` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_addr_din` is connected to async_mmap port `edge_list_ptr.write_addr` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_addr_din` is connected to async_mmap port `edge_list_ptr.write_addr` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_addr_full_n` is connected to async_mmap port `edge_list_ptr.write_addr` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_addr_full_n` is connected to async_mmap port `edge_list_ptr.write_addr` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_addr_write` is connected to async_mmap port `edge_list_ptr.write_addr` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_addr_write` is connected to async_mmap port `edge_list_ptr.write_addr` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_data_din` is connected to async_mmap port `edge_list_ptr.write_data` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_data_din` is connected to async_mmap port `edge_list_ptr.write_data` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_data_full_n` is connected to async_mmap port `edge_list_ptr.write_data` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_data_full_n` is connected to async_mmap port `edge_list_ptr.write_data` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_data_write` is connected to async_mmap port `edge_list_ptr.write_data` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_data_write` is connected to async_mmap port `edge_list_ptr.write_data` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_resp_s_dout` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_resp_s_dout` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_write_resp_peek_dout` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.316 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_write_resp_peek_dout` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.317 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.317 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_resp_s_empty_n` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.317 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.317 tapa.verilog.xilinx.async_mmap:81] `read_edge_list_ptr_0.edge_list_ptr_write_resp_peek_empty_n` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.317 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_resp_s_read` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.317 tapa.verilog.xilinx.async_mmap:71] `read_edge_list_ptr_0.edge_list_ptr_write_resp_s_read` is connected to async_mmap port `edge_list_ptr.write_resp` -D0329 14:40:55.317 tapa.core:671] pipelined signal: mat_C_ch_0 => write_C_0___mat_C_ch_0 -D0329 14:40:55.317 tapa.core:671] pipelined signal: mat_C_ch_0 => write_C_0___mat_C_ch_0 -D0329 14:40:55.317 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_0.read_addr` -D0329 14:40:55.317 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_0.read_addr` -D0329 14:40:55.317 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_0.read_addr` -D0329 14:40:55.317 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_0.read_addr` -D0329 14:40:55.317 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_0.read_addr` -D0329 14:40:55.317 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_0.read_addr` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_0.write_addr` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_0.write_addr` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_0.write_addr` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_0.write_addr` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_0.write_addr` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_0.write_addr` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_0.write_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_0.write_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_0.write_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_0.write_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_0.write_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_0.write_data` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.318 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.319 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.319 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.319 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.319 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.319 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.319 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.319 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.319 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.320 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_0.read_addr` -D0329 14:40:55.320 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_0.read_addr` -D0329 14:40:55.320 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_0.read_addr` -D0329 14:40:55.320 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_0.read_addr` -D0329 14:40:55.320 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_0.read_addr` -D0329 14:40:55.320 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_0.read_addr` -D0329 14:40:55.320 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.320 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.320 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.320 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_0.read_data` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_0.write_addr` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_0.write_addr` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_0.write_addr` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_0.write_addr` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_0.write_addr` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_0.write_addr` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_0.write_data` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_0.write_data` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_0.write_data` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_0.write_data` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_0.write_data` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_0.write_data` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.321 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.322 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.322 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.322 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.322 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.322 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.322 tapa.verilog.xilinx.async_mmap:81] `write_C_0.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.322 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.322 tapa.verilog.xilinx.async_mmap:71] `write_C_0.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_0.write_resp` -D0329 14:40:55.322 tapa.core:671] pipelined signal: mat_C_ch_1 => write_C_1___mat_C_ch_1 -D0329 14:40:55.322 tapa.core:671] pipelined signal: mat_C_ch_1 => write_C_1___mat_C_ch_1 -D0329 14:40:55.322 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_1.read_addr` -D0329 14:40:55.322 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_1.read_addr` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_1.read_addr` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_1.read_addr` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_1.read_addr` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_1.read_addr` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_1.write_addr` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_1.write_addr` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_1.write_addr` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_1.write_addr` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_1.write_addr` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_1.write_addr` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_1.write_data` -D0329 14:40:55.323 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_1.write_data` -D0329 14:40:55.324 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_1.write_data` -D0329 14:40:55.324 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_1.write_data` -D0329 14:40:55.324 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_1.write_data` -D0329 14:40:55.324 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_1.write_data` -D0329 14:40:55.324 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.324 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.324 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.324 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.324 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.324 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.324 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.324 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.324 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.324 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.325 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_1.read_addr` -D0329 14:40:55.325 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_1.read_addr` -D0329 14:40:55.325 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_1.read_addr` -D0329 14:40:55.325 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_1.read_addr` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_1.read_addr` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_1.read_addr` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_1.read_data` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_1.write_addr` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_1.write_addr` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_1.write_addr` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_1.write_addr` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_1.write_addr` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_1.write_addr` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_1.write_data` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_1.write_data` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_1.write_data` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_1.write_data` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_1.write_data` -D0329 14:40:55.326 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_1.write_data` -D0329 14:40:55.327 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.327 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.327 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.327 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.327 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.327 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.327 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.327 tapa.verilog.xilinx.async_mmap:81] `write_C_1.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.327 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.327 tapa.verilog.xilinx.async_mmap:71] `write_C_1.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_1.write_resp` -D0329 14:40:55.327 tapa.core:671] pipelined signal: mat_C_ch_2 => write_C_2___mat_C_ch_2 -D0329 14:40:55.327 tapa.core:671] pipelined signal: mat_C_ch_2 => write_C_2___mat_C_ch_2 -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_2.read_addr` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_2.read_addr` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_2.read_addr` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_2.read_addr` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_2.read_addr` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_2.read_addr` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_2.write_addr` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_2.write_addr` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_2.write_addr` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_2.write_addr` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_2.write_addr` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_2.write_addr` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_2.write_data` -D0329 14:40:55.328 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_2.write_data` -D0329 14:40:55.329 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_2.write_data` -D0329 14:40:55.329 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_2.write_data` -D0329 14:40:55.329 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_2.write_data` -D0329 14:40:55.329 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_2.write_data` -D0329 14:40:55.329 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.329 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.329 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.329 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.329 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.329 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.329 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.329 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.329 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.329 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.330 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_2.read_addr` -D0329 14:40:55.330 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_2.read_addr` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_2.read_addr` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_2.read_addr` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_2.read_addr` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_2.read_addr` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_2.read_data` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_2.write_addr` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_2.write_addr` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_2.write_addr` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_2.write_addr` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_2.write_addr` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_2.write_addr` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_2.write_data` -D0329 14:40:55.331 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_2.write_data` -D0329 14:40:55.332 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_2.write_data` -D0329 14:40:55.332 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_2.write_data` -D0329 14:40:55.332 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_2.write_data` -D0329 14:40:55.332 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_2.write_data` -D0329 14:40:55.332 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.332 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.332 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.332 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.332 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.332 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.332 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.332 tapa.verilog.xilinx.async_mmap:81] `write_C_2.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.332 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.332 tapa.verilog.xilinx.async_mmap:71] `write_C_2.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_2.write_resp` -D0329 14:40:55.333 tapa.core:671] pipelined signal: mat_C_ch_3 => write_C_3___mat_C_ch_3 -D0329 14:40:55.333 tapa.core:671] pipelined signal: mat_C_ch_3 => write_C_3___mat_C_ch_3 -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_3.read_addr` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_3.read_addr` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_3.read_addr` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_3.read_addr` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_3.read_addr` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_3.read_addr` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_3.write_addr` -D0329 14:40:55.333 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_3.write_addr` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_3.write_addr` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_3.write_addr` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_3.write_addr` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_3.write_addr` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_3.write_data` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_3.write_data` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_3.write_data` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_3.write_data` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_3.write_data` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_3.write_data` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.334 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_3.read_addr` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_3.read_addr` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_3.read_addr` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_3.read_addr` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_3.read_addr` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_3.read_addr` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_3.read_data` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_3.write_addr` -D0329 14:40:55.336 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_3.write_addr` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_3.write_addr` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_3.write_addr` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_3.write_addr` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_3.write_addr` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_3.write_data` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_3.write_data` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_3.write_data` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_3.write_data` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_3.write_data` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_3.write_data` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:81] `write_C_3.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.337 tapa.verilog.xilinx.async_mmap:71] `write_C_3.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_3.write_resp` -D0329 14:40:55.338 tapa.core:671] pipelined signal: mat_C_ch_4 => write_C_4___mat_C_ch_4 -D0329 14:40:55.338 tapa.core:671] pipelined signal: mat_C_ch_4 => write_C_4___mat_C_ch_4 -D0329 14:40:55.338 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_4.read_addr` -D0329 14:40:55.338 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_4.read_addr` -D0329 14:40:55.338 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_4.read_addr` -D0329 14:40:55.338 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_4.read_addr` -D0329 14:40:55.338 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_4.read_addr` -D0329 14:40:55.338 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_4.read_addr` -D0329 14:40:55.338 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.338 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.338 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.338 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.338 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.338 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.338 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.338 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_4.write_addr` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_4.write_addr` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_4.write_addr` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_4.write_addr` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_4.write_addr` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_4.write_addr` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_4.write_data` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_4.write_data` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_4.write_data` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_4.write_data` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_4.write_data` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_4.write_data` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.339 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.340 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.340 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.341 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_4.read_addr` -D0329 14:40:55.341 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_4.read_addr` -D0329 14:40:55.341 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_4.read_addr` -D0329 14:40:55.341 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_4.read_addr` -D0329 14:40:55.341 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_4.read_addr` -D0329 14:40:55.341 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_4.read_addr` -D0329 14:40:55.341 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.341 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.341 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.341 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.341 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.341 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.341 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.341 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_4.read_data` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_4.write_addr` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_4.write_addr` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_4.write_addr` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_4.write_addr` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_4.write_addr` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_4.write_addr` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_4.write_data` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_4.write_data` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_4.write_data` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_4.write_data` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_4.write_data` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_4.write_data` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:81] `write_C_4.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.342 tapa.verilog.xilinx.async_mmap:71] `write_C_4.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_4.write_resp` -D0329 14:40:55.343 tapa.core:671] pipelined signal: mat_C_ch_5 => write_C_5___mat_C_ch_5 -D0329 14:40:55.343 tapa.core:671] pipelined signal: mat_C_ch_5 => write_C_5___mat_C_ch_5 -D0329 14:40:55.343 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_5.read_addr` -D0329 14:40:55.343 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_5.read_addr` -D0329 14:40:55.343 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_5.read_addr` -D0329 14:40:55.343 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_5.read_addr` -D0329 14:40:55.343 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_5.read_addr` -D0329 14:40:55.343 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_5.read_addr` -D0329 14:40:55.343 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.343 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.343 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.343 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_5.write_addr` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_5.write_addr` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_5.write_addr` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_5.write_addr` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_5.write_addr` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_5.write_addr` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_5.write_data` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_5.write_data` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_5.write_data` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_5.write_data` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_5.write_data` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_5.write_data` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.344 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.345 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.345 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.345 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.345 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.345 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.345 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.346 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_5.read_addr` -D0329 14:40:55.346 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_5.read_addr` -D0329 14:40:55.346 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_5.read_addr` -D0329 14:40:55.346 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_5.read_addr` -D0329 14:40:55.346 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_5.read_addr` -D0329 14:40:55.346 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_5.read_addr` -D0329 14:40:55.346 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.346 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.346 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.346 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_5.read_data` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_5.write_addr` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_5.write_addr` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_5.write_addr` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_5.write_addr` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_5.write_addr` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_5.write_addr` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_5.write_data` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_5.write_data` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_5.write_data` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_5.write_data` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_5.write_data` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_5.write_data` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.347 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.348 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.348 tapa.verilog.xilinx.async_mmap:81] `write_C_5.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.348 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.348 tapa.verilog.xilinx.async_mmap:71] `write_C_5.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_5.write_resp` -D0329 14:40:55.348 tapa.core:671] pipelined signal: mat_C_ch_6 => write_C_6___mat_C_ch_6 -D0329 14:40:55.348 tapa.core:671] pipelined signal: mat_C_ch_6 => write_C_6___mat_C_ch_6 -D0329 14:40:55.348 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_6.read_addr` -D0329 14:40:55.348 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_6.read_addr` -D0329 14:40:55.348 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_6.read_addr` -D0329 14:40:55.348 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_6.read_addr` -D0329 14:40:55.348 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_6.read_addr` -D0329 14:40:55.348 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_6.read_addr` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_6.write_addr` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_6.write_addr` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_6.write_addr` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_6.write_addr` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_6.write_addr` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_6.write_addr` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_6.write_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_6.write_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_6.write_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_6.write_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_6.write_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_6.write_data` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.349 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.350 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.350 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.350 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.350 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.350 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.350 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.350 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.350 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.351 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_6.read_addr` -D0329 14:40:55.351 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_6.read_addr` -D0329 14:40:55.351 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_6.read_addr` -D0329 14:40:55.351 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_6.read_addr` -D0329 14:40:55.351 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_6.read_addr` -D0329 14:40:55.351 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_6.read_addr` -D0329 14:40:55.351 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.351 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_6.read_data` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_6.write_addr` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_6.write_addr` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_6.write_addr` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_6.write_addr` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_6.write_addr` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_6.write_addr` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_6.write_data` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_6.write_data` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_6.write_data` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_6.write_data` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_6.write_data` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_6.write_data` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.352 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.353 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.353 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.353 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.353 tapa.verilog.xilinx.async_mmap:81] `write_C_6.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.353 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.353 tapa.verilog.xilinx.async_mmap:71] `write_C_6.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_6.write_resp` -D0329 14:40:55.353 tapa.core:671] pipelined signal: mat_C_ch_7 => write_C_7___mat_C_ch_7 -D0329 14:40:55.353 tapa.core:671] pipelined signal: mat_C_ch_7 => write_C_7___mat_C_ch_7 -D0329 14:40:55.353 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_7.read_addr` -D0329 14:40:55.353 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_7.read_addr` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_7.read_addr` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_7.read_addr` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_7.read_addr` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_7.read_addr` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_7.write_addr` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_7.write_addr` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_7.write_addr` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_7.write_addr` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_7.write_addr` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_7.write_addr` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_7.write_data` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_7.write_data` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_7.write_data` -D0329 14:40:55.354 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_7.write_data` -D0329 14:40:55.355 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_7.write_data` -D0329 14:40:55.355 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_7.write_data` -D0329 14:40:55.355 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.355 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.355 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.355 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.355 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.355 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.355 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.355 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.355 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.355 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.356 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_7.read_addr` -D0329 14:40:55.356 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_addr_din` is connected to async_mmap port `mat_C_ch_7.read_addr` -D0329 14:40:55.356 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_7.read_addr` -D0329 14:40:55.356 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_addr_full_n` is connected to async_mmap port `mat_C_ch_7.read_addr` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_7.read_addr` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_addr_write` is connected to async_mmap port `mat_C_ch_7.read_addr` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_data_s_dout` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_read_data_peek_dout` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_data_s_empty_n` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_read_data_peek_empty_n` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_read_data_s_read` is connected to async_mmap port `mat_C_ch_7.read_data` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_7.write_addr` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_addr_din` is connected to async_mmap port `mat_C_ch_7.write_addr` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_7.write_addr` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_addr_full_n` is connected to async_mmap port `mat_C_ch_7.write_addr` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_7.write_addr` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_addr_write` is connected to async_mmap port `mat_C_ch_7.write_addr` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_7.write_data` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_data_din` is connected to async_mmap port `mat_C_ch_7.write_data` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_7.write_data` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_data_full_n` is connected to async_mmap port `mat_C_ch_7.write_data` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_7.write_data` -D0329 14:40:55.357 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_data_write` is connected to async_mmap port `mat_C_ch_7.write_data` -D0329 14:40:55.358 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.358 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_resp_s_dout` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.358 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.358 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_write_resp_peek_dout` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.358 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.358 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_resp_s_empty_n` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.358 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.358 tapa.verilog.xilinx.async_mmap:81] `write_C_7.C_out_write_resp_peek_empty_n` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.358 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.358 tapa.verilog.xilinx.async_mmap:71] `write_C_7.C_out_write_resp_s_read` is connected to async_mmap port `mat_C_ch_7.write_resp` -D0329 14:40:55.358 tapa.core:852] Set the address width of async_mmap to 64 -D0329 14:40:55.358 tapa.core:852] Set the address width of async_mmap to 64 -I0329 14:40:56.045 tapa.core:465] generating report -I0329 14:40:56.045 tapa.core:465] generating report -I0329 14:40:56.055 tapa.core:473] writing generated auxiliary RTL files -I0329 14:40:56.055 tapa.core:473] writing generated auxiliary RTL files -I0329 14:40:56.056 tapa.steps.common:92] writing TAPA settings to json `generated/settings.json`. -I0329 14:40:56.056 tapa.steps.common:92] writing TAPA settings to json `generated/settings.json`. -I0329 14:40:56.056 tapa.steps.common:46] reusing TAPA settings from upstream flows. -I0329 14:40:56.056 tapa.steps.common:46] reusing TAPA settings from upstream flows. -I0329 14:40:56.056 tapa.core:481] packaging RTL code -I0329 14:40:56.056 tapa.core:481] packaging RTL code -D0329 14:40:56.056 tapa.verilog.xilinx:70] RTL ports of Sextans: -D0329 14:40:56.056 tapa.verilog.xilinx:70] RTL ports of Sextans: -D0329 14:40:56.056 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ptr, ctype: int*, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.056 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ptr, ctype: int*, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.056 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_0, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.056 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_0, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.056 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_1, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.056 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_1, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.056 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_2, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.056 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_2, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.056 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_3, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.056 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_3, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.056 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_4, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.056 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_4, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.056 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_5, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.056 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_5, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_6, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_6, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_7, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: edge_list_ch_7, ctype: ap_uint<512>*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_B_ch_0, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_B_ch_0, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_B_ch_1, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_B_ch_1, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_B_ch_2, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_B_ch_2, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_B_ch_3, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_B_ch_3, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_0, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_0, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_1, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_1, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_2, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_2, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_3, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_3, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_4, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_4, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_5, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_5, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_6, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_6, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_7, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_in_7, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_0, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_0, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_1, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_1, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_2, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_2, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_3, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_3, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_4, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.057 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_4, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_5, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_5, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_6, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_6, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_7, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.MMAP, name: mat_C_ch_7, ctype: float_v16*, width: 512, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.SCALAR, name: NUM_ITE, ctype: const int, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.SCALAR, name: NUM_ITE, ctype: const int, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.SCALAR, name: NUM_A_LEN, ctype: const int, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.SCALAR, name: NUM_A_LEN, ctype: const int, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.SCALAR, name: M, ctype: const int, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.SCALAR, name: M, ctype: const int, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.SCALAR, name: K, ctype: const int, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.SCALAR, name: K, ctype: const int, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.SCALAR, name: P_N, ctype: const int, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.SCALAR, name: P_N, ctype: const int, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.SCALAR, name: alpha_u, ctype: const int, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.SCALAR, name: alpha_u, ctype: const int, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.SCALAR, name: beta_u, ctype: const int, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.058 tapa.verilog.xilinx:75] cat: Cat.SCALAR, name: beta_u, ctype: const int, width: 32, chan_count: None, chan_size: None -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: FloatvMultConst.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: FloatvMultConst.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: read_B_mul_14ns_29s_32_2_1.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: read_B_mul_14ns_29s_32_2_1.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: read_C_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: read_C_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: axi_crossbar.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: axi_crossbar.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: read_A_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: read_A_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: Scatter_1_2_Scatter_1_2_Pipeline_VITIS_LOOP_405_1.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: Scatter_1_2_Scatter_1_2_Pipeline_VITIS_LOOP_405_1.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: black_hole_float_v16.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: black_hole_float_v16.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: Scatter_1_2.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: Scatter_1_2.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: black_hole_int.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: black_hole_int.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: read_B_read_B_Pipeline_rd_B.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: read_B_read_B_Pipeline_rd_B.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: async_mmap.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: async_mmap.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: PEG_Cmtx.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: PEG_Cmtx.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: axi_pipeline.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: axi_pipeline.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: PEG_Cmtx_local_C_V_RAM_2P_URAM_1R1W.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: fifo_srl.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: fifo_srl.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: axi_register_rd.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: axi_register_rd.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: Merger_Merger_Pipeline_VITIS_LOOP_410_1.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: Merger_Merger_Pipeline_VITIS_LOOP_410_1.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: detect_burst.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: detect_burst.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1_ip.tcl -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1_ip.tcl -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: read_C_mul_mul_14ns_28s_32_4_1.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: read_C_mul_mul_14ns_28s_32_4_1.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: axi_crossbar_rd.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: axi_crossbar_rd.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: FloatvAddFloatv_FloatvAddFloatv_Pipeline_cc.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: FloatvAddFloatv_FloatvAddFloatv_Pipeline_cc.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: relay_station.v -D0329 14:40:56.059 haoda.backend.xilinx:163] packing: relay_station.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: black_hole_int_black_hole_int_Pipeline_VITIS_LOOP_399_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: black_hole_int_black_hole_int_Pipeline_VITIS_LOOP_399_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: generate_last.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: generate_last.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: a_axi_write_broadcastor_1_to_3.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: a_axi_write_broadcastor_1_to_3.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Bmtx_PEG_Bmtx_Pipeline_computation.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Bmtx_PEG_Bmtx_Pipeline_computation.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: read_edge_list_ptr_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: read_edge_list_ptr_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: FloatvMultConst_mul_32s_14ns_32_2_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: FloatvMultConst_mul_32s_14ns_32_2_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Bmtx_fmul_32ns_32ns_32_4_max_dsp_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: Sextans_fsm.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: Sextans_fsm.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1_ip.tcl -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: FloatvAddFloatv_fadd_32ns_32ns_32_7_full_dsp_1_ip.tcl -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: FloatvMultConst_FloatvMultConst_Pipeline_cc.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: FloatvMultConst_FloatvMultConst_Pipeline_cc.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: Merger.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: Merger.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Cmtx_mux_42_64_1_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Cmtx_mux_42_64_1_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: FloatvMultConst_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: FloatvMultConst_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: read_A_read_A_Pipeline_rd_A.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: read_A_read_A_Pipeline_rd_A.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Cmtx_mul_mul_16s_14ns_30_4_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Cmtx_mul_mul_16s_14ns_30_4_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Cmtx_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Cmtx_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: read_B_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: read_B_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: write_C.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: write_C.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: fifo_bram.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: fifo_bram.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: read_edge_list_ptr_mul_mul_16s_14ns_30_4_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: read_edge_list_ptr_mul_mul_16s_14ns_30_4_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: write_C_mul_mul_14ns_28s_32_4_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: write_C_mul_mul_14ns_28s_32_4_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: priority_encoder.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: priority_encoder.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Bmtx_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Bmtx_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: black_hole_float_v16_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: black_hole_float_v16_black_hole_float_v16_Pipeline_VITIS_LOOP_400_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Bmtx.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Bmtx.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: arbiter.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: arbiter.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Cmtx_PEG_Cmtx_Pipeline_init_C.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Cmtx_PEG_Cmtx_Pipeline_init_C.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: write_C_write_C_Pipeline_wr_C.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: write_C_write_C_Pipeline_wr_C.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Cmtx_PEG_Cmtx_Pipeline_write_C_outer.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Cmtx_PEG_Cmtx_Pipeline_write_C_outer.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: axi_register_wr.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: axi_register_wr.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: read_C_read_C_Pipeline_rd_C.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: read_C_read_C_Pipeline_rd_C.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Bmtx_PEG_Bmtx_Pipeline_read_B.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Bmtx_PEG_Bmtx_Pipeline_read_B.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Bmtx_mul_mul_16s_14ns_30_4_1.v -D0329 14:40:56.060 haoda.backend.xilinx:163] packing: PEG_Bmtx_mul_mul_16s_14ns_30_4_1.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: axi_crossbar_wr.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: axi_crossbar_wr.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: read_A_mul_mul_16s_14ns_30_4_1.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: read_A_mul_mul_16s_14ns_30_4_1.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: Sextans.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: Sextans.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: PEG_Bmtx_local_B_RAM_AUTO_1R1W.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: PEG_Bmtx_local_B_RAM_AUTO_1R1W.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: write_C_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: write_C_flow_control_loop_pipe_sequential_init.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: a_axi_write_broadcastor_1_to_4.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: a_axi_write_broadcastor_1_to_4.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: read_edge_list_ptr.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: read_edge_list_ptr.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: PEG_Bmtx_mux_42_32_1_1.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: PEG_Bmtx_mux_42_32_1_1.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1_ip.tcl -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: FloatvMultConst_fmul_32ns_32ns_32_4_max_dsp_1_ip.tcl -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: read_A.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: read_A.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: read_edge_list_ptr_read_edge_list_ptr_Pipeline_rd_ptr.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: read_edge_list_ptr_read_edge_list_ptr_Pipeline_rd_ptr.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: read_C.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: read_C.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: FloatvMultConst_mul_mul_16s_28s_32_4_1.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: FloatvMultConst_mul_mul_16s_28s_32_4_1.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: read_B.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: read_B.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: FloatvAddFloatv.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: FloatvAddFloatv.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: Sextans_control_s_axi.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: Sextans_control_s_axi.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: PEG_Cmtx_PEG_Cmtx_Pipeline_computation.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: PEG_Cmtx_PEG_Cmtx_Pipeline_computation.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1_ip.tcl -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: PEG_Cmtx_fadd_32ns_32ns_32_7_full_dsp_1_ip.tcl -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: fifo_fwd.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: fifo_fwd.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: fifo.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: fifo.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: axi_crossbar_addr.v -D0329 14:40:56.061 haoda.backend.xilinx:163] packing: axi_crossbar_addr.v -I0329 14:41:30.936 tapa.core:489] packaging HLS report -I0329 14:41:30.936 tapa.core:489] packaging HLS report -D0329 14:41:30.939 tapa.core:494] packing report/PEG_Cmtx_Pipeline_computation_csynth.xml -D0329 14:41:30.939 tapa.core:494] packing report/PEG_Cmtx_Pipeline_computation_csynth.xml -D0329 14:41:30.940 tapa.core:494] packing report/Merger_Pipeline_VITIS_LOOP_410_1_csynth.xml -D0329 14:41:30.940 tapa.core:494] packing report/Merger_Pipeline_VITIS_LOOP_410_1_csynth.xml -D0329 14:41:30.940 tapa.core:494] packing report/read_B_csynth.xml -D0329 14:41:30.940 tapa.core:494] packing report/read_B_csynth.xml -D0329 14:41:30.941 tapa.core:494] packing report/read_C_csynth.xml -D0329 14:41:30.941 tapa.core:494] packing report/read_C_csynth.xml -D0329 14:41:30.941 tapa.core:494] packing report/write_C_csynth.xml -D0329 14:41:30.941 tapa.core:494] packing report/write_C_csynth.xml -D0329 14:41:30.942 tapa.core:494] packing report/read_B_Pipeline_rd_B_csynth.xml -D0329 14:41:30.942 tapa.core:494] packing report/read_B_Pipeline_rd_B_csynth.xml -D0329 14:41:30.943 tapa.core:494] packing report/read_edge_list_ptr_Pipeline_rd_ptr_csynth.xml -D0329 14:41:30.943 tapa.core:494] packing report/read_edge_list_ptr_Pipeline_rd_ptr_csynth.xml -D0329 14:41:30.943 tapa.core:494] packing report/read_A_csynth.xml -D0329 14:41:30.943 tapa.core:494] packing report/read_A_csynth.xml -D0329 14:41:30.944 tapa.core:494] packing report/read_edge_list_ptr_csynth.xml -D0329 14:41:30.944 tapa.core:494] packing report/read_edge_list_ptr_csynth.xml -D0329 14:41:30.944 tapa.core:494] packing report/FloatvAddFloatv_Pipeline_cc_csynth.xml -D0329 14:41:30.944 tapa.core:494] packing report/FloatvAddFloatv_Pipeline_cc_csynth.xml -D0329 14:41:30.945 tapa.core:494] packing report/black_hole_int_Pipeline_VITIS_LOOP_399_1_csynth.xml -D0329 14:41:30.945 tapa.core:494] packing report/black_hole_int_Pipeline_VITIS_LOOP_399_1_csynth.xml -D0329 14:41:30.945 tapa.core:494] packing report/black_hole_float_v16_csynth.xml -D0329 14:41:30.945 tapa.core:494] packing report/black_hole_float_v16_csynth.xml -D0329 14:41:30.946 tapa.core:494] packing report/FloatvMultConst_csynth.xml -D0329 14:41:30.946 tapa.core:494] packing report/FloatvMultConst_csynth.xml -D0329 14:41:30.946 tapa.core:494] packing report/FloatvAddFloatv_csynth.xml -D0329 14:41:30.946 tapa.core:494] packing report/FloatvAddFloatv_csynth.xml -D0329 14:41:30.946 tapa.core:494] packing report/PEG_Bmtx_Pipeline_read_B_csynth.xml -D0329 14:41:30.946 tapa.core:494] packing report/PEG_Bmtx_Pipeline_read_B_csynth.xml -D0329 14:41:30.949 tapa.core:494] packing report/Scatter_1_2_Pipeline_VITIS_LOOP_405_1_csynth.xml -D0329 14:41:30.949 tapa.core:494] packing report/Scatter_1_2_Pipeline_VITIS_LOOP_405_1_csynth.xml -D0329 14:41:30.950 tapa.core:494] packing report/PEG_Bmtx_Pipeline_computation_csynth.xml -D0329 14:41:30.950 tapa.core:494] packing report/PEG_Bmtx_Pipeline_computation_csynth.xml -D0329 14:41:30.952 tapa.core:494] packing report/PEG_Bmtx_csynth.xml -D0329 14:41:30.952 tapa.core:494] packing report/PEG_Bmtx_csynth.xml -D0329 14:41:30.953 tapa.core:494] packing report/read_C_Pipeline_rd_C_csynth.xml -D0329 14:41:30.953 tapa.core:494] packing report/read_C_Pipeline_rd_C_csynth.xml -D0329 14:41:30.954 tapa.core:494] packing report/FloatvMultConst_Pipeline_cc_csynth.xml -D0329 14:41:30.954 tapa.core:494] packing report/FloatvMultConst_Pipeline_cc_csynth.xml -D0329 14:41:30.954 tapa.core:494] packing report/read_A_Pipeline_rd_A_csynth.xml -D0329 14:41:30.954 tapa.core:494] packing report/read_A_Pipeline_rd_A_csynth.xml -D0329 14:41:30.955 tapa.core:494] packing report/black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_csynth.xml -D0329 14:41:30.955 tapa.core:494] packing report/black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_csynth.xml -D0329 14:41:30.955 tapa.core:494] packing report/black_hole_int_csynth.xml -D0329 14:41:30.955 tapa.core:494] packing report/black_hole_int_csynth.xml -D0329 14:41:30.955 tapa.core:494] packing report/Sextans_csynth.xml -D0329 14:41:30.955 tapa.core:494] packing report/Sextans_csynth.xml -D0329 14:41:30.956 tapa.core:494] packing report/write_C_Pipeline_wr_C_csynth.xml -D0329 14:41:30.956 tapa.core:494] packing report/write_C_Pipeline_wr_C_csynth.xml -D0329 14:41:30.956 tapa.core:494] packing report/Scatter_1_2_csynth.xml -D0329 14:41:30.956 tapa.core:494] packing report/Scatter_1_2_csynth.xml -D0329 14:41:30.957 tapa.core:494] packing report/Merger_csynth.xml -D0329 14:41:30.957 tapa.core:494] packing report/Merger_csynth.xml -D0329 14:41:30.957 tapa.core:494] packing report/PEG_Cmtx_Pipeline_init_C_csynth.xml -D0329 14:41:30.957 tapa.core:494] packing report/PEG_Cmtx_Pipeline_init_C_csynth.xml -D0329 14:41:30.958 tapa.core:494] packing report/PEG_Cmtx_Pipeline_write_C_outer_csynth.xml -D0329 14:41:30.958 tapa.core:494] packing report/PEG_Cmtx_Pipeline_write_C_outer_csynth.xml -D0329 14:41:30.959 tapa.core:494] packing report/PEG_Cmtx_csynth.xml -D0329 14:41:30.959 tapa.core:494] packing report/PEG_Cmtx_csynth.xml -I0329 14:41:30.960 tapa.core:497] generated the v++ xo file at generated/Sextans.xo -I0329 14:41:30.960 tapa.core:497] generated the v++ xo file at generated/Sextans.xo diff --git a/benchmarks/tapa_flow/sextans/design/generated/report.json b/benchmarks/tapa_flow/sextans/design/generated/report.json deleted file mode 100644 index 247190dc..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report.json +++ /dev/null @@ -1,195 +0,0 @@ -{ - "area": { - "breakdown": { - "FloatvAddFloatv": { - "area": { - "source": "hls", - "total": { - "BRAM_18K": 0, - "DSP": 32, - "FF": 6704, - "LUT": 3644, - "URAM": 0 - } - }, - "count": 8 - }, - "FloatvMultConst": { - "area": { - "source": "hls", - "total": { - "BRAM_18K": 0, - "DSP": 51, - "FF": 3704, - "LUT": 1602, - "URAM": 0 - } - }, - "count": 16 - }, - "Merger": { - "area": { - "source": "hls", - "total": { - "BRAM_18K": 0, - "DSP": 0, - "FF": 6, - "LUT": 69, - "URAM": 0 - } - }, - "count": 8 - }, - "PEG_Bmtx": { - "area": { - "source": "hls", - "total": { - "BRAM_18K": 128, - "DSP": 97, - "FF": 8088, - "LUT": 9745, - "URAM": 0 - } - }, - "count": 16 - }, - "PEG_Cmtx": { - "area": { - "source": "hls", - "total": { - "BRAM_18K": 0, - "DSP": 65, - "FF": 17721, - "LUT": 11573, - "URAM": 32 - } - }, - "count": 16 - }, - "Scatter_1_2": { - "area": { - "source": "hls", - "total": { - "BRAM_18K": 0, - "DSP": 0, - "FF": 6, - "LUT": 67, - "URAM": 0 - } - }, - "count": 8 - }, - "black_hole_float_v16": { - "area": { - "source": "hls", - "total": { - "BRAM_18K": 0, - "DSP": 0, - "FF": 6, - "LUT": 43, - "URAM": 0 - } - }, - "count": 4 - }, - "black_hole_int": { - "area": { - "source": "hls", - "total": { - "BRAM_18K": 0, - "DSP": 0, - "FF": 6, - "LUT": 43, - "URAM": 0 - } - }, - "count": 2 - }, - "read_A": { - "area": { - "source": "hls", - "total": { - "BRAM_18K": 0, - "DSP": 1, - "FF": 132, - "LUT": 346, - "URAM": 0 - } - }, - "count": 8 - }, - "read_B": { - "area": { - "source": "hls", - "total": { - "BRAM_18K": 0, - "DSP": 2, - "FF": 348, - "LUT": 403, - "URAM": 0 - } - }, - "count": 4 - }, - "read_C": { - "area": { - "source": "hls", - "total": { - "BRAM_18K": 0, - "DSP": 1, - "FF": 153, - "LUT": 391, - "URAM": 0 - } - }, - "count": 8 - }, - "read_edge_list_ptr": { - "area": { - "source": "hls", - "total": { - "BRAM_18K": 0, - "DSP": 1, - "FF": 164, - "LUT": 422, - "URAM": 0 - } - }, - "count": 1 - }, - "write_C": { - "area": { - "source": "hls", - "total": { - "BRAM_18K": 0, - "DSP": 1, - "FF": 197, - "LUT": 448, - "URAM": 0 - } - }, - "count": 8 - } - }, - "source": "hls", - "total": { - "BRAM_18K": 2048, - "DSP": 3697, - "FF": 533716, - "LUT": 412932, - "URAM": 512 - } - }, - "name": "Sextans", - "performance": { - "clock_period": "3.656", - "critical_path": { - "PEG_Bmtx": { - "clock_period": "3.656", - "source": "hls" - } - }, - "source": "hls" - }, - "schema": "v0.0.20210922" -} diff --git a/benchmarks/tapa_flow/sextans/design/generated/report.yaml b/benchmarks/tapa_flow/sextans/design/generated/report.yaml deleted file mode 100644 index b5eb9b89..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report.yaml +++ /dev/null @@ -1,148 +0,0 @@ -schema: v0.0.20210922 -name: Sextans -performance: - source: hls - clock_period: '3.656' - critical_path: - PEG_Bmtx: - source: hls - clock_period: '3.656' -area: - source: hls - total: - BRAM_18K: 2048 - DSP: 3697 - FF: 533716 - LUT: 412932 - URAM: 512 - breakdown: - FloatvAddFloatv: - count: 8 - area: - source: hls - total: - BRAM_18K: 0 - DSP: 32 - FF: 6704 - LUT: 3644 - URAM: 0 - FloatvMultConst: - count: 16 - area: - source: hls - total: - BRAM_18K: 0 - DSP: 51 - FF: 3704 - LUT: 1602 - URAM: 0 - Merger: - count: 8 - area: - source: hls - total: - BRAM_18K: 0 - DSP: 0 - FF: 6 - LUT: 69 - URAM: 0 - PEG_Bmtx: - count: 16 - area: - source: hls - total: - BRAM_18K: 128 - DSP: 97 - FF: 8088 - LUT: 9745 - URAM: 0 - PEG_Cmtx: - count: 16 - area: - source: hls - total: - BRAM_18K: 0 - DSP: 65 - FF: 17721 - LUT: 11573 - URAM: 32 - Scatter_1_2: - count: 8 - area: - source: hls - total: - BRAM_18K: 0 - DSP: 0 - FF: 6 - LUT: 67 - URAM: 0 - black_hole_float_v16: - count: 4 - area: - source: hls - total: - BRAM_18K: 0 - DSP: 0 - FF: 6 - LUT: 43 - URAM: 0 - black_hole_int: - count: 2 - area: - source: hls - total: - BRAM_18K: 0 - DSP: 0 - FF: 6 - LUT: 43 - URAM: 0 - read_A: - count: 8 - area: - source: hls - total: - BRAM_18K: 0 - DSP: 1 - FF: 132 - LUT: 346 - URAM: 0 - read_B: - count: 4 - area: - source: hls - total: - BRAM_18K: 0 - DSP: 2 - FF: 348 - LUT: 403 - URAM: 0 - read_C: - count: 8 - area: - source: hls - total: - BRAM_18K: 0 - DSP: 1 - FF: 153 - LUT: 391 - URAM: 0 - read_edge_list_ptr: - count: 1 - area: - source: hls - total: - BRAM_18K: 0 - DSP: 1 - FF: 164 - LUT: 422 - URAM: 0 - write_C: - count: 8 - area: - source: hls - total: - BRAM_18K: 0 - DSP: 1 - FF: 197 - LUT: 448 - URAM: 0 diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv.sched.adb.xml deleted file mode 100644 index 8a7fe77b..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv.sched.adb.xml +++ /dev/null @@ -1,342 +0,0 @@ -FloatvAddFloatv - - - - - - - - - - - - - - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv.verbose.sched.rpt.xml deleted file mode 100644 index e2821f48..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv.verbose.sched.rpt.xml +++ /dev/null @@ -1,45 +0,0 @@ - - -

    -Fri Mar 29 14:40:35 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -FloatvAddFloatv (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.342 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -?, ?, ?, ?, ?, ?, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -
    -
    -
    -
    -
    -
    -
    - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_Pipeline_cc.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_Pipeline_cc.sched.adb.xml deleted file mode 100644 index 4bf2cc9c..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_Pipeline_cc.sched.adb.xml +++ /dev/null @@ -1,4126 +0,0 @@ -FloatvAddFloatv_Pipeline_cc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -LogicGate - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %if.then - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -NULL - - - - - - - -, void %_ZN4tapa7istreamINS_5vec_tIfLi16EEEE8try_readERS2_.exit19 - -]]> - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_Pipeline_cc.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_Pipeline_cc.verbose.sched.rpt.xml deleted file mode 100644 index a7da6f6e..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_Pipeline_cc.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:34 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -FloatvAddFloatv (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.342 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -?, ?, ?, ?, ?, ?, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -?, ?, 9, 1, 1, inf, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_Pipeline_cc_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_Pipeline_cc_csynth.xml deleted file mode 100644 index 7d117412..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_Pipeline_cc_csynth.xml +++ /dev/null @@ -1,233 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -FloatvAddFloatv_Pipeline_cc -3.33 -0.90 -vivado - - - -no - -ns -2.342 - - -clock cycles -undef -undef -undef -undef -undef -undef -undef -undef - - - -2.43 -inf -undef -undef -1 -9 - - - - - - - - -32 -6700 -3597 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -FloatvAddFloatv_Pipeline_cc -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -FloatvAddFloatv_Pipeline_cc -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -FloatvAddFloatv_Pipeline_cc -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -FloatvAddFloatv_Pipeline_cc -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -FloatvAddFloatv_Pipeline_cc -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -FloatvAddFloatv_Pipeline_cc -return value - -ap_ctrl_hs - -out -1 -control - - -fifo_in0_s_dout -fifo_in0_s -pointer - -ap_fifo - -in -513 -control - - -fifo_in0_s_empty_n -fifo_in0_s -pointer - -ap_fifo - -in -1 -control - - -fifo_in0_s_read -fifo_in0_s -pointer - -ap_fifo - -out -1 -control - - -fifo_in1_s_dout -fifo_in1_s -pointer - -ap_fifo - -in -513 -control - - -fifo_in1_s_empty_n -fifo_in1_s -pointer - -ap_fifo - -in -1 -control - - -fifo_in1_s_read -fifo_in1_s -pointer - -ap_fifo - -out -1 -control - - -fifo_out_din -fifo_out -pointer - -ap_fifo - -out -513 -control - - -fifo_out_full_n -fifo_out -pointer - -ap_fifo - -in -1 -control - - -fifo_out_write -fifo_out -pointer - -ap_fifo - -out -1 -control - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_csynth.xml deleted file mode 100644 index be24b3ef..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvAddFloatv_csynth.xml +++ /dev/null @@ -1,302 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -FloatvAddFloatv -3.33 -0.90 -vivado - - - -no - -ns -2.342 - - -clock cycles -undef -undef -undef -undef -undef -undef -undef -undef - - - - - -32 -6704 -3644 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -FloatvAddFloatv -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst_n -FloatvAddFloatv -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -FloatvAddFloatv -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -FloatvAddFloatv -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -FloatvAddFloatv -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -FloatvAddFloatv -return value - -ap_ctrl_hs - -out -1 -control - - -fifo_in0_s_dout -fifo_in0_s -pointer - -ap_fifo - -in -513 -control -int - - -fifo_in0_s_empty_n -fifo_in0_s -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in0_s_read -fifo_in0_s -pointer - -ap_fifo - -out -1 -control -int - - -fifo_in0_peek_dout -fifo_in0_peek -pointer - -ap_fifo - -in -513 -control -int - - -fifo_in0_peek_empty_n -fifo_in0_peek -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in0_peek_read -fifo_in0_peek -pointer - -ap_fifo - -out -1 -control -int - - -fifo_in1_s_dout -fifo_in1_s -pointer - -ap_fifo - -in -513 -control -int - - -fifo_in1_s_empty_n -fifo_in1_s -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in1_s_read -fifo_in1_s -pointer - -ap_fifo - -out -1 -control -int - - -fifo_in1_peek_dout -fifo_in1_peek -pointer - -ap_fifo - -in -513 -control -int - - -fifo_in1_peek_empty_n -fifo_in1_peek -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in1_peek_read -fifo_in1_peek -pointer - -ap_fifo - -out -1 -control -int - - -fifo_out_din -fifo_out -pointer - -ap_fifo - -out -513 -control -int - - -fifo_out_full_n -fifo_out -pointer - -ap_fifo - -in -1 -control -int - - -fifo_out_write -fifo_out -pointer - -ap_fifo - -out -1 -control -int - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst.sched.adb.xml deleted file mode 100644 index bb248794..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst.sched.adb.xml +++ /dev/null @@ -1,717 +0,0 @@ -FloatvMultConst - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -Sel - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -Multiplier - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -Multiplier - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst.verbose.sched.rpt.xml deleted file mode 100644 index 91ebbf28..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst.verbose.sched.rpt.xml +++ /dev/null @@ -1,45 +0,0 @@ - - -
    -Fri Mar 29 14:40:35 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -FloatvMultConst (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.461 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -?, ?, ?, ?, ?, ?, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_Pipeline_cc.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_Pipeline_cc.sched.adb.xml deleted file mode 100644 index 2f548b45..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_Pipeline_cc.sched.adb.xml +++ /dev/null @@ -1,2233 +0,0 @@ -FloatvMultConst_Pipeline_cc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -Adder - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_Pipeline_cc.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_Pipeline_cc.verbose.sched.rpt.xml deleted file mode 100644 index f9c9f695..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_Pipeline_cc.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:35 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -FloatvMultConst (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.322 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -?, ?, ?, ?, ?, ?, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -?, ?, 6, 1, 1, ?, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_Pipeline_cc_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_Pipeline_cc_csynth.xml deleted file mode 100644 index 4d37080d..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_Pipeline_cc_csynth.xml +++ /dev/null @@ -1,222 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -FloatvMultConst_Pipeline_cc -3.33 -0.90 -vivado - - - -no - -ns -2.322 - - -clock cycles -undef -undef -undef -undef -undef -undef -undef -undef - - - -2.43 -undef -undef -undef -1 -6 - - - - - - - - -48 -3420 -1394 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -FloatvMultConst_Pipeline_cc -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -FloatvMultConst_Pipeline_cc -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -FloatvMultConst_Pipeline_cc -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -FloatvMultConst_Pipeline_cc -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -FloatvMultConst_Pipeline_cc -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -FloatvMultConst_Pipeline_cc -return value - -ap_ctrl_hs - -out -1 -control - - -fifo_out_din -fifo_out -pointer - -ap_fifo - -out -513 -control - - -fifo_out_full_n -fifo_out -pointer - -ap_fifo - -in -1 -control - - -fifo_out_write -fifo_out -pointer - -ap_fifo - -out -1 -control - - -num_ite -num_ite -scalar - -ap_none - -in -32 -data - - -fifo_in_s_dout -fifo_in_s -pointer - -ap_fifo - -in -513 -control - - -fifo_in_s_empty_n -fifo_in_s -pointer - -ap_fifo - -in -1 -control - - -fifo_in_s_read -fifo_in_s -pointer - -ap_fifo - -out -1 -control - - -empty -empty -scalar - -ap_none - -in -32 -data - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_csynth.xml deleted file mode 100644 index 5f59b5c4..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/FloatvMultConst_csynth.xml +++ /dev/null @@ -1,266 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -FloatvMultConst -3.33 -0.90 -vivado - - - -no - -ns -2.461 - - -clock cycles -undef -undef -undef -undef -undef -undef -undef -undef - - - - - -51 -3704 -1602 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -FloatvMultConst -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst_n -FloatvMultConst -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -FloatvMultConst -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -FloatvMultConst -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -FloatvMultConst -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -FloatvMultConst -return value - -ap_ctrl_hs - -out -1 -control - - -alpha_u -alpha_u -scalar - -ap_none - -in -32 -data -int - - -M -M -scalar - -ap_none - -in -32 -data -int - - -P_N -P_N -scalar - -ap_none - -in -32 -data -int - - -fifo_in_s_dout -fifo_in_s -pointer - -ap_fifo - -in -513 -control -int - - -fifo_in_s_empty_n -fifo_in_s -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in_s_read -fifo_in_s -pointer - -ap_fifo - -out -1 -control -int - - -fifo_in_peek_dout -fifo_in_peek -pointer - -ap_fifo - -in -513 -control -int - - -fifo_in_peek_empty_n -fifo_in_peek -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in_peek_read -fifo_in_peek -pointer - -ap_fifo - -out -1 -control -int - - -fifo_out_din -fifo_out -pointer - -ap_fifo - -out -513 -control -int - - -fifo_out_full_n -fifo_out -pointer - -ap_fifo - -in -1 -control -int - - -fifo_out_write -fifo_out -pointer - -ap_fifo - -out -1 -control -int - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/Merger.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/Merger.sched.adb.xml deleted file mode 100644 index 66594aa2..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/Merger.sched.adb.xml +++ /dev/null @@ -1,342 +0,0 @@ -Merger - - - - - - - - - - - - - - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/Merger.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/Merger.verbose.sched.rpt.xml deleted file mode 100644 index 7b33a6c3..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/Merger.verbose.sched.rpt.xml +++ /dev/null @@ -1,45 +0,0 @@ - - -
    -Fri Mar 29 14:40:35 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -Merger (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.431 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -?, ?, ?, ?, ?, ?, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/Merger_Pipeline_VITIS_LOOP_410_1.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/Merger_Pipeline_VITIS_LOOP_410_1.sched.adb.xml deleted file mode 100644 index 90b8086b..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/Merger_Pipeline_VITIS_LOOP_410_1.sched.adb.xml +++ /dev/null @@ -1,772 +0,0 @@ -Merger_Pipeline_VITIS_LOOP_410_1 - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -LogicGate - - - - - - - - - - - -LogicGate - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/Merger_Pipeline_VITIS_LOOP_410_1.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/Merger_Pipeline_VITIS_LOOP_410_1.verbose.sched.rpt.xml deleted file mode 100644 index 2240f390..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/Merger_Pipeline_VITIS_LOOP_410_1.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:35 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -Merger (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.431 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -?, ?, ?, ?, ?, ?, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -?, ?, 1, 1, 1, inf, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/Merger_Pipeline_VITIS_LOOP_410_1_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/Merger_Pipeline_VITIS_LOOP_410_1_csynth.xml deleted file mode 100644 index 6ef8f2ad..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/Merger_Pipeline_VITIS_LOOP_410_1_csynth.xml +++ /dev/null @@ -1,233 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -Merger_Pipeline_VITIS_LOOP_410_1 -3.33 -0.90 -vivado - - - -no - -ns -2.431 - - -clock cycles -undef -undef -undef -undef -undef -undef -undef -undef - - - -2.43 -inf -undef -undef -1 -1 - - - - - - - - -2 -22 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -Merger_Pipeline_VITIS_LOOP_410_1 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -Merger_Pipeline_VITIS_LOOP_410_1 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -Merger_Pipeline_VITIS_LOOP_410_1 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -Merger_Pipeline_VITIS_LOOP_410_1 -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -Merger_Pipeline_VITIS_LOOP_410_1 -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -Merger_Pipeline_VITIS_LOOP_410_1 -return value - -ap_ctrl_hs - -out -1 -control - - -fifo_out_din -fifo_out -pointer - -ap_fifo - -out -513 -control - - -fifo_out_full_n -fifo_out -pointer - -ap_fifo - -in -1 -control - - -fifo_out_write -fifo_out -pointer - -ap_fifo - -out -1 -control - - -fifo_in_0_dout -fifo_in_0 -pointer - -ap_fifo - -in -257 -control - - -fifo_in_0_empty_n -fifo_in_0 -pointer - -ap_fifo - -in -1 -control - - -fifo_in_0_read -fifo_in_0 -pointer - -ap_fifo - -out -1 -control - - -fifo_in_1_dout -fifo_in_1 -pointer - -ap_fifo - -in -257 -control - - -fifo_in_1_empty_n -fifo_in_1 -pointer - -ap_fifo - -in -1 -control - - -fifo_in_1_read -fifo_in_1 -pointer - -ap_fifo - -out -1 -control - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/Merger_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/Merger_csynth.xml deleted file mode 100644 index e9a444a4..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/Merger_csynth.xml +++ /dev/null @@ -1,302 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -Merger -3.33 -0.90 -vivado - - - -no - -ns -2.431 - - -clock cycles -undef -undef -undef -undef -undef -undef -undef -undef - - - - - -6 -69 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -Merger -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst_n -Merger -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -Merger -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -Merger -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -Merger -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -Merger -return value - -ap_ctrl_hs - -out -1 -control - - -fifo_in_0_dout -fifo_in_0 -pointer - -ap_fifo - -in -257 -control -int - - -fifo_in_0_empty_n -fifo_in_0 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in_0_read -fifo_in_0 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_in_1_dout -fifo_in_1 -pointer - -ap_fifo - -in -257 -control -int - - -fifo_in_1_empty_n -fifo_in_1 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in_1_read -fifo_in_1 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_in_peek_0_dout -fifo_in_peek_0 -pointer - -ap_fifo - -in -257 -control -int - - -fifo_in_peek_0_empty_n -fifo_in_peek_0 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in_peek_0_read -fifo_in_peek_0 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_in_peek_1_dout -fifo_in_peek_1 -pointer - -ap_fifo - -in -257 -control -int - - -fifo_in_peek_1_empty_n -fifo_in_peek_1 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in_peek_1_read -fifo_in_peek_1 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_out_din -fifo_out -pointer - -ap_fifo - -out -513 -control -int - - -fifo_out_full_n -fifo_out -pointer - -ap_fifo - -in -1 -control -int - - -fifo_out_write -fifo_out -pointer - -ap_fifo - -out -1 -control -int - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx.sched.adb.xml deleted file mode 100644 index 08f1d28f..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx.sched.adb.xml +++ /dev/null @@ -1,3487 +0,0 @@ -PEG_Bmtx - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -Cmp - - - - - - - - - - - -Sel - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -DSP48 - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -Adder - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx.verbose.sched.rpt.xml deleted file mode 100644 index b7c0cb90..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx.verbose.sched.rpt.xml +++ /dev/null @@ -1,47 +0,0 @@ - - -
    -Fri Mar 29 14:40:43 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -PEG_Bmtx (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 3.656 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -28, 570807, 0.102 us, 2.087 ms, 29, 570808, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -21, 570800, 21 ~ 35675, -, -, 1 ~ 16, no -18, 35672, 18 ~ 728, -, -, 1 ~ 49, no -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_computation.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_computation.sched.adb.xml deleted file mode 100644 index f84f695d..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_computation.sched.adb.xml +++ /dev/null @@ -1,10765 +0,0 @@ -PEG_Bmtx_Pipeline_computation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -Adder - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -RAM - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Multiplexer - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -FMul_maxdsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -Sel - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -Sel - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -Sel - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_computation.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_computation.verbose.sched.rpt.xml deleted file mode 100644 index 6f2323c1..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_computation.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:40 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -PEG_Bmtx (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.355 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -9, 208, 29.970 ns, 0.693 us, 9, 208, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -7, 206, 8, 1, 1, 1 ~ 200, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_computation_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_computation_csynth.xml deleted file mode 100644 index 7462356a..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_computation_csynth.xml +++ /dev/null @@ -1,4560 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -PEG_Bmtx_Pipeline_computation -3.33 -0.90 -vivado - - - -no - -ns -2.355 - - -clock cycles -9 -108 -208 -29.970 ns -0.360 us -0.693 us -9 -208 - - - -2.43 - - -1 -200 - - - - -7 -206 - - - - -23 -685 - - -1 -8 - - - - - - - - -96 -7699 -4285 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -PEG_Bmtx_Pipeline_computation -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -PEG_Bmtx_Pipeline_computation -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -PEG_Bmtx_Pipeline_computation -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -PEG_Bmtx_Pipeline_computation -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -PEG_Bmtx_Pipeline_computation -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -PEG_Bmtx_Pipeline_computation -return value - -ap_ctrl_hs - -out -1 -control - - -fifo_aBvec_0_din -fifo_aBvec_0 -pointer - -ap_fifo - -out -275 -control - - -fifo_aBvec_0_full_n -fifo_aBvec_0 -pointer - -ap_fifo - -in -1 -control - - -fifo_aBvec_0_write -fifo_aBvec_0 -pointer - -ap_fifo - -out -1 -control - - -fifo_aBvec_1_din -fifo_aBvec_1 -pointer - -ap_fifo - -out -275 -control - - -fifo_aBvec_1_full_n -fifo_aBvec_1 -pointer - -ap_fifo - -in -1 -control - - -fifo_aBvec_1_write -fifo_aBvec_1 -pointer - -ap_fifo - -out -1 -control - - -fifo_aBvec_2_din -fifo_aBvec_2 -pointer - -ap_fifo - -out -275 -control - - -fifo_aBvec_2_full_n -fifo_aBvec_2 -pointer - -ap_fifo - -in -1 -control - - -fifo_aBvec_2_write -fifo_aBvec_2 -pointer - -ap_fifo - -out -1 -control - - -fifo_aBvec_3_din -fifo_aBvec_3 -pointer - -ap_fifo - -out -275 -control - - -fifo_aBvec_3_full_n -fifo_aBvec_3 -pointer - -ap_fifo - -in -1 -control - - -fifo_aBvec_3_write -fifo_aBvec_3 -pointer - -ap_fifo - -out -1 -control - - -start_32_3 -start_32_3 -scalar - -ap_none - -in -32 -data - - -end_32 -end_32 -scalar - -ap_none - -in -32 -data - - -fifo_A_s_dout -fifo_A_s -pointer - -ap_fifo - -in -257 -control - - -fifo_A_s_empty_n -fifo_A_s -pointer - -ap_fifo - -in -1 -control - - -fifo_A_s_read -fifo_A_s -pointer - -ap_fifo - -out -1 -control - - -local_B_address0 -local_B -array - -ap_memory - -out -10 -address - - -local_B_ce0 -local_B -array - -ap_memory - -out -1 -control - - -local_B_q0 -local_B -array - -ap_memory - -in -32 -data - - -local_B_address1 -local_B -array - -ap_memory - -out -10 -address - - -local_B_ce1 -local_B -array - -ap_memory - -out -1 -control - - -local_B_q1 -local_B -array - -ap_memory - -in -32 -data - - -local_B_1_address0 -local_B_1 -array - -ap_memory - -out -10 -address - - -local_B_1_ce0 -local_B_1 -array - -ap_memory - -out -1 -control - - -local_B_1_q0 -local_B_1 -array - -ap_memory - -in -32 -data - - -local_B_1_address1 -local_B_1 -array - -ap_memory - -out -10 -address - - -local_B_1_ce1 -local_B_1 -array - -ap_memory - -out -1 -control - - -local_B_1_q1 -local_B_1 -array - -ap_memory - -in -32 -data - - -local_B_2_address0 -local_B_2 -array - -ap_memory - -out -10 -address - - -local_B_2_ce0 -local_B_2 -array - -ap_memory - -out -1 -control - - -local_B_2_q0 -local_B_2 -array - -ap_memory - -in -32 -data - - -local_B_2_address1 -local_B_2 -array - -ap_memory - -out -10 -address - - -local_B_2_ce1 -local_B_2 -array - -ap_memory - -out -1 -control - - -local_B_2_q1 -local_B_2 -array - -ap_memory - -in -32 -data - - -local_B_3_address0 -local_B_3 -array - -ap_memory - -out -10 -address - - -local_B_3_ce0 -local_B_3 -array - -ap_memory - -out -1 -control - - -local_B_3_q0 -local_B_3 -array - -ap_memory - -in -32 -data - - -local_B_3_address1 -local_B_3 -array - -ap_memory - -out -10 -address - - -local_B_3_ce1 -local_B_3 -array - -ap_memory - -out -1 -control - - -local_B_3_q1 -local_B_3 -array - -ap_memory - -in -32 -data - - -local_B_4_address0 -local_B_4 -array - -ap_memory - -out -10 -address - - -local_B_4_ce0 -local_B_4 -array - -ap_memory - -out -1 -control - - -local_B_4_q0 -local_B_4 -array - -ap_memory - -in -32 -data - - -local_B_4_address1 -local_B_4 -array - -ap_memory - -out -10 -address - - -local_B_4_ce1 -local_B_4 -array - -ap_memory - -out -1 -control - - -local_B_4_q1 -local_B_4 -array - -ap_memory - -in -32 -data - - -local_B_5_address0 -local_B_5 -array - -ap_memory - -out -10 -address - - -local_B_5_ce0 -local_B_5 -array - -ap_memory - -out -1 -control - - -local_B_5_q0 -local_B_5 -array - -ap_memory - -in -32 -data - - -local_B_5_address1 -local_B_5 -array - -ap_memory - -out -10 -address - - -local_B_5_ce1 -local_B_5 -array - -ap_memory - -out -1 -control - - -local_B_5_q1 -local_B_5 -array - -ap_memory - -in -32 -data - - -local_B_6_address0 -local_B_6 -array - -ap_memory - -out -10 -address - - -local_B_6_ce0 -local_B_6 -array - -ap_memory - -out -1 -control - - -local_B_6_q0 -local_B_6 -array - -ap_memory - -in -32 -data - - -local_B_6_address1 -local_B_6 -array - -ap_memory - -out -10 -address - - -local_B_6_ce1 -local_B_6 -array - -ap_memory - -out -1 -control - - -local_B_6_q1 -local_B_6 -array - -ap_memory - -in -32 -data - - -local_B_7_address0 -local_B_7 -array - -ap_memory - -out -10 -address - - -local_B_7_ce0 -local_B_7 -array - -ap_memory - -out -1 -control - - -local_B_7_q0 -local_B_7 -array - -ap_memory - -in -32 -data - - -local_B_7_address1 -local_B_7 -array - -ap_memory - -out -10 -address - - -local_B_7_ce1 -local_B_7 -array - -ap_memory - -out -1 -control - - -local_B_7_q1 -local_B_7 -array - -ap_memory - -in -32 -data - - -local_B_8_address0 -local_B_8 -array - -ap_memory - -out -10 -address - - -local_B_8_ce0 -local_B_8 -array - -ap_memory - -out -1 -control - - -local_B_8_q0 -local_B_8 -array - -ap_memory - -in -32 -data - - -local_B_8_address1 -local_B_8 -array - -ap_memory - -out -10 -address - - -local_B_8_ce1 -local_B_8 -array - -ap_memory - -out -1 -control - - -local_B_8_q1 -local_B_8 -array - -ap_memory - -in -32 -data - - -local_B_9_address0 -local_B_9 -array - -ap_memory - -out -10 -address - - -local_B_9_ce0 -local_B_9 -array - -ap_memory - -out -1 -control - - -local_B_9_q0 -local_B_9 -array - -ap_memory - -in -32 -data - - -local_B_9_address1 -local_B_9 -array - -ap_memory - -out -10 -address - - -local_B_9_ce1 -local_B_9 -array - -ap_memory - -out -1 -control - - -local_B_9_q1 -local_B_9 -array - -ap_memory - -in -32 -data - - -local_B_10_address0 -local_B_10 -array - -ap_memory - -out -10 -address - - -local_B_10_ce0 -local_B_10 -array - -ap_memory - -out -1 -control - - -local_B_10_q0 -local_B_10 -array - -ap_memory - -in -32 -data - - -local_B_10_address1 -local_B_10 -array - -ap_memory - -out -10 -address - - -local_B_10_ce1 -local_B_10 -array - -ap_memory - -out -1 -control - - -local_B_10_q1 -local_B_10 -array - -ap_memory - -in -32 -data - - -local_B_11_address0 -local_B_11 -array - -ap_memory - -out -10 -address - - -local_B_11_ce0 -local_B_11 -array - -ap_memory - -out -1 -control - - -local_B_11_q0 -local_B_11 -array - -ap_memory - -in -32 -data - - -local_B_11_address1 -local_B_11 -array - -ap_memory - -out -10 -address - - -local_B_11_ce1 -local_B_11 -array - -ap_memory - -out -1 -control - - -local_B_11_q1 -local_B_11 -array - -ap_memory - -in -32 -data - - -local_B_12_address0 -local_B_12 -array - -ap_memory - -out -10 -address - - -local_B_12_ce0 -local_B_12 -array - -ap_memory - -out -1 -control - - -local_B_12_q0 -local_B_12 -array - -ap_memory - -in -32 -data - - -local_B_12_address1 -local_B_12 -array - -ap_memory - -out -10 -address - - -local_B_12_ce1 -local_B_12 -array - -ap_memory - -out -1 -control - - -local_B_12_q1 -local_B_12 -array - -ap_memory - -in -32 -data - - -local_B_13_address0 -local_B_13 -array - -ap_memory - -out -10 -address - - -local_B_13_ce0 -local_B_13 -array - -ap_memory - -out -1 -control - - -local_B_13_q0 -local_B_13 -array - -ap_memory - -in -32 -data - - -local_B_13_address1 -local_B_13 -array - -ap_memory - -out -10 -address - - -local_B_13_ce1 -local_B_13 -array - -ap_memory - -out -1 -control - - -local_B_13_q1 -local_B_13 -array - -ap_memory - -in -32 -data - - -local_B_14_address0 -local_B_14 -array - -ap_memory - -out -10 -address - - -local_B_14_ce0 -local_B_14 -array - -ap_memory - -out -1 -control - - -local_B_14_q0 -local_B_14 -array - -ap_memory - -in -32 -data - - -local_B_14_address1 -local_B_14 -array - -ap_memory - -out -10 -address - - -local_B_14_ce1 -local_B_14 -array - -ap_memory - -out -1 -control - - -local_B_14_q1 -local_B_14 -array - -ap_memory - -in -32 -data - - -local_B_15_address0 -local_B_15 -array - -ap_memory - -out -10 -address - - -local_B_15_ce0 -local_B_15 -array - -ap_memory - -out -1 -control - - -local_B_15_q0 -local_B_15 -array - -ap_memory - -in -32 -data - - -local_B_15_address1 -local_B_15 -array - -ap_memory - -out -10 -address - - -local_B_15_ce1 -local_B_15 -array - -ap_memory - -out -1 -control - - -local_B_15_q1 -local_B_15 -array - -ap_memory - -in -32 -data - - -local_B_16_address0 -local_B_16 -array - -ap_memory - -out -10 -address - - -local_B_16_ce0 -local_B_16 -array - -ap_memory - -out -1 -control - - -local_B_16_q0 -local_B_16 -array - -ap_memory - -in -32 -data - - -local_B_16_address1 -local_B_16 -array - -ap_memory - -out -10 -address - - -local_B_16_ce1 -local_B_16 -array - -ap_memory - -out -1 -control - - -local_B_16_q1 -local_B_16 -array - -ap_memory - -in -32 -data - - -local_B_17_address0 -local_B_17 -array - -ap_memory - -out -10 -address - - -local_B_17_ce0 -local_B_17 -array - -ap_memory - -out -1 -control - - -local_B_17_q0 -local_B_17 -array - -ap_memory - -in -32 -data - - -local_B_17_address1 -local_B_17 -array - -ap_memory - -out -10 -address - - -local_B_17_ce1 -local_B_17 -array - -ap_memory - -out -1 -control - - -local_B_17_q1 -local_B_17 -array - -ap_memory - -in -32 -data - - -local_B_18_address0 -local_B_18 -array - -ap_memory - -out -10 -address - - -local_B_18_ce0 -local_B_18 -array - -ap_memory - -out -1 -control - - -local_B_18_q0 -local_B_18 -array - -ap_memory - -in -32 -data - - -local_B_18_address1 -local_B_18 -array - -ap_memory - -out -10 -address - - -local_B_18_ce1 -local_B_18 -array - -ap_memory - -out -1 -control - - -local_B_18_q1 -local_B_18 -array - -ap_memory - -in -32 -data - - -local_B_19_address0 -local_B_19 -array - -ap_memory - -out -10 -address - - -local_B_19_ce0 -local_B_19 -array - -ap_memory - -out -1 -control - - -local_B_19_q0 -local_B_19 -array - -ap_memory - -in -32 -data - - -local_B_19_address1 -local_B_19 -array - -ap_memory - -out -10 -address - - -local_B_19_ce1 -local_B_19 -array - -ap_memory - -out -1 -control - - -local_B_19_q1 -local_B_19 -array - -ap_memory - -in -32 -data - - -local_B_20_address0 -local_B_20 -array - -ap_memory - -out -10 -address - - -local_B_20_ce0 -local_B_20 -array - -ap_memory - -out -1 -control - - -local_B_20_q0 -local_B_20 -array - -ap_memory - -in -32 -data - - -local_B_20_address1 -local_B_20 -array - -ap_memory - -out -10 -address - - -local_B_20_ce1 -local_B_20 -array - -ap_memory - -out -1 -control - - -local_B_20_q1 -local_B_20 -array - -ap_memory - -in -32 -data - - -local_B_21_address0 -local_B_21 -array - -ap_memory - -out -10 -address - - -local_B_21_ce0 -local_B_21 -array - -ap_memory - -out -1 -control - - -local_B_21_q0 -local_B_21 -array - -ap_memory - -in -32 -data - - -local_B_21_address1 -local_B_21 -array - -ap_memory - -out -10 -address - - -local_B_21_ce1 -local_B_21 -array - -ap_memory - -out -1 -control - - -local_B_21_q1 -local_B_21 -array - -ap_memory - -in -32 -data - - -local_B_22_address0 -local_B_22 -array - -ap_memory - -out -10 -address - - -local_B_22_ce0 -local_B_22 -array - -ap_memory - -out -1 -control - - -local_B_22_q0 -local_B_22 -array - -ap_memory - -in -32 -data - - -local_B_22_address1 -local_B_22 -array - -ap_memory - -out -10 -address - - -local_B_22_ce1 -local_B_22 -array - -ap_memory - -out -1 -control - - -local_B_22_q1 -local_B_22 -array - -ap_memory - -in -32 -data - - -local_B_23_address0 -local_B_23 -array - -ap_memory - -out -10 -address - - -local_B_23_ce0 -local_B_23 -array - -ap_memory - -out -1 -control - - -local_B_23_q0 -local_B_23 -array - -ap_memory - -in -32 -data - - -local_B_23_address1 -local_B_23 -array - -ap_memory - -out -10 -address - - -local_B_23_ce1 -local_B_23 -array - -ap_memory - -out -1 -control - - -local_B_23_q1 -local_B_23 -array - -ap_memory - -in -32 -data - - -local_B_24_address0 -local_B_24 -array - -ap_memory - -out -10 -address - - -local_B_24_ce0 -local_B_24 -array - -ap_memory - -out -1 -control - - -local_B_24_q0 -local_B_24 -array - -ap_memory - -in -32 -data - - -local_B_24_address1 -local_B_24 -array - -ap_memory - -out -10 -address - - -local_B_24_ce1 -local_B_24 -array - -ap_memory - -out -1 -control - - -local_B_24_q1 -local_B_24 -array - -ap_memory - -in -32 -data - - -local_B_25_address0 -local_B_25 -array - -ap_memory - -out -10 -address - - -local_B_25_ce0 -local_B_25 -array - -ap_memory - -out -1 -control - - -local_B_25_q0 -local_B_25 -array - -ap_memory - -in -32 -data - - -local_B_25_address1 -local_B_25 -array - -ap_memory - -out -10 -address - - -local_B_25_ce1 -local_B_25 -array - -ap_memory - -out -1 -control - - -local_B_25_q1 -local_B_25 -array - -ap_memory - -in -32 -data - - -local_B_26_address0 -local_B_26 -array - -ap_memory - -out -10 -address - - -local_B_26_ce0 -local_B_26 -array - -ap_memory - -out -1 -control - - -local_B_26_q0 -local_B_26 -array - -ap_memory - -in -32 -data - - -local_B_26_address1 -local_B_26 -array - -ap_memory - -out -10 -address - - -local_B_26_ce1 -local_B_26 -array - -ap_memory - -out -1 -control - - -local_B_26_q1 -local_B_26 -array - -ap_memory - -in -32 -data - - -local_B_27_address0 -local_B_27 -array - -ap_memory - -out -10 -address - - -local_B_27_ce0 -local_B_27 -array - -ap_memory - -out -1 -control - - -local_B_27_q0 -local_B_27 -array - -ap_memory - -in -32 -data - - -local_B_27_address1 -local_B_27 -array - -ap_memory - -out -10 -address - - -local_B_27_ce1 -local_B_27 -array - -ap_memory - -out -1 -control - - -local_B_27_q1 -local_B_27 -array - -ap_memory - -in -32 -data - - -local_B_28_address0 -local_B_28 -array - -ap_memory - -out -10 -address - - -local_B_28_ce0 -local_B_28 -array - -ap_memory - -out -1 -control - - -local_B_28_q0 -local_B_28 -array - -ap_memory - -in -32 -data - - -local_B_28_address1 -local_B_28 -array - -ap_memory - -out -10 -address - - -local_B_28_ce1 -local_B_28 -array - -ap_memory - -out -1 -control - - -local_B_28_q1 -local_B_28 -array - -ap_memory - -in -32 -data - - -local_B_29_address0 -local_B_29 -array - -ap_memory - -out -10 -address - - -local_B_29_ce0 -local_B_29 -array - -ap_memory - -out -1 -control - - -local_B_29_q0 -local_B_29 -array - -ap_memory - -in -32 -data - - -local_B_29_address1 -local_B_29 -array - -ap_memory - -out -10 -address - - -local_B_29_ce1 -local_B_29 -array - -ap_memory - -out -1 -control - - -local_B_29_q1 -local_B_29 -array - -ap_memory - -in -32 -data - - -local_B_30_address0 -local_B_30 -array - -ap_memory - -out -10 -address - - -local_B_30_ce0 -local_B_30 -array - -ap_memory - -out -1 -control - - -local_B_30_q0 -local_B_30 -array - -ap_memory - -in -32 -data - - -local_B_30_address1 -local_B_30 -array - -ap_memory - -out -10 -address - - -local_B_30_ce1 -local_B_30 -array - -ap_memory - -out -1 -control - - -local_B_30_q1 -local_B_30 -array - -ap_memory - -in -32 -data - - -local_B_31_address0 -local_B_31 -array - -ap_memory - -out -10 -address - - -local_B_31_ce0 -local_B_31 -array - -ap_memory - -out -1 -control - - -local_B_31_q0 -local_B_31 -array - -ap_memory - -in -32 -data - - -local_B_31_address1 -local_B_31 -array - -ap_memory - -out -10 -address - - -local_B_31_ce1 -local_B_31 -array - -ap_memory - -out -1 -control - - -local_B_31_q1 -local_B_31 -array - -ap_memory - -in -32 -data - - -local_B_32_address0 -local_B_32 -array - -ap_memory - -out -10 -address - - -local_B_32_ce0 -local_B_32 -array - -ap_memory - -out -1 -control - - -local_B_32_q0 -local_B_32 -array - -ap_memory - -in -32 -data - - -local_B_32_address1 -local_B_32 -array - -ap_memory - -out -10 -address - - -local_B_32_ce1 -local_B_32 -array - -ap_memory - -out -1 -control - - -local_B_32_q1 -local_B_32 -array - -ap_memory - -in -32 -data - - -local_B_33_address0 -local_B_33 -array - -ap_memory - -out -10 -address - - -local_B_33_ce0 -local_B_33 -array - -ap_memory - -out -1 -control - - -local_B_33_q0 -local_B_33 -array - -ap_memory - -in -32 -data - - -local_B_33_address1 -local_B_33 -array - -ap_memory - -out -10 -address - - -local_B_33_ce1 -local_B_33 -array - -ap_memory - -out -1 -control - - -local_B_33_q1 -local_B_33 -array - -ap_memory - -in -32 -data - - -local_B_34_address0 -local_B_34 -array - -ap_memory - -out -10 -address - - -local_B_34_ce0 -local_B_34 -array - -ap_memory - -out -1 -control - - -local_B_34_q0 -local_B_34 -array - -ap_memory - -in -32 -data - - -local_B_34_address1 -local_B_34 -array - -ap_memory - -out -10 -address - - -local_B_34_ce1 -local_B_34 -array - -ap_memory - -out -1 -control - - -local_B_34_q1 -local_B_34 -array - -ap_memory - -in -32 -data - - -local_B_35_address0 -local_B_35 -array - -ap_memory - -out -10 -address - - -local_B_35_ce0 -local_B_35 -array - -ap_memory - -out -1 -control - - -local_B_35_q0 -local_B_35 -array - -ap_memory - -in -32 -data - - -local_B_35_address1 -local_B_35 -array - -ap_memory - -out -10 -address - - -local_B_35_ce1 -local_B_35 -array - -ap_memory - -out -1 -control - - -local_B_35_q1 -local_B_35 -array - -ap_memory - -in -32 -data - - -local_B_36_address0 -local_B_36 -array - -ap_memory - -out -10 -address - - -local_B_36_ce0 -local_B_36 -array - -ap_memory - -out -1 -control - - -local_B_36_q0 -local_B_36 -array - -ap_memory - -in -32 -data - - -local_B_36_address1 -local_B_36 -array - -ap_memory - -out -10 -address - - -local_B_36_ce1 -local_B_36 -array - -ap_memory - -out -1 -control - - -local_B_36_q1 -local_B_36 -array - -ap_memory - -in -32 -data - - -local_B_37_address0 -local_B_37 -array - -ap_memory - -out -10 -address - - -local_B_37_ce0 -local_B_37 -array - -ap_memory - -out -1 -control - - -local_B_37_q0 -local_B_37 -array - -ap_memory - -in -32 -data - - -local_B_37_address1 -local_B_37 -array - -ap_memory - -out -10 -address - - -local_B_37_ce1 -local_B_37 -array - -ap_memory - -out -1 -control - - -local_B_37_q1 -local_B_37 -array - -ap_memory - -in -32 -data - - -local_B_38_address0 -local_B_38 -array - -ap_memory - -out -10 -address - - -local_B_38_ce0 -local_B_38 -array - -ap_memory - -out -1 -control - - -local_B_38_q0 -local_B_38 -array - -ap_memory - -in -32 -data - - -local_B_38_address1 -local_B_38 -array - -ap_memory - -out -10 -address - - -local_B_38_ce1 -local_B_38 -array - -ap_memory - -out -1 -control - - -local_B_38_q1 -local_B_38 -array - -ap_memory - -in -32 -data - - -local_B_39_address0 -local_B_39 -array - -ap_memory - -out -10 -address - - -local_B_39_ce0 -local_B_39 -array - -ap_memory - -out -1 -control - - -local_B_39_q0 -local_B_39 -array - -ap_memory - -in -32 -data - - -local_B_39_address1 -local_B_39 -array - -ap_memory - -out -10 -address - - -local_B_39_ce1 -local_B_39 -array - -ap_memory - -out -1 -control - - -local_B_39_q1 -local_B_39 -array - -ap_memory - -in -32 -data - - -local_B_40_address0 -local_B_40 -array - -ap_memory - -out -10 -address - - -local_B_40_ce0 -local_B_40 -array - -ap_memory - -out -1 -control - - -local_B_40_q0 -local_B_40 -array - -ap_memory - -in -32 -data - - -local_B_40_address1 -local_B_40 -array - -ap_memory - -out -10 -address - - -local_B_40_ce1 -local_B_40 -array - -ap_memory - -out -1 -control - - -local_B_40_q1 -local_B_40 -array - -ap_memory - -in -32 -data - - -local_B_41_address0 -local_B_41 -array - -ap_memory - -out -10 -address - - -local_B_41_ce0 -local_B_41 -array - -ap_memory - -out -1 -control - - -local_B_41_q0 -local_B_41 -array - -ap_memory - -in -32 -data - - -local_B_41_address1 -local_B_41 -array - -ap_memory - -out -10 -address - - -local_B_41_ce1 -local_B_41 -array - -ap_memory - -out -1 -control - - -local_B_41_q1 -local_B_41 -array - -ap_memory - -in -32 -data - - -local_B_42_address0 -local_B_42 -array - -ap_memory - -out -10 -address - - -local_B_42_ce0 -local_B_42 -array - -ap_memory - -out -1 -control - - -local_B_42_q0 -local_B_42 -array - -ap_memory - -in -32 -data - - -local_B_42_address1 -local_B_42 -array - -ap_memory - -out -10 -address - - -local_B_42_ce1 -local_B_42 -array - -ap_memory - -out -1 -control - - -local_B_42_q1 -local_B_42 -array - -ap_memory - -in -32 -data - - -local_B_43_address0 -local_B_43 -array - -ap_memory - -out -10 -address - - -local_B_43_ce0 -local_B_43 -array - -ap_memory - -out -1 -control - - -local_B_43_q0 -local_B_43 -array - -ap_memory - -in -32 -data - - -local_B_43_address1 -local_B_43 -array - -ap_memory - -out -10 -address - - -local_B_43_ce1 -local_B_43 -array - -ap_memory - -out -1 -control - - -local_B_43_q1 -local_B_43 -array - -ap_memory - -in -32 -data - - -local_B_44_address0 -local_B_44 -array - -ap_memory - -out -10 -address - - -local_B_44_ce0 -local_B_44 -array - -ap_memory - -out -1 -control - - -local_B_44_q0 -local_B_44 -array - -ap_memory - -in -32 -data - - -local_B_44_address1 -local_B_44 -array - -ap_memory - -out -10 -address - - -local_B_44_ce1 -local_B_44 -array - -ap_memory - -out -1 -control - - -local_B_44_q1 -local_B_44 -array - -ap_memory - -in -32 -data - - -local_B_45_address0 -local_B_45 -array - -ap_memory - -out -10 -address - - -local_B_45_ce0 -local_B_45 -array - -ap_memory - -out -1 -control - - -local_B_45_q0 -local_B_45 -array - -ap_memory - -in -32 -data - - -local_B_45_address1 -local_B_45 -array - -ap_memory - -out -10 -address - - -local_B_45_ce1 -local_B_45 -array - -ap_memory - -out -1 -control - - -local_B_45_q1 -local_B_45 -array - -ap_memory - -in -32 -data - - -local_B_46_address0 -local_B_46 -array - -ap_memory - -out -10 -address - - -local_B_46_ce0 -local_B_46 -array - -ap_memory - -out -1 -control - - -local_B_46_q0 -local_B_46 -array - -ap_memory - -in -32 -data - - -local_B_46_address1 -local_B_46 -array - -ap_memory - -out -10 -address - - -local_B_46_ce1 -local_B_46 -array - -ap_memory - -out -1 -control - - -local_B_46_q1 -local_B_46 -array - -ap_memory - -in -32 -data - - -local_B_47_address0 -local_B_47 -array - -ap_memory - -out -10 -address - - -local_B_47_ce0 -local_B_47 -array - -ap_memory - -out -1 -control - - -local_B_47_q0 -local_B_47 -array - -ap_memory - -in -32 -data - - -local_B_47_address1 -local_B_47 -array - -ap_memory - -out -10 -address - - -local_B_47_ce1 -local_B_47 -array - -ap_memory - -out -1 -control - - -local_B_47_q1 -local_B_47 -array - -ap_memory - -in -32 -data - - -local_B_48_address0 -local_B_48 -array - -ap_memory - -out -10 -address - - -local_B_48_ce0 -local_B_48 -array - -ap_memory - -out -1 -control - - -local_B_48_q0 -local_B_48 -array - -ap_memory - -in -32 -data - - -local_B_48_address1 -local_B_48 -array - -ap_memory - -out -10 -address - - -local_B_48_ce1 -local_B_48 -array - -ap_memory - -out -1 -control - - -local_B_48_q1 -local_B_48 -array - -ap_memory - -in -32 -data - - -local_B_49_address0 -local_B_49 -array - -ap_memory - -out -10 -address - - -local_B_49_ce0 -local_B_49 -array - -ap_memory - -out -1 -control - - -local_B_49_q0 -local_B_49 -array - -ap_memory - -in -32 -data - - -local_B_49_address1 -local_B_49 -array - -ap_memory - -out -10 -address - - -local_B_49_ce1 -local_B_49 -array - -ap_memory - -out -1 -control - - -local_B_49_q1 -local_B_49 -array - -ap_memory - -in -32 -data - - -local_B_50_address0 -local_B_50 -array - -ap_memory - -out -10 -address - - -local_B_50_ce0 -local_B_50 -array - -ap_memory - -out -1 -control - - -local_B_50_q0 -local_B_50 -array - -ap_memory - -in -32 -data - - -local_B_50_address1 -local_B_50 -array - -ap_memory - -out -10 -address - - -local_B_50_ce1 -local_B_50 -array - -ap_memory - -out -1 -control - - -local_B_50_q1 -local_B_50 -array - -ap_memory - -in -32 -data - - -local_B_51_address0 -local_B_51 -array - -ap_memory - -out -10 -address - - -local_B_51_ce0 -local_B_51 -array - -ap_memory - -out -1 -control - - -local_B_51_q0 -local_B_51 -array - -ap_memory - -in -32 -data - - -local_B_51_address1 -local_B_51 -array - -ap_memory - -out -10 -address - - -local_B_51_ce1 -local_B_51 -array - -ap_memory - -out -1 -control - - -local_B_51_q1 -local_B_51 -array - -ap_memory - -in -32 -data - - -local_B_52_address0 -local_B_52 -array - -ap_memory - -out -10 -address - - -local_B_52_ce0 -local_B_52 -array - -ap_memory - -out -1 -control - - -local_B_52_q0 -local_B_52 -array - -ap_memory - -in -32 -data - - -local_B_52_address1 -local_B_52 -array - -ap_memory - -out -10 -address - - -local_B_52_ce1 -local_B_52 -array - -ap_memory - -out -1 -control - - -local_B_52_q1 -local_B_52 -array - -ap_memory - -in -32 -data - - -local_B_53_address0 -local_B_53 -array - -ap_memory - -out -10 -address - - -local_B_53_ce0 -local_B_53 -array - -ap_memory - -out -1 -control - - -local_B_53_q0 -local_B_53 -array - -ap_memory - -in -32 -data - - -local_B_53_address1 -local_B_53 -array - -ap_memory - -out -10 -address - - -local_B_53_ce1 -local_B_53 -array - -ap_memory - -out -1 -control - - -local_B_53_q1 -local_B_53 -array - -ap_memory - -in -32 -data - - -local_B_54_address0 -local_B_54 -array - -ap_memory - -out -10 -address - - -local_B_54_ce0 -local_B_54 -array - -ap_memory - -out -1 -control - - -local_B_54_q0 -local_B_54 -array - -ap_memory - -in -32 -data - - -local_B_54_address1 -local_B_54 -array - -ap_memory - -out -10 -address - - -local_B_54_ce1 -local_B_54 -array - -ap_memory - -out -1 -control - - -local_B_54_q1 -local_B_54 -array - -ap_memory - -in -32 -data - - -local_B_55_address0 -local_B_55 -array - -ap_memory - -out -10 -address - - -local_B_55_ce0 -local_B_55 -array - -ap_memory - -out -1 -control - - -local_B_55_q0 -local_B_55 -array - -ap_memory - -in -32 -data - - -local_B_55_address1 -local_B_55 -array - -ap_memory - -out -10 -address - - -local_B_55_ce1 -local_B_55 -array - -ap_memory - -out -1 -control - - -local_B_55_q1 -local_B_55 -array - -ap_memory - -in -32 -data - - -local_B_56_address0 -local_B_56 -array - -ap_memory - -out -10 -address - - -local_B_56_ce0 -local_B_56 -array - -ap_memory - -out -1 -control - - -local_B_56_q0 -local_B_56 -array - -ap_memory - -in -32 -data - - -local_B_56_address1 -local_B_56 -array - -ap_memory - -out -10 -address - - -local_B_56_ce1 -local_B_56 -array - -ap_memory - -out -1 -control - - -local_B_56_q1 -local_B_56 -array - -ap_memory - -in -32 -data - - -local_B_57_address0 -local_B_57 -array - -ap_memory - -out -10 -address - - -local_B_57_ce0 -local_B_57 -array - -ap_memory - -out -1 -control - - -local_B_57_q0 -local_B_57 -array - -ap_memory - -in -32 -data - - -local_B_57_address1 -local_B_57 -array - -ap_memory - -out -10 -address - - -local_B_57_ce1 -local_B_57 -array - -ap_memory - -out -1 -control - - -local_B_57_q1 -local_B_57 -array - -ap_memory - -in -32 -data - - -local_B_58_address0 -local_B_58 -array - -ap_memory - -out -10 -address - - -local_B_58_ce0 -local_B_58 -array - -ap_memory - -out -1 -control - - -local_B_58_q0 -local_B_58 -array - -ap_memory - -in -32 -data - - -local_B_58_address1 -local_B_58 -array - -ap_memory - -out -10 -address - - -local_B_58_ce1 -local_B_58 -array - -ap_memory - -out -1 -control - - -local_B_58_q1 -local_B_58 -array - -ap_memory - -in -32 -data - - -local_B_59_address0 -local_B_59 -array - -ap_memory - -out -10 -address - - -local_B_59_ce0 -local_B_59 -array - -ap_memory - -out -1 -control - - -local_B_59_q0 -local_B_59 -array - -ap_memory - -in -32 -data - - -local_B_59_address1 -local_B_59 -array - -ap_memory - -out -10 -address - - -local_B_59_ce1 -local_B_59 -array - -ap_memory - -out -1 -control - - -local_B_59_q1 -local_B_59 -array - -ap_memory - -in -32 -data - - -local_B_60_address0 -local_B_60 -array - -ap_memory - -out -10 -address - - -local_B_60_ce0 -local_B_60 -array - -ap_memory - -out -1 -control - - -local_B_60_q0 -local_B_60 -array - -ap_memory - -in -32 -data - - -local_B_60_address1 -local_B_60 -array - -ap_memory - -out -10 -address - - -local_B_60_ce1 -local_B_60 -array - -ap_memory - -out -1 -control - - -local_B_60_q1 -local_B_60 -array - -ap_memory - -in -32 -data - - -local_B_61_address0 -local_B_61 -array - -ap_memory - -out -10 -address - - -local_B_61_ce0 -local_B_61 -array - -ap_memory - -out -1 -control - - -local_B_61_q0 -local_B_61 -array - -ap_memory - -in -32 -data - - -local_B_61_address1 -local_B_61 -array - -ap_memory - -out -10 -address - - -local_B_61_ce1 -local_B_61 -array - -ap_memory - -out -1 -control - - -local_B_61_q1 -local_B_61 -array - -ap_memory - -in -32 -data - - -local_B_62_address0 -local_B_62 -array - -ap_memory - -out -10 -address - - -local_B_62_ce0 -local_B_62 -array - -ap_memory - -out -1 -control - - -local_B_62_q0 -local_B_62 -array - -ap_memory - -in -32 -data - - -local_B_62_address1 -local_B_62 -array - -ap_memory - -out -10 -address - - -local_B_62_ce1 -local_B_62 -array - -ap_memory - -out -1 -control - - -local_B_62_q1 -local_B_62 -array - -ap_memory - -in -32 -data - - -local_B_63_address0 -local_B_63 -array - -ap_memory - -out -10 -address - - -local_B_63_ce0 -local_B_63 -array - -ap_memory - -out -1 -control - - -local_B_63_q0 -local_B_63 -array - -ap_memory - -in -32 -data - - -local_B_63_address1 -local_B_63 -array - -ap_memory - -out -10 -address - - -local_B_63_ce1 -local_B_63 -array - -ap_memory - -out -1 -control - - -local_B_63_q1 -local_B_63 -array - -ap_memory - -in -32 -data - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_read_B.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_read_B.sched.adb.xml deleted file mode 100644 index 16a128e9..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_read_B.sched.adb.xml +++ /dev/null @@ -1,7634 +0,0 @@ -PEG_Bmtx_Pipeline_read_B - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -Cmp - - - - - - - - - - - -LogicGate - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM - - - - - - - - - - - - - -Adder - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_read_B.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_read_B.verbose.sched.rpt.xml deleted file mode 100644 index 061bfb87..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_read_B.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:39 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -PEG_Bmtx (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.431 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -3, 514, 9.990 ns, 1.712 us, 3, 514, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -1, 512, 1, 1, 1, 1 ~ 512, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_read_B_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_read_B_csynth.xml deleted file mode 100644 index 53759428..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_Pipeline_read_B_csynth.xml +++ /dev/null @@ -1,6056 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -PEG_Bmtx_Pipeline_read_B -3.33 -0.90 -vivado - - - -no - -ns -2.431 - - -clock cycles -3 -258 -514 -9.990 ns -0.859 us -1.712 us -3 -514 - - - -2.43 - - -1 -512 - - - - -1 -512 - - - - -3 -1704 - - -1 -1 - - - - - - - - -34 -136 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -PEG_Bmtx_Pipeline_read_B -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -PEG_Bmtx_Pipeline_read_B -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -PEG_Bmtx_Pipeline_read_B -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -PEG_Bmtx_Pipeline_read_B -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -PEG_Bmtx_Pipeline_read_B -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -PEG_Bmtx_Pipeline_read_B -return value - -ap_ctrl_hs - -out -1 -control - - -local_B_63_address0 -local_B_63 -array - -ap_memory - -out -10 -address - - -local_B_63_ce0 -local_B_63 -array - -ap_memory - -out -1 -control - - -local_B_63_we0 -local_B_63 -array - -ap_memory - -out -1 -control - - -local_B_63_d0 -local_B_63 -array - -ap_memory - -out -32 -data - - -local_B_63_address1 -local_B_63 -array - -ap_memory - -out -10 -address - - -local_B_63_ce1 -local_B_63 -array - -ap_memory - -out -1 -control - - -local_B_63_we1 -local_B_63 -array - -ap_memory - -out -1 -control - - -local_B_63_d1 -local_B_63 -array - -ap_memory - -out -32 -data - - -local_B_62_address0 -local_B_62 -array - -ap_memory - -out -10 -address - - -local_B_62_ce0 -local_B_62 -array - -ap_memory - -out -1 -control - - -local_B_62_we0 -local_B_62 -array - -ap_memory - -out -1 -control - - -local_B_62_d0 -local_B_62 -array - -ap_memory - -out -32 -data - - -local_B_62_address1 -local_B_62 -array - -ap_memory - -out -10 -address - - -local_B_62_ce1 -local_B_62 -array - -ap_memory - -out -1 -control - - -local_B_62_we1 -local_B_62 -array - -ap_memory - -out -1 -control - - -local_B_62_d1 -local_B_62 -array - -ap_memory - -out -32 -data - - -local_B_61_address0 -local_B_61 -array - -ap_memory - -out -10 -address - - -local_B_61_ce0 -local_B_61 -array - -ap_memory - -out -1 -control - - -local_B_61_we0 -local_B_61 -array - -ap_memory - -out -1 -control - - -local_B_61_d0 -local_B_61 -array - -ap_memory - -out -32 -data - - -local_B_61_address1 -local_B_61 -array - -ap_memory - -out -10 -address - - -local_B_61_ce1 -local_B_61 -array - -ap_memory - -out -1 -control - - -local_B_61_we1 -local_B_61 -array - -ap_memory - -out -1 -control - - -local_B_61_d1 -local_B_61 -array - -ap_memory - -out -32 -data - - -local_B_60_address0 -local_B_60 -array - -ap_memory - -out -10 -address - - -local_B_60_ce0 -local_B_60 -array - -ap_memory - -out -1 -control - - -local_B_60_we0 -local_B_60 -array - -ap_memory - -out -1 -control - - -local_B_60_d0 -local_B_60 -array - -ap_memory - -out -32 -data - - -local_B_60_address1 -local_B_60 -array - -ap_memory - -out -10 -address - - -local_B_60_ce1 -local_B_60 -array - -ap_memory - -out -1 -control - - -local_B_60_we1 -local_B_60 -array - -ap_memory - -out -1 -control - - -local_B_60_d1 -local_B_60 -array - -ap_memory - -out -32 -data - - -local_B_59_address0 -local_B_59 -array - -ap_memory - -out -10 -address - - -local_B_59_ce0 -local_B_59 -array - -ap_memory - -out -1 -control - - -local_B_59_we0 -local_B_59 -array - -ap_memory - -out -1 -control - - -local_B_59_d0 -local_B_59 -array - -ap_memory - -out -32 -data - - -local_B_59_address1 -local_B_59 -array - -ap_memory - -out -10 -address - - -local_B_59_ce1 -local_B_59 -array - -ap_memory - -out -1 -control - - -local_B_59_we1 -local_B_59 -array - -ap_memory - -out -1 -control - - -local_B_59_d1 -local_B_59 -array - -ap_memory - -out -32 -data - - -local_B_58_address0 -local_B_58 -array - -ap_memory - -out -10 -address - - -local_B_58_ce0 -local_B_58 -array - -ap_memory - -out -1 -control - - -local_B_58_we0 -local_B_58 -array - -ap_memory - -out -1 -control - - -local_B_58_d0 -local_B_58 -array - -ap_memory - -out -32 -data - - -local_B_58_address1 -local_B_58 -array - -ap_memory - -out -10 -address - - -local_B_58_ce1 -local_B_58 -array - -ap_memory - -out -1 -control - - -local_B_58_we1 -local_B_58 -array - -ap_memory - -out -1 -control - - -local_B_58_d1 -local_B_58 -array - -ap_memory - -out -32 -data - - -local_B_57_address0 -local_B_57 -array - -ap_memory - -out -10 -address - - -local_B_57_ce0 -local_B_57 -array - -ap_memory - -out -1 -control - - -local_B_57_we0 -local_B_57 -array - -ap_memory - -out -1 -control - - -local_B_57_d0 -local_B_57 -array - -ap_memory - -out -32 -data - - -local_B_57_address1 -local_B_57 -array - -ap_memory - -out -10 -address - - -local_B_57_ce1 -local_B_57 -array - -ap_memory - -out -1 -control - - -local_B_57_we1 -local_B_57 -array - -ap_memory - -out -1 -control - - -local_B_57_d1 -local_B_57 -array - -ap_memory - -out -32 -data - - -local_B_56_address0 -local_B_56 -array - -ap_memory - -out -10 -address - - -local_B_56_ce0 -local_B_56 -array - -ap_memory - -out -1 -control - - -local_B_56_we0 -local_B_56 -array - -ap_memory - -out -1 -control - - -local_B_56_d0 -local_B_56 -array - -ap_memory - -out -32 -data - - -local_B_56_address1 -local_B_56 -array - -ap_memory - -out -10 -address - - -local_B_56_ce1 -local_B_56 -array - -ap_memory - -out -1 -control - - -local_B_56_we1 -local_B_56 -array - -ap_memory - -out -1 -control - - -local_B_56_d1 -local_B_56 -array - -ap_memory - -out -32 -data - - -local_B_55_address0 -local_B_55 -array - -ap_memory - -out -10 -address - - -local_B_55_ce0 -local_B_55 -array - -ap_memory - -out -1 -control - - -local_B_55_we0 -local_B_55 -array - -ap_memory - -out -1 -control - - -local_B_55_d0 -local_B_55 -array - -ap_memory - -out -32 -data - - -local_B_55_address1 -local_B_55 -array - -ap_memory - -out -10 -address - - -local_B_55_ce1 -local_B_55 -array - -ap_memory - -out -1 -control - - -local_B_55_we1 -local_B_55 -array - -ap_memory - -out -1 -control - - -local_B_55_d1 -local_B_55 -array - -ap_memory - -out -32 -data - - -local_B_54_address0 -local_B_54 -array - -ap_memory - -out -10 -address - - -local_B_54_ce0 -local_B_54 -array - -ap_memory - -out -1 -control - - -local_B_54_we0 -local_B_54 -array - -ap_memory - -out -1 -control - - -local_B_54_d0 -local_B_54 -array - -ap_memory - -out -32 -data - - -local_B_54_address1 -local_B_54 -array - -ap_memory - -out -10 -address - - -local_B_54_ce1 -local_B_54 -array - -ap_memory - -out -1 -control - - -local_B_54_we1 -local_B_54 -array - -ap_memory - -out -1 -control - - -local_B_54_d1 -local_B_54 -array - -ap_memory - -out -32 -data - - -local_B_53_address0 -local_B_53 -array - -ap_memory - -out -10 -address - - -local_B_53_ce0 -local_B_53 -array - -ap_memory - -out -1 -control - - -local_B_53_we0 -local_B_53 -array - -ap_memory - -out -1 -control - - -local_B_53_d0 -local_B_53 -array - -ap_memory - -out -32 -data - - -local_B_53_address1 -local_B_53 -array - -ap_memory - -out -10 -address - - -local_B_53_ce1 -local_B_53 -array - -ap_memory - -out -1 -control - - -local_B_53_we1 -local_B_53 -array - -ap_memory - -out -1 -control - - -local_B_53_d1 -local_B_53 -array - -ap_memory - -out -32 -data - - -local_B_52_address0 -local_B_52 -array - -ap_memory - -out -10 -address - - -local_B_52_ce0 -local_B_52 -array - -ap_memory - -out -1 -control - - -local_B_52_we0 -local_B_52 -array - -ap_memory - -out -1 -control - - -local_B_52_d0 -local_B_52 -array - -ap_memory - -out -32 -data - - -local_B_52_address1 -local_B_52 -array - -ap_memory - -out -10 -address - - -local_B_52_ce1 -local_B_52 -array - -ap_memory - -out -1 -control - - -local_B_52_we1 -local_B_52 -array - -ap_memory - -out -1 -control - - -local_B_52_d1 -local_B_52 -array - -ap_memory - -out -32 -data - - -local_B_51_address0 -local_B_51 -array - -ap_memory - -out -10 -address - - -local_B_51_ce0 -local_B_51 -array - -ap_memory - -out -1 -control - - -local_B_51_we0 -local_B_51 -array - -ap_memory - -out -1 -control - - -local_B_51_d0 -local_B_51 -array - -ap_memory - -out -32 -data - - -local_B_51_address1 -local_B_51 -array - -ap_memory - -out -10 -address - - -local_B_51_ce1 -local_B_51 -array - -ap_memory - -out -1 -control - - -local_B_51_we1 -local_B_51 -array - -ap_memory - -out -1 -control - - -local_B_51_d1 -local_B_51 -array - -ap_memory - -out -32 -data - - -local_B_50_address0 -local_B_50 -array - -ap_memory - -out -10 -address - - -local_B_50_ce0 -local_B_50 -array - -ap_memory - -out -1 -control - - -local_B_50_we0 -local_B_50 -array - -ap_memory - -out -1 -control - - -local_B_50_d0 -local_B_50 -array - -ap_memory - -out -32 -data - - -local_B_50_address1 -local_B_50 -array - -ap_memory - -out -10 -address - - -local_B_50_ce1 -local_B_50 -array - -ap_memory - -out -1 -control - - -local_B_50_we1 -local_B_50 -array - -ap_memory - -out -1 -control - - -local_B_50_d1 -local_B_50 -array - -ap_memory - -out -32 -data - - -local_B_49_address0 -local_B_49 -array - -ap_memory - -out -10 -address - - -local_B_49_ce0 -local_B_49 -array - -ap_memory - -out -1 -control - - -local_B_49_we0 -local_B_49 -array - -ap_memory - -out -1 -control - - -local_B_49_d0 -local_B_49 -array - -ap_memory - -out -32 -data - - -local_B_49_address1 -local_B_49 -array - -ap_memory - -out -10 -address - - -local_B_49_ce1 -local_B_49 -array - -ap_memory - -out -1 -control - - -local_B_49_we1 -local_B_49 -array - -ap_memory - -out -1 -control - - -local_B_49_d1 -local_B_49 -array - -ap_memory - -out -32 -data - - -local_B_48_address0 -local_B_48 -array - -ap_memory - -out -10 -address - - -local_B_48_ce0 -local_B_48 -array - -ap_memory - -out -1 -control - - -local_B_48_we0 -local_B_48 -array - -ap_memory - -out -1 -control - - -local_B_48_d0 -local_B_48 -array - -ap_memory - -out -32 -data - - -local_B_48_address1 -local_B_48 -array - -ap_memory - -out -10 -address - - -local_B_48_ce1 -local_B_48 -array - -ap_memory - -out -1 -control - - -local_B_48_we1 -local_B_48 -array - -ap_memory - -out -1 -control - - -local_B_48_d1 -local_B_48 -array - -ap_memory - -out -32 -data - - -local_B_47_address0 -local_B_47 -array - -ap_memory - -out -10 -address - - -local_B_47_ce0 -local_B_47 -array - -ap_memory - -out -1 -control - - -local_B_47_we0 -local_B_47 -array - -ap_memory - -out -1 -control - - -local_B_47_d0 -local_B_47 -array - -ap_memory - -out -32 -data - - -local_B_47_address1 -local_B_47 -array - -ap_memory - -out -10 -address - - -local_B_47_ce1 -local_B_47 -array - -ap_memory - -out -1 -control - - -local_B_47_we1 -local_B_47 -array - -ap_memory - -out -1 -control - - -local_B_47_d1 -local_B_47 -array - -ap_memory - -out -32 -data - - -local_B_46_address0 -local_B_46 -array - -ap_memory - -out -10 -address - - -local_B_46_ce0 -local_B_46 -array - -ap_memory - -out -1 -control - - -local_B_46_we0 -local_B_46 -array - -ap_memory - -out -1 -control - - -local_B_46_d0 -local_B_46 -array - -ap_memory - -out -32 -data - - -local_B_46_address1 -local_B_46 -array - -ap_memory - -out -10 -address - - -local_B_46_ce1 -local_B_46 -array - -ap_memory - -out -1 -control - - -local_B_46_we1 -local_B_46 -array - -ap_memory - -out -1 -control - - -local_B_46_d1 -local_B_46 -array - -ap_memory - -out -32 -data - - -local_B_45_address0 -local_B_45 -array - -ap_memory - -out -10 -address - - -local_B_45_ce0 -local_B_45 -array - -ap_memory - -out -1 -control - - -local_B_45_we0 -local_B_45 -array - -ap_memory - -out -1 -control - - -local_B_45_d0 -local_B_45 -array - -ap_memory - -out -32 -data - - -local_B_45_address1 -local_B_45 -array - -ap_memory - -out -10 -address - - -local_B_45_ce1 -local_B_45 -array - -ap_memory - -out -1 -control - - -local_B_45_we1 -local_B_45 -array - -ap_memory - -out -1 -control - - -local_B_45_d1 -local_B_45 -array - -ap_memory - -out -32 -data - - -local_B_44_address0 -local_B_44 -array - -ap_memory - -out -10 -address - - -local_B_44_ce0 -local_B_44 -array - -ap_memory - -out -1 -control - - -local_B_44_we0 -local_B_44 -array - -ap_memory - -out -1 -control - - -local_B_44_d0 -local_B_44 -array - -ap_memory - -out -32 -data - - -local_B_44_address1 -local_B_44 -array - -ap_memory - -out -10 -address - - -local_B_44_ce1 -local_B_44 -array - -ap_memory - -out -1 -control - - -local_B_44_we1 -local_B_44 -array - -ap_memory - -out -1 -control - - -local_B_44_d1 -local_B_44 -array - -ap_memory - -out -32 -data - - -local_B_43_address0 -local_B_43 -array - -ap_memory - -out -10 -address - - -local_B_43_ce0 -local_B_43 -array - -ap_memory - -out -1 -control - - -local_B_43_we0 -local_B_43 -array - -ap_memory - -out -1 -control - - -local_B_43_d0 -local_B_43 -array - -ap_memory - -out -32 -data - - -local_B_43_address1 -local_B_43 -array - -ap_memory - -out -10 -address - - -local_B_43_ce1 -local_B_43 -array - -ap_memory - -out -1 -control - - -local_B_43_we1 -local_B_43 -array - -ap_memory - -out -1 -control - - -local_B_43_d1 -local_B_43 -array - -ap_memory - -out -32 -data - - -local_B_42_address0 -local_B_42 -array - -ap_memory - -out -10 -address - - -local_B_42_ce0 -local_B_42 -array - -ap_memory - -out -1 -control - - -local_B_42_we0 -local_B_42 -array - -ap_memory - -out -1 -control - - -local_B_42_d0 -local_B_42 -array - -ap_memory - -out -32 -data - - -local_B_42_address1 -local_B_42 -array - -ap_memory - -out -10 -address - - -local_B_42_ce1 -local_B_42 -array - -ap_memory - -out -1 -control - - -local_B_42_we1 -local_B_42 -array - -ap_memory - -out -1 -control - - -local_B_42_d1 -local_B_42 -array - -ap_memory - -out -32 -data - - -local_B_41_address0 -local_B_41 -array - -ap_memory - -out -10 -address - - -local_B_41_ce0 -local_B_41 -array - -ap_memory - -out -1 -control - - -local_B_41_we0 -local_B_41 -array - -ap_memory - -out -1 -control - - -local_B_41_d0 -local_B_41 -array - -ap_memory - -out -32 -data - - -local_B_41_address1 -local_B_41 -array - -ap_memory - -out -10 -address - - -local_B_41_ce1 -local_B_41 -array - -ap_memory - -out -1 -control - - -local_B_41_we1 -local_B_41 -array - -ap_memory - -out -1 -control - - -local_B_41_d1 -local_B_41 -array - -ap_memory - -out -32 -data - - -local_B_40_address0 -local_B_40 -array - -ap_memory - -out -10 -address - - -local_B_40_ce0 -local_B_40 -array - -ap_memory - -out -1 -control - - -local_B_40_we0 -local_B_40 -array - -ap_memory - -out -1 -control - - -local_B_40_d0 -local_B_40 -array - -ap_memory - -out -32 -data - - -local_B_40_address1 -local_B_40 -array - -ap_memory - -out -10 -address - - -local_B_40_ce1 -local_B_40 -array - -ap_memory - -out -1 -control - - -local_B_40_we1 -local_B_40 -array - -ap_memory - -out -1 -control - - -local_B_40_d1 -local_B_40 -array - -ap_memory - -out -32 -data - - -local_B_39_address0 -local_B_39 -array - -ap_memory - -out -10 -address - - -local_B_39_ce0 -local_B_39 -array - -ap_memory - -out -1 -control - - -local_B_39_we0 -local_B_39 -array - -ap_memory - -out -1 -control - - -local_B_39_d0 -local_B_39 -array - -ap_memory - -out -32 -data - - -local_B_39_address1 -local_B_39 -array - -ap_memory - -out -10 -address - - -local_B_39_ce1 -local_B_39 -array - -ap_memory - -out -1 -control - - -local_B_39_we1 -local_B_39 -array - -ap_memory - -out -1 -control - - -local_B_39_d1 -local_B_39 -array - -ap_memory - -out -32 -data - - -local_B_38_address0 -local_B_38 -array - -ap_memory - -out -10 -address - - -local_B_38_ce0 -local_B_38 -array - -ap_memory - -out -1 -control - - -local_B_38_we0 -local_B_38 -array - -ap_memory - -out -1 -control - - -local_B_38_d0 -local_B_38 -array - -ap_memory - -out -32 -data - - -local_B_38_address1 -local_B_38 -array - -ap_memory - -out -10 -address - - -local_B_38_ce1 -local_B_38 -array - -ap_memory - -out -1 -control - - -local_B_38_we1 -local_B_38 -array - -ap_memory - -out -1 -control - - -local_B_38_d1 -local_B_38 -array - -ap_memory - -out -32 -data - - -local_B_37_address0 -local_B_37 -array - -ap_memory - -out -10 -address - - -local_B_37_ce0 -local_B_37 -array - -ap_memory - -out -1 -control - - -local_B_37_we0 -local_B_37 -array - -ap_memory - -out -1 -control - - -local_B_37_d0 -local_B_37 -array - -ap_memory - -out -32 -data - - -local_B_37_address1 -local_B_37 -array - -ap_memory - -out -10 -address - - -local_B_37_ce1 -local_B_37 -array - -ap_memory - -out -1 -control - - -local_B_37_we1 -local_B_37 -array - -ap_memory - -out -1 -control - - -local_B_37_d1 -local_B_37 -array - -ap_memory - -out -32 -data - - -local_B_36_address0 -local_B_36 -array - -ap_memory - -out -10 -address - - -local_B_36_ce0 -local_B_36 -array - -ap_memory - -out -1 -control - - -local_B_36_we0 -local_B_36 -array - -ap_memory - -out -1 -control - - -local_B_36_d0 -local_B_36 -array - -ap_memory - -out -32 -data - - -local_B_36_address1 -local_B_36 -array - -ap_memory - -out -10 -address - - -local_B_36_ce1 -local_B_36 -array - -ap_memory - -out -1 -control - - -local_B_36_we1 -local_B_36 -array - -ap_memory - -out -1 -control - - -local_B_36_d1 -local_B_36 -array - -ap_memory - -out -32 -data - - -local_B_35_address0 -local_B_35 -array - -ap_memory - -out -10 -address - - -local_B_35_ce0 -local_B_35 -array - -ap_memory - -out -1 -control - - -local_B_35_we0 -local_B_35 -array - -ap_memory - -out -1 -control - - -local_B_35_d0 -local_B_35 -array - -ap_memory - -out -32 -data - - -local_B_35_address1 -local_B_35 -array - -ap_memory - -out -10 -address - - -local_B_35_ce1 -local_B_35 -array - -ap_memory - -out -1 -control - - -local_B_35_we1 -local_B_35 -array - -ap_memory - -out -1 -control - - -local_B_35_d1 -local_B_35 -array - -ap_memory - -out -32 -data - - -local_B_34_address0 -local_B_34 -array - -ap_memory - -out -10 -address - - -local_B_34_ce0 -local_B_34 -array - -ap_memory - -out -1 -control - - -local_B_34_we0 -local_B_34 -array - -ap_memory - -out -1 -control - - -local_B_34_d0 -local_B_34 -array - -ap_memory - -out -32 -data - - -local_B_34_address1 -local_B_34 -array - -ap_memory - -out -10 -address - - -local_B_34_ce1 -local_B_34 -array - -ap_memory - -out -1 -control - - -local_B_34_we1 -local_B_34 -array - -ap_memory - -out -1 -control - - -local_B_34_d1 -local_B_34 -array - -ap_memory - -out -32 -data - - -local_B_33_address0 -local_B_33 -array - -ap_memory - -out -10 -address - - -local_B_33_ce0 -local_B_33 -array - -ap_memory - -out -1 -control - - -local_B_33_we0 -local_B_33 -array - -ap_memory - -out -1 -control - - -local_B_33_d0 -local_B_33 -array - -ap_memory - -out -32 -data - - -local_B_33_address1 -local_B_33 -array - -ap_memory - -out -10 -address - - -local_B_33_ce1 -local_B_33 -array - -ap_memory - -out -1 -control - - -local_B_33_we1 -local_B_33 -array - -ap_memory - -out -1 -control - - -local_B_33_d1 -local_B_33 -array - -ap_memory - -out -32 -data - - -local_B_32_address0 -local_B_32 -array - -ap_memory - -out -10 -address - - -local_B_32_ce0 -local_B_32 -array - -ap_memory - -out -1 -control - - -local_B_32_we0 -local_B_32 -array - -ap_memory - -out -1 -control - - -local_B_32_d0 -local_B_32 -array - -ap_memory - -out -32 -data - - -local_B_32_address1 -local_B_32 -array - -ap_memory - -out -10 -address - - -local_B_32_ce1 -local_B_32 -array - -ap_memory - -out -1 -control - - -local_B_32_we1 -local_B_32 -array - -ap_memory - -out -1 -control - - -local_B_32_d1 -local_B_32 -array - -ap_memory - -out -32 -data - - -local_B_31_address0 -local_B_31 -array - -ap_memory - -out -10 -address - - -local_B_31_ce0 -local_B_31 -array - -ap_memory - -out -1 -control - - -local_B_31_we0 -local_B_31 -array - -ap_memory - -out -1 -control - - -local_B_31_d0 -local_B_31 -array - -ap_memory - -out -32 -data - - -local_B_31_address1 -local_B_31 -array - -ap_memory - -out -10 -address - - -local_B_31_ce1 -local_B_31 -array - -ap_memory - -out -1 -control - - -local_B_31_we1 -local_B_31 -array - -ap_memory - -out -1 -control - - -local_B_31_d1 -local_B_31 -array - -ap_memory - -out -32 -data - - -local_B_30_address0 -local_B_30 -array - -ap_memory - -out -10 -address - - -local_B_30_ce0 -local_B_30 -array - -ap_memory - -out -1 -control - - -local_B_30_we0 -local_B_30 -array - -ap_memory - -out -1 -control - - -local_B_30_d0 -local_B_30 -array - -ap_memory - -out -32 -data - - -local_B_30_address1 -local_B_30 -array - -ap_memory - -out -10 -address - - -local_B_30_ce1 -local_B_30 -array - -ap_memory - -out -1 -control - - -local_B_30_we1 -local_B_30 -array - -ap_memory - -out -1 -control - - -local_B_30_d1 -local_B_30 -array - -ap_memory - -out -32 -data - - -local_B_29_address0 -local_B_29 -array - -ap_memory - -out -10 -address - - -local_B_29_ce0 -local_B_29 -array - -ap_memory - -out -1 -control - - -local_B_29_we0 -local_B_29 -array - -ap_memory - -out -1 -control - - -local_B_29_d0 -local_B_29 -array - -ap_memory - -out -32 -data - - -local_B_29_address1 -local_B_29 -array - -ap_memory - -out -10 -address - - -local_B_29_ce1 -local_B_29 -array - -ap_memory - -out -1 -control - - -local_B_29_we1 -local_B_29 -array - -ap_memory - -out -1 -control - - -local_B_29_d1 -local_B_29 -array - -ap_memory - -out -32 -data - - -local_B_28_address0 -local_B_28 -array - -ap_memory - -out -10 -address - - -local_B_28_ce0 -local_B_28 -array - -ap_memory - -out -1 -control - - -local_B_28_we0 -local_B_28 -array - -ap_memory - -out -1 -control - - -local_B_28_d0 -local_B_28 -array - -ap_memory - -out -32 -data - - -local_B_28_address1 -local_B_28 -array - -ap_memory - -out -10 -address - - -local_B_28_ce1 -local_B_28 -array - -ap_memory - -out -1 -control - - -local_B_28_we1 -local_B_28 -array - -ap_memory - -out -1 -control - - -local_B_28_d1 -local_B_28 -array - -ap_memory - -out -32 -data - - -local_B_27_address0 -local_B_27 -array - -ap_memory - -out -10 -address - - -local_B_27_ce0 -local_B_27 -array - -ap_memory - -out -1 -control - - -local_B_27_we0 -local_B_27 -array - -ap_memory - -out -1 -control - - -local_B_27_d0 -local_B_27 -array - -ap_memory - -out -32 -data - - -local_B_27_address1 -local_B_27 -array - -ap_memory - -out -10 -address - - -local_B_27_ce1 -local_B_27 -array - -ap_memory - -out -1 -control - - -local_B_27_we1 -local_B_27 -array - -ap_memory - -out -1 -control - - -local_B_27_d1 -local_B_27 -array - -ap_memory - -out -32 -data - - -local_B_26_address0 -local_B_26 -array - -ap_memory - -out -10 -address - - -local_B_26_ce0 -local_B_26 -array - -ap_memory - -out -1 -control - - -local_B_26_we0 -local_B_26 -array - -ap_memory - -out -1 -control - - -local_B_26_d0 -local_B_26 -array - -ap_memory - -out -32 -data - - -local_B_26_address1 -local_B_26 -array - -ap_memory - -out -10 -address - - -local_B_26_ce1 -local_B_26 -array - -ap_memory - -out -1 -control - - -local_B_26_we1 -local_B_26 -array - -ap_memory - -out -1 -control - - -local_B_26_d1 -local_B_26 -array - -ap_memory - -out -32 -data - - -local_B_25_address0 -local_B_25 -array - -ap_memory - -out -10 -address - - -local_B_25_ce0 -local_B_25 -array - -ap_memory - -out -1 -control - - -local_B_25_we0 -local_B_25 -array - -ap_memory - -out -1 -control - - -local_B_25_d0 -local_B_25 -array - -ap_memory - -out -32 -data - - -local_B_25_address1 -local_B_25 -array - -ap_memory - -out -10 -address - - -local_B_25_ce1 -local_B_25 -array - -ap_memory - -out -1 -control - - -local_B_25_we1 -local_B_25 -array - -ap_memory - -out -1 -control - - -local_B_25_d1 -local_B_25 -array - -ap_memory - -out -32 -data - - -local_B_24_address0 -local_B_24 -array - -ap_memory - -out -10 -address - - -local_B_24_ce0 -local_B_24 -array - -ap_memory - -out -1 -control - - -local_B_24_we0 -local_B_24 -array - -ap_memory - -out -1 -control - - -local_B_24_d0 -local_B_24 -array - -ap_memory - -out -32 -data - - -local_B_24_address1 -local_B_24 -array - -ap_memory - -out -10 -address - - -local_B_24_ce1 -local_B_24 -array - -ap_memory - -out -1 -control - - -local_B_24_we1 -local_B_24 -array - -ap_memory - -out -1 -control - - -local_B_24_d1 -local_B_24 -array - -ap_memory - -out -32 -data - - -local_B_23_address0 -local_B_23 -array - -ap_memory - -out -10 -address - - -local_B_23_ce0 -local_B_23 -array - -ap_memory - -out -1 -control - - -local_B_23_we0 -local_B_23 -array - -ap_memory - -out -1 -control - - -local_B_23_d0 -local_B_23 -array - -ap_memory - -out -32 -data - - -local_B_23_address1 -local_B_23 -array - -ap_memory - -out -10 -address - - -local_B_23_ce1 -local_B_23 -array - -ap_memory - -out -1 -control - - -local_B_23_we1 -local_B_23 -array - -ap_memory - -out -1 -control - - -local_B_23_d1 -local_B_23 -array - -ap_memory - -out -32 -data - - -local_B_22_address0 -local_B_22 -array - -ap_memory - -out -10 -address - - -local_B_22_ce0 -local_B_22 -array - -ap_memory - -out -1 -control - - -local_B_22_we0 -local_B_22 -array - -ap_memory - -out -1 -control - - -local_B_22_d0 -local_B_22 -array - -ap_memory - -out -32 -data - - -local_B_22_address1 -local_B_22 -array - -ap_memory - -out -10 -address - - -local_B_22_ce1 -local_B_22 -array - -ap_memory - -out -1 -control - - -local_B_22_we1 -local_B_22 -array - -ap_memory - -out -1 -control - - -local_B_22_d1 -local_B_22 -array - -ap_memory - -out -32 -data - - -local_B_21_address0 -local_B_21 -array - -ap_memory - -out -10 -address - - -local_B_21_ce0 -local_B_21 -array - -ap_memory - -out -1 -control - - -local_B_21_we0 -local_B_21 -array - -ap_memory - -out -1 -control - - -local_B_21_d0 -local_B_21 -array - -ap_memory - -out -32 -data - - -local_B_21_address1 -local_B_21 -array - -ap_memory - -out -10 -address - - -local_B_21_ce1 -local_B_21 -array - -ap_memory - -out -1 -control - - -local_B_21_we1 -local_B_21 -array - -ap_memory - -out -1 -control - - -local_B_21_d1 -local_B_21 -array - -ap_memory - -out -32 -data - - -local_B_20_address0 -local_B_20 -array - -ap_memory - -out -10 -address - - -local_B_20_ce0 -local_B_20 -array - -ap_memory - -out -1 -control - - -local_B_20_we0 -local_B_20 -array - -ap_memory - -out -1 -control - - -local_B_20_d0 -local_B_20 -array - -ap_memory - -out -32 -data - - -local_B_20_address1 -local_B_20 -array - -ap_memory - -out -10 -address - - -local_B_20_ce1 -local_B_20 -array - -ap_memory - -out -1 -control - - -local_B_20_we1 -local_B_20 -array - -ap_memory - -out -1 -control - - -local_B_20_d1 -local_B_20 -array - -ap_memory - -out -32 -data - - -local_B_19_address0 -local_B_19 -array - -ap_memory - -out -10 -address - - -local_B_19_ce0 -local_B_19 -array - -ap_memory - -out -1 -control - - -local_B_19_we0 -local_B_19 -array - -ap_memory - -out -1 -control - - -local_B_19_d0 -local_B_19 -array - -ap_memory - -out -32 -data - - -local_B_19_address1 -local_B_19 -array - -ap_memory - -out -10 -address - - -local_B_19_ce1 -local_B_19 -array - -ap_memory - -out -1 -control - - -local_B_19_we1 -local_B_19 -array - -ap_memory - -out -1 -control - - -local_B_19_d1 -local_B_19 -array - -ap_memory - -out -32 -data - - -local_B_18_address0 -local_B_18 -array - -ap_memory - -out -10 -address - - -local_B_18_ce0 -local_B_18 -array - -ap_memory - -out -1 -control - - -local_B_18_we0 -local_B_18 -array - -ap_memory - -out -1 -control - - -local_B_18_d0 -local_B_18 -array - -ap_memory - -out -32 -data - - -local_B_18_address1 -local_B_18 -array - -ap_memory - -out -10 -address - - -local_B_18_ce1 -local_B_18 -array - -ap_memory - -out -1 -control - - -local_B_18_we1 -local_B_18 -array - -ap_memory - -out -1 -control - - -local_B_18_d1 -local_B_18 -array - -ap_memory - -out -32 -data - - -local_B_17_address0 -local_B_17 -array - -ap_memory - -out -10 -address - - -local_B_17_ce0 -local_B_17 -array - -ap_memory - -out -1 -control - - -local_B_17_we0 -local_B_17 -array - -ap_memory - -out -1 -control - - -local_B_17_d0 -local_B_17 -array - -ap_memory - -out -32 -data - - -local_B_17_address1 -local_B_17 -array - -ap_memory - -out -10 -address - - -local_B_17_ce1 -local_B_17 -array - -ap_memory - -out -1 -control - - -local_B_17_we1 -local_B_17 -array - -ap_memory - -out -1 -control - - -local_B_17_d1 -local_B_17 -array - -ap_memory - -out -32 -data - - -local_B_16_address0 -local_B_16 -array - -ap_memory - -out -10 -address - - -local_B_16_ce0 -local_B_16 -array - -ap_memory - -out -1 -control - - -local_B_16_we0 -local_B_16 -array - -ap_memory - -out -1 -control - - -local_B_16_d0 -local_B_16 -array - -ap_memory - -out -32 -data - - -local_B_16_address1 -local_B_16 -array - -ap_memory - -out -10 -address - - -local_B_16_ce1 -local_B_16 -array - -ap_memory - -out -1 -control - - -local_B_16_we1 -local_B_16 -array - -ap_memory - -out -1 -control - - -local_B_16_d1 -local_B_16 -array - -ap_memory - -out -32 -data - - -local_B_15_address0 -local_B_15 -array - -ap_memory - -out -10 -address - - -local_B_15_ce0 -local_B_15 -array - -ap_memory - -out -1 -control - - -local_B_15_we0 -local_B_15 -array - -ap_memory - -out -1 -control - - -local_B_15_d0 -local_B_15 -array - -ap_memory - -out -32 -data - - -local_B_15_address1 -local_B_15 -array - -ap_memory - -out -10 -address - - -local_B_15_ce1 -local_B_15 -array - -ap_memory - -out -1 -control - - -local_B_15_we1 -local_B_15 -array - -ap_memory - -out -1 -control - - -local_B_15_d1 -local_B_15 -array - -ap_memory - -out -32 -data - - -local_B_14_address0 -local_B_14 -array - -ap_memory - -out -10 -address - - -local_B_14_ce0 -local_B_14 -array - -ap_memory - -out -1 -control - - -local_B_14_we0 -local_B_14 -array - -ap_memory - -out -1 -control - - -local_B_14_d0 -local_B_14 -array - -ap_memory - -out -32 -data - - -local_B_14_address1 -local_B_14 -array - -ap_memory - -out -10 -address - - -local_B_14_ce1 -local_B_14 -array - -ap_memory - -out -1 -control - - -local_B_14_we1 -local_B_14 -array - -ap_memory - -out -1 -control - - -local_B_14_d1 -local_B_14 -array - -ap_memory - -out -32 -data - - -local_B_13_address0 -local_B_13 -array - -ap_memory - -out -10 -address - - -local_B_13_ce0 -local_B_13 -array - -ap_memory - -out -1 -control - - -local_B_13_we0 -local_B_13 -array - -ap_memory - -out -1 -control - - -local_B_13_d0 -local_B_13 -array - -ap_memory - -out -32 -data - - -local_B_13_address1 -local_B_13 -array - -ap_memory - -out -10 -address - - -local_B_13_ce1 -local_B_13 -array - -ap_memory - -out -1 -control - - -local_B_13_we1 -local_B_13 -array - -ap_memory - -out -1 -control - - -local_B_13_d1 -local_B_13 -array - -ap_memory - -out -32 -data - - -local_B_12_address0 -local_B_12 -array - -ap_memory - -out -10 -address - - -local_B_12_ce0 -local_B_12 -array - -ap_memory - -out -1 -control - - -local_B_12_we0 -local_B_12 -array - -ap_memory - -out -1 -control - - -local_B_12_d0 -local_B_12 -array - -ap_memory - -out -32 -data - - -local_B_12_address1 -local_B_12 -array - -ap_memory - -out -10 -address - - -local_B_12_ce1 -local_B_12 -array - -ap_memory - -out -1 -control - - -local_B_12_we1 -local_B_12 -array - -ap_memory - -out -1 -control - - -local_B_12_d1 -local_B_12 -array - -ap_memory - -out -32 -data - - -local_B_11_address0 -local_B_11 -array - -ap_memory - -out -10 -address - - -local_B_11_ce0 -local_B_11 -array - -ap_memory - -out -1 -control - - -local_B_11_we0 -local_B_11 -array - -ap_memory - -out -1 -control - - -local_B_11_d0 -local_B_11 -array - -ap_memory - -out -32 -data - - -local_B_11_address1 -local_B_11 -array - -ap_memory - -out -10 -address - - -local_B_11_ce1 -local_B_11 -array - -ap_memory - -out -1 -control - - -local_B_11_we1 -local_B_11 -array - -ap_memory - -out -1 -control - - -local_B_11_d1 -local_B_11 -array - -ap_memory - -out -32 -data - - -local_B_10_address0 -local_B_10 -array - -ap_memory - -out -10 -address - - -local_B_10_ce0 -local_B_10 -array - -ap_memory - -out -1 -control - - -local_B_10_we0 -local_B_10 -array - -ap_memory - -out -1 -control - - -local_B_10_d0 -local_B_10 -array - -ap_memory - -out -32 -data - - -local_B_10_address1 -local_B_10 -array - -ap_memory - -out -10 -address - - -local_B_10_ce1 -local_B_10 -array - -ap_memory - -out -1 -control - - -local_B_10_we1 -local_B_10 -array - -ap_memory - -out -1 -control - - -local_B_10_d1 -local_B_10 -array - -ap_memory - -out -32 -data - - -local_B_9_address0 -local_B_9 -array - -ap_memory - -out -10 -address - - -local_B_9_ce0 -local_B_9 -array - -ap_memory - -out -1 -control - - -local_B_9_we0 -local_B_9 -array - -ap_memory - -out -1 -control - - -local_B_9_d0 -local_B_9 -array - -ap_memory - -out -32 -data - - -local_B_9_address1 -local_B_9 -array - -ap_memory - -out -10 -address - - -local_B_9_ce1 -local_B_9 -array - -ap_memory - -out -1 -control - - -local_B_9_we1 -local_B_9 -array - -ap_memory - -out -1 -control - - -local_B_9_d1 -local_B_9 -array - -ap_memory - -out -32 -data - - -local_B_8_address0 -local_B_8 -array - -ap_memory - -out -10 -address - - -local_B_8_ce0 -local_B_8 -array - -ap_memory - -out -1 -control - - -local_B_8_we0 -local_B_8 -array - -ap_memory - -out -1 -control - - -local_B_8_d0 -local_B_8 -array - -ap_memory - -out -32 -data - - -local_B_8_address1 -local_B_8 -array - -ap_memory - -out -10 -address - - -local_B_8_ce1 -local_B_8 -array - -ap_memory - -out -1 -control - - -local_B_8_we1 -local_B_8 -array - -ap_memory - -out -1 -control - - -local_B_8_d1 -local_B_8 -array - -ap_memory - -out -32 -data - - -local_B_7_address0 -local_B_7 -array - -ap_memory - -out -10 -address - - -local_B_7_ce0 -local_B_7 -array - -ap_memory - -out -1 -control - - -local_B_7_we0 -local_B_7 -array - -ap_memory - -out -1 -control - - -local_B_7_d0 -local_B_7 -array - -ap_memory - -out -32 -data - - -local_B_7_address1 -local_B_7 -array - -ap_memory - -out -10 -address - - -local_B_7_ce1 -local_B_7 -array - -ap_memory - -out -1 -control - - -local_B_7_we1 -local_B_7 -array - -ap_memory - -out -1 -control - - -local_B_7_d1 -local_B_7 -array - -ap_memory - -out -32 -data - - -local_B_6_address0 -local_B_6 -array - -ap_memory - -out -10 -address - - -local_B_6_ce0 -local_B_6 -array - -ap_memory - -out -1 -control - - -local_B_6_we0 -local_B_6 -array - -ap_memory - -out -1 -control - - -local_B_6_d0 -local_B_6 -array - -ap_memory - -out -32 -data - - -local_B_6_address1 -local_B_6 -array - -ap_memory - -out -10 -address - - -local_B_6_ce1 -local_B_6 -array - -ap_memory - -out -1 -control - - -local_B_6_we1 -local_B_6 -array - -ap_memory - -out -1 -control - - -local_B_6_d1 -local_B_6 -array - -ap_memory - -out -32 -data - - -local_B_5_address0 -local_B_5 -array - -ap_memory - -out -10 -address - - -local_B_5_ce0 -local_B_5 -array - -ap_memory - -out -1 -control - - -local_B_5_we0 -local_B_5 -array - -ap_memory - -out -1 -control - - -local_B_5_d0 -local_B_5 -array - -ap_memory - -out -32 -data - - -local_B_5_address1 -local_B_5 -array - -ap_memory - -out -10 -address - - -local_B_5_ce1 -local_B_5 -array - -ap_memory - -out -1 -control - - -local_B_5_we1 -local_B_5 -array - -ap_memory - -out -1 -control - - -local_B_5_d1 -local_B_5 -array - -ap_memory - -out -32 -data - - -local_B_4_address0 -local_B_4 -array - -ap_memory - -out -10 -address - - -local_B_4_ce0 -local_B_4 -array - -ap_memory - -out -1 -control - - -local_B_4_we0 -local_B_4 -array - -ap_memory - -out -1 -control - - -local_B_4_d0 -local_B_4 -array - -ap_memory - -out -32 -data - - -local_B_4_address1 -local_B_4 -array - -ap_memory - -out -10 -address - - -local_B_4_ce1 -local_B_4 -array - -ap_memory - -out -1 -control - - -local_B_4_we1 -local_B_4 -array - -ap_memory - -out -1 -control - - -local_B_4_d1 -local_B_4 -array - -ap_memory - -out -32 -data - - -local_B_3_address0 -local_B_3 -array - -ap_memory - -out -10 -address - - -local_B_3_ce0 -local_B_3 -array - -ap_memory - -out -1 -control - - -local_B_3_we0 -local_B_3 -array - -ap_memory - -out -1 -control - - -local_B_3_d0 -local_B_3 -array - -ap_memory - -out -32 -data - - -local_B_3_address1 -local_B_3 -array - -ap_memory - -out -10 -address - - -local_B_3_ce1 -local_B_3 -array - -ap_memory - -out -1 -control - - -local_B_3_we1 -local_B_3 -array - -ap_memory - -out -1 -control - - -local_B_3_d1 -local_B_3 -array - -ap_memory - -out -32 -data - - -local_B_2_address0 -local_B_2 -array - -ap_memory - -out -10 -address - - -local_B_2_ce0 -local_B_2 -array - -ap_memory - -out -1 -control - - -local_B_2_we0 -local_B_2 -array - -ap_memory - -out -1 -control - - -local_B_2_d0 -local_B_2 -array - -ap_memory - -out -32 -data - - -local_B_2_address1 -local_B_2 -array - -ap_memory - -out -10 -address - - -local_B_2_ce1 -local_B_2 -array - -ap_memory - -out -1 -control - - -local_B_2_we1 -local_B_2 -array - -ap_memory - -out -1 -control - - -local_B_2_d1 -local_B_2 -array - -ap_memory - -out -32 -data - - -local_B_1_address0 -local_B_1 -array - -ap_memory - -out -10 -address - - -local_B_1_ce0 -local_B_1 -array - -ap_memory - -out -1 -control - - -local_B_1_we0 -local_B_1 -array - -ap_memory - -out -1 -control - - -local_B_1_d0 -local_B_1 -array - -ap_memory - -out -32 -data - - -local_B_1_address1 -local_B_1 -array - -ap_memory - -out -10 -address - - -local_B_1_ce1 -local_B_1 -array - -ap_memory - -out -1 -control - - -local_B_1_we1 -local_B_1 -array - -ap_memory - -out -1 -control - - -local_B_1_d1 -local_B_1 -array - -ap_memory - -out -32 -data - - -local_B_address0 -local_B -array - -ap_memory - -out -10 -address - - -local_B_ce0 -local_B -array - -ap_memory - -out -1 -control - - -local_B_we0 -local_B -array - -ap_memory - -out -1 -control - - -local_B_d0 -local_B -array - -ap_memory - -out -32 -data - - -local_B_address1 -local_B -array - -ap_memory - -out -10 -address - - -local_B_ce1 -local_B -array - -ap_memory - -out -1 -control - - -local_B_we1 -local_B -array - -ap_memory - -out -1 -control - - -local_B_d1 -local_B -array - -ap_memory - -out -32 -data - - -sub -sub -scalar - -ap_none - -in -32 -data - - -fifo_B_in_0_dout -fifo_B_in_0 -pointer - -ap_fifo - -in -513 -control - - -fifo_B_in_0_empty_n -fifo_B_in_0 -pointer - -ap_fifo - -in -1 -control - - -fifo_B_in_0_read -fifo_B_in_0 -pointer - -ap_fifo - -out -1 -control - - -fifo_B_out_0_din -fifo_B_out_0 -pointer - -ap_fifo - -out -513 -control - - -fifo_B_out_0_full_n -fifo_B_out_0 -pointer - -ap_fifo - -in -1 -control - - -fifo_B_out_0_write -fifo_B_out_0 -pointer - -ap_fifo - -out -1 -control - - -fifo_B_in_1_dout -fifo_B_in_1 -pointer - -ap_fifo - -in -513 -control - - -fifo_B_in_1_empty_n -fifo_B_in_1 -pointer - -ap_fifo - -in -1 -control - - -fifo_B_in_1_read -fifo_B_in_1 -pointer - -ap_fifo - -out -1 -control - - -fifo_B_out_1_din -fifo_B_out_1 -pointer - -ap_fifo - -out -513 -control - - -fifo_B_out_1_full_n -fifo_B_out_1 -pointer - -ap_fifo - -in -1 -control - - -fifo_B_out_1_write -fifo_B_out_1 -pointer - -ap_fifo - -out -1 -control - - -fifo_B_in_2_dout -fifo_B_in_2 -pointer - -ap_fifo - -in -513 -control - - -fifo_B_in_2_empty_n -fifo_B_in_2 -pointer - -ap_fifo - -in -1 -control - - -fifo_B_in_2_read -fifo_B_in_2 -pointer - -ap_fifo - -out -1 -control - - -fifo_B_out_2_din -fifo_B_out_2 -pointer - -ap_fifo - -out -513 -control - - -fifo_B_out_2_full_n -fifo_B_out_2 -pointer - -ap_fifo - -in -1 -control - - -fifo_B_out_2_write -fifo_B_out_2 -pointer - -ap_fifo - -out -1 -control - - -fifo_B_in_3_dout -fifo_B_in_3 -pointer - -ap_fifo - -in -513 -control - - -fifo_B_in_3_empty_n -fifo_B_in_3 -pointer - -ap_fifo - -in -1 -control - - -fifo_B_in_3_read -fifo_B_in_3 -pointer - -ap_fifo - -out -1 -control - - -fifo_B_out_3_din -fifo_B_out_3 -pointer - -ap_fifo - -out -513 -control - - -fifo_B_out_3_full_n -fifo_B_out_3 -pointer - -ap_fifo - -in -1 -control - - -fifo_B_out_3_write -fifo_B_out_3 -pointer - -ap_fifo - -out -1 -control - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_csynth.xml deleted file mode 100644 index 96e3f6d2..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Bmtx_csynth.xml +++ /dev/null @@ -1,1118 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -PEG_Bmtx -3.33 -0.90 -vivado - - - -no - -ns -3.656 - - -clock cycles -28 -74431 -570807 -0.102 us -0.272 ms -2.087 ms -29 -570808 - - - -2.43 - - -1 -16 - - - - -21 -570800 - - - - -76 -2086787 - - - - -21 -35675 - - - - -
    -2.43 - - -1 -49 - - - - -18 -35672 - - - - -65 -130413 - - - - -18 -728 - - - - -
    -
    -
    -
    - - - -128 -97 -8088 -9745 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -PEG_Bmtx -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst_n -PEG_Bmtx -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -PEG_Bmtx -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -PEG_Bmtx -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -PEG_Bmtx -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -PEG_Bmtx -return value - -ap_ctrl_hs - -out -1 -control - - -PE_inst_in_s_dout -PE_inst_in_s -pointer - -ap_fifo - -in -33 -control -int - - -PE_inst_in_s_empty_n -PE_inst_in_s -pointer - -ap_fifo - -in -1 -control -int - - -PE_inst_in_s_read -PE_inst_in_s -pointer - -ap_fifo - -out -1 -control -int - - -PE_inst_in_peek_dout -PE_inst_in_peek -pointer - -ap_fifo - -in -33 -control -int - - -PE_inst_in_peek_empty_n -PE_inst_in_peek -pointer - -ap_fifo - -in -1 -control -int - - -PE_inst_in_peek_read -PE_inst_in_peek -pointer - -ap_fifo - -out -1 -control -int - - -fifo_inst_in_s_dout -fifo_inst_in_s -pointer - -ap_fifo - -in -33 -control -int - - -fifo_inst_in_s_empty_n -fifo_inst_in_s -pointer - -ap_fifo - -in -1 -control -int - - -fifo_inst_in_s_read -fifo_inst_in_s -pointer - -ap_fifo - -out -1 -control -int - - -fifo_inst_in_peek_dout -fifo_inst_in_peek -pointer - -ap_fifo - -in -33 -control -int - - -fifo_inst_in_peek_empty_n -fifo_inst_in_peek -pointer - -ap_fifo - -in -1 -control -int - - -fifo_inst_in_peek_read -fifo_inst_in_peek -pointer - -ap_fifo - -out -1 -control -int - - -fifo_A_s_dout -fifo_A_s -pointer - -ap_fifo - -in -257 -control -int - - -fifo_A_s_empty_n -fifo_A_s -pointer - -ap_fifo - -in -1 -control -int - - -fifo_A_s_read -fifo_A_s -pointer - -ap_fifo - -out -1 -control -int - - -fifo_A_peek_dout -fifo_A_peek -pointer - -ap_fifo - -in -257 -control -int - - -fifo_A_peek_empty_n -fifo_A_peek -pointer - -ap_fifo - -in -1 -control -int - - -fifo_A_peek_read -fifo_A_peek -pointer - -ap_fifo - -out -1 -control -int - - -fifo_B_in_0_dout -fifo_B_in_0 -pointer - -ap_fifo - -in -513 -control -int - - -fifo_B_in_0_empty_n -fifo_B_in_0 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_B_in_0_read -fifo_B_in_0 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_B_in_1_dout -fifo_B_in_1 -pointer - -ap_fifo - -in -513 -control -int - - -fifo_B_in_1_empty_n -fifo_B_in_1 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_B_in_1_read -fifo_B_in_1 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_B_in_2_dout -fifo_B_in_2 -pointer - -ap_fifo - -in -513 -control -int - - -fifo_B_in_2_empty_n -fifo_B_in_2 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_B_in_2_read -fifo_B_in_2 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_B_in_3_dout -fifo_B_in_3 -pointer - -ap_fifo - -in -513 -control -int - - -fifo_B_in_3_empty_n -fifo_B_in_3 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_B_in_3_read -fifo_B_in_3 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_B_in_peek_0_dout -fifo_B_in_peek_0 -pointer - -ap_fifo - -in -513 -control -int - - -fifo_B_in_peek_0_empty_n -fifo_B_in_peek_0 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_B_in_peek_0_read -fifo_B_in_peek_0 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_B_in_peek_1_dout -fifo_B_in_peek_1 -pointer - -ap_fifo - -in -513 -control -int - - -fifo_B_in_peek_1_empty_n -fifo_B_in_peek_1 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_B_in_peek_1_read -fifo_B_in_peek_1 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_B_in_peek_2_dout -fifo_B_in_peek_2 -pointer - -ap_fifo - -in -513 -control -int - - -fifo_B_in_peek_2_empty_n -fifo_B_in_peek_2 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_B_in_peek_2_read -fifo_B_in_peek_2 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_B_in_peek_3_dout -fifo_B_in_peek_3 -pointer - -ap_fifo - -in -513 -control -int - - -fifo_B_in_peek_3_empty_n -fifo_B_in_peek_3 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_B_in_peek_3_read -fifo_B_in_peek_3 -pointer - -ap_fifo - -out -1 -control -int - - -PE_inst_out_din -PE_inst_out -pointer - -ap_fifo - -out -33 -control -int - - -PE_inst_out_full_n -PE_inst_out -pointer - -ap_fifo - -in -1 -control -int - - -PE_inst_out_write -PE_inst_out -pointer - -ap_fifo - -out -1 -control -int - - -fifo_inst_out_din -fifo_inst_out -pointer - -ap_fifo - -out -33 -control -int - - -fifo_inst_out_full_n -fifo_inst_out -pointer - -ap_fifo - -in -1 -control -int - - -fifo_inst_out_write -fifo_inst_out -pointer - -ap_fifo - -out -1 -control -int - - -fifo_B_out_0_din -fifo_B_out_0 -pointer - -ap_fifo - -out -513 -control -int - - -fifo_B_out_0_full_n -fifo_B_out_0 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_B_out_0_write -fifo_B_out_0 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_B_out_1_din -fifo_B_out_1 -pointer - -ap_fifo - -out -513 -control -int - - -fifo_B_out_1_full_n -fifo_B_out_1 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_B_out_1_write -fifo_B_out_1 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_B_out_2_din -fifo_B_out_2 -pointer - -ap_fifo - -out -513 -control -int - - -fifo_B_out_2_full_n -fifo_B_out_2 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_B_out_2_write -fifo_B_out_2 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_B_out_3_din -fifo_B_out_3 -pointer - -ap_fifo - -out -513 -control -int - - -fifo_B_out_3_full_n -fifo_B_out_3 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_B_out_3_write -fifo_B_out_3 -pointer - -ap_fifo - -out -1 -control -int - - -PE_inst_to_Cmtx_din -PE_inst_to_Cmtx -pointer - -ap_fifo - -out -33 -control -int - - -PE_inst_to_Cmtx_full_n -PE_inst_to_Cmtx -pointer - -ap_fifo - -in -1 -control -int - - -PE_inst_to_Cmtx_write -PE_inst_to_Cmtx -pointer - -ap_fifo - -out -1 -control -int - - -fifo_inst_out_to_Cmtx_din -fifo_inst_out_to_Cmtx -pointer - -ap_fifo - -out -33 -control -int - - -fifo_inst_out_to_Cmtx_full_n -fifo_inst_out_to_Cmtx -pointer - -ap_fifo - -in -1 -control -int - - -fifo_inst_out_to_Cmtx_write -fifo_inst_out_to_Cmtx -pointer - -ap_fifo - -out -1 -control -int - - -fifo_aBvec_0_din -fifo_aBvec_0 -pointer - -ap_fifo - -out -275 -control -int - - -fifo_aBvec_0_full_n -fifo_aBvec_0 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_aBvec_0_write -fifo_aBvec_0 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_aBvec_1_din -fifo_aBvec_1 -pointer - -ap_fifo - -out -275 -control -int - - -fifo_aBvec_1_full_n -fifo_aBvec_1 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_aBvec_1_write -fifo_aBvec_1 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_aBvec_2_din -fifo_aBvec_2 -pointer - -ap_fifo - -out -275 -control -int - - -fifo_aBvec_2_full_n -fifo_aBvec_2 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_aBvec_2_write -fifo_aBvec_2 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_aBvec_3_din -fifo_aBvec_3 -pointer - -ap_fifo - -out -275 -control -int - - -fifo_aBvec_3_full_n -fifo_aBvec_3 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_aBvec_3_write -fifo_aBvec_3 -pointer - -ap_fifo - -out -1 -control -int - - - -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx.sched.adb.xml deleted file mode 100644 index 6e7b93d7..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx.sched.adb.xml +++ /dev/null @@ -1,2089 +0,0 @@ -PEG_Cmtx - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -Cmp - - - - - - - - - - - -Sel - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -DSP48 - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx.verbose.sched.rpt.xml deleted file mode 100644 index 10f01209..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx.verbose.sched.rpt.xml +++ /dev/null @@ -1,47 +0,0 @@ - - -
    -Fri Mar 29 14:40:39 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -PEG_Cmtx (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.583 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -33, 209527, 0.110 us, 0.698 ms, 34, 209528, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -26, 209520, 26 ~ 13095, -, -, 1 ~ 16, no -15, 10486, 15 ~ 214, -, -, 1 ~ 49, no -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_computation.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_computation.sched.adb.xml deleted file mode 100644 index fbae5d5c..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_computation.sched.adb.xml +++ /dev/null @@ -1,9157 +0,0 @@ -PEG_Cmtx_Pipeline_computation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -Adder - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -FAddSub_fulldsp - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_computation.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_computation.verbose.sched.rpt.xml deleted file mode 100644 index ea4dc1f4..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_computation.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:37 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -PEG_Cmtx (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.342 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -12, 211, 39.960 ns, 0.703 us, 12, 211, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -10, 209, 11, 1, 1, 1 ~ 200, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_computation_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_computation_csynth.xml deleted file mode 100644 index dd8c0323..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_computation_csynth.xml +++ /dev/null @@ -1,1535 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -PEG_Cmtx_Pipeline_computation -3.33 -0.90 -vivado - - - -no - -ns -2.342 - - -clock cycles -12 -111 -211 -39.960 ns -0.370 us -0.703 us -12 -211 - - - -2.43 - - -1 -200 - - - - -10 -209 - - - - -33 -695 - - -1 -11 - - - - - - - - -64 -16978 -8177 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -PEG_Cmtx_Pipeline_computation -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -PEG_Cmtx_Pipeline_computation -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -PEG_Cmtx_Pipeline_computation -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -PEG_Cmtx_Pipeline_computation -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -PEG_Cmtx_Pipeline_computation -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -PEG_Cmtx_Pipeline_computation -return value - -ap_ctrl_hs - -out -1 -control - - -start_32_3 -start_32_3 -scalar - -ap_none - -in -32 -data - - -end_32 -end_32 -scalar - -ap_none - -in -32 -data - - -local_C_V_15_address0 -local_C_V_15 -array - -ap_memory - -out -13 -address - - -local_C_V_15_ce0 -local_C_V_15 -array - -ap_memory - -out -1 -control - - -local_C_V_15_q0 -local_C_V_15 -array - -ap_memory - -in -64 -data - - -local_C_V_15_address1 -local_C_V_15 -array - -ap_memory - -out -13 -address - - -local_C_V_15_ce1 -local_C_V_15 -array - -ap_memory - -out -1 -control - - -local_C_V_15_we1 -local_C_V_15 -array - -ap_memory - -out -1 -control - - -local_C_V_15_d1 -local_C_V_15 -array - -ap_memory - -out -64 -data - - -local_C_V_14_address0 -local_C_V_14 -array - -ap_memory - -out -13 -address - - -local_C_V_14_ce0 -local_C_V_14 -array - -ap_memory - -out -1 -control - - -local_C_V_14_q0 -local_C_V_14 -array - -ap_memory - -in -64 -data - - -local_C_V_14_address1 -local_C_V_14 -array - -ap_memory - -out -13 -address - - -local_C_V_14_ce1 -local_C_V_14 -array - -ap_memory - -out -1 -control - - -local_C_V_14_we1 -local_C_V_14 -array - -ap_memory - -out -1 -control - - -local_C_V_14_d1 -local_C_V_14 -array - -ap_memory - -out -64 -data - - -local_C_V_13_address0 -local_C_V_13 -array - -ap_memory - -out -13 -address - - -local_C_V_13_ce0 -local_C_V_13 -array - -ap_memory - -out -1 -control - - -local_C_V_13_q0 -local_C_V_13 -array - -ap_memory - -in -64 -data - - -local_C_V_13_address1 -local_C_V_13 -array - -ap_memory - -out -13 -address - - -local_C_V_13_ce1 -local_C_V_13 -array - -ap_memory - -out -1 -control - - -local_C_V_13_we1 -local_C_V_13 -array - -ap_memory - -out -1 -control - - -local_C_V_13_d1 -local_C_V_13 -array - -ap_memory - -out -64 -data - - -local_C_V_12_address0 -local_C_V_12 -array - -ap_memory - -out -13 -address - - -local_C_V_12_ce0 -local_C_V_12 -array - -ap_memory - -out -1 -control - - -local_C_V_12_q0 -local_C_V_12 -array - -ap_memory - -in -64 -data - - -local_C_V_12_address1 -local_C_V_12 -array - -ap_memory - -out -13 -address - - -local_C_V_12_ce1 -local_C_V_12 -array - -ap_memory - -out -1 -control - - -local_C_V_12_we1 -local_C_V_12 -array - -ap_memory - -out -1 -control - - -local_C_V_12_d1 -local_C_V_12 -array - -ap_memory - -out -64 -data - - -local_C_V_11_address0 -local_C_V_11 -array - -ap_memory - -out -13 -address - - -local_C_V_11_ce0 -local_C_V_11 -array - -ap_memory - -out -1 -control - - -local_C_V_11_q0 -local_C_V_11 -array - -ap_memory - -in -64 -data - - -local_C_V_11_address1 -local_C_V_11 -array - -ap_memory - -out -13 -address - - -local_C_V_11_ce1 -local_C_V_11 -array - -ap_memory - -out -1 -control - - -local_C_V_11_we1 -local_C_V_11 -array - -ap_memory - -out -1 -control - - -local_C_V_11_d1 -local_C_V_11 -array - -ap_memory - -out -64 -data - - -local_C_V_10_address0 -local_C_V_10 -array - -ap_memory - -out -13 -address - - -local_C_V_10_ce0 -local_C_V_10 -array - -ap_memory - -out -1 -control - - -local_C_V_10_q0 -local_C_V_10 -array - -ap_memory - -in -64 -data - - -local_C_V_10_address1 -local_C_V_10 -array - -ap_memory - -out -13 -address - - -local_C_V_10_ce1 -local_C_V_10 -array - -ap_memory - -out -1 -control - - -local_C_V_10_we1 -local_C_V_10 -array - -ap_memory - -out -1 -control - - -local_C_V_10_d1 -local_C_V_10 -array - -ap_memory - -out -64 -data - - -local_C_V_9_address0 -local_C_V_9 -array - -ap_memory - -out -13 -address - - -local_C_V_9_ce0 -local_C_V_9 -array - -ap_memory - -out -1 -control - - -local_C_V_9_q0 -local_C_V_9 -array - -ap_memory - -in -64 -data - - -local_C_V_9_address1 -local_C_V_9 -array - -ap_memory - -out -13 -address - - -local_C_V_9_ce1 -local_C_V_9 -array - -ap_memory - -out -1 -control - - -local_C_V_9_we1 -local_C_V_9 -array - -ap_memory - -out -1 -control - - -local_C_V_9_d1 -local_C_V_9 -array - -ap_memory - -out -64 -data - - -local_C_V_8_address0 -local_C_V_8 -array - -ap_memory - -out -13 -address - - -local_C_V_8_ce0 -local_C_V_8 -array - -ap_memory - -out -1 -control - - -local_C_V_8_q0 -local_C_V_8 -array - -ap_memory - -in -64 -data - - -local_C_V_8_address1 -local_C_V_8 -array - -ap_memory - -out -13 -address - - -local_C_V_8_ce1 -local_C_V_8 -array - -ap_memory - -out -1 -control - - -local_C_V_8_we1 -local_C_V_8 -array - -ap_memory - -out -1 -control - - -local_C_V_8_d1 -local_C_V_8 -array - -ap_memory - -out -64 -data - - -local_C_V_7_address0 -local_C_V_7 -array - -ap_memory - -out -13 -address - - -local_C_V_7_ce0 -local_C_V_7 -array - -ap_memory - -out -1 -control - - -local_C_V_7_q0 -local_C_V_7 -array - -ap_memory - -in -64 -data - - -local_C_V_7_address1 -local_C_V_7 -array - -ap_memory - -out -13 -address - - -local_C_V_7_ce1 -local_C_V_7 -array - -ap_memory - -out -1 -control - - -local_C_V_7_we1 -local_C_V_7 -array - -ap_memory - -out -1 -control - - -local_C_V_7_d1 -local_C_V_7 -array - -ap_memory - -out -64 -data - - -local_C_V_6_address0 -local_C_V_6 -array - -ap_memory - -out -13 -address - - -local_C_V_6_ce0 -local_C_V_6 -array - -ap_memory - -out -1 -control - - -local_C_V_6_q0 -local_C_V_6 -array - -ap_memory - -in -64 -data - - -local_C_V_6_address1 -local_C_V_6 -array - -ap_memory - -out -13 -address - - -local_C_V_6_ce1 -local_C_V_6 -array - -ap_memory - -out -1 -control - - -local_C_V_6_we1 -local_C_V_6 -array - -ap_memory - -out -1 -control - - -local_C_V_6_d1 -local_C_V_6 -array - -ap_memory - -out -64 -data - - -local_C_V_5_address0 -local_C_V_5 -array - -ap_memory - -out -13 -address - - -local_C_V_5_ce0 -local_C_V_5 -array - -ap_memory - -out -1 -control - - -local_C_V_5_q0 -local_C_V_5 -array - -ap_memory - -in -64 -data - - -local_C_V_5_address1 -local_C_V_5 -array - -ap_memory - -out -13 -address - - -local_C_V_5_ce1 -local_C_V_5 -array - -ap_memory - -out -1 -control - - -local_C_V_5_we1 -local_C_V_5 -array - -ap_memory - -out -1 -control - - -local_C_V_5_d1 -local_C_V_5 -array - -ap_memory - -out -64 -data - - -local_C_V_4_address0 -local_C_V_4 -array - -ap_memory - -out -13 -address - - -local_C_V_4_ce0 -local_C_V_4 -array - -ap_memory - -out -1 -control - - -local_C_V_4_q0 -local_C_V_4 -array - -ap_memory - -in -64 -data - - -local_C_V_4_address1 -local_C_V_4 -array - -ap_memory - -out -13 -address - - -local_C_V_4_ce1 -local_C_V_4 -array - -ap_memory - -out -1 -control - - -local_C_V_4_we1 -local_C_V_4 -array - -ap_memory - -out -1 -control - - -local_C_V_4_d1 -local_C_V_4 -array - -ap_memory - -out -64 -data - - -local_C_V_3_address0 -local_C_V_3 -array - -ap_memory - -out -13 -address - - -local_C_V_3_ce0 -local_C_V_3 -array - -ap_memory - -out -1 -control - - -local_C_V_3_q0 -local_C_V_3 -array - -ap_memory - -in -64 -data - - -local_C_V_3_address1 -local_C_V_3 -array - -ap_memory - -out -13 -address - - -local_C_V_3_ce1 -local_C_V_3 -array - -ap_memory - -out -1 -control - - -local_C_V_3_we1 -local_C_V_3 -array - -ap_memory - -out -1 -control - - -local_C_V_3_d1 -local_C_V_3 -array - -ap_memory - -out -64 -data - - -local_C_V_2_address0 -local_C_V_2 -array - -ap_memory - -out -13 -address - - -local_C_V_2_ce0 -local_C_V_2 -array - -ap_memory - -out -1 -control - - -local_C_V_2_q0 -local_C_V_2 -array - -ap_memory - -in -64 -data - - -local_C_V_2_address1 -local_C_V_2 -array - -ap_memory - -out -13 -address - - -local_C_V_2_ce1 -local_C_V_2 -array - -ap_memory - -out -1 -control - - -local_C_V_2_we1 -local_C_V_2 -array - -ap_memory - -out -1 -control - - -local_C_V_2_d1 -local_C_V_2 -array - -ap_memory - -out -64 -data - - -local_C_V_1_address0 -local_C_V_1 -array - -ap_memory - -out -13 -address - - -local_C_V_1_ce0 -local_C_V_1 -array - -ap_memory - -out -1 -control - - -local_C_V_1_q0 -local_C_V_1 -array - -ap_memory - -in -64 -data - - -local_C_V_1_address1 -local_C_V_1 -array - -ap_memory - -out -13 -address - - -local_C_V_1_ce1 -local_C_V_1 -array - -ap_memory - -out -1 -control - - -local_C_V_1_we1 -local_C_V_1 -array - -ap_memory - -out -1 -control - - -local_C_V_1_d1 -local_C_V_1 -array - -ap_memory - -out -64 -data - - -local_C_V_address0 -local_C_V -array - -ap_memory - -out -13 -address - - -local_C_V_ce0 -local_C_V -array - -ap_memory - -out -1 -control - - -local_C_V_q0 -local_C_V -array - -ap_memory - -in -64 -data - - -local_C_V_address1 -local_C_V -array - -ap_memory - -out -13 -address - - -local_C_V_ce1 -local_C_V -array - -ap_memory - -out -1 -control - - -local_C_V_we1 -local_C_V -array - -ap_memory - -out -1 -control - - -local_C_V_d1 -local_C_V -array - -ap_memory - -out -64 -data - - -fifo_aBvec_0_dout -fifo_aBvec_0 -pointer - -ap_fifo - -in -275 -control - - -fifo_aBvec_0_empty_n -fifo_aBvec_0 -pointer - -ap_fifo - -in -1 -control - - -fifo_aBvec_0_read -fifo_aBvec_0 -pointer - -ap_fifo - -out -1 -control - - -fifo_aBvec_1_dout -fifo_aBvec_1 -pointer - -ap_fifo - -in -275 -control - - -fifo_aBvec_1_empty_n -fifo_aBvec_1 -pointer - -ap_fifo - -in -1 -control - - -fifo_aBvec_1_read -fifo_aBvec_1 -pointer - -ap_fifo - -out -1 -control - - -fifo_aBvec_2_dout -fifo_aBvec_2 -pointer - -ap_fifo - -in -275 -control - - -fifo_aBvec_2_empty_n -fifo_aBvec_2 -pointer - -ap_fifo - -in -1 -control - - -fifo_aBvec_2_read -fifo_aBvec_2 -pointer - -ap_fifo - -out -1 -control - - -fifo_aBvec_3_dout -fifo_aBvec_3 -pointer - -ap_fifo - -in -275 -control - - -fifo_aBvec_3_empty_n -fifo_aBvec_3 -pointer - -ap_fifo - -in -1 -control - - -fifo_aBvec_3_read -fifo_aBvec_3 -pointer - -ap_fifo - -out -1 -control - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_init_C.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_init_C.sched.adb.xml deleted file mode 100644 index 43c688b3..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_init_C.sched.adb.xml +++ /dev/null @@ -1,995 +0,0 @@ -PEG_Cmtx_Pipeline_init_C - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_init_C.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_init_C.verbose.sched.rpt.xml deleted file mode 100644 index 7cb97a98..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_init_C.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:37 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -PEG_Cmtx (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 1.722 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -3, 802, 9.990 ns, 2.671 us, 3, 802, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -1, 800, 2, 1, 1, 1 ~ 800, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_init_C_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_init_C_csynth.xml deleted file mode 100644 index d1a5c55f..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_init_C_csynth.xml +++ /dev/null @@ -1,864 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -PEG_Cmtx_Pipeline_init_C -3.33 -0.90 -vivado - - - -no - -ns -1.722 - - -clock cycles -3 -402 -802 -9.990 ns -1.339 us -2.671 us -3 -802 - - - -2.43 - - -1 -800 - - - - -1 -800 - - - - -3 -2663 - - -1 -2 - - - - - - - - -31 -76 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -PEG_Cmtx_Pipeline_init_C -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -PEG_Cmtx_Pipeline_init_C -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -PEG_Cmtx_Pipeline_init_C -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -PEG_Cmtx_Pipeline_init_C -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -PEG_Cmtx_Pipeline_init_C -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -PEG_Cmtx_Pipeline_init_C -return value - -ap_ctrl_hs - -out -1 -control - - -trunc_ln -trunc_ln -scalar - -ap_none - -in -26 -data - - -local_C_V_15_address1 -local_C_V_15 -array - -ap_memory - -out -13 -address - - -local_C_V_15_ce1 -local_C_V_15 -array - -ap_memory - -out -1 -control - - -local_C_V_15_we1 -local_C_V_15 -array - -ap_memory - -out -1 -control - - -local_C_V_15_d1 -local_C_V_15 -array - -ap_memory - -out -64 -data - - -local_C_V_14_address1 -local_C_V_14 -array - -ap_memory - -out -13 -address - - -local_C_V_14_ce1 -local_C_V_14 -array - -ap_memory - -out -1 -control - - -local_C_V_14_we1 -local_C_V_14 -array - -ap_memory - -out -1 -control - - -local_C_V_14_d1 -local_C_V_14 -array - -ap_memory - -out -64 -data - - -local_C_V_13_address1 -local_C_V_13 -array - -ap_memory - -out -13 -address - - -local_C_V_13_ce1 -local_C_V_13 -array - -ap_memory - -out -1 -control - - -local_C_V_13_we1 -local_C_V_13 -array - -ap_memory - -out -1 -control - - -local_C_V_13_d1 -local_C_V_13 -array - -ap_memory - -out -64 -data - - -local_C_V_12_address1 -local_C_V_12 -array - -ap_memory - -out -13 -address - - -local_C_V_12_ce1 -local_C_V_12 -array - -ap_memory - -out -1 -control - - -local_C_V_12_we1 -local_C_V_12 -array - -ap_memory - -out -1 -control - - -local_C_V_12_d1 -local_C_V_12 -array - -ap_memory - -out -64 -data - - -local_C_V_11_address1 -local_C_V_11 -array - -ap_memory - -out -13 -address - - -local_C_V_11_ce1 -local_C_V_11 -array - -ap_memory - -out -1 -control - - -local_C_V_11_we1 -local_C_V_11 -array - -ap_memory - -out -1 -control - - -local_C_V_11_d1 -local_C_V_11 -array - -ap_memory - -out -64 -data - - -local_C_V_10_address1 -local_C_V_10 -array - -ap_memory - -out -13 -address - - -local_C_V_10_ce1 -local_C_V_10 -array - -ap_memory - -out -1 -control - - -local_C_V_10_we1 -local_C_V_10 -array - -ap_memory - -out -1 -control - - -local_C_V_10_d1 -local_C_V_10 -array - -ap_memory - -out -64 -data - - -local_C_V_9_address1 -local_C_V_9 -array - -ap_memory - -out -13 -address - - -local_C_V_9_ce1 -local_C_V_9 -array - -ap_memory - -out -1 -control - - -local_C_V_9_we1 -local_C_V_9 -array - -ap_memory - -out -1 -control - - -local_C_V_9_d1 -local_C_V_9 -array - -ap_memory - -out -64 -data - - -local_C_V_8_address1 -local_C_V_8 -array - -ap_memory - -out -13 -address - - -local_C_V_8_ce1 -local_C_V_8 -array - -ap_memory - -out -1 -control - - -local_C_V_8_we1 -local_C_V_8 -array - -ap_memory - -out -1 -control - - -local_C_V_8_d1 -local_C_V_8 -array - -ap_memory - -out -64 -data - - -local_C_V_7_address1 -local_C_V_7 -array - -ap_memory - -out -13 -address - - -local_C_V_7_ce1 -local_C_V_7 -array - -ap_memory - -out -1 -control - - -local_C_V_7_we1 -local_C_V_7 -array - -ap_memory - -out -1 -control - - -local_C_V_7_d1 -local_C_V_7 -array - -ap_memory - -out -64 -data - - -local_C_V_6_address1 -local_C_V_6 -array - -ap_memory - -out -13 -address - - -local_C_V_6_ce1 -local_C_V_6 -array - -ap_memory - -out -1 -control - - -local_C_V_6_we1 -local_C_V_6 -array - -ap_memory - -out -1 -control - - -local_C_V_6_d1 -local_C_V_6 -array - -ap_memory - -out -64 -data - - -local_C_V_5_address1 -local_C_V_5 -array - -ap_memory - -out -13 -address - - -local_C_V_5_ce1 -local_C_V_5 -array - -ap_memory - -out -1 -control - - -local_C_V_5_we1 -local_C_V_5 -array - -ap_memory - -out -1 -control - - -local_C_V_5_d1 -local_C_V_5 -array - -ap_memory - -out -64 -data - - -local_C_V_4_address1 -local_C_V_4 -array - -ap_memory - -out -13 -address - - -local_C_V_4_ce1 -local_C_V_4 -array - -ap_memory - -out -1 -control - - -local_C_V_4_we1 -local_C_V_4 -array - -ap_memory - -out -1 -control - - -local_C_V_4_d1 -local_C_V_4 -array - -ap_memory - -out -64 -data - - -local_C_V_3_address1 -local_C_V_3 -array - -ap_memory - -out -13 -address - - -local_C_V_3_ce1 -local_C_V_3 -array - -ap_memory - -out -1 -control - - -local_C_V_3_we1 -local_C_V_3 -array - -ap_memory - -out -1 -control - - -local_C_V_3_d1 -local_C_V_3 -array - -ap_memory - -out -64 -data - - -local_C_V_2_address1 -local_C_V_2 -array - -ap_memory - -out -13 -address - - -local_C_V_2_ce1 -local_C_V_2 -array - -ap_memory - -out -1 -control - - -local_C_V_2_we1 -local_C_V_2 -array - -ap_memory - -out -1 -control - - -local_C_V_2_d1 -local_C_V_2 -array - -ap_memory - -out -64 -data - - -local_C_V_1_address1 -local_C_V_1 -array - -ap_memory - -out -13 -address - - -local_C_V_1_ce1 -local_C_V_1 -array - -ap_memory - -out -1 -control - - -local_C_V_1_we1 -local_C_V_1 -array - -ap_memory - -out -1 -control - - -local_C_V_1_d1 -local_C_V_1 -array - -ap_memory - -out -64 -data - - -local_C_V_address1 -local_C_V -array - -ap_memory - -out -13 -address - - -local_C_V_ce1 -local_C_V -array - -ap_memory - -out -1 -control - - -local_C_V_we1 -local_C_V -array - -ap_memory - -out -1 -control - - -local_C_V_d1 -local_C_V -array - -ap_memory - -out -64 -data - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_write_C_outer.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_write_C_outer.sched.adb.xml deleted file mode 100644 index 5ceeaf56..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_write_C_outer.sched.adb.xml +++ /dev/null @@ -1,1623 +0,0 @@ -PEG_Cmtx_Pipeline_write_C_outer - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -Multiplexer - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -Multiplexer - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -Multiplexer - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -RAM_2P_URAM - - - - - - - - - - - -Multiplexer - - - - - - - - - - - -Cmp - - - - - - - - - - - -Cmp - - - - - - - - - - - -Sel - - - - - - - - - - - -LogicGate - - - - - - - - - - - -Sel - - - - - - - - - - - -Cmp - - - - - - - - - - - -Cmp - - - - - - - - - - - -Sel - - - - - - - - - - - -LogicGate - - - - - - - - - - - -Sel - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_write_C_outer.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_write_C_outer.verbose.sched.rpt.xml deleted file mode 100644 index 73300c61..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_write_C_outer.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:39 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -PEG_Cmtx (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.175 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -4, 1803, 13.320 ns, 6.004 us, 4, 1803, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -2, 1801, 3, 1, 1, 1 ~ 1800, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_write_C_outer_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_write_C_outer_csynth.xml deleted file mode 100644 index 237390b8..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_Pipeline_write_C_outer_csynth.xml +++ /dev/null @@ -1,721 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -PEG_Cmtx_Pipeline_write_C_outer -3.33 -0.90 -vivado - - - -no - -ns -2.175 - - -clock cycles -4 -903 -1803 -13.320 ns -3.007 us -6.004 us -4 -1803 - - - -2.43 - - -1 -1800 - - - - -2 -1801 - - - - -6 -5997 - - -1 -3 - - - - - - - - -320 -342 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -PEG_Cmtx_Pipeline_write_C_outer -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -PEG_Cmtx_Pipeline_write_C_outer -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -PEG_Cmtx_Pipeline_write_C_outer -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -PEG_Cmtx_Pipeline_write_C_outer -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -PEG_Cmtx_Pipeline_write_C_outer -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -PEG_Cmtx_Pipeline_write_C_outer -return value - -ap_ctrl_hs - -out -1 -control - - -fifo_C_out_din -fifo_C_out -pointer - -ap_fifo - -out -257 -control - - -fifo_C_out_full_n -fifo_C_out -pointer - -ap_fifo - -in -1 -control - - -fifo_C_out_write -fifo_C_out -pointer - -ap_fifo - -out -1 -control - - -num_v_out -num_v_out -scalar - -ap_none - -in -28 -data - - -local_C_V_address0 -local_C_V -array - -ap_memory - -out -13 -address - - -local_C_V_ce0 -local_C_V -array - -ap_memory - -out -1 -control - - -local_C_V_q0 -local_C_V -array - -ap_memory - -in -64 -data - - -local_C_V_4_address0 -local_C_V_4 -array - -ap_memory - -out -13 -address - - -local_C_V_4_ce0 -local_C_V_4 -array - -ap_memory - -out -1 -control - - -local_C_V_4_q0 -local_C_V_4 -array - -ap_memory - -in -64 -data - - -local_C_V_8_address0 -local_C_V_8 -array - -ap_memory - -out -13 -address - - -local_C_V_8_ce0 -local_C_V_8 -array - -ap_memory - -out -1 -control - - -local_C_V_8_q0 -local_C_V_8 -array - -ap_memory - -in -64 -data - - -local_C_V_12_address0 -local_C_V_12 -array - -ap_memory - -out -13 -address - - -local_C_V_12_ce0 -local_C_V_12 -array - -ap_memory - -out -1 -control - - -local_C_V_12_q0 -local_C_V_12 -array - -ap_memory - -in -64 -data - - -local_C_V_1_address0 -local_C_V_1 -array - -ap_memory - -out -13 -address - - -local_C_V_1_ce0 -local_C_V_1 -array - -ap_memory - -out -1 -control - - -local_C_V_1_q0 -local_C_V_1 -array - -ap_memory - -in -64 -data - - -local_C_V_5_address0 -local_C_V_5 -array - -ap_memory - -out -13 -address - - -local_C_V_5_ce0 -local_C_V_5 -array - -ap_memory - -out -1 -control - - -local_C_V_5_q0 -local_C_V_5 -array - -ap_memory - -in -64 -data - - -local_C_V_9_address0 -local_C_V_9 -array - -ap_memory - -out -13 -address - - -local_C_V_9_ce0 -local_C_V_9 -array - -ap_memory - -out -1 -control - - -local_C_V_9_q0 -local_C_V_9 -array - -ap_memory - -in -64 -data - - -local_C_V_13_address0 -local_C_V_13 -array - -ap_memory - -out -13 -address - - -local_C_V_13_ce0 -local_C_V_13 -array - -ap_memory - -out -1 -control - - -local_C_V_13_q0 -local_C_V_13 -array - -ap_memory - -in -64 -data - - -local_C_V_2_address0 -local_C_V_2 -array - -ap_memory - -out -13 -address - - -local_C_V_2_ce0 -local_C_V_2 -array - -ap_memory - -out -1 -control - - -local_C_V_2_q0 -local_C_V_2 -array - -ap_memory - -in -64 -data - - -local_C_V_6_address0 -local_C_V_6 -array - -ap_memory - -out -13 -address - - -local_C_V_6_ce0 -local_C_V_6 -array - -ap_memory - -out -1 -control - - -local_C_V_6_q0 -local_C_V_6 -array - -ap_memory - -in -64 -data - - -local_C_V_10_address0 -local_C_V_10 -array - -ap_memory - -out -13 -address - - -local_C_V_10_ce0 -local_C_V_10 -array - -ap_memory - -out -1 -control - - -local_C_V_10_q0 -local_C_V_10 -array - -ap_memory - -in -64 -data - - -local_C_V_14_address0 -local_C_V_14 -array - -ap_memory - -out -13 -address - - -local_C_V_14_ce0 -local_C_V_14 -array - -ap_memory - -out -1 -control - - -local_C_V_14_q0 -local_C_V_14 -array - -ap_memory - -in -64 -data - - -local_C_V_3_address0 -local_C_V_3 -array - -ap_memory - -out -13 -address - - -local_C_V_3_ce0 -local_C_V_3 -array - -ap_memory - -out -1 -control - - -local_C_V_3_q0 -local_C_V_3 -array - -ap_memory - -in -64 -data - - -local_C_V_7_address0 -local_C_V_7 -array - -ap_memory - -out -13 -address - - -local_C_V_7_ce0 -local_C_V_7 -array - -ap_memory - -out -1 -control - - -local_C_V_7_q0 -local_C_V_7 -array - -ap_memory - -in -64 -data - - -local_C_V_11_address0 -local_C_V_11 -array - -ap_memory - -out -13 -address - - -local_C_V_11_ce0 -local_C_V_11 -array - -ap_memory - -out -1 -control - - -local_C_V_11_q0 -local_C_V_11 -array - -ap_memory - -in -64 -data - - -local_C_V_15_address0 -local_C_V_15 -array - -ap_memory - -out -13 -address - - -local_C_V_15_ce0 -local_C_V_15 -array - -ap_memory - -out -1 -control - - -local_C_V_15_q0 -local_C_V_15 -array - -ap_memory - -in -64 -data - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_csynth.xml deleted file mode 100644 index e654a9ea..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/PEG_Cmtx_csynth.xml +++ /dev/null @@ -1,650 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -PEG_Cmtx -3.33 -0.90 -vivado - - - -no - -ns -2.583 - - -clock cycles -33 -33279 -209527 -0.110 us -0.111 ms -0.698 ms -34 -209528 - - - -2.43 - - -1 -16 - - - - -26 -209520 - - - - -86 -697701 - - - - -26 -13095 - - - - -
    -2.43 - - -1 -49 - - - - -15 -10486 - - - - -49 -34918 - - - - -15 -214 - - - - -
    -
    -
    -
    - - - -65 -17721 -11573 -32 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -PEG_Cmtx -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst_n -PEG_Cmtx -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -PEG_Cmtx -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -PEG_Cmtx -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -PEG_Cmtx -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -PEG_Cmtx -return value - -ap_ctrl_hs - -out -1 -control - - -PE_inst_in_s_dout -PE_inst_in_s -pointer - -ap_fifo - -in -33 -control -int - - -PE_inst_in_s_empty_n -PE_inst_in_s -pointer - -ap_fifo - -in -1 -control -int - - -PE_inst_in_s_read -PE_inst_in_s -pointer - -ap_fifo - -out -1 -control -int - - -PE_inst_in_peek_dout -PE_inst_in_peek -pointer - -ap_fifo - -in -33 -control -int - - -PE_inst_in_peek_empty_n -PE_inst_in_peek -pointer - -ap_fifo - -in -1 -control -int - - -PE_inst_in_peek_read -PE_inst_in_peek -pointer - -ap_fifo - -out -1 -control -int - - -fifo_inst_in_s_dout -fifo_inst_in_s -pointer - -ap_fifo - -in -33 -control -int - - -fifo_inst_in_s_empty_n -fifo_inst_in_s -pointer - -ap_fifo - -in -1 -control -int - - -fifo_inst_in_s_read -fifo_inst_in_s -pointer - -ap_fifo - -out -1 -control -int - - -fifo_inst_in_peek_dout -fifo_inst_in_peek -pointer - -ap_fifo - -in -33 -control -int - - -fifo_inst_in_peek_empty_n -fifo_inst_in_peek -pointer - -ap_fifo - -in -1 -control -int - - -fifo_inst_in_peek_read -fifo_inst_in_peek -pointer - -ap_fifo - -out -1 -control -int - - -fifo_aBvec_0_dout -fifo_aBvec_0 -pointer - -ap_fifo - -in -275 -control -int - - -fifo_aBvec_0_empty_n -fifo_aBvec_0 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_aBvec_0_read -fifo_aBvec_0 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_aBvec_1_dout -fifo_aBvec_1 -pointer - -ap_fifo - -in -275 -control -int - - -fifo_aBvec_1_empty_n -fifo_aBvec_1 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_aBvec_1_read -fifo_aBvec_1 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_aBvec_2_dout -fifo_aBvec_2 -pointer - -ap_fifo - -in -275 -control -int - - -fifo_aBvec_2_empty_n -fifo_aBvec_2 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_aBvec_2_read -fifo_aBvec_2 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_aBvec_3_dout -fifo_aBvec_3 -pointer - -ap_fifo - -in -275 -control -int - - -fifo_aBvec_3_empty_n -fifo_aBvec_3 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_aBvec_3_read -fifo_aBvec_3 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_aBvec_peek_0_dout -fifo_aBvec_peek_0 -pointer - -ap_fifo - -in -275 -control -int - - -fifo_aBvec_peek_0_empty_n -fifo_aBvec_peek_0 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_aBvec_peek_0_read -fifo_aBvec_peek_0 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_aBvec_peek_1_dout -fifo_aBvec_peek_1 -pointer - -ap_fifo - -in -275 -control -int - - -fifo_aBvec_peek_1_empty_n -fifo_aBvec_peek_1 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_aBvec_peek_1_read -fifo_aBvec_peek_1 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_aBvec_peek_2_dout -fifo_aBvec_peek_2 -pointer - -ap_fifo - -in -275 -control -int - - -fifo_aBvec_peek_2_empty_n -fifo_aBvec_peek_2 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_aBvec_peek_2_read -fifo_aBvec_peek_2 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_aBvec_peek_3_dout -fifo_aBvec_peek_3 -pointer - -ap_fifo - -in -275 -control -int - - -fifo_aBvec_peek_3_empty_n -fifo_aBvec_peek_3 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_aBvec_peek_3_read -fifo_aBvec_peek_3 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_C_out_din -fifo_C_out -pointer - -ap_fifo - -out -257 -control -int - - -fifo_C_out_full_n -fifo_C_out -pointer - -ap_fifo - -in -1 -control -int - - -fifo_C_out_write -fifo_C_out -pointer - -ap_fifo - -out -1 -control -int - - - -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2.sched.adb.xml deleted file mode 100644 index cd51d795..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2.sched.adb.xml +++ /dev/null @@ -1,297 +0,0 @@ -Scatter_1_2 - - - - - - - - - - - - - - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2.verbose.sched.rpt.xml deleted file mode 100644 index 50a24fcd..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2.verbose.sched.rpt.xml +++ /dev/null @@ -1,45 +0,0 @@ - - -
    -Fri Mar 29 14:40:34 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -Scatter_1_2 (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.431 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -?, ?, ?, ?, ?, ?, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_Pipeline_VITIS_LOOP_405_1.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_Pipeline_VITIS_LOOP_405_1.sched.adb.xml deleted file mode 100644 index 3db9839e..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_Pipeline_VITIS_LOOP_405_1.sched.adb.xml +++ /dev/null @@ -1,378 +0,0 @@ -Scatter_1_2_Pipeline_VITIS_LOOP_405_1 - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -LogicGate - - - - - - - - - - - -LogicGate - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_Pipeline_VITIS_LOOP_405_1.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_Pipeline_VITIS_LOOP_405_1.verbose.sched.rpt.xml deleted file mode 100644 index 68db2217..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_Pipeline_VITIS_LOOP_405_1.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:34 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -Scatter_1_2 (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.431 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -?, ?, ?, ?, ?, ?, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -?, ?, 1, 1, 1, inf, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_Pipeline_VITIS_LOOP_405_1_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_Pipeline_VITIS_LOOP_405_1_csynth.xml deleted file mode 100644 index 166f82b5..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_Pipeline_VITIS_LOOP_405_1_csynth.xml +++ /dev/null @@ -1,233 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -Scatter_1_2_Pipeline_VITIS_LOOP_405_1 -3.33 -0.90 -vivado - - - -no - -ns -2.431 - - -clock cycles -undef -undef -undef -undef -undef -undef -undef -undef - - - -2.43 -inf -undef -undef -1 -1 - - - - - - - - -2 -20 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -Scatter_1_2_Pipeline_VITIS_LOOP_405_1 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -Scatter_1_2_Pipeline_VITIS_LOOP_405_1 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -Scatter_1_2_Pipeline_VITIS_LOOP_405_1 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -Scatter_1_2_Pipeline_VITIS_LOOP_405_1 -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -Scatter_1_2_Pipeline_VITIS_LOOP_405_1 -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -Scatter_1_2_Pipeline_VITIS_LOOP_405_1 -return value - -ap_ctrl_hs - -out -1 -control - - -fifo_in_s_dout -fifo_in_s -pointer - -ap_fifo - -in -513 -control - - -fifo_in_s_empty_n -fifo_in_s -pointer - -ap_fifo - -in -1 -control - - -fifo_in_s_read -fifo_in_s -pointer - -ap_fifo - -out -1 -control - - -fifo_out_0_din -fifo_out_0 -pointer - -ap_fifo - -out -257 -control - - -fifo_out_0_full_n -fifo_out_0 -pointer - -ap_fifo - -in -1 -control - - -fifo_out_0_write -fifo_out_0 -pointer - -ap_fifo - -out -1 -control - - -fifo_out_1_din -fifo_out_1 -pointer - -ap_fifo - -out -257 -control - - -fifo_out_1_full_n -fifo_out_1 -pointer - -ap_fifo - -in -1 -control - - -fifo_out_1_write -fifo_out_1 -pointer - -ap_fifo - -out -1 -control - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_csynth.xml deleted file mode 100644 index 755f9771..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/Scatter_1_2_csynth.xml +++ /dev/null @@ -1,266 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -Scatter_1_2 -3.33 -0.90 -vivado - - - -no - -ns -2.431 - - -clock cycles -undef -undef -undef -undef -undef -undef -undef -undef - - - - - -6 -67 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -Scatter_1_2 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst_n -Scatter_1_2 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -Scatter_1_2 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -Scatter_1_2 -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -Scatter_1_2 -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -Scatter_1_2 -return value - -ap_ctrl_hs - -out -1 -control - - -fifo_in_s_dout -fifo_in_s -pointer - -ap_fifo - -in -513 -control -int - - -fifo_in_s_empty_n -fifo_in_s -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in_s_read -fifo_in_s -pointer - -ap_fifo - -out -1 -control -int - - -fifo_in_peek_dout -fifo_in_peek -pointer - -ap_fifo - -in -513 -control -int - - -fifo_in_peek_empty_n -fifo_in_peek -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in_peek_read -fifo_in_peek -pointer - -ap_fifo - -out -1 -control -int - - -fifo_out_0_din -fifo_out_0 -pointer - -ap_fifo - -out -257 -control -int - - -fifo_out_0_full_n -fifo_out_0 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_out_0_write -fifo_out_0 -pointer - -ap_fifo - -out -1 -control -int - - -fifo_out_1_din -fifo_out_1 -pointer - -ap_fifo - -out -257 -control -int - - -fifo_out_1_full_n -fifo_out_1 -pointer - -ap_fifo - -in -1 -control -int - - -fifo_out_1_write -fifo_out_1 -pointer - -ap_fifo - -out -1 -control -int - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/Sextans.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/Sextans.sched.adb.xml deleted file mode 100644 index 72d73535..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/Sextans.sched.adb.xml +++ /dev/null @@ -1,3864 +0,0 @@ -Sextans - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -s_axilite - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/Sextans.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/Sextans.verbose.sched.rpt.xml deleted file mode 100644 index 25fd1ed2..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/Sextans.verbose.sched.rpt.xml +++ /dev/null @@ -1,45 +0,0 @@ - - -
    -Fri Mar 29 14:40:34 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -Sextans (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 1.000 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -0, 0, 0 ns, 0 ns, 1, 1, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/Sextans_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/Sextans_csynth.xml deleted file mode 100644 index 16f68b46..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/Sextans_csynth.xml +++ /dev/null @@ -1,276 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -Sextans -3.33 -0.90 -vivado - - - -no - -ns -1.000 - - -clock cycles -0 -0 -0 -0 ns -0 ns -0 ns -1 -1 - - - - - -0 -2332 -4200 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -s_axi_control_AWVALID -control -scalar -s_axi -in -1 -unknown -int -1 - - -s_axi_control_AWREADY -control -scalar -s_axi -out -1 -unknown -int -1 - - -s_axi_control_AWADDR -control -scalar -s_axi -in -9 -unknown -int -1 - - -s_axi_control_WVALID -control -scalar -s_axi -in -1 -unknown -int -1 - - -s_axi_control_WREADY -control -scalar -s_axi -out -1 -unknown -int -1 - - -s_axi_control_WDATA -control -scalar -s_axi -in -32 -unknown -int -1 - - -s_axi_control_WSTRB -control -scalar -s_axi -in -4 -unknown -int -1 - - -s_axi_control_ARVALID -control -scalar -s_axi -in -1 -unknown -int -1 - - -s_axi_control_ARREADY -control -scalar -s_axi -out -1 -unknown -int -1 - - -s_axi_control_ARADDR -control -scalar -s_axi -in -9 -unknown -int -1 - - -s_axi_control_RVALID -control -scalar -s_axi -out -1 -unknown -int -1 - - -s_axi_control_RREADY -control -scalar -s_axi -in -1 -unknown -int -1 - - -s_axi_control_RDATA -control -scalar -s_axi -out -32 -unknown -int -1 - - -s_axi_control_RRESP -control -scalar -s_axi -out -2 -unknown -int -1 - - -s_axi_control_BVALID -control -scalar -s_axi -out -1 -unknown -int -1 - - -s_axi_control_BREADY -control -scalar -s_axi -in -1 -unknown -int -1 - - -s_axi_control_BRESP -control -scalar -s_axi -out -2 -unknown -int -1 - - -ap_clk -Sextans -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst_n -Sextans -return value - -ap_ctrl_hs - -in -1 -control - - -interrupt -Sextans -return value - -ap_ctrl_hs - -out -1 -unknown - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16.sched.adb.xml deleted file mode 100644 index a67b562a..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16.sched.adb.xml +++ /dev/null @@ -1,207 +0,0 @@ -black_hole_float_v16 - - - - - - - - - - - - - - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16.verbose.sched.rpt.xml deleted file mode 100644 index ded4e815..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16.verbose.sched.rpt.xml +++ /dev/null @@ -1,45 +0,0 @@ - - -
    -Fri Mar 29 14:40:34 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -black_hole_float_v16 (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 1.215 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -?, ?, ?, ?, ?, ?, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_Pipeline_VITIS_LOOP_400_1.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_Pipeline_VITIS_LOOP_400_1.sched.adb.xml deleted file mode 100644 index 0cdf35e6..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_Pipeline_VITIS_LOOP_400_1.sched.adb.xml +++ /dev/null @@ -1,129 +0,0 @@ -black_hole_float_v16_Pipeline_VITIS_LOOP_400_1 - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_Pipeline_VITIS_LOOP_400_1.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_Pipeline_VITIS_LOOP_400_1.verbose.sched.rpt.xml deleted file mode 100644 index d0d3b3a3..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_Pipeline_VITIS_LOOP_400_1.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:34 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -black_hole_float_v16 (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 1.215 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -?, ?, ?, ?, ?, ?, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -?, ?, 1, 1, 1, inf, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_csynth.xml deleted file mode 100644 index b6cd8b25..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_Pipeline_VITIS_LOOP_400_1_csynth.xml +++ /dev/null @@ -1,167 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -black_hole_float_v16_Pipeline_VITIS_LOOP_400_1 -3.33 -0.90 -vivado - - - -no - -ns -1.215 - - -clock cycles -undef -undef -undef -undef -undef -undef -undef -undef - - - -2.43 -inf -undef -undef -1 -1 - - - - - - - - -2 -14 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -black_hole_float_v16_Pipeline_VITIS_LOOP_400_1 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -black_hole_float_v16_Pipeline_VITIS_LOOP_400_1 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -black_hole_float_v16_Pipeline_VITIS_LOOP_400_1 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -black_hole_float_v16_Pipeline_VITIS_LOOP_400_1 -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -black_hole_float_v16_Pipeline_VITIS_LOOP_400_1 -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -black_hole_float_v16_Pipeline_VITIS_LOOP_400_1 -return value - -ap_ctrl_hs - -out -1 -control - - -fifo_in_s_dout -fifo_in_s -pointer - -ap_fifo - -in -513 -control - - -fifo_in_s_empty_n -fifo_in_s -pointer - -ap_fifo - -in -1 -control - - -fifo_in_s_read -fifo_in_s -pointer - -ap_fifo - -out -1 -control - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_csynth.xml deleted file mode 100644 index 6202f2f9..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_float_v16_csynth.xml +++ /dev/null @@ -1,194 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -black_hole_float_v16 -3.33 -0.90 -vivado - - - -no - -ns -1.215 - - -clock cycles -undef -undef -undef -undef -undef -undef -undef -undef - - - - - -6 -43 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -black_hole_float_v16 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst_n -black_hole_float_v16 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -black_hole_float_v16 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -black_hole_float_v16 -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -black_hole_float_v16 -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -black_hole_float_v16 -return value - -ap_ctrl_hs - -out -1 -control - - -fifo_in_s_dout -fifo_in_s -pointer - -ap_fifo - -in -513 -control -int - - -fifo_in_s_empty_n -fifo_in_s -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in_s_read -fifo_in_s -pointer - -ap_fifo - -out -1 -control -int - - -fifo_in_peek_dout -fifo_in_peek -pointer - -ap_fifo - -in -513 -control -int - - -fifo_in_peek_empty_n -fifo_in_peek -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in_peek_read -fifo_in_peek -pointer - -ap_fifo - -out -1 -control -int - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int.sched.adb.xml deleted file mode 100644 index 8b52c060..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int.sched.adb.xml +++ /dev/null @@ -1,207 +0,0 @@ -black_hole_int - - - - - - - - - - - - - - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int.verbose.sched.rpt.xml deleted file mode 100644 index c4c67e70..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int.verbose.sched.rpt.xml +++ /dev/null @@ -1,45 +0,0 @@ - - -
    -Fri Mar 29 14:40:34 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -black_hole_int (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 1.215 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -?, ?, ?, ?, ?, ?, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_Pipeline_VITIS_LOOP_399_1.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_Pipeline_VITIS_LOOP_399_1.sched.adb.xml deleted file mode 100644 index 7ccbb4bf..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_Pipeline_VITIS_LOOP_399_1.sched.adb.xml +++ /dev/null @@ -1,129 +0,0 @@ -black_hole_int_Pipeline_VITIS_LOOP_399_1 - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_Pipeline_VITIS_LOOP_399_1.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_Pipeline_VITIS_LOOP_399_1.verbose.sched.rpt.xml deleted file mode 100644 index c78f7420..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_Pipeline_VITIS_LOOP_399_1.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:34 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -black_hole_int (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 1.215 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -?, ?, ?, ?, ?, ?, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -?, ?, 1, 1, 1, inf, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_Pipeline_VITIS_LOOP_399_1_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_Pipeline_VITIS_LOOP_399_1_csynth.xml deleted file mode 100644 index ca1974bb..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_Pipeline_VITIS_LOOP_399_1_csynth.xml +++ /dev/null @@ -1,167 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -black_hole_int_Pipeline_VITIS_LOOP_399_1 -3.33 -0.90 -vivado - - - -no - -ns -1.215 - - -clock cycles -undef -undef -undef -undef -undef -undef -undef -undef - - - -2.43 -inf -undef -undef -1 -1 - - - - - - - - -2 -14 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -black_hole_int_Pipeline_VITIS_LOOP_399_1 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -black_hole_int_Pipeline_VITIS_LOOP_399_1 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -black_hole_int_Pipeline_VITIS_LOOP_399_1 -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -black_hole_int_Pipeline_VITIS_LOOP_399_1 -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -black_hole_int_Pipeline_VITIS_LOOP_399_1 -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -black_hole_int_Pipeline_VITIS_LOOP_399_1 -return value - -ap_ctrl_hs - -out -1 -control - - -fifo_in_s_dout -fifo_in_s -pointer - -ap_fifo - -in -33 -control - - -fifo_in_s_empty_n -fifo_in_s -pointer - -ap_fifo - -in -1 -control - - -fifo_in_s_read -fifo_in_s -pointer - -ap_fifo - -out -1 -control - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_csynth.xml deleted file mode 100644 index dabbf39e..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/black_hole_int_csynth.xml +++ /dev/null @@ -1,194 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -black_hole_int -3.33 -0.90 -vivado - - - -no - -ns -1.215 - - -clock cycles -undef -undef -undef -undef -undef -undef -undef -undef - - - - - -6 -43 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -black_hole_int -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst_n -black_hole_int -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -black_hole_int -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -black_hole_int -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -black_hole_int -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -black_hole_int -return value - -ap_ctrl_hs - -out -1 -control - - -fifo_in_s_dout -fifo_in_s -pointer - -ap_fifo - -in -33 -control -int - - -fifo_in_s_empty_n -fifo_in_s -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in_s_read -fifo_in_s -pointer - -ap_fifo - -out -1 -control -int - - -fifo_in_peek_dout -fifo_in_peek -pointer - -ap_fifo - -in -33 -control -int - - -fifo_in_peek_empty_n -fifo_in_peek -pointer - -ap_fifo - -in -1 -control -int - - -fifo_in_peek_read -fifo_in_peek -pointer - -ap_fifo - -out -1 -control -int - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/csynth.xml deleted file mode 100644 index 99859c2c..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/csynth.xml +++ /dev/null @@ -1,1339 +0,0 @@ - - - 2022.2 - - - ns - virtexuplus - xcu280-fsvh2892-2L-e - Sextans - 3.33 - 0.90 - vivado - - - no - - ns - 1.000 - - - clock cycles - 0 - 0 - 0 - 0 ns - 0 ns - 0 ns - 1 - 1 - - - - - 0 - 2332 - 4200 - 0 - 0 - - - 4032 - 9024 - 2607360 - 1303680 - 960 - - - - - s_axi_control_AWVALID - control - scalar - s_axi - in - 1 - unknown - int - 1 - - - s_axi_control_AWREADY - control - scalar - s_axi - out - 1 - unknown - int - 1 - - - s_axi_control_AWADDR - control - scalar - s_axi - in - 9 - unknown - int - 1 - - - s_axi_control_WVALID - control - scalar - s_axi - in - 1 - unknown - int - 1 - - - s_axi_control_WREADY - control - scalar - s_axi - out - 1 - unknown - int - 1 - - - s_axi_control_WDATA - control - scalar - s_axi - in - 32 - unknown - int - 1 - - - s_axi_control_WSTRB - control - scalar - s_axi - in - 4 - unknown - int - 1 - - - s_axi_control_ARVALID - control - scalar - s_axi - in - 1 - unknown - int - 1 - - - s_axi_control_ARREADY - control - scalar - s_axi - out - 1 - unknown - int - 1 - - - s_axi_control_ARADDR - control - scalar - s_axi - in - 9 - unknown - int - 1 - - - s_axi_control_RVALID - control - scalar - s_axi - out - 1 - unknown - int - 1 - - - s_axi_control_RREADY - control - scalar - s_axi - in - 1 - unknown - int - 1 - - - s_axi_control_RDATA - control - scalar - s_axi - out - 32 - unknown - int - 1 - - - s_axi_control_RRESP - control - scalar - s_axi - out - 2 - unknown - int - 1 - - - s_axi_control_BVALID - control - scalar - s_axi - out - 1 - unknown - int - 1 - - - s_axi_control_BREADY - control - scalar - s_axi - in - 1 - unknown - int - 1 - - - s_axi_control_BRESP - control - scalar - s_axi - out - 2 - unknown - int - 1 - - - ap_clk - Sextans - return value - - ap_ctrl_hs - - in - 1 - control - - - ap_rst_n - Sextans - return value - - ap_ctrl_hs - - in - 1 - control - - - interrupt - Sextans - return value - - ap_ctrl_hs - - out - 1 - unknown - - - - - Sextans - - - - - Sextans - - - 3.33 - 0.90 - 1.000 - - - 0 - 0 - 0 - 0 ns - 0 ns - 0 ns - 1 - no - - - - - 0 - 4032 - 0 - 2332 - 2607360 - ~0 - 4200 - 1303680 - ~0 - 0 - 960 - 0 - 0 - 9024 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - s_axi_control_ARADDR - s_axi_control_ARREADY - s_axi_control_ARVALID - s_axi_control_AWADDR - s_axi_control_AWREADY - s_axi_control_AWVALID - s_axi_control_BREADY - s_axi_control_BRESP - s_axi_control_BVALID - s_axi_control_RDATA - s_axi_control_RREADY - s_axi_control_RRESP - s_axi_control_RVALID - s_axi_control_WDATA - s_axi_control_WREADY - s_axi_control_WSTRB - s_axi_control_WVALID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - s_axi_control - ap_rst_n - - - CLK - - - ap_clk - - - - - ACTIVE_LOW - - - RST - - - ap_rst_n - - - - - LEVEL_HIGH - - - INTERRUPT - - - interrupt - - - - -
    - - - Interface, Data Width, Address Width, Offset, Register - 32, 9, 16, 0, , , , , -
    -
    - - - Interface, Register, Offset, Width, Access, Description, Bit Fields - CTRL, 0x00, 32, RW, Control signals, 0=AP_START 1=AP_DONE 2=AP_IDLE 3=AP_READY 7=AUTO_RESTART 9=INTERRUPT - GIER, 0x04, 32, RW, Global Interrupt Enable Register, 0=Enable - IP_IER, 0x08, 32, RW, IP Interrupt Enable Register, 0=CHAN0_INT_EN 1=CHAN1_INT_EN - IP_ISR, 0x0c, 32, RW, IP Interrupt Status Register, 0=CHAN0_INT_ST 1=CHAN1_INT_ST - edge_list_ptr_1, 0x10, 32, W, Data signal of edge_list_ptr, - edge_list_ptr_2, 0x14, 32, W, Data signal of edge_list_ptr, - edge_list_ch_0_1, 0x1c, 32, W, Data signal of edge_list_ch_0, - edge_list_ch_0_2, 0x20, 32, W, Data signal of edge_list_ch_0, - edge_list_ch_1_1, 0x28, 32, W, Data signal of edge_list_ch_1, - edge_list_ch_1_2, 0x2c, 32, W, Data signal of edge_list_ch_1, - edge_list_ch_2_1, 0x34, 32, W, Data signal of edge_list_ch_2, - edge_list_ch_2_2, 0x38, 32, W, Data signal of edge_list_ch_2, - edge_list_ch_3_1, 0x40, 32, W, Data signal of edge_list_ch_3, - edge_list_ch_3_2, 0x44, 32, W, Data signal of edge_list_ch_3, - edge_list_ch_4_1, 0x4c, 32, W, Data signal of edge_list_ch_4, - edge_list_ch_4_2, 0x50, 32, W, Data signal of edge_list_ch_4, - edge_list_ch_5_1, 0x58, 32, W, Data signal of edge_list_ch_5, - edge_list_ch_5_2, 0x5c, 32, W, Data signal of edge_list_ch_5, - edge_list_ch_6_1, 0x64, 32, W, Data signal of edge_list_ch_6, - edge_list_ch_6_2, 0x68, 32, W, Data signal of edge_list_ch_6, - edge_list_ch_7_1, 0x70, 32, W, Data signal of edge_list_ch_7, - edge_list_ch_7_2, 0x74, 32, W, Data signal of edge_list_ch_7, - mat_B_ch_0_1, 0x7c, 32, W, Data signal of mat_B_ch_0, - mat_B_ch_0_2, 0x80, 32, W, Data signal of mat_B_ch_0, - mat_B_ch_1_1, 0x88, 32, W, Data signal of mat_B_ch_1, - mat_B_ch_1_2, 0x8c, 32, W, Data signal of mat_B_ch_1, - mat_B_ch_2_1, 0x94, 32, W, Data signal of mat_B_ch_2, - mat_B_ch_2_2, 0x98, 32, W, Data signal of mat_B_ch_2, - mat_B_ch_3_1, 0xa0, 32, W, Data signal of mat_B_ch_3, - mat_B_ch_3_2, 0xa4, 32, W, Data signal of mat_B_ch_3, - mat_C_ch_in_0_1, 0xac, 32, W, Data signal of mat_C_ch_in_0, - mat_C_ch_in_0_2, 0xb0, 32, W, Data signal of mat_C_ch_in_0, - mat_C_ch_in_1_1, 0xb8, 32, W, Data signal of mat_C_ch_in_1, - mat_C_ch_in_1_2, 0xbc, 32, W, Data signal of mat_C_ch_in_1, - mat_C_ch_in_2_1, 0xc4, 32, W, Data signal of mat_C_ch_in_2, - mat_C_ch_in_2_2, 0xc8, 32, W, Data signal of mat_C_ch_in_2, - mat_C_ch_in_3_1, 0xd0, 32, W, Data signal of mat_C_ch_in_3, - mat_C_ch_in_3_2, 0xd4, 32, W, Data signal of mat_C_ch_in_3, - mat_C_ch_in_4_1, 0xdc, 32, W, Data signal of mat_C_ch_in_4, - mat_C_ch_in_4_2, 0xe0, 32, W, Data signal of mat_C_ch_in_4, - mat_C_ch_in_5_1, 0xe8, 32, W, Data signal of mat_C_ch_in_5, - mat_C_ch_in_5_2, 0xec, 32, W, Data signal of mat_C_ch_in_5, - mat_C_ch_in_6_1, 0xf4, 32, W, Data signal of mat_C_ch_in_6, - mat_C_ch_in_6_2, 0xf8, 32, W, Data signal of mat_C_ch_in_6, - mat_C_ch_in_7_1, 0x100, 32, W, Data signal of mat_C_ch_in_7, - mat_C_ch_in_7_2, 0x104, 32, W, Data signal of mat_C_ch_in_7, - mat_C_ch_0_1, 0x10c, 32, W, Data signal of mat_C_ch_0, - mat_C_ch_0_2, 0x110, 32, W, Data signal of mat_C_ch_0, - mat_C_ch_1_1, 0x118, 32, W, Data signal of mat_C_ch_1, - mat_C_ch_1_2, 0x11c, 32, W, Data signal of mat_C_ch_1, - mat_C_ch_2_1, 0x124, 32, W, Data signal of mat_C_ch_2, - mat_C_ch_2_2, 0x128, 32, W, Data signal of mat_C_ch_2, - mat_C_ch_3_1, 0x130, 32, W, Data signal of mat_C_ch_3, - mat_C_ch_3_2, 0x134, 32, W, Data signal of mat_C_ch_3, - mat_C_ch_4_1, 0x13c, 32, W, Data signal of mat_C_ch_4, - mat_C_ch_4_2, 0x140, 32, W, Data signal of mat_C_ch_4, - mat_C_ch_5_1, 0x148, 32, W, Data signal of mat_C_ch_5, - mat_C_ch_5_2, 0x14c, 32, W, Data signal of mat_C_ch_5, - mat_C_ch_6_1, 0x154, 32, W, Data signal of mat_C_ch_6, - mat_C_ch_6_2, 0x158, 32, W, Data signal of mat_C_ch_6, - mat_C_ch_7_1, 0x160, 32, W, Data signal of mat_C_ch_7, - mat_C_ch_7_2, 0x164, 32, W, Data signal of mat_C_ch_7, - NUM_ITE, 0x16c, 32, W, Data signal of NUM_ITE, - NUM_A_LEN, 0x174, 32, W, Data signal of NUM_A_LEN, - M, 0x17c, 32, W, Data signal of M, - K, 0x184, 32, W, Data signal of K, - P_N, 0x18c, 32, W, Data signal of P_N, - alpha_u, 0x194, 32, W, Data signal of alpha_u, - beta_u, 0x19c, 32, W, Data signal of beta_u, -
    -
    - - - Interface, Type, Ports - clock, ap_clk, - reset, ap_rst_n, - interrupt, interrupt, - ap_ctrl_hs, , -
    -
    -
    -
    - -
    - - - Argument, Direction, Datatype - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, long unsigned int - in, int const - in, int const - in, int const - in, int const - in, int const - in, int const - in, int const -
    -
    - - - Argument, HW Interface, HW Type, HW Info - s_axi_control, register, name=edge_list_ptr_1 offset=0x10 range=32, - s_axi_control, register, name=edge_list_ptr_2 offset=0x14 range=32, - s_axi_control, register, name=edge_list_ch_0_1 offset=0x1c range=32, - s_axi_control, register, name=edge_list_ch_0_2 offset=0x20 range=32, - s_axi_control, register, name=edge_list_ch_1_1 offset=0x28 range=32, - s_axi_control, register, name=edge_list_ch_1_2 offset=0x2c range=32, - s_axi_control, register, name=edge_list_ch_2_1 offset=0x34 range=32, - s_axi_control, register, name=edge_list_ch_2_2 offset=0x38 range=32, - s_axi_control, register, name=edge_list_ch_3_1 offset=0x40 range=32, - s_axi_control, register, name=edge_list_ch_3_2 offset=0x44 range=32, - s_axi_control, register, name=edge_list_ch_4_1 offset=0x4c range=32, - s_axi_control, register, name=edge_list_ch_4_2 offset=0x50 range=32, - s_axi_control, register, name=edge_list_ch_5_1 offset=0x58 range=32, - s_axi_control, register, name=edge_list_ch_5_2 offset=0x5c range=32, - s_axi_control, register, name=edge_list_ch_6_1 offset=0x64 range=32, - s_axi_control, register, name=edge_list_ch_6_2 offset=0x68 range=32, - s_axi_control, register, name=edge_list_ch_7_1 offset=0x70 range=32, - s_axi_control, register, name=edge_list_ch_7_2 offset=0x74 range=32, - s_axi_control, register, name=mat_B_ch_0_1 offset=0x7c range=32, - s_axi_control, register, name=mat_B_ch_0_2 offset=0x80 range=32, - s_axi_control, register, name=mat_B_ch_1_1 offset=0x88 range=32, - s_axi_control, register, name=mat_B_ch_1_2 offset=0x8c range=32, - s_axi_control, register, name=mat_B_ch_2_1 offset=0x94 range=32, - s_axi_control, register, name=mat_B_ch_2_2 offset=0x98 range=32, - s_axi_control, register, name=mat_B_ch_3_1 offset=0xa0 range=32, - s_axi_control, register, name=mat_B_ch_3_2 offset=0xa4 range=32, - s_axi_control, register, name=mat_C_ch_in_0_1 offset=0xac range=32, - s_axi_control, register, name=mat_C_ch_in_0_2 offset=0xb0 range=32, - s_axi_control, register, name=mat_C_ch_in_1_1 offset=0xb8 range=32, - s_axi_control, register, name=mat_C_ch_in_1_2 offset=0xbc range=32, - s_axi_control, register, name=mat_C_ch_in_2_1 offset=0xc4 range=32, - s_axi_control, register, name=mat_C_ch_in_2_2 offset=0xc8 range=32, - s_axi_control, register, name=mat_C_ch_in_3_1 offset=0xd0 range=32, - s_axi_control, register, name=mat_C_ch_in_3_2 offset=0xd4 range=32, - s_axi_control, register, name=mat_C_ch_in_4_1 offset=0xdc range=32, - s_axi_control, register, name=mat_C_ch_in_4_2 offset=0xe0 range=32, - s_axi_control, register, name=mat_C_ch_in_5_1 offset=0xe8 range=32, - s_axi_control, register, name=mat_C_ch_in_5_2 offset=0xec range=32, - s_axi_control, register, name=mat_C_ch_in_6_1 offset=0xf4 range=32, - s_axi_control, register, name=mat_C_ch_in_6_2 offset=0xf8 range=32, - s_axi_control, register, name=mat_C_ch_in_7_1 offset=0x100 range=32, - s_axi_control, register, name=mat_C_ch_in_7_2 offset=0x104 range=32, - s_axi_control, register, name=mat_C_ch_0_1 offset=0x10c range=32, - s_axi_control, register, name=mat_C_ch_0_2 offset=0x110 range=32, - s_axi_control, register, name=mat_C_ch_1_1 offset=0x118 range=32, - s_axi_control, register, name=mat_C_ch_1_2 offset=0x11c range=32, - s_axi_control, register, name=mat_C_ch_2_1 offset=0x124 range=32, - s_axi_control, register, name=mat_C_ch_2_2 offset=0x128 range=32, - s_axi_control, register, name=mat_C_ch_3_1 offset=0x130 range=32, - s_axi_control, register, name=mat_C_ch_3_2 offset=0x134 range=32, - s_axi_control, register, name=mat_C_ch_4_1 offset=0x13c range=32, - s_axi_control, register, name=mat_C_ch_4_2 offset=0x140 range=32, - s_axi_control, register, name=mat_C_ch_5_1 offset=0x148 range=32, - s_axi_control, register, name=mat_C_ch_5_2 offset=0x14c range=32, - s_axi_control, register, name=mat_C_ch_6_1 offset=0x154 range=32, - s_axi_control, register, name=mat_C_ch_6_2 offset=0x158 range=32, - s_axi_control, register, name=mat_C_ch_7_1 offset=0x160 range=32, - s_axi_control, register, name=mat_C_ch_7_2 offset=0x164 range=32, - s_axi_control, register, name=NUM_ITE offset=0x16c range=32, - s_axi_control, register, name=NUM_A_LEN offset=0x174 range=32, - s_axi_control, register, name=M offset=0x17c range=32, - s_axi_control, register, name=K offset=0x184 range=32, - s_axi_control, register, name=P_N offset=0x18c range=32, - s_axi_control, register, name=alpha_u offset=0x194 range=32, - s_axi_control, register, name=beta_u offset=0x19c range=32, -
    -
    -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_A.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_A.sched.adb.xml deleted file mode 100644 index d58fe202..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_A.sched.adb.xml +++ /dev/null @@ -1,980 +0,0 @@ -read_A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -Sel - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -DSP48 - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -DSP48 - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_A.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_A.verbose.sched.rpt.xml deleted file mode 100644 index 9ff85031..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_A.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:35 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -read_A (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.431 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -9, 160068, 29.970 ns, 0.533 ms, 10, 160069, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -5, 160064, 5 ~ 10004, -, -, 1 ~ 16, no -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_A_Pipeline_rd_A.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_A_Pipeline_rd_A.sched.adb.xml deleted file mode 100644 index b275395b..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_A_Pipeline_rd_A.sched.adb.xml +++ /dev/null @@ -1,674 +0,0 @@ -read_A_Pipeline_rd_A - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -Cmp - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -Adder - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -Adder - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_A_Pipeline_rd_A.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_A_Pipeline_rd_A.verbose.sched.rpt.xml deleted file mode 100644 index a29b093c..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_A_Pipeline_rd_A.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:34 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -read_A (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.431 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -3, 10002, 9.990 ns, 33.307 us, 3, 10002, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -1, 10000, 1, 1, 1, 1 ~ 10000, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_A_Pipeline_rd_A_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_A_Pipeline_rd_A_csynth.xml deleted file mode 100644 index 5340c574..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_A_Pipeline_rd_A_csynth.xml +++ /dev/null @@ -1,259 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -read_A_Pipeline_rd_A -3.33 -0.90 -vivado - - - -no - -ns -2.431 - - -clock cycles -3 -5002 -10002 -9.990 ns -16.657 us -33.307 us -3 -10002 - - - -2.43 - - -1 -10000 - - - - -1 -10000 - - - - -3 -33299 - - -1 -1 - - - - - - - - -67 -166 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -read_A_Pipeline_rd_A -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -read_A_Pipeline_rd_A -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -read_A_Pipeline_rd_A -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -read_A_Pipeline_rd_A -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -read_A_Pipeline_rd_A -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -read_A_Pipeline_rd_A -return value - -ap_ctrl_hs - -out -1 -control - - -A_len -A_len -scalar - -ap_none - -in -32 -data - - -fifo_A_din -fifo_A -pointer - -ap_fifo - -out -513 -control - - -fifo_A_full_n -fifo_A -pointer - -ap_fifo - -in -1 -control - - -fifo_A_write -fifo_A -pointer - -ap_fifo - -out -1 -control - - -A_read_data_s_dout -A_read_data_s -pointer - -ap_fifo - -in -513 -control - - -A_read_data_s_empty_n -A_read_data_s -pointer - -ap_fifo - -in -1 -control - - -A_read_data_s_read -A_read_data_s -pointer - -ap_fifo - -out -1 -control - - -A_read_addr_din -A_read_addr -pointer - -ap_fifo - -out -65 -control - - -A_read_addr_full_n -A_read_addr -pointer - -ap_fifo - -in -1 -control - - -A_read_addr_write -A_read_addr -pointer - -ap_fifo - -out -1 -control - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_A_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_A_csynth.xml deleted file mode 100644 index 08cf10dc..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_A_csynth.xml +++ /dev/null @@ -1,465 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -read_A -3.33 -0.90 -vivado - - - -no - -ns -2.431 - - -clock cycles -9 -40036 -160068 -29.970 ns -0.133 ms -0.533 ms -10 -160069 - - - -2.43 - - -1 -16 - - - - -5 -160064 - - - - -16 -533013 - - - - -5 -10004 - - - - - - - - - - -1 -132 -346 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -read_A -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst_n -read_A -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -read_A -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -read_A -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -read_A -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -read_A -return value - -ap_ctrl_hs - -out -1 -control - - -A_read_addr_din -A_read_addr -pointer - -ap_fifo - -out -65 -control -int - - -A_read_addr_full_n -A_read_addr -pointer - -ap_fifo - -in -1 -control -int - - -A_read_addr_write -A_read_addr -pointer - -ap_fifo - -out -1 -control -int - - -A_read_data_s_dout -A_read_data_s -pointer - -ap_fifo - -in -513 -control -int - - -A_read_data_s_empty_n -A_read_data_s -pointer - -ap_fifo - -in -1 -control -int - - -A_read_data_s_read -A_read_data_s -pointer - -ap_fifo - -out -1 -control -int - - -A_read_data_peek_dout -A_read_data_peek -pointer - -ap_fifo - -in -513 -control -int - - -A_read_data_peek_empty_n -A_read_data_peek -pointer - -ap_fifo - -in -1 -control -int - - -A_read_data_peek_read -A_read_data_peek -pointer - -ap_fifo - -out -1 -control -int - - -A_write_addr_din -A_write_addr -pointer - -ap_fifo - -out -65 -control -int - - -A_write_addr_full_n -A_write_addr -pointer - -ap_fifo - -in -1 -control -int - - -A_write_addr_write -A_write_addr -pointer - -ap_fifo - -out -1 -control -int - - -A_write_data_din -A_write_data -pointer - -ap_fifo - -out -513 -control -int - - -A_write_data_full_n -A_write_data -pointer - -ap_fifo - -in -1 -control -int - - -A_write_data_write -A_write_data -pointer - -ap_fifo - -out -1 -control -int - - -A_write_resp_s_dout -A_write_resp_s -pointer - -ap_fifo - -in -9 -control -int - - -A_write_resp_s_empty_n -A_write_resp_s -pointer - -ap_fifo - -in -1 -control -int - - -A_write_resp_s_read -A_write_resp_s -pointer - -ap_fifo - -out -1 -control -int - - -A_write_resp_peek_dout -A_write_resp_peek -pointer - -ap_fifo - -in -9 -control -int - - -A_write_resp_peek_empty_n -A_write_resp_peek -pointer - -ap_fifo - -in -1 -control -int - - -A_write_resp_peek_read -A_write_resp_peek -pointer - -ap_fifo - -out -1 -control -int - - -fifo_A_din -fifo_A -pointer - -ap_fifo - -out -513 -control -int - - -fifo_A_full_n -fifo_A -pointer - -ap_fifo - -in -1 -control -int - - -fifo_A_write -fifo_A -pointer - -ap_fifo - -out -1 -control -int - - -A_len -A_len -scalar - -ap_none - -in -32 -data -int - - -P_N -P_N -scalar - -ap_none - -in -32 -data -int - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_B.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_B.sched.adb.xml deleted file mode 100644 index 79c09891..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_B.sched.adb.xml +++ /dev/null @@ -1,971 +0,0 @@ -read_B - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Multiplier - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -Cmp - - - - - - - - - - - -Sel - - - - - - - - - - - -Multiplier - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_B.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_B.verbose.sched.rpt.xml deleted file mode 100644 index 3342b298..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_B.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:35 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -read_B (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.431 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -8, 8000067, 26.640 ns, 26.640 ms, 9, 8000068, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -5, 8000064, 5 ~ 500004, -, -, 1 ~ 16, no -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_B_Pipeline_rd_B.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_B_Pipeline_rd_B.sched.adb.xml deleted file mode 100644 index 46a69083..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_B_Pipeline_rd_B.sched.adb.xml +++ /dev/null @@ -1,674 +0,0 @@ -read_B_Pipeline_rd_B - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -Cmp - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -Adder - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -Adder - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_B_Pipeline_rd_B.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_B_Pipeline_rd_B.verbose.sched.rpt.xml deleted file mode 100644 index dfd0a7a8..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_B_Pipeline_rd_B.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:35 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -read_B (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.431 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -3, 500002, 9.990 ns, 1.665 ms, 3, 500002, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -1, 500000, 1, 1, 1, 1 ~ 500000, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_B_Pipeline_rd_B_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_B_Pipeline_rd_B_csynth.xml deleted file mode 100644 index bfb2d648..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_B_Pipeline_rd_B_csynth.xml +++ /dev/null @@ -1,259 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -read_B_Pipeline_rd_B -3.33 -0.90 -vivado - - - -no - -ns -2.431 - - -clock cycles -3 -250002 -500002 -9.990 ns -0.833 ms -1.665 ms -3 -500002 - - - -2.43 - - -1 -500000 - - - - -1 -500000 - - - - -3 -1664999 - - -1 -1 - - - - - - - - -67 -166 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -read_B_Pipeline_rd_B -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -read_B_Pipeline_rd_B -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -read_B_Pipeline_rd_B -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -read_B_Pipeline_rd_B -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -read_B_Pipeline_rd_B -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -read_B_Pipeline_rd_B -return value - -ap_ctrl_hs - -out -1 -control - - -num_ite_B -num_ite_B -scalar - -ap_none - -in -32 -data - - -fifo_B_din -fifo_B -pointer - -ap_fifo - -out -513 -control - - -fifo_B_full_n -fifo_B -pointer - -ap_fifo - -in -1 -control - - -fifo_B_write -fifo_B -pointer - -ap_fifo - -out -1 -control - - -B_read_data_s_dout -B_read_data_s -pointer - -ap_fifo - -in -513 -control - - -B_read_data_s_empty_n -B_read_data_s -pointer - -ap_fifo - -in -1 -control - - -B_read_data_s_read -B_read_data_s -pointer - -ap_fifo - -out -1 -control - - -B_read_addr_din -B_read_addr -pointer - -ap_fifo - -out -65 -control - - -B_read_addr_full_n -B_read_addr -pointer - -ap_fifo - -in -1 -control - - -B_read_addr_write -B_read_addr -pointer - -ap_fifo - -out -1 -control - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_B_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_B_csynth.xml deleted file mode 100644 index a581a084..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_B_csynth.xml +++ /dev/null @@ -1,465 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -read_B -3.33 -0.90 -vivado - - - -no - -ns -2.431 - - -clock cycles -8 -2000035 -8000067 -26.640 ns -6.660 ms -26.640 ms -9 -8000068 - - - -2.43 - - -1 -16 - - - - -5 -8000064 - - - - -16 -26640212 - - - - -5 -500004 - - - - - - - - - - -2 -348 -403 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -read_B -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst_n -read_B -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -read_B -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -read_B -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -read_B -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -read_B -return value - -ap_ctrl_hs - -out -1 -control - - -B_read_addr_din -B_read_addr -pointer - -ap_fifo - -out -65 -control -int - - -B_read_addr_full_n -B_read_addr -pointer - -ap_fifo - -in -1 -control -int - - -B_read_addr_write -B_read_addr -pointer - -ap_fifo - -out -1 -control -int - - -B_read_data_s_dout -B_read_data_s -pointer - -ap_fifo - -in -513 -control -int - - -B_read_data_s_empty_n -B_read_data_s -pointer - -ap_fifo - -in -1 -control -int - - -B_read_data_s_read -B_read_data_s -pointer - -ap_fifo - -out -1 -control -int - - -B_read_data_peek_dout -B_read_data_peek -pointer - -ap_fifo - -in -513 -control -int - - -B_read_data_peek_empty_n -B_read_data_peek -pointer - -ap_fifo - -in -1 -control -int - - -B_read_data_peek_read -B_read_data_peek -pointer - -ap_fifo - -out -1 -control -int - - -B_write_addr_din -B_write_addr -pointer - -ap_fifo - -out -65 -control -int - - -B_write_addr_full_n -B_write_addr -pointer - -ap_fifo - -in -1 -control -int - - -B_write_addr_write -B_write_addr -pointer - -ap_fifo - -out -1 -control -int - - -B_write_data_din -B_write_data -pointer - -ap_fifo - -out -513 -control -int - - -B_write_data_full_n -B_write_data -pointer - -ap_fifo - -in -1 -control -int - - -B_write_data_write -B_write_data -pointer - -ap_fifo - -out -1 -control -int - - -B_write_resp_s_dout -B_write_resp_s -pointer - -ap_fifo - -in -9 -control -int - - -B_write_resp_s_empty_n -B_write_resp_s -pointer - -ap_fifo - -in -1 -control -int - - -B_write_resp_s_read -B_write_resp_s -pointer - -ap_fifo - -out -1 -control -int - - -B_write_resp_peek_dout -B_write_resp_peek -pointer - -ap_fifo - -in -9 -control -int - - -B_write_resp_peek_empty_n -B_write_resp_peek -pointer - -ap_fifo - -in -1 -control -int - - -B_write_resp_peek_read -B_write_resp_peek -pointer - -ap_fifo - -out -1 -control -int - - -fifo_B_din -fifo_B -pointer - -ap_fifo - -out -513 -control -int - - -fifo_B_full_n -fifo_B -pointer - -ap_fifo - -in -1 -control -int - - -fifo_B_write -fifo_B -pointer - -ap_fifo - -out -1 -control -int - - -K -K -scalar - -ap_none - -in -32 -data -int - - -P_N -P_N -scalar - -ap_none - -in -32 -data -int - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_C.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_C.sched.adb.xml deleted file mode 100644 index 3b9f26ea..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_C.sched.adb.xml +++ /dev/null @@ -1,1115 +0,0 @@ -read_C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -DSP48 - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -Cmp - - - - - - - - - - - -Sel - - - - - - - - - - - -DSP48 - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_C.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_C.verbose.sched.rpt.xml deleted file mode 100644 index aa11a199..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_C.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:35 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -read_C (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.431 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -9, 8000068, 29.970 ns, 26.640 ms, 10, 8000069, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -5, 8000064, 5 ~ 500004, -, -, 1 ~ 16, no -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_C_Pipeline_rd_C.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_C_Pipeline_rd_C.sched.adb.xml deleted file mode 100644 index 6cb6a08a..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_C_Pipeline_rd_C.sched.adb.xml +++ /dev/null @@ -1,674 +0,0 @@ -read_C_Pipeline_rd_C - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -Cmp - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -Adder - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -Adder - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_C_Pipeline_rd_C.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_C_Pipeline_rd_C.verbose.sched.rpt.xml deleted file mode 100644 index c0b385fb..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_C_Pipeline_rd_C.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:35 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -read_C (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.431 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -3, 500002, 9.990 ns, 1.665 ms, 3, 500002, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -1, 500000, 1, 1, 1, 1 ~ 500000, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_C_Pipeline_rd_C_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_C_Pipeline_rd_C_csynth.xml deleted file mode 100644 index 836a9b27..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_C_Pipeline_rd_C_csynth.xml +++ /dev/null @@ -1,259 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -read_C_Pipeline_rd_C -3.33 -0.90 -vivado - - - -no - -ns -2.431 - - -clock cycles -3 -250002 -500002 -9.990 ns -0.833 ms -1.665 ms -3 -500002 - - - -2.43 - - -1 -500000 - - - - -1 -500000 - - - - -3 -1664999 - - -1 -1 - - - - - - - - -67 -166 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -read_C_Pipeline_rd_C -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -read_C_Pipeline_rd_C -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -read_C_Pipeline_rd_C -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -read_C_Pipeline_rd_C -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -read_C_Pipeline_rd_C -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -read_C_Pipeline_rd_C -return value - -ap_ctrl_hs - -out -1 -control - - -num_ite_C -num_ite_C -scalar - -ap_none - -in -32 -data - - -fifo_C_din -fifo_C -pointer - -ap_fifo - -out -513 -control - - -fifo_C_full_n -fifo_C -pointer - -ap_fifo - -in -1 -control - - -fifo_C_write -fifo_C -pointer - -ap_fifo - -out -1 -control - - -C_read_data_s_dout -C_read_data_s -pointer - -ap_fifo - -in -513 -control - - -C_read_data_s_empty_n -C_read_data_s -pointer - -ap_fifo - -in -1 -control - - -C_read_data_s_read -C_read_data_s -pointer - -ap_fifo - -out -1 -control - - -C_read_addr_din -C_read_addr -pointer - -ap_fifo - -out -65 -control - - -C_read_addr_full_n -C_read_addr -pointer - -ap_fifo - -in -1 -control - - -C_read_addr_write -C_read_addr -pointer - -ap_fifo - -out -1 -control - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_C_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_C_csynth.xml deleted file mode 100644 index 2df6879f..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_C_csynth.xml +++ /dev/null @@ -1,501 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -read_C -3.33 -0.90 -vivado - - - -no - -ns -2.431 - - -clock cycles -9 -2000036 -8000068 -29.970 ns -6.660 ms -26.640 ms -10 -8000069 - - - -2.43 - - -1 -16 - - - - -5 -8000064 - - - - -16 -26640212 - - - - -5 -500004 - - - - - - - - - - -1 -153 -391 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -read_C -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst_n -read_C -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -read_C -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -read_C -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -read_C -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -read_C -return value - -ap_ctrl_hs - -out -1 -control - - -C_read_addr_din -C_read_addr -pointer - -ap_fifo - -out -65 -control -int - - -C_read_addr_full_n -C_read_addr -pointer - -ap_fifo - -in -1 -control -int - - -C_read_addr_write -C_read_addr -pointer - -ap_fifo - -out -1 -control -int - - -C_read_data_s_dout -C_read_data_s -pointer - -ap_fifo - -in -513 -control -int - - -C_read_data_s_empty_n -C_read_data_s -pointer - -ap_fifo - -in -1 -control -int - - -C_read_data_s_read -C_read_data_s -pointer - -ap_fifo - -out -1 -control -int - - -C_read_data_peek_dout -C_read_data_peek -pointer - -ap_fifo - -in -513 -control -int - - -C_read_data_peek_empty_n -C_read_data_peek -pointer - -ap_fifo - -in -1 -control -int - - -C_read_data_peek_read -C_read_data_peek -pointer - -ap_fifo - -out -1 -control -int - - -C_write_addr_din -C_write_addr -pointer - -ap_fifo - -out -65 -control -int - - -C_write_addr_full_n -C_write_addr -pointer - -ap_fifo - -in -1 -control -int - - -C_write_addr_write -C_write_addr -pointer - -ap_fifo - -out -1 -control -int - - -C_write_data_din -C_write_data -pointer - -ap_fifo - -out -513 -control -int - - -C_write_data_full_n -C_write_data -pointer - -ap_fifo - -in -1 -control -int - - -C_write_data_write -C_write_data -pointer - -ap_fifo - -out -1 -control -int - - -C_write_resp_s_dout -C_write_resp_s -pointer - -ap_fifo - -in -9 -control -int - - -C_write_resp_s_empty_n -C_write_resp_s -pointer - -ap_fifo - -in -1 -control -int - - -C_write_resp_s_read -C_write_resp_s -pointer - -ap_fifo - -out -1 -control -int - - -C_write_resp_peek_dout -C_write_resp_peek -pointer - -ap_fifo - -in -9 -control -int - - -C_write_resp_peek_empty_n -C_write_resp_peek -pointer - -ap_fifo - -in -1 -control -int - - -C_write_resp_peek_read -C_write_resp_peek -pointer - -ap_fifo - -out -1 -control -int - - -fifo_C_din -fifo_C -pointer - -ap_fifo - -out -513 -control -int - - -fifo_C_full_n -fifo_C -pointer - -ap_fifo - -in -1 -control -int - - -fifo_C_write -fifo_C -pointer - -ap_fifo - -out -1 -control -int - - -M -M -scalar - -ap_none - -in -32 -data -int - - -P_N -P_N -scalar - -ap_none - -in -32 -data -int - - -wrC_inst_din -wrC_inst -pointer - -ap_fifo - -out -33 -control -int - - -wrC_inst_full_n -wrC_inst -pointer - -ap_fifo - -in -1 -control -int - - -wrC_inst_write -wrC_inst -pointer - -ap_fifo - -out -1 -control -int - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr.sched.adb.xml deleted file mode 100644 index ee9d8bad..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr.sched.adb.xml +++ /dev/null @@ -1,1250 +0,0 @@ -read_edge_list_ptr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -Sel - - - - - - - - - - - -NULL - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -DSP48 - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -Adder - - - - - - - - - - - -DSP48 - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr.verbose.sched.rpt.xml deleted file mode 100644 index 0e834655..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:34 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -read_edge_list_ptr (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.431 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -9, 12868, 29.970 ns, 42.850 us, 10, 12869, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -5, 12864, 5 ~ 804, -, -, 1 ~ 16, no -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_Pipeline_rd_ptr.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_Pipeline_rd_ptr.sched.adb.xml deleted file mode 100644 index 108ed861..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_Pipeline_rd_ptr.sched.adb.xml +++ /dev/null @@ -1,674 +0,0 @@ -read_edge_list_ptr_Pipeline_rd_ptr - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -Cmp - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -Adder - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -NULL - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -Adder - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_Pipeline_rd_ptr.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_Pipeline_rd_ptr.verbose.sched.rpt.xml deleted file mode 100644 index 968c630e..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_Pipeline_rd_ptr.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:34 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -read_edge_list_ptr (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 2.431 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -3, 802, 9.990 ns, 2.671 us, 3, 802, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -1, 800, 1, 1, 1, 1 ~ 800, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_Pipeline_rd_ptr_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_Pipeline_rd_ptr_csynth.xml deleted file mode 100644 index 2cbaf15c..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_Pipeline_rd_ptr_csynth.xml +++ /dev/null @@ -1,259 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -read_edge_list_ptr_Pipeline_rd_ptr -3.33 -0.90 -vivado - - - -no - -ns -2.431 - - -clock cycles -3 -402 -802 -9.990 ns -1.339 us -2.671 us -3 -802 - - - -2.43 - - -1 -800 - - - - -1 -800 - - - - -3 -2663 - - -1 -1 - - - - - - - - -67 -166 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -read_edge_list_ptr_Pipeline_rd_ptr -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -read_edge_list_ptr_Pipeline_rd_ptr -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -read_edge_list_ptr_Pipeline_rd_ptr -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -read_edge_list_ptr_Pipeline_rd_ptr -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -read_edge_list_ptr_Pipeline_rd_ptr -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -read_edge_list_ptr_Pipeline_rd_ptr -return value - -ap_ctrl_hs - -out -1 -control - - -num_ite_plus1 -num_ite_plus1 -scalar - -ap_none - -in -32 -data - - -fifo_edge_list_ptr_din -fifo_edge_list_ptr -pointer - -ap_fifo - -out -33 -control - - -fifo_edge_list_ptr_full_n -fifo_edge_list_ptr -pointer - -ap_fifo - -in -1 -control - - -fifo_edge_list_ptr_write -fifo_edge_list_ptr -pointer - -ap_fifo - -out -1 -control - - -edge_list_ptr_read_data_s_dout -edge_list_ptr_read_data_s -pointer - -ap_fifo - -in -33 -control - - -edge_list_ptr_read_data_s_empty_n -edge_list_ptr_read_data_s -pointer - -ap_fifo - -in -1 -control - - -edge_list_ptr_read_data_s_read -edge_list_ptr_read_data_s -pointer - -ap_fifo - -out -1 -control - - -edge_list_ptr_read_addr_din -edge_list_ptr_read_addr -pointer - -ap_fifo - -out -65 -control - - -edge_list_ptr_read_addr_full_n -edge_list_ptr_read_addr -pointer - -ap_fifo - -in -1 -control - - -edge_list_ptr_read_addr_write -edge_list_ptr_read_addr -pointer - -ap_fifo - -out -1 -control - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_csynth.xml deleted file mode 100644 index 539c6ab3..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/read_edge_list_ptr_csynth.xml +++ /dev/null @@ -1,525 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -read_edge_list_ptr -3.33 -0.90 -vivado - - - -no - -ns -2.431 - - -clock cycles -9 -3236 -12868 -29.970 ns -10.776 us -42.850 us -10 -12869 - - - -2.43 - - -1 -16 - - - - -5 -12864 - - - - -16 -42837 - - - - -5 -804 - - - - - - - - - - -1 -164 -422 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -read_edge_list_ptr -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst_n -read_edge_list_ptr -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -read_edge_list_ptr -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -read_edge_list_ptr -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -read_edge_list_ptr -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -read_edge_list_ptr -return value - -ap_ctrl_hs - -out -1 -control - - -num_ite -num_ite -scalar - -ap_none - -in -32 -data -int - - -M -M -scalar - -ap_none - -in -32 -data -int - - -P_N -P_N -scalar - -ap_none - -in -32 -data -int - - -K -K -scalar - -ap_none - -in -32 -data -int - - -edge_list_ptr_read_addr_din -edge_list_ptr_read_addr -pointer - -ap_fifo - -out -65 -control -int - - -edge_list_ptr_read_addr_full_n -edge_list_ptr_read_addr -pointer - -ap_fifo - -in -1 -control -int - - -edge_list_ptr_read_addr_write -edge_list_ptr_read_addr -pointer - -ap_fifo - -out -1 -control -int - - -edge_list_ptr_read_data_s_dout -edge_list_ptr_read_data_s -pointer - -ap_fifo - -in -33 -control -int - - -edge_list_ptr_read_data_s_empty_n -edge_list_ptr_read_data_s -pointer - -ap_fifo - -in -1 -control -int - - -edge_list_ptr_read_data_s_read -edge_list_ptr_read_data_s -pointer - -ap_fifo - -out -1 -control -int - - -edge_list_ptr_read_data_peek_dout -edge_list_ptr_read_data_peek -pointer - -ap_fifo - -in -33 -control -int - - -edge_list_ptr_read_data_peek_empty_n -edge_list_ptr_read_data_peek -pointer - -ap_fifo - -in -1 -control -int - - -edge_list_ptr_read_data_peek_read -edge_list_ptr_read_data_peek -pointer - -ap_fifo - -out -1 -control -int - - -edge_list_ptr_write_addr_din -edge_list_ptr_write_addr -pointer - -ap_fifo - -out -65 -control -int - - -edge_list_ptr_write_addr_full_n -edge_list_ptr_write_addr -pointer - -ap_fifo - -in -1 -control -int - - -edge_list_ptr_write_addr_write -edge_list_ptr_write_addr -pointer - -ap_fifo - -out -1 -control -int - - -edge_list_ptr_write_data_din -edge_list_ptr_write_data -pointer - -ap_fifo - -out -33 -control -int - - -edge_list_ptr_write_data_full_n -edge_list_ptr_write_data -pointer - -ap_fifo - -in -1 -control -int - - -edge_list_ptr_write_data_write -edge_list_ptr_write_data -pointer - -ap_fifo - -out -1 -control -int - - -edge_list_ptr_write_resp_s_dout -edge_list_ptr_write_resp_s -pointer - -ap_fifo - -in -9 -control -int - - -edge_list_ptr_write_resp_s_empty_n -edge_list_ptr_write_resp_s -pointer - -ap_fifo - -in -1 -control -int - - -edge_list_ptr_write_resp_s_read -edge_list_ptr_write_resp_s -pointer - -ap_fifo - -out -1 -control -int - - -edge_list_ptr_write_resp_peek_dout -edge_list_ptr_write_resp_peek -pointer - -ap_fifo - -in -9 -control -int - - -edge_list_ptr_write_resp_peek_empty_n -edge_list_ptr_write_resp_peek -pointer - -ap_fifo - -in -1 -control -int - - -edge_list_ptr_write_resp_peek_read -edge_list_ptr_write_resp_peek -pointer - -ap_fifo - -out -1 -control -int - - -fifo_edge_list_ptr_din -fifo_edge_list_ptr -pointer - -ap_fifo - -out -33 -control -int - - -fifo_edge_list_ptr_full_n -fifo_edge_list_ptr -pointer - -ap_fifo - -in -1 -control -int - - -fifo_edge_list_ptr_write -fifo_edge_list_ptr -pointer - -ap_fifo - -out -1 -control -int - - -PE_inst_din -PE_inst -pointer - -ap_fifo - -out -33 -control -int - - -PE_inst_full_n -PE_inst -pointer - -ap_fifo - -in -1 -control -int - - -PE_inst_write -PE_inst -pointer - -ap_fifo - -out -1 -control -int - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/write_C.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/write_C.sched.adb.xml deleted file mode 100644 index 4b1609b4..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/write_C.sched.adb.xml +++ /dev/null @@ -1,1118 +0,0 @@ -write_C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -FIFO - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -DSP48 - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -FIFO - - - - - - - - - - - -Cmp - - - - - - - - - - - -Sel - - - - - - - - - - - -DSP48 - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -Adder - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/write_C.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/write_C.verbose.sched.rpt.xml deleted file mode 100644 index feaacff3..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/write_C.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:35 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -write_C (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 3.414 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -11, 8000070, 37.559 ns, 27.316 ms, 12, 8000071, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -5, 8000064, 5 ~ 500004, -, -, 1 ~ 16, no -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/write_C_Pipeline_wr_C.sched.adb.xml b/benchmarks/tapa_flow/sextans/design/generated/report/write_C_Pipeline_wr_C.sched.adb.xml deleted file mode 100644 index ace6239c..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/write_C_Pipeline_wr_C.sched.adb.xml +++ /dev/null @@ -1,798 +0,0 @@ -write_C_Pipeline_wr_C - - - - - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - -Cmp - - - - - - - - - - - -NULL - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -Cmp - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -LogicGate - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - - -Adder - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -NULL - - - - - - - - - - - - - -FIFO - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -Adder - - - - - - - - - - - - -NULL - - - - - - - - - - - - -Adder - - - - - - - - - - - - -Sel - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - -NULL - - - - - - - - - - - - - - - - - - - - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/write_C_Pipeline_wr_C.verbose.sched.rpt.xml b/benchmarks/tapa_flow/sextans/design/generated/report/write_C_Pipeline_wr_C.verbose.sched.rpt.xml deleted file mode 100644 index d6ee6d4c..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/write_C_Pipeline_wr_C.verbose.sched.rpt.xml +++ /dev/null @@ -1,46 +0,0 @@ - - -
    -Fri Mar 29 14:40:35 2024 - -2022.2 (Build 3670227 on Oct 13 2022) -project -write_C (Vivado IP Flow Target) -virtexuplus -xcu280-fsvh2892-2L-e -
    - -
    - -
    - -Clock, Target, Estimated, Uncertainty -3.33 ns, 3.414 ns, 0.90 ns -
    -
    -
    -
    - -
    - -, min, max, min, max, min, max, Type -3, 500002, 10.243 ns, 1.707 ms, 3, 500002, no -
    -
    - -
    - -Instance, Module, min, max, min, max, min, max, Type -
    -
    - -Loop Name, min, max, Latency, achieved, target, Count, Pipelined -1, 500000, 1, 1, 1, 1 ~ 500000, yes -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/write_C_Pipeline_wr_C_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/write_C_Pipeline_wr_C_csynth.xml deleted file mode 100644 index 19dd02c1..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/write_C_Pipeline_wr_C_csynth.xml +++ /dev/null @@ -1,292 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -write_C_Pipeline_wr_C -3.33 -0.90 -vivado - - - -no - -ns -3.414 - - -clock cycles -3 -250002 -500002 -10.243 ns -0.854 ms -1.707 ms -3 -500002 - - - -2.43 - - -1 -500000 - - - - -1 -500000 - - - - -3 -1707224 - - -1 -1 - - - - - - - - -67 -216 -0 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -write_C_Pipeline_wr_C -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst -write_C_Pipeline_wr_C -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -write_C_Pipeline_wr_C -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -write_C_Pipeline_wr_C -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -write_C_Pipeline_wr_C -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -write_C_Pipeline_wr_C -return value - -ap_ctrl_hs - -out -1 -control - - -num_ite_C -num_ite_C -scalar - -ap_none - -in -32 -data - - -C_out_write_resp_s_dout -C_out_write_resp_s -pointer - -ap_fifo - -in -9 -control - - -C_out_write_resp_s_empty_n -C_out_write_resp_s -pointer - -ap_fifo - -in -1 -control - - -C_out_write_resp_s_read -C_out_write_resp_s -pointer - -ap_fifo - -out -1 -control - - -fifo_C_s_dout -fifo_C_s -pointer - -ap_fifo - -in -513 -control - - -fifo_C_s_empty_n -fifo_C_s -pointer - -ap_fifo - -in -1 -control - - -fifo_C_s_read -fifo_C_s -pointer - -ap_fifo - -out -1 -control - - -C_out_write_addr_din -C_out_write_addr -pointer - -ap_fifo - -out -65 -control - - -C_out_write_addr_full_n -C_out_write_addr -pointer - -ap_fifo - -in -1 -control - - -C_out_write_addr_write -C_out_write_addr -pointer - -ap_fifo - -out -1 -control - - -C_out_write_data_din -C_out_write_data -pointer - -ap_fifo - -out -513 -control - - -C_out_write_data_full_n -C_out_write_data -pointer - -ap_fifo - -in -1 -control - - -C_out_write_data_write -C_out_write_data -pointer - -ap_fifo - -out -1 -control - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/report/write_C_csynth.xml b/benchmarks/tapa_flow/sextans/design/generated/report/write_C_csynth.xml deleted file mode 100644 index 24338841..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/report/write_C_csynth.xml +++ /dev/null @@ -1,549 +0,0 @@ - - - -2022.2 - - - -ns -virtexuplus -xcu280-fsvh2892-2L-e -write_C -3.33 -0.90 -vivado - - - -no - -ns -3.414 - - -clock cycles -11 -2000038 -8000070 -37.559 ns -6.829 ms -27.316 ms -12 -8000071 - - - -2.43 - - -1 -16 - - - - -5 -8000064 - - - - -17 -27315817 - - - - -5 -500004 - - - - - - - - - - -1 -197 -448 -0 -0 - - -4032 -9024 -2607360 -1303680 -960 - - - - - -ap_clk -write_C -return value - -ap_ctrl_hs - -in -1 -control - - -ap_rst_n -write_C -return value - -ap_ctrl_hs - -in -1 -control - - -ap_start -write_C -return value - -ap_ctrl_hs - -in -1 -control - - -ap_done -write_C -return value - -ap_ctrl_hs - -out -1 -control - - -ap_idle -write_C -return value - -ap_ctrl_hs - -out -1 -control - - -ap_ready -write_C -return value - -ap_ctrl_hs - -out -1 -control - - -wrC_inst_s_dout -wrC_inst_s -pointer - -ap_fifo - -in -33 -control -int - - -wrC_inst_s_empty_n -wrC_inst_s -pointer - -ap_fifo - -in -1 -control -int - - -wrC_inst_s_read -wrC_inst_s -pointer - -ap_fifo - -out -1 -control -int - - -wrC_inst_peek_dout -wrC_inst_peek -pointer - -ap_fifo - -in -33 -control -int - - -wrC_inst_peek_empty_n -wrC_inst_peek -pointer - -ap_fifo - -in -1 -control -int - - -wrC_inst_peek_read -wrC_inst_peek -pointer - -ap_fifo - -out -1 -control -int - - -fifo_C_s_dout -fifo_C_s -pointer - -ap_fifo - -in -513 -control -int - - -fifo_C_s_empty_n -fifo_C_s -pointer - -ap_fifo - -in -1 -control -int - - -fifo_C_s_read -fifo_C_s -pointer - -ap_fifo - -out -1 -control -int - - -fifo_C_peek_dout -fifo_C_peek -pointer - -ap_fifo - -in -513 -control -int - - -fifo_C_peek_empty_n -fifo_C_peek -pointer - -ap_fifo - -in -1 -control -int - - -fifo_C_peek_read -fifo_C_peek -pointer - -ap_fifo - -out -1 -control -int - - -C_out_read_addr_din -C_out_read_addr -pointer - -ap_fifo - -out -65 -control -int - - -C_out_read_addr_full_n -C_out_read_addr -pointer - -ap_fifo - -in -1 -control -int - - -C_out_read_addr_write -C_out_read_addr -pointer - -ap_fifo - -out -1 -control -int - - -C_out_read_data_s_dout -C_out_read_data_s -pointer - -ap_fifo - -in -513 -control -int - - -C_out_read_data_s_empty_n -C_out_read_data_s -pointer - -ap_fifo - -in -1 -control -int - - -C_out_read_data_s_read -C_out_read_data_s -pointer - -ap_fifo - -out -1 -control -int - - -C_out_read_data_peek_dout -C_out_read_data_peek -pointer - -ap_fifo - -in -513 -control -int - - -C_out_read_data_peek_empty_n -C_out_read_data_peek -pointer - -ap_fifo - -in -1 -control -int - - -C_out_read_data_peek_read -C_out_read_data_peek -pointer - -ap_fifo - -out -1 -control -int - - -C_out_write_addr_din -C_out_write_addr -pointer - -ap_fifo - -out -65 -control -int - - -C_out_write_addr_full_n -C_out_write_addr -pointer - -ap_fifo - -in -1 -control -int - - -C_out_write_addr_write -C_out_write_addr -pointer - -ap_fifo - -out -1 -control -int - - -C_out_write_data_din -C_out_write_data -pointer - -ap_fifo - -out -513 -control -int - - -C_out_write_data_full_n -C_out_write_data -pointer - -ap_fifo - -in -1 -control -int - - -C_out_write_data_write -C_out_write_data -pointer - -ap_fifo - -out -1 -control -int - - -C_out_write_resp_s_dout -C_out_write_resp_s -pointer - -ap_fifo - -in -9 -control -int - - -C_out_write_resp_s_empty_n -C_out_write_resp_s -pointer - -ap_fifo - -in -1 -control -int - - -C_out_write_resp_s_read -C_out_write_resp_s -pointer - -ap_fifo - -out -1 -control -int - - -C_out_write_resp_peek_dout -C_out_write_resp_peek -pointer - -ap_fifo - -in -9 -control -int - - -C_out_write_resp_peek_empty_n -C_out_write_resp_peek -pointer - -ap_fifo - -in -1 -control -int - - -C_out_write_resp_peek_read -C_out_write_resp_peek -pointer - -ap_fifo - -out -1 -control -int - - - - diff --git a/benchmarks/tapa_flow/sextans/design/generated/settings.json b/benchmarks/tapa_flow/sextans/design/generated/settings.json deleted file mode 100644 index fdeb22a8..00000000 --- a/benchmarks/tapa_flow/sextans/design/generated/settings.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "additional_fifo_pipelining": false, - "clock_period": 3.33, - "linked": true, - "part_num": "xcu280-fsvh2892-2L-e", - "platform": null, - "synthed": true -} diff --git a/benchmarks/tapa_flow/sextans/design/generated/tar/FloatvAddFloatv.tar b/benchmarks/tapa_flow/sextans/design/generated/tar/FloatvAddFloatv.tar deleted file mode 100644 index 1f9d72cd89ec05fecf11438a78ef335665f43705..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 481280 zcmeFadw1J5wl|!={VDkRJkum?Y>A|K^XZz3g8itJdcjY$yL*f(qd8^FeHX}9#(llJW|e!J_BpRD9p7QZJcf6Hap zRo^Jfld@fQZ2O6IyAo_7KyN0~_88SilE0N#r*2(Od)NNHUAOIerBQL~yX9KBTywX+ z6&8HcbdLSea6B!oln2zP>(wf?al2l1%)j)BeoyR5t!&p^r|KY|?N;!|s;(3(30$@R z<6h^=A6)MId^1d}HtTz0q0LX+eYF3N_CI9*tGf-iR(6_?_J8wR@A4Q*`~RjtY)?NQ zcDv%iJL!%5esAD=osQR;+zqBzyW`Px!RpAs*D4j$?yG(PUn`C+YwLUKSARU|4F@_q(w$w$diK*zuiv%YS{?6oYdEmpcczx@ zQaR^2%AJgd|KoS2y4*;-$=upf+uGe<52Mk zGRnKnGQG@S!`2VhF*rNuC=R4@#GpQzB_h@Qmw2h!B&)HWb?!QSfAXB@(P{1T38}2l zsYipUKmOeABZso}f-;n_AUyobPwiXzWF%VGGL`au;Wx^Ab~o}-D$Ji{DFR&l{*&PI zFL*K%<)iqfa}0(>;UY+~Uinb6zSLsE=6maC0QUjZ&q#b%I^5y{BFFJ?I5NH_iZw_K zo(#r8z^ciRu*I{HB*ahEX*ThrmVBTMN054(tQK+}4PdqT1&>l20O4%h8-)OAV!l{J zjPU z_eNpysPd^wqjgg*kwzetWeS0bfN&j=P%Sqa;>opZ;)y`K^{TapAA;t3#%(2KL-6rE+{ zr?C(+RP4lHQVP|rHtU?JTnrY6pV0xe&-=c0di+5lBd~zajP%DXmsx;~TGMtIi;9aG z7CpImFN7DSK_NVz{pGnK5lOnXo&S~zmL;DG!Xn^>Vg&vQUR25~iYCVXNN{T9Iy@S9 zvfZ*#VH4&dM6=tgN}t%ItDxV=S(n*)Sm)Ex*9ZU_#bc z8BECfDuW4GUu7^M>#GbVq^Qb*ZZFzn8t<8zf(-m5UPJ$i{w#3_jfQOg!ovddi+t7@ zXlO;FJTZ6C^A_281~?g%L?1IV1sV8ByoUZ2o*uZOPfw(iN4tN%x5WG@o=&s7cxo_h zl;48dqlg>tMkaowfAoXSXXL`?_$cky_PEE>3i9n3T>oOdA8CgXkHX%(;V~FSXT9m4 zz3%kNI)NmD7dz^6(>TN*46HQD`ax$ma%tS#gRa*fG->eV)oj-r(O4+*Q<{Rj^ho+b z|66*3Ncr_FMZ5^kz!`i_{$_79Dtj2bUixJZdy>jDx>LUbpab&Mx65WNJV74 z?F8r!*t8^cNYx*Zk`u#YJP`>B_uJu^9&_l7vle}y({!4+ORth7Sa>7kOKsJ-b8~_n z44gpom^N(z#6!$72*Y5ShXl(eN##Eg<7R%6M(t=Yx|v$1y??;L4V#8VAi;TlW@^mp zA_%6w=Eod5`tH=bm|UB<&3=ZgLn0QAGt;iQay}U}fU$qcR)@@uY1Cphks_H6abY`6 z;8Op;Bm++{%RwE>0;efy>Tg-#iH1|vwk&X(a;E;41x{1U)ZeneX-b*;TNXI=e5t>= zfRCUQxiYPF*Kix;S) z1nSm`7pS8I>Q;&usH+9)7B5g&3)CrIpo-;{26e6l>$zfirN&OM0$M29#J6l9C!WJ* z%Of_Yt7^JXEKUyr7DUcD-q!BQlC$ltQsB7h5K*sOmF zGX53=Trk5H%m|8*_i?cKF!U=1xGgZRL`Lhy02htk zsj_wl$QJ`#G3x8-- zzgTwJ6+3;9;*@L6IlM57U@o07Y8y=<9vI;TF?}J+xL(x4zVf-e9Ae9W@V^w`b4kUO z*7AEa5oDF-kv+?3#y`+QF>zy0vN?x?uaI&5BB2U{ZM)brocYTSRSwVGX2hB%RgoX6 z9G6wfh2kn~vt5aH<;&qJg@v8{*}vQzP;9N_U;x?wd^(_pyJ9e%fo^W7lC5sFP+a9` z)U6iES2+yD=Bo_q>2q!l$nmEe9a1FLksGQQc-n5gP+Y}`6Hp7~t1wt@9!%%p>qHsC zJaF^yRV~snx^{J@drt@tP(`oK_BGVOYx_F#Ue50#7pr~(s<{AYK$VL_ge9C8)uGA{I}#9GEmb!(#t?icSSD)RkYJ2AM`R%)1A-DKuz~LF9S8*-MkFcbU*VFP|oA>y3mXhdpnd%CuzoMdO0Kh*VI=o6Z~VGLDgGW7x5*_JR<3J)?J zc7`|^O4BR;oepoth^O)XoZ^P4ME?3xhDbo>_#b>7`_r58z`}Uy#>atNlpMo9ANmyu9Q&fjA@D^4 z?+yp%26tu))}p8iZv0EJrPqxeVzdeaPCKpdOr`_pVt^aFy1RhLb!eVfZLy=&0%s^A zbIL>m&jA4Sbu>gY7Jm$F3BGwgj~=n&r-4gvAEHGp4V>7cFgMwPwB>-)cJ!s#0syIO zA>d1~B@6gcY)J}QV_`it% z*gyb<@?!wtxfpp*Gv|;0czfMnkVb0M>G2sIUI#2+6b=+Wii+8<0OD1C$QVh4jstHcjm zEliat>fsv>dU#;OJZzQ1pO6(3fP9i-l%6v2E`WLNIEPbnWNKh~Rq})lLwpzapF$qn| z9{;e_(iML2+kG%D6`|<&Fk;cKk{lDkXciOE=r>tBKscIVtEB?-?I76Rfy^IDGqbdB z<5`eqiZv!YEmjKcr^K|?>U2=-wBPQ0I&gL?XdmJk?FZ2TIfmZ>V&S3L=+~{5DlO4e zuVA4JJek1wq)$N`I66A8g9d=N;L|IAG`%`#246)2u|tF#I!4eiB0c)flm&VoCcBi} zC_%#5Z>u&#ZS8|UVK)yw<6QiK>$FPr7pCCN0mc7<0eFKqgey9rAYiQ$JwXv=G`j<2 z(9f`*NTwwI3#3i(I?k1usLN8Qs}Lx{f&yO|_{acQ21+szmcojwMM$gwfy7En5iUsG zBe$MZBT)EZ+GlSW9tUKcF`a@ds#W5bt(I_$%{JLG50s5;py_>r!ch`bvopkBs3rde zBJY(ajw=+7EeJnIraahKdeOT?G5rYX^~O+Ta0`DS9~}B6o#Vd{`*b?)og-%I0S?tq z$HRWB6eN+H0%DCvMK=u8H%T`;@V-gP$-B7Ogu~gf5?v?P=eJ2YdWP=ZH%PkS*d_O9 zlmo%%Rw-=IrMEAqEhjjO8gh6ei!kK@Dau#7iNqGtYZ;`HUT*}QD=}G;Q1ZXe&|Z9g zDB4Su%9Vx`seV;ri_~5sb%yq?m(JB`FCfzzOrkWo*0q`4D2+whU7}Jf25kVLtC%RT zB_b+$RcZr>j7oE%ripns)_+4&L(G@7vvD35LzVppQV)purAq<|46N_rI;_ z&bQj*oo{J3`q5Q=#tMhNL+$a-x5qo*5^nP{ulRbr^G)m*Ouq9iara+rpSFz5ose#B z7o_I^Uhrfj%E#!&LgThGiEP#%wJ$X}AHK>(++{8lB-pWf)T(Tx;!wWWr7-k$c{Qaf z4X&n2BP@rcYyp&{r@7>HIUad4wy{v0^Ew6opOMGla^l5yLE`M|5;uuI98!l6`kt>I zl(CB_fy3+80F47n|DvTmsQdAv z7tGO}aBIFFFX2MBuX{h9RS|*Q=e-{f+M`2{1$PAoYG+!xAXPra5|CS@K|2$VvuSfK z!j6dJdkCgnFH0<3YzyT~IKLKvUmOd)ZRPQPye|PS$X?2ykjUfxcxwDHXEeNI9aZ`o zeB~$k8v2tGCQqTG#1xX2d`TD%1-2iiAEG6@k3S3Dk*6E8q9*z`KXt_pX2^E1<&aj` zyi=1{6W|raIQ%|4U+|Tmu)gM}Eh znoBM>6}%T=q%bJ3pivnke6P^%ocFi&hTEC@y<2#uN+3^iA+ zQiDIp8-wRG?jdtQ^%-^Yqs)+E!E!3I2Y8i4N}1!m-dILY*?6vvGyO&Koq3 zRD@6d3L(iuz)Xq?nwQJYd#IZ?gi>@tR=n8((@ai>Br@xT3eDy~Ocw*8q&|_lQbUQU zsS5U5Jg)aJ+=61gnhTh6iZdvZ63lDEVHQYH(gQ6-LM)JstjypF%i<|Evd5H#D$f~K z0a?w>>^hV}EC}|pFuA=&FkKdAEN}wg1135Zf}9yU0h!{o$KoXv0F$@l5=O>vDLjoH zTZaJvY@(Xwo_6FtD8~#!_Q)}JagUxp{cpldi;IvGrWhUopnz%02q{oxf}^m?1#{&4 zpYldQ&;Y5BswIJThN;Qd{7j^ME|{8pz??yQKA5zba1ptqTq^AZQxh&^WZIBa8D+uL zgwG-O*)SK7yY0=CyZ9WCpG)rfU~2Mn$$chF8Y>&|ElhrKS#bbV$#LwRUXIJV@CBFZ!_PGDgynRAE{5&t=fiGSY}<++B{dylIZs2&kgbaz zh+gO@S8`+vFLv-SvN!GFP|NPr=)t@POKpxA7GFWMaGrdvxD^kGTJn%(#j1EH&0jC+Ygc=2_%k(s%?*Fu_CLJRoT~p{mkTRz0;~ozTfv$cu-1lv z%I<%Rq(y8$5q|H(CM`<%y^o}nL3n||l{RDj-$ei({S)_p*pK&rtZL2AgzMC!_kYxP z%Qf8B@Ob@)$)*SUEZ6@FjrS8}*6j8FdbMhs_kUE;{;Sop`?&re<>M;ei#bAndN-I} z`M8F{l7ZkYaY2YRys(}|R!Ry81N4LSvp=9)D6FHw#c+Jxp7w?VdD`cD>s5Q|@9{=Q z@z0xa&wAS)TTaumD|?mlo-0EH(dX|id8>&oA#OXdp8a&w>vt^|rw$z$$>G3ykLw(5 zm!b7v@^>o<35tvCt`l01O>)Ee-SBQ0VLKiUpX^9&|4A^vE zigm#krtDe9jVTho$ZvK1&%F*&oOELfXWiQRAr$xLJBUZzUl4=_^J!)2O~{=jem=$ zh?xDf&?3LBx&;K&i`h0YQ47rGxJ?O>i3Zix3%1c4;nb8=_#RV z%oi!*AEK9;5(&mnu$Y2Mly}R)5l9_nLO)nCKmwJOiNUvlJU&4wu46s>clj^R@ko&k z^a}+y&@Tjo8_5?dhM{@gs^UEXUJZg}jT4=u)-MKv*3jy743obEMKDuSM1=+v zl^5IHmk%6+AZ@?=hMrBv&n+N0+xOPtiAOP0VnH^-G;G1VscKmYID`iSZ~fNmPOlO! zEsmAeD{JIaf_1?fkJJQ|{$kt{OQ~s}h2L(*XSRsRrQ!Av6-GXXFbza21-Z5Ly><5f z#5#Wc>+56d<@wy4jz4gRb>{BqyuOH}5FU z2FjsFkx%E=4_aG-6ypiXGb^@4(7Ms^ITG9nZdAN(LukLY$G!GB?xz1j)RGvFu192> z@uX)9rV@v+jlKw!G-CQ86Z_b}H$d5V`a%P0ASQqML8k>N#uJ#6HLw-{7YC1nlkINT zbDhCN{o~ceB1?BN@@(&;O*jI16MHJsqpH!C@JxSh`h66@6CyhDj~XX_S>Ty1N#H%M zcvE`6Z1~G_WHMGuYWHgbGantXRM)zHK z_%8>=pf1NIVwqt1kr&+f?S8LoNwBmY(Y}q2XtHFQ^*to`ukk`tJ;RYe*6IC-=6XCh z7h{RgzZl*PJM66vC2!74XreB-k{$b1n!>M?EYfyViU%0>1ufG zmyUa#D}Qjg^YhKHgmsN2DULt}U7DS+RpVfq7Uri9p29X;?QQakq*z@oiJ)wBuscSHi1?KFdqKPSDG>xZL zK-I3tbZrtvl{AV10Wn1hG6FT{J>e?ZB#NqO6y=qXbUAEHJ3^@b6s^l6Bc_Jrv`I3m zr%{w?88A21zYU_OVW&})OY7{-vkVQk-buDDQ|pMD4YUl6<*YZT+BD11SloImYBtO= zG*Yd1hGoz$V73mMWEq-ESO!qFd6uDBPNOKpG6-rm&@wbrt@o%m^7ZKZ3+AwQ@O$s$ z@5nkj!h_izZBh^0OdT`a*V%+!<%Tr!JHxT>onKFHsio6w;@(nJ7Zlw%Oj1XXbgwCD zau+LQBnc{5MzjW8nv6Roez@(Sb>5b)`k1`(8u9Mcp2PNu59;cnVzCd!$|wg#+$&DU zcb-2~Yt#3eB9|3qRn!n~)-9uo(7F}L=c`b}eF$kCk9&(%IEJ=v8C7|_yeewGhKy=F za(Pe`HE4ACkSG%V8)`?iHEjjWXzjL6%sW>_&DUs04IYXON3bxj^K zJR}*}Wp+uekfe3X$S$+mJtT^3rihFk8WXnr7XDkijBs2F9ny-ZA@;1DA~95@jbnvN zM*v(uMS6l1zP_L^`qoZSm8TOcqK4SAeu`K|s*7#43X_cjw04Tb;G1k6PDD)93cW(7 zfWPafh^_aEs3C@|i6R`7?ZXpfv&zBY>~-3c)i_R)C>mZ|%n<&}wTV<;kfg|AzX{)c zH=~N>K9P(fe($)i+pJpqPf2@Qmq9}d+XnKWc0BYq()W4XFBt@aVXoVCNw>FV#86-ua z3G50fTAPf-2uO_=R!Gs>WF*{=m+J82N}5qpe>A(IW!h1dopt&+=j@6W{km3LC${)0 zt+T{gLpt@igFTV$Yai#;cI=(<3u~~1k7%tFiES?rNk(C3-TtC_HM<h;>Pd2N zJS@53GVMrgKu}uu5Gca+U*@3Uhn3K@RvFng8#^VWorgeCXwdNe1E5H({VN%j9s)(Y z!lx+u%R``u-S~>4?;Zk0JS$feeR&8Jg{FM}{SYV$P5D}_Rgkpa{>b6|8A|I84(>li zZm2){A$gp&Wa@flB$ir~jCPj9J-PUrDGK#R|4v3}$<*~yR13AEhoE(}(AfJSXk9Hd z_WpiJ{YoyrW~~d^x>7PqOQx=uqB<{GDqHuLC2>zKzGjL-w(h%Rl$K0gGex1Xca}?I zG1AsdQE2S_-;1G~QEJT;g~r}1SSSazYo;hP_Fl#Ay0xt=i`5pp!M1L4)w@{Hvhvzx zB+h%To}#s_w%FpF+EqI(oJB^X&-Hn|?MNK2Sv^H-laW)FXABU-66^CT*&MxITj!K{ zq&gk1nxgf|NOdwOYD|I z{<;U?C3c0MLA9d?;3am;p*6k-;3am2=S0cq0eFdB+*bt4aNYjod+-}CHb>1WwbnVT z>++bvzomO0R`pvmMLcEzMHI7rMZYyu#A|$@=sFagtWet4OcA%E{&3YNs@67}a9tiV zfFeZgU)68TGU71KcZ-Do)fpu z?Pzjyy*h%{dq&I^@sDtsF<(Hu8nPZ@w75k{dsAjm%r%s{R6(7yd~~q`qdv# zaI26=qwc?@Qk=5m>^iNIdKaZi3B_6;C;s?wLO0Lw6}JYkn?Y}SFqpJT{J1Q?v&T;o2WyZ0AoJ&epR4+ri3-K1wgV)>-VjlZedyC$=oUAF>dN&FU6 zUdpV!rE|RhjChazzPz+Fpftd*L&CB;cb&c;(=g8UlRug6Ai9vRfZPna{za=4OV=23 zu|ul)(oZUx^eJ5Uw;}G*PAVGz5H6^Z`rx z2m?BzyM#Zt`#aFN1Bpf`EiHTdHl7`6I(sWnsU(F#Ge~VVt;4b3Rtjr009eM!@MhdG zn-}W^uG&3tq2%;eBfwwYyg8`V%M~={H<2&LAI}b4^oXqzJ%vmC^x^QWXE*-q05(HE zhqHV{7W&M8^`{oBa16!P;pcX*Pj~+&d=$+=)mJGK87Wl~b|Mq)5DqBzK;Fr&3J&j(fT*&emE(d>$HQVl2U*g*K_n9ecN={ z8TJ{Q>A3G*!EhPLVIW8EUk(Qsy~`*Z-1~me8$dqz8!quv55(ILE&UCDI-KIZxbvH- zf6y5YrU;z@?&>6+6`B>}VHR6q?>u1h$k?J8OVicqBV&u#*zRzEX8S-C78mzyj49}K z`;UxWiH(KN?(R`#i|)PX9#F40D0>sH%k3!LCIneqrSyTpXoz{BKVEc9K$R3fAgJ1y z$1Xf1;GxS)9^-&E%x=TOow-L00V6%W259!!A;^92*uKm-Y=un6q^CQ}l59H1SJmIG zjOBD)N`CV~x$m8-Z>WV~&d+0H?j`d#(#|mJbDNsY<@-IeHg^7z46;7j8TiT<_kGBo zl6aoq$lOP^Z=i)Crsp&-8_V%~XIt2)=bR|nd@TIhMm2v#~6{Plko~&G&~rObuV- zfD!Ie^0>wpgj*lZj$iq-C+U|SwsVX-S9iuxUu*)p>HF5(!@qg2UZ0%(vcK(a2RXPq z!7d_Xd6&42$oQsb5M1bJfOR`;(wQ9hCdRHL`bIyjUyJYIy2MBMnQOcpkG#m{B~R_? z@j4weSFc_p>L*jqAHqU|Gtis?tW`4dB?CH|yc}MSsI~({vcW2kk&sg2)d3^;DuvRY zdV{WF#^m6l-R*j=GnlA6!K~Vb(Yh92YX_sn4AR4+Tfd!2e z%h3{zVA@TTEylj2*X(j?PiHsV$(-gH~X!{I2hdxH%}rxV=>QcB30u}@GN2EEU2 z);>U;JH87tb9baF%ecq3L}u-j43$=!wC3M&sK6N8#Ioqkw*yfF*4y^x+GD7Tn|tvh z5RyK{^ql~;f?aqK5b+Pm05lOFmf3rlNK^_$lelP>WE=xpqWR^1!t@Nu099vtggwf= zHZ^A+Nnlf#+HyD}$839XnJ+f3`&WF?1HQhceG1c)fZkwH#yH7RpTNWLq@E=%G)X> z$=NV;sfsddQ>=!bu=P@XV+>O^nW{Xk)XlOw$KkJsN5@{U-86VlWN7Q-nauug+C!>d zlJklUxe2>eBef%+-q0%Qk8W$#1-M3h)wQSQ<>p6C*$+ zGzPIvwi>+N+Y1)x=VY*=TFP`F_5~XW$t4&OE}#U#FDaQ5cQ7kN>2FI^80-%=-cw+b z@HxLiAiSkmK~LN#%~dAtEY_uHi1`i&NRkF&>YMe`(Yse?e?NJ>zdamnTf~6J3Lc#zp$+$^N#pZ5_R$Tt{zDj`z38|ANWRwsm}X z_WIq+zwd9?@cjNga&|h~*83At9SxGVt& z+AkUBoJw8)bBS*;J%`!%2i?->ZhAEwh_qcC9p(Qf+!Pk z(0GZi;cMB;>O^LCK6xEU^X8dGwrX(%*lge z=GUD1lph>7zvAS_esD8M`zua=><2fOw7=p6$bN9MN&72KfzU1@{x`9T9&vH1Js`o_ zkzDT%64-T`w5FZ3n)J93jTk~P|Fy9`^SBVLJns5$>v17^lNX}DnT10Hze!!)6RT7B zyrPA}MWRn&S!@Z|^i)|Hay*YaG-bj@lGe^)9!G5sI5;5Mo#@b^G zab*w%$m?MLCBpYv1MElj5GUH}`-98r71j}}q4AQ+Kc4oju|M&r$oSds?{6c}oEiy; zAahAIA}ZFUSvg)U{7=0;mMCSsgl)uJ?)ta9*4OQg5j_dJXZE*ygKY~-gtWH-FO%um zZ(o1cpZ-V-i+g)mDDw7tnTbB~ryZzc%ww!htNPuts8n1;w`i7IN%Q3)LZ zS)`s;DM}&*z`6{^5G0zIEa2UcvcOZAj!l*Y4&^PvqxobZ4(}{d&mywGo_;M0xJe9I z@E6@MhD$VzYNb+iyI|zVrp#&;lqu3IX0nJiS2orlVw=%=gG5X3-xoGU1Zvxs4Vq&- zZd>O!6S68IhfKT17LEPwNx%KskMacB5fik1ZB(euh5AM?IgvXyz)N0 zK7D<*O)=VJXfu^FXo{?dC6ykjrbTgf-?kGs@ybt@{2L^OjDoa3TH4E?=9xlb-Y79~KNAs?OeuMO!AtjU`+)xx zE%Jb(6lPG<4G^D^$v|&LE<*s}T+7-4H6WzkT#UegI3-4G0cjcMC47~ZUAHGNIp`@d z2K%korJ*d2MsBkfos9j99tM~}1zyz1&#R9HC_2NweemIx_v-NMFh#iOifI6nN3ypM zUcbfmJn!8yu$VQ3)ax`b8oFV)HJXt$oqk}TE6(l{5^T5% zYZcmTE}3b#e7_@`jn%V zzBl!+Wr@QRj~1jNIoLu>=_V1Yho~R@K3ti8mlk`%6FbUBzt$)JZemS%<;K}Q(1^aU zUSVc$@zlOmqD(2}aU;gf^+4hjo$>TTf= z9;6fIMyo`Ejiec}K6`&+9l!qd^|AHx{kyXd?~fCt*;-KQh@4|c{S2P^7uE^g#FAg^ zUfHNsUWd7!*0}2ru%>(O()^+|dJj*Jjm` zOJ1##Y|TQ1bas`jU990tgK(O|Ae_P=l-|QA=zt};tO9}~S#NFzyr@g-jW>L&TTXSc z6Y@ok1k^==g^f__$HH7tzn))fl(B%Dcklw%YUYx2Y{hv2vjXzgQWKj2{PV)fST3A{ zs9b8uvNFuZ>2EvJ;SRbM`1eP+FfKv7NmgTSH84A`7Z%>giY%fCN+rAr6hf_Oy|8Ar zPo_Ds6WR{Er!;I|9wPW65yVuvSa3xk$ZE$3vhL;NUoOQ;v2QUu);eMTuCRVVcP5kd zJ`bEf$8r^J0OSpG``hAxdg8hEaeLJ33e&LD84f?4WHCd5w@*xg%1Y@2wK zQF}b0tu?qQ>(;xz=}&v3eos_@1M(D0u5{@S5KV6CcT1hoi0*D|Pd^`ayW(LNX?qo{ z{i8>i-c0tl5lg0rFuy%ys26u>!d(@fJ>U(b@jp1j!!f7r1*MMUV zC&P^B_OOrT5*}~hw2|znV?if_9lRe1mtl6r!*)KND8^a)mTL0pY|@InnLNVDg_ZCK zgA?Knuc#S(+V#>owc*-?Qwb~KRDw3`de(U_G?NQAy$#nXoH$qsr&4u_`k#BNS2$L^ z5^g2x6>(~|Zf(3-Z(z6Kniv*xCElkd*vK9UEY|fUH$nUUn)Sx|1_|KO?54NbX1%fA zp#r#dpUrw>eZvLGsoA=<`DPtq9M)piX`*TDz`0Lmy@{FGN_doH*1@OyYu20V8YD26 zW;eZ2Z{%;R&!D-g!TMx+2WRy@^mSw%9pPc-U}|IeV^_27(#Y=&$G&%dJ-yB8L6~KL zHkTFk9IUu;m=~Rg&WmRDxKXOb`dPuzG?M~m3Qy$j)t-~xk?=N=^{R6Yyt7AD)A60> z4{;t!&3_kkZ}tXrG{kJo-E4i?K&&e{^knmRUCHj#NK1Hnv0-Xb&7Nd!BHFd=;nqf? zjWB!}30q%!bYN7vosBnjo=|s$T-dBJmhEJ(rEDbLIfhxZ4R_=CUCFj7q$_eS^oA)*HG6Ek zp@?U5U3W%^c|vhdHcoSL3>ZmsuqAVX%_SSAIkjvPxk-rMOnZII`6;Yo#$Xql4!jPI zMsEnmCE`x@)ET>wa^gI^xJY-t&FQI4o%JikvnO-;5zq3W_OT6X(7DUG%P14|Y-P!h z`gLzW{$C4`qYCr`r;;G9g+aKQEOl2_^7lV-Do?uR%)56f3;AsJ&yBn?q7cFKsyCUv zW>JjyOG+Z!T+U6*+9Z)=0-7nXVXy6ujt=z80tBeBNf+6n}&M!%7;SzFPnyXwr5qL z&QVe~4gKtCp+f)5rlFpHZt~xohI;;)2|1qV|4pMHd-Y7|jatjuFbdrKmi~v08q(M~ z9NmidI~#_1emno~&BC0n$IbBjDV}ebw$$>EBR5Q2YWate-*1?<!__Mf(t>;2ikzm}_58!gFB``9{3FQ!-Z0Gb4j&h8Tx=9}efb8{SRP?&F)ugxuI_vs4r&GNOm z^RRDfqozKto877Ux1$ZiIlDUr&hYtfl3jGO*C2rOHAveith4pHKg@fuA$>=5kt1B! z&F(*evkk@HC{Abhn}qeIHN|XyEU@0NrkEpM4$gsWmU`5(?KIA?ERA!K(_^=utkY#>TcJneVfUspuM4wP3Wx5-)h^@V1+J_=*xGvX`1{%%*e&gr{(92B{RQ_{_~X@J zQx?A`DSyjlx1zpLmM3LI7OQlQo71qar#;;BZr5=*pwg(g zwcT31R<1hkWApq5wBV}SFRhwPYSi^=mD;#nuR7*m`b57ccBNLfYpzpukk58%HT#KG zT{U6^U$y_^UgydmT<-jQGfb>D>w99M%};!^|Bv=RYX4oQQLZ@kNBh6|&39=G$^MIb zYJv-EJ}(V541f%Lt-@ox1p9B-VD1h3k9>9w{lyb&En~88-2RtJ*8WnzEkO8ic5LZ8 zkgW4N>(|~CVGMpbKDBnNUwW5UJIDTKzi*x14W?JPGHGI6jEC3O%NN$mAAYdfgRb=+ zF{@r4Tc4e>hWdy&R72#sE9Dp1pi-yxGl0ZHKa1 zf9oMc=-?_bg5hT4iet&qjUp7;Y{`UG+DCOkv!`c3A=LQyi=VJ2t%4sy69p`w* zH%h%ce*f~n_T63h#PKse9DaED%l;4&8&5d(^zZLHk=faGD~`%c$;ZHC$JV*dPR{lR zxEWC=ynX#v;zhY%ot_wPZ{Fg9^gd;IZi--W&4gkN8OI0gIm1xNn1ZGHcIYwH@0 z2=F|@JnPvO-PuMz1Wm`ikuS`5ap$9%LLL7!l!q>J3?)8{(r9ewZGJIus0?afd5wV@FMvj!A zRB_dD!Uv86w)OnStt}m)K`OxMnRhX{rh7Q2zKzH#?$fUQZa;2;8eNF=Eu2CM7fxY~(|~@j+Rk424}H0rR6PCN{2-OY0B5Kx zfz_pAP_=AzmH;q+n*m!3SC@@|SBj{=E7*o2#*wCvvyhfb*9CtQ0MAC+xJx~#IE1y- z%n0N_GlOD+82ZAh2`xc1CNfAu*z!flS-waS(_2hJMqdqTDd zf|N5EL1lU7Lr|3p)hrFrJdk9O7#K0m6YQlt;ysp)yViN@<3i7Qtk~}V*}j`tf3=>C z5XH26$yc|d$vl@0p1Qx@g%xTnm?~1+waq-CZqjP)lbJ9r69$}=1&!VE`xD=Qo>WrV zKv_iCh$2y)uX&S|B$|Z5nn4F~>KUuH>tgTrzLY@~)a18glS3VLoDXv20p& z*11SQwSXg%es`Ux-SQuBq_y=R#mr1z z+i+$(Ju^9P!BS)P%D^mre_XKj3>oBG03i9L5f$#$O2ERS-|Di_kxc@WQ|5@Fw zS1M(v_PGCNgPUz(s3q+GndOGwU1V<%Z7WFK|6^mP88&+c`#-V&$8jt5%H#f@!h}2n z&~jT~uzQA9Q6BgIME3tAZ%~=lurfEV1bZLUI4qPx6O2#-d1XQg?A!=a^r%%VEhK)B zD+h_+2wdy~&C_Y2BJo2SG&Q-86q3W*gwz5ygJ4R5NmI&}kIWr?7l9Ahix05tIII`jRAL4RA&&0;@|!pek|c z?+Pk?NQJ8871S33tEVGscZ{B-2)PBtL~WEm-&TnjRkT1M69c4lq6s+1HVB*c)j(Ea zZW&r^Hm93V8@bS|>4G=j8|Y+!@CWVlKCd!+q)RJ-%ku&y&gn*Tg68C$m1xfJlD`47 z8qEn;Lo&=-G$(diCFiV1b5_%GHljIeX*rwGoOQ)~(hY+kyBy7_#T4WWED7X@(=WQ# zh$OLLre=ffVfIP23xFt8BBhm@FhZnkwwR*lQyOQU%==2U z`(20j9@T6}(crbqP22DL*WTxL-+SxP;B>bU2n5yOil#Mzq&@gL5^K z>JH^%X!SD0JsTR+Qn#Vyv-7!BZ{1CzBvfyO^HnmbsB*q)CLJ}-SI?xQ&iNXdbTI!K zPnavHtwvZ;%gEGF)d}OH4?cO z%gd5$W^>SH(KU0hkY(4*!9o^Zvy#n1mR_@($wG&v*Q|$GD4KFetsRzLvysHja7LD1 zvze(64olB2lSQ80^c6mOUE>34)GJd{rgE+LV&qXHnUp6aPI@7Gx&Z%3T=B zR#NMA!OY~c+@n$1)Otx|$z{2NL)mI-y_Hl>aeqf;Q|qm!@`}4Zl&z)KODd6!vm8~r zwbXiRsk~}P`PNhGrRJJkZ&Q^`t+$@aE86)@deum+w~@*#^a8SQYQ@xLCnJrXK@@JL z*4#|x7J3U=IIU(Jc}}fa>Sd*zRx{4Xr52WoSt+At;6Q76$*S@t9mvxv%YYF+*M$J4PrdI*33l} z*J75*Uy(GR4XxhU5XAtkg!9n3k_j?^D2zCiU_gL00*Bh`nB=dIp! z{fmyYl5<#2wWpL`q;fG_sOB81M=Lij zxccJxA}g)31VOdY_(o9w2;j&ntXTjCQxp(G(Zt0uM0}(Xm%>#{!}+48U|}WE$4XSQ zx3)%Jt6-&2&VJ}KyJ%~egCu`uzih1u|50LTvB*KLmc-9uZ38aoyC}pqj&y3p0tc-T#c84X#kvOh zdlSFQtDzUjmgL=mu$%3XXKR2K;*N|$SIeWn%FgxkyC0# z#=1B0R4P~_TToJ0$*Z4HyHtC4ezI~3DV0g1GGGcJmFw9;g1STOLPD~8Q!8C)XC3VD zilk!wD=D>^l!|U6Aup_HQfgvtu$BpVu{M;DivBYp6|^O#Ce{XNCFF%(B&0$EA?AH#uHsRR~^@-H1Z zL~J`0;Y1QvN*el9P-+(1k|@p=rDmbiQyE$4%v44eIw_TrrIMYcnw_PVou#g`&?&T7 z*pv%edv=|{ME&ED_3HP%?gSmP^&c`S%F(N5*ruyuNxb{`7NHsre}4VUs_R6Yy()XZ z9lbjH<(cI=X0n}>OgjvX+|RdWW8!_ZB`WdgEMo*FRKZykii8b?pqOVl$tY{*EURY} zs%%F@V}Ws_mHv*7w!$Gu4Er{6L^O?P7@OH#*d%#4tCELaVN*PXEc41kPfk@?Lmu3J zsPvFLcxT0Zmxo)FJj@kH&92!ZFx)eSe?b*CWk5ZeN)O8bqw{;;CMt!>AXuN(9Lp^R z!^@-!8)D$$kxCDVfj9fy_oh%SRt&<(+YMWDEVmd;XQL`@$bko>Dm^3z-Z*vNX)zZ?v&vnp-MA+@XKO=$OB4)tQ?p!Yr~PG)q_M(d4MC#mf9$HO^GLJ&b@+&uB5b@bs#tVX!{#gXq#h$KA& z$%K`wa{fTkv?{?NGJ+b?1L&p%q6CN;NML!FPCU_1MJ=SiymnNWq!Q}4^D}`~)`)%( zl6I;p7Cn~eNhX{tPX2@iPbx=0&@aM5irAINzZx+_*dVKBG}a;p=WB_9D^37#q&3sQg`VZH|ih2JfQ?1;+P^M4|O z+>?vVmz7#az&W+Jti*`}8A-`thB3P+NLCRv^2y356l&5BRaR=L0f!o6vXZAi+rwx?QQTB6#Ez zmQm=N5SHqp-Fm|4LLRK6{kEx&=3<6|=7tJVntZ}CkpCuxrMhTrc8Iqud0tY6_grbq zir|q?SVp05LRhMg#)gQvu;ejV8DVv$!iwOLPgq8wZ$Vh*rir+)N3y$R#PG%(oyY zW$`Pucz1=Y9?33Mzz0K0)as8!D(J`zStA6CBDX`Gi-1 zsl}?xi3*iXLe0q%iDZ1pau8Mlr}ATRU@@!9pH?7;P|dUCpff&XIfzD&Q~5DD@S=sf zTx$h#2-Q4G4m#sQmV-W(ACm)j?sa*2*$U(ks(F?ibjF7)2Yo6(CI{}j>#OjG3bP-o zd6pb>#s@5i;8cE04!nv`mzVDq-yXs>&yYiq@gd7WAIgu(fjutuRZKd#Jp>nxP|dUC zpiz9ta?oe;V{%~Mzq&kf1??eJ^DH^&j1O53`m&gq9N4X|F6Uf<96~kEl7r6pkmaE7 z(uv7IME_QopRPas%Hs8XMD(l5c5^sZxt5=&#Ber$SV*;sOnjQ&>0`FASf<^op98H7Bytd z_ToigR62wIGFK7I$5D>RIT{9TR}m9`RQ7sPf6T3p57l5RT7eF?I1-nBIic04 zLv5-t5@Xvckt`5x1~s(;4zNv2`h|4E&M}geSp`%Nj`uO?2C zswhGdw}fUn^61*`oCpV5*Nh`w*^v{+AnUw1CWP_9Z4=_^3uY@smXHURR%GVE-4~g8 zaD_%@9^Ax{nFkkoWad$)c7?hm)5To?S;iT(_Bor1Bo=eS$(1bj4tcT!=}U{8_g=)n|Ot>ih#|@s&J9z zSf$1px+mujCrf>1sGw>;3DXRgG~FtL{=|cpSvrC5vl-|9`}3=1??TOg1uk81Uy9bGF=#gIH#im{Z`z4}8@Oj<3(jLq$S?jUj^X zoSBCRqrm16LDAsnA|fcTF+}i{C-V?t6xbLd_`Z;Nh%gFl4iOX;bS@%-0vkgF-&8RV z5k`T{AtGp}L1&lLJt`B+*B=V1H--qlBVis%7zH+l2)LhKZNBAQxi8vvfKJeu==bO1V?KmGp^z$-so? zGX_W#O|DE)o*~3gNMu5CRY`c8;Jf}s`=&q5g!uIQHo#W_z+V!aoF7jny~{zu8U^_H zY>G?J2j}F982kUrCoQqM=whBrAMEfayNp||-RD1UZM7vx?UoIw5yBDL^1Dly1OJg! zKyW&ixg5?MjU$fy|JD)i$Q8iI^#5$%O{~9K&qDKmusvGbE7L5V$eznD07wb$(qP6< zUIFc>5KfK2o%rKSCq)vH>}uF_BqulL(uux#ycD{H+tc+j9xs+dU~>vSQ>eNb2u~RlCtJ3i<{lUW$8lfoMmxfH(Zu(%FbC9HX&S=uF%d|77M}Q zvUIn0&az?`1Xzw`TCo`-e_5=5hwG)=xD)D4wJf19s3`j^#VxpqYo6>H*$>zTVMYyP zpTpphkvA-`G)*9g@IWEGTJhg>*|{*0TG^seOlJoq1w`&&jOua#P+=x0!skK&RBR;* zJGl@59X|oF5ElZV&-Eif-y#6az-x;EP)wwKISXN+m`KsJ76PD{ND-eF0-%^kQHT}+ zUUv*&3>W^u96sEVCd z3n4EyA60MyF<0@(8QFOX$sJL7r6g(+=+ObmIndKb<>o1*&vngFC^&>PPa%C`W}ZSq z$(-sujDUBA77-n6EX&Wm;I_Sa3h6!G^Ar*qL3^g>Ku>4{?eEQBh?i2a7d2jjCRKMx zM<)!Af$Bnolj(NV_Qa6}jQA&l8f^x=Q&eRHd$2baN z=w%cPHg={K6roO0GE`6+DD3h~Ehxfn+8iTQlZZE_5nDb}3yKhsHbOO-s0RB#Qw!2O z78HhgBYEnkA}TmjrY(m7XB2&vR5WD>ShQE8m@>ST)Y=4B%Cyfms4dtpnns%pi-}wM zjAFsw(X?VRKqGIC)-sS*6Z=ThipfxcP0VQmB&FTNp3<~pGH4y`^$m&z`%BY`$?$1S zjO>GA!Cup}VnW!V1|*t~n@AU32~g%3E*w(|++bISI7wk+W`HYX;*FI`8K+)UDHeXs zMdhibj3XLUYJ4;3c>Mt(P@|2&spX6l1x7jG!2oM89_eLS+)Z2ZpXn1xWhAB6Xhhml z^ogXITrsX!P^CnY3)N1o%Lw$ZN{OTjnqO)u;+hELAq#PHs5NKQgpoK3H91VZEF_aC z{83s>4$Hd90n=3}kwn3*QcJODnjE@Yl@dwR@KQ@j3!)4pi3{5eSgp&mD3d0H;~A^! zWEyR;POVSc5Yj$sXI!65o2AK)G$I`3Rh5%z6vQC4K50exfW0hdGoB5)=pnV3v?3h( zl8VWegBBnPQ<%ln!qS#-D8_JMrnEs;KD98b8L?2YhpDVnpP5#M$CXA z*o*VZvWzga_2vvFF#6(fttuq!>?~77##8lWq`u6_T0P8zS<&faRV=j{opCVu5GyCt zP4gnqLxCtAyuk8{>N8@+S!5zKl%i1RV1zBPfVOE9tv5xvc+5-vtxPJVZ?TE_f(Lo=M*Y3(Gv9P5Lf4D8|W2 z-vtB3@H^={cWm4r|Lb3Y0`aX-3|a-NG!-^Qt0Top;TtkCpDH~=rGwHuLSnfJTg4h| zv=_Rp`ggZ#@3~I-4-;!HXxOXdf(>`itvd07Om2fmSBV8Hc6HBfRN@7N-QvzVxnQNf zSFvmHg2I$>w`&$8CNYhbw1S4kN-S6di3t?4t~S|}Cl+f~_i73BaT9397^Bg&o%&ug zfjn+nO&)kAR%ch6d$!Yv^M%`NlgFOP1)KJsT}zOC(h4ac81^(~Yk9mSMx{IiO{~yy z+&#M)=cpW*@+dU9V70pEIB}jjtZYplh$a_o)c2ffoT;IqXktm%ZtgjaI9GA80=IP@ zj3$>%X;O}~VKEKY8sMh1DK$vt0cm2LX^o2cBgQvoIqFkI^G~7D7(*nMOKus=8Zlx? zES20am@Q(ulUORHT^PgHgaW&!}AwJp+=B_K`?3aalMz%nEg>5WZO1ydHLMa73dYg?Uw#}(!Tu#Lt%d${#MjmS^S=){4JNAn)*gr zo?z#RW4lkR+oBMd1?L8<;$u`lE6)S|<~Y{%w0G_A+jZNnR~i+!x?7Ga$pfbUTPN+R z+mD%#3tCxmoxw!?<5B0w99M%}*?quzhBk-xeVJ+MD(!)-T7W z){gZ{@A7Kr*#GSJt<$@~^va*$)5UmrZM}S9z5L+^+FNP8ANhlq$JS>^-r04mXSK=> zyc^FMmOq~KhJ!sze50h7!_nOsV5gSdY}9t>gY~x_I<(st*3qD|YaRCc)(6Tku|D_{ zfBf0+?oz>J=-S`k+WLQF87G}KI$3)#DcPgR)|Tvaqh0LmHna5~&qnQW``Skw8r~Fp z^h#}wMNe@1eXm2pO znOfGLy|J%r)DNBhCjoJ0t}$3T&5^I;$20vN5U^uo%wy4eayChl&L+76vWNmE;CC7? z3L<4Tyl-KfSE;m<@;e?vd=_o$ZTAzhY$Y?M4bJ>Ho>J zZneE>w>@pA6+h1?j_b$oBENKX=$ z*VCXAL`h}SMR_#9P;D^nwWqKTaanH7*Cf5($eO!^cVmfWwM!ZjqyCx2$>8|?b{yyk)jjXkxRYD^N|Q8RL;lmk!(tl6gd4J&ldtG6-;AyEwFn~5yMs@?;y_lYwEocyJ7N9?oFaN>6_eZtucBtr*2 zI=-1g!eWC-z$v5+y#yx~biMLZaE>LqZ$70);trMV_-bdY-n5%iLg46)V^~t_WmtlA zfh6s=HFw<7H?V}N{ZEl^kN=>V>*?#`T;r<_5+CRPkMsY>`TtjKf?u`r`RD%_IPFe5 z{W-9vN&bxaf0g`y;rV~1;+7xh|8uZ-;jI5*{q*|hqj#9Xe{Oe&m}*~NV}d@hwlL?j zK69e?*&kcK;~$!rTRW4h;duH7f4>+F`D1<8-oi-XpTA?);NOm{odITDI1Bqvr)*dM z@2GnEP>-TpWA#@q){pY;pZU$JcnYUmct!mJ@v#R+hyQV4M%>;)AtvBTU z{m75Gm@*t;P|^E`kjUxC_q*PEk>ux6zK#cJ!t0g~Q8_zZO!Z{p#qVajNpCW0_=Br6tl|^ba3eV3=;=eYW1gSp8w`4A1|^?_f#b_e*rfz0qWTcOQWK?@iC2 zVg&H|-77UlO6%q?{Q>nszBi$D4-d;polj!GBBa20T=e?>0+{UHc6xto=^C(P4Wg`n za!tI#GJ)73babHq5(F<*(Za*Y$Ab5a0~_K0ad~Z+rit_u`#+q={U7U4C8rVH|54v9 z*K1`g#Xovx*CBwfTt|O+8QuS}i?l+qqDGzW|Ebj7TE+1HRMGxx6_|v_{U3!&AsN`# z_xvkv3x{P9K!+JuziYX*I`(VSEx3-}V?c=W;nvF_>vb`Di zMAnK`ZtS_`y|QDyeRZbFQOO0jgltWQH)8~KD`9$CnhuBkNlAE&O1y)`!w!~`*mhEy zbjH2WbW-|ETU)#<tWmonpV0_a$5sa@S zVe@`q4JX#e^P9o+#==IPa%Hz-9iN>h>y*Sr{5%8Sg+y|eEx|9uj!Y6+oRw8WSbG*GFaz?|(R9I5f0KxKNq$Mf zhxRa0DSB1~@)1>%*`MylDhMM*9>gj9NfGW?8O3Ppo*4R-PB5q%`qwvB_fMP2g3V_#Qm9fD?0V?&$Vx_X+8(t_=j{$w^}D6f-SlcW zC~?{@hO7MFWZbcKdXu}!)W6QtoO^>#|EB9NQif`rjwYgomM%M;o!TyRy(B@FKvs!U ztesb9hbM>L+2MzuU!QsVe>*xpdiOUnDsiE~R$!h?>LYlGP4VznK22uFT4nasnhq^& z+f#a-p>N!FCd2*>O+B-f6?7*yA`M}_Ruombq*hg~{$YKb2v&ox| z2Vdc^XOWq`^7|t)irTzWXrGDiTYvuf=WejhQ0iRvuy=7#>JB@T(is2#=jVOVhx|C* zhk5(q@}}2q53uE;i*$4ofU|owz3xXDi=EehSf~D!4b0OpUw2HDCB_zff)~BZ8{zie zldm2YNZ=So|AbW!+PkA%LHp%sg@~yVbXj|#4NDg7@zjF(bsFWJi^=CJr_pqFoZ}ro zuE90i4$zg%gn{XyVkpqlBp_LKST6f?$iZptz@gt8V*Id+h)iM`NQL=Sgq;5U9eQ3H z8$u0KZbsN=Lja!2>`$?G5DO)3O9C8TFwDUu%K{7j!u5JRqQ=QMz#!gwee4qkL<$0= zQ2E=N_aEK@8FvQ7dvmq)M!Rn zBHXhOj?H#sD3ad1=?!|5D=Y=PAl_Gveb^b?2lIGW<17XmDTP;XW+Z*TG#$HhA4Yh zy;|ADITY*dPjMNM^~QeEyMJt^0pH!-wYGjc{P6DR-OqY}THit3q52V=cu0?Hvw~<>ROoPWlBm+qxImDeB9M?XF`8;g z31RBzxbvVwW_D$$ROaH!>QJdTdxT1K_8Bs(JaO_dOU96wEfpQYph?RKtm=5!@e$*6 za2d0!wcV;=ILYXS?5e%%8lS^}D;2>H_zgO0Fuwktcfiw@?9tQ=Wq(oPGyLPa*hmjV# znc?{NKc1o5=QNI@i8G!tj7ckm)t6B2<=dd4{=g9p5$AWCVKFaHTozdvA`n?G#Eu)m zitnBm+@vIVI0wHpc~LRU5*qYnwgUVh)Z*Y-a>kW%!>*x&tS`-v1$24i+2YieW=on{ z-*0s(&&d~f2+8f!N>Oi^LcT&TQ~d?k-h|Jb%Tn0lHnWcJUPyh*oiPjR8RluNev>^! zK|36uL}#eRR;(WpGKL-d8*3pAXZ?3ky4-e2vg*B;qnXh%J%u{gBw zhm|*=pYXGf>r@%#5D9-O@%4d*7SA;Me8a36k=9~5Jq>#Do$j^_*65lf2a0&VDk%>b7zrM3SZO3vkUUTid6~g*>}&a-x0+61@wpZ=0S7%!@;F? zJ26lO8G&W27=%j-z-0ciH_NK6aCvvil^Byfs224D_lqwp<_PzU^KfJ#p+5Q|6Md1Q zmt7h6dc#l?P7pFaQZGCO-)^G?YY3pm406OAM z_@D5sWD-M`Ch)1dbc1hUG|O~tMiAwmNI=i@_%G5M-C;cDRPwhU=PLPTrxC^$h)86Ds#*8p!D!N`5 zmt*f$pFh zv-RfAnQGanL1c9nS+K`EkXn_FKRoRey(L(zpkZ4i7;D?lGgN?gyCTm8Hi5#YLQabe zejkoISIF9#-e5btY8OfTo!#g|2NR+U4vJ8!fHldGqn3nAd_UTXBysr#EvR$Jh zs+m(eiq1ZsCfW;>($RMpe2D6I1)JD+cB~`vb6w-i1tBAYsYh}0j0;Pi#!sabh}`MR zUtYh$xgGeqptic#nBYhX?p7fb4Qm=?CLNbJQXb(HgU-j5tWpQIMpoD`oTaq(tTPe9 z<>&|ja_tv%A_j5F)!Qq7gabzVR`W#wTk$i%BGeZLD94cqWjxiiC7Aob1|*q#T$F7>%{nHU*>p0~qPEeDws-FA0*BK9Y+Ge|y2Ttjvp&=HdJc$J>!5BA@ zSoHcwzjxu&@gHn~$Eh9ch1VJP_M6k-xb#V2THNJuI0Q*XeBIFqpfHTs~_ zOlmZA-Oxi4leHv>3sLeG8DQ-O zJxx$RiGwt)E3mGqQ*u z&W`yE&R6fUKb-yin$G>!M1NtR*coCpr0|=4AJ_%2}WsnIb9%wFP;)8NC)v8(Eb(^-?9cx@SL9JG6 z=mS|-dFUYz-v`^tNGR$&b8O^Xk{21`em)MG@Ko-w2}XfM!57XxI*+!ZDsUy@N=d-= z&+MOG842teTn@UPYe#1znlqj0xbIy}Am3o(8;BT}Tx0YqRR|FuE_wO@#P~G)4DBJ- z@ZkZjs9Y#?!T1n#>2@#?M@ygA&IL-Y?Zy1It=e47wgu&8+ctL>ml`J8wh*pH7lJqd z+|#i&PMZEB7{v^8yo-PV`g3$p=H`n#&_pm9x15dj#}V$C5pxv^x4;o(5;4}}i=;8+ zY>e|w>6*=5yB0dq`|B^Sj?qOocHDC14|5d3AJkAH(skW8_Z5acK1S*ieCZ513^ly7?a89LKYFKK0ArCf1+Wxou6r z+zECJ#~pR`MpHt4J;AJ!qei?zu#Y{f;?#DV@SFegkJxxBq;PQjQ*bJ)!>$`o2GocI zxv-tx%B;R0o>N1zVP&%`yR}@}R;fbSD#^+Qf6du&3a>;IF@z2?)I7)&IxOz&HjK%s z$mEAYaX57}Pt{z0M0l3=r=&O>&@R`lnJ5zb-~zDgi2Q=hNw04aqm8EfDpZ?=Z7~!? zE)>hmtwW`p3eD7$BjJ6UsgLnrF$MUR@BfX(f2G)fh^SP4jQ{#ASOmla!Qdgf8_Jx; z?y@Uux7|J8y}h32+8@onneks;*RGV!_^*8buTy`#|5x*Gl@G1S^zxuZ(P|DNqbXAd zS|!f0wYAmawRDe;x*e!DtJmG%cB;*7zUOy;+ulZWGo)-EY_(|hAN?}AYs$1^Q`&G$ zx5ON@Fa#10rQk_^+iD?#r!0vQC9XA6VZ%`s;(;o3S6pGeqAGMng_TuTSXC9GW}>jV z>I!SBLexwZ)>d6%T~&yhslxiID{QC=Q8QK8SapTES)gXBu({$28)ZcyYNiV9@~Ue@ zgQpw5xhk%51x;Vt0A+b#doXarWgE&8@f#Z%V1t`L$lQ>%fw|!TPs#+@=4WKY?M7^| zaCwF(0FyQL58iz|J|-K4$F0^||M~>IhSFF_pO2d=Ns&T`7j(#_sZ5^CI}3z{j*+w zP{t~GD9!pj>~*cbdXq`_8uxK|xO}Q}q|OJwuzFyh^%r%H`-RNS2jsmnJ|n_e@JE2+ zk261o@`YZ)@WOAQjG-6GS8+? zLyREiY?n|%XGK4%+d@LafcEHivylx0eNxaELYm1c`wce?yU>O~*IQ2>n}*np%l!x} z?q)X)jGi8wMq;1g6x=kh+V|KrjHZFn%4RnWjPv77BW;9%vBCLR4lB;bVs!8q>?gyO zvbftmy9XA9XLY+R#6-rpmHOXc$QpFLH28@PS<&%H9&^Uc8?s`i5$7?DMMFcz(1T)Xo#v=lS4q2mNWvCJ1~7Qmco8Z8e+*miQ~N-vZm3Ns*~}U zCH9z1VX-$`rkFO)6e`auwaL{2l0y+%R3o1e7~|MdKq@UsK(s*j4*A2j)yXLa1(|D` zOAN3MImGbh=*|1DG#jM(Dzz>A(bGZkoHQMbOrEq<&Lu`av-spse!`UY zSRDk;c^)W?a!!v^w(*QuXUrc106}UzIs^fO_8nZfW{EZ){)UQSEsU%s4Eu-_lqun$ z;)6~=--Ha5bfR{+Cp8+vyl|z+sG+g=Apgw2?%;%{*ek4XnwKy-^Rh-mC7Yx8C2U^z zK#v7^*j;|c`I)f($5@&$qapnirYjOZV$7h)!#s!Z+0F*xE7^RIoTOoIvM@POQSKs3 z4%?1JG~C;%iD5e{+%M>m;hC2`J(Pe?c(xLZaZee5HslJ|3?mOo;!`?-81F|RROmHJ z_kK3DfDle+p+mLNc5uKt!%2j(gz%X%Fyv2lMY{wZ@!wE_rL_!8ov_f{Uvo6cJsgTD(G{G!I^l?u1Ey7$9B`E2 zZY|AIE8H36L3S@hEE(@X@+q;*xS0GEC1_ep+tdn8{X_uoiHIbrCsGPbEj)l}acakO zN>MxXY$d!~%j?vNH)jY$_b0n64u!5r#7=5TEEUHGVJ4ea)wr2nYq^Wr4fNgK;46P>VUtIUk{lVELn%B&3%!;+nm2!K>)EE6{* zI-^o7Z$Am@hUWhV>WrMbAxWy1nbC4Md1DRB_(aqhm9nAiCqdrO{4WDMJ7UECp2^Ng z96+iwmdTw;bVj9U-hLA74bA^DY^sNh*uag=jJ2h4SVKmj3R$SEI_I=mRZe|=!{D7y!|Bj8=C)R*woM&Ie~-tzox0NXK@Cn=agk|u;@-< z%Le;NP&niP$RN+|j+RK_ur(-&1RRWfW>-;SR14{yC&A&63m^lhdVj>SQ8qbZ2j9B- zqr*v@-mol*gVmP`{n2?6EDkvVGRSlKqsZbA6_A=9OJ$xW=Eso|I8TDcAum7%P7VDr zT(?@Ax7r(W9>+Gz@;IiFyXrg%B8R*H8RR+rQ6zGh&y((u$_}fV`{FzaE{FU8MR;iK zY+T1>Q(zjNGLx9_J4yrQlVDzG&Q^p+WL_Xrh|?Kg@}lZsDh_W?f_`x_=$D+~jn-Er z`cGQI-7YtD)dx8xDc5-tlnKqW)Qd3IZP%qs*PipdB^*!|Y_t?EfeBWv?7ZxyOh==A zozzyiIOQmnc5fOm-~(K^O+dI57nARHgQn#2h$L`3V{%3mHDBwGol5H5X8=D}0&(Hl zN^@UpnH7cYA_jcqL<87%N^!+|1#~gWvSmA%{IYi@2!SsF7yB_4kov7;3~j`kv7 zSrHY0G8p2l363X!O1D7Ry{8fDOo|%PB&rgYd}qR4c1=)9ZR)p{AW=cTMhdzD`b1Yp zov^+(u-j$}SedWZ5?af}sI-I(X1d{VAhE!^hE-DGXt47h4N4hS{npYxDlLK2;PH4g zaD#&_af17@4eTn603gWuHVVWC1zX-Rr#9S_fwtqkT1>xm{P0d}n}!k|@(!Cc^!JG) z+I3$%I`Tw;!;|gM;HDFcqrtq41D0AAt~UJc6HBx+Oq_|RdF{R-jkZ0L?a?63FD|7Orh20qK&@qeBun9T28a_6b@#?lCa%6FmG?&F zEgG;*szTDnptUSgonXr-3?Lt8Fk-&QSxO+5W*3*+St_B#s6o?O_NY#1Y9ue>5b{KS z!65+l&-xo74sk4A9iHXeqC?QN-pcFgBwHVr;?<8rVT?)fR>G zd2xpw8Z4!}5@P(d_fSWQq)lpn1_o%lFP4!r67!-WHcx@I89fkdV{+QYs=mr5?2GCf zG+0WjY=%#Pw;3t&HmU6y7@+CCsGNPSh|NZ!qh0uxv|Qu&rgPoYT!Ht`o`=&5Pt)ACYT#*OS#!$X9i0tvx6vq?fDzCt4QEr zDinI7H0{Px-w0j}oTotGnB5EpCrkguTql4dPsLDoT$EBVh@gK0Jx7slvBW$XEHKa5 zlYv&ol*zS^r>$8^=@Z1$KLLm`SeMNHBksyzrB&M~v5$pSIyj{t?jVj{E8z3N;$dh;nQEMaSOM$C&|@v~UTf|JF3 zTGoEBNKRmLe!AX_H{Qk3(K)*?{3#Cq-rA5>B_EwHmfmW-@fUOUE|J&V#O#CPPu{o3 znB-^U4gHHAJ6Wu}i$}<;R6xPWn6IOxpa34p5ueF6zxxU=z?)iFz_{TXKRDM_d{?r} zD?AAO{BAz=t}ld7lxQO2Gt`aKN(2t${r4Vq z+TKaFs=L9y4$6n4&Q?)LQSUt<>PpNIBmegw^+L(&!TUP6B#t^;vLi(uI~PA#UsocV zn5wY4@ zM;>zy)g!v_OtaX3)H77E2Kzdai8$))a0w~ug9k)iDc9ZX>OkMowo;GW*J<4thdn{n z#6xu#2WUN5XICO;%&rbp9qm8$*sv2<$D*iVf~-xzK6*gdm9j+5t`4MJ|M5vVTA9XS zXE~$NLEgj(T@TjXl@b!ot`7WM|MB@bTFu6B&mrg@hK&zK88wCuXQu2w3EzKwhK^Rh zaon>hI`aWJI^=t+`0_YfZ2xhm&9feRdf$?C!)%hyd_a~CspLwyM+sc}tHYQyYSjXK zlwPvkmeY6d$1``mT8!PEAcXLUD- zP-Kr=x0}}>WWn3xHwYA2twBV|Y5P1v)J5sWMu>2e&{%`8hItJ_M&dkrgP4z?b=5OiVnmEk?T~-l-T?S9^PqaFuypB`p+9rKUW(6QS%>YQa=uZ?XE@Lr7JU*!k8a2XpNv6l~^m z#@}rZR~avrn*42P!Bk@JvHBZCNL9v-n@D9zHHh|bm5DN|c@Q$D5{-myPB7SRPVoA> z>GZ?hm3w_Rn@!it^Ha8E!O{6!@Amy-wYi-B>P;@rPZKX`UxWG7-|mBO!uC2?tX%K& z^5T3vp9UAnlS}CKY)UVkfMEwjmt67K=1#+u-qZ>iSqpe2okF zwgN6FNxv8R7YWmsNLXOMuLhBfJKSrCQ26}$JqIH2h0KI5tsTe#2{fS`q%wzf@h2$3 z)RQrKdks?|xt9YISiHc9l$I5%bckE@o;-;;4`dksw?&6WcV__P2T z%EuR=!29z{*l8vBe6jRd=nZ?r*gfDWb2r_e!E5{+uHzC+AGX?WB! z<9jmJX|LfaB%rc84{g00z(d*XDR@94$l(FiR~jC*1oobc0@`bM3fZ6>c;J-<@Q~-8 zf(N9Z93F7TxmhZ%!CEaM)r~ly;b3QYBI1D7w4}OEg4BuQ zqv9K2U5?6PBwIJifChw}0oqaqrapH=3N(YSy?s#lcic3KWcOw2q znbSjRD=mt$-s^IX^!H@w= z5_clQ*;DcL6g`QEYS09l3a%cV_ZUDUb0i)?BeEl=K@W8F(unMcY0w0o3SM6OG$JSB z88m@MD~-sBSO!ht(Mlt7B91{5cui0B9+t;RK4Rk$;ay3GV?%Q_-DDo8JQw9<&^NFTl6(MlttlXvuj2b1Z}gInt~ zB03;PFL*GS?hH@s))CP;HhRIMl}0qsjX2P49nnBH%0M@bXrLQ$pqoZC(2YCLO(PoU z#vbUX5k(Y2U#1Za;_t)ZV;T`U-a#X3jYc$xXa)w>{zIgtMl^`%22EhnMk5+TRD&ka z=%f)1Bc?$QboA1Qh7r@C2|QY9M8k+@&;%Z>G@@a|GH3#iRvOVT;uti6M=OnJ7%>c* zz@wE$G-RN#bwrxLgKF$7;k9nBxuI^vfo>YnP&djzH;rhh8*!kUMl{lmJJ3xd8tKL! z=%^7zegd5?bacL0daLpFj39FqQ4H*pOn^Wbc+iMiqY;fFnn4qYP>o$Z@%FAG8bx%2 zCNOEE5sf0MK@(_n(uhV8)1U`BdTB&-HXu(H)&w4{G@?<&GiU;jRvOVLVi`1nM<P8%cCh+K_5n0`cVbBB~oirk=s~dTs)pP8u8rV&|P-G~FtG$O03 z8+V|YMr3uF-^S8N^zh(x)QBPqVJOjvtZw}Ma2*j`zk^297LCa2Ml=Hhi^+I<4G~5Q z?KC0_=T(MWswOa@8au<(rt^p_oK&e9G#Y6{7LKXZ3mvUAA`6F9Y6g!^8j)p2JcAz7 z4i0VKdD^k8@I;lqemKm`On!ux#Mr1}DgC_83r4gAC!=MQ~ zT4_Wk1BDSln!uyeIwH%|jX2OvBeHa(40O|oEZv9$-83RgH|{_;jmXlCJpBGc_;^_Rt=F_j^*`0TBzFtpnjrsW2`}P=vrt7;sB^uR= zmWRH8;Ixp9++LwM{EEO-W!nv@-%ztFI85B3twnA?!AGJvu+# zZmg8vWyzujrx!q&Mt3C+tSxb1S~7sLm;+0NIzYmx5ELPsd&;NMy=KPdh9-Y7SZr?9fo6G61-UMTA;w624KJ~Zz z*`2W8Sgc&{^YY?+Jf8*^Gk=3!?`9#nh}*L{?Q3&Co_%{vLpjFp?T1hK*Ku$A<5U;o zD-C~&FW4E>0)FQI{PyaH?>>I_+tKx6)wxv}ZTR#i zV>?T*qKO|-8sDh3>0tN_(jd$5J;Cs<-1M%gYJ691{-*|`gZVQ^fh_amT;fENb!om& zw|v)9How~JZb#w&UJpANL4TI{aqe)^{3O&!%->TsznU;(N8$Zmn?ED*Gt2zgGd^j4 zTW)?^+5EQJ*dK-Odu{#|^&wZ%1d6ngKq`7;9UEb}AAPMUupH~&D{`~$Vt9|hL?Y<>rUi;VBcFu&au%|Dcz zf2eH!p_=)luz9b|pCPqpnco!6Ka!h&q-_3?lKH9GXyErdYVocu#=EZBmD_)IYqE}$0r+Nsc&aorOC$J~K?P>X)4@#uhn zTJ&qDqF*y3{593-2kdvCGz#ev06S^{u$>Bk&5Q`xRA(TtrGXLxdc?qvS`2KbVqh~P z2sYJ82<%#*gn%Alu*1V(hqgRfEZwe4VL|xHWUt_J;2n!yQ(_oi^x`k<_zNfgq91=T zh`$)dUyR}}%%BMTL1s{d@KvG^W}*~kq8MhP9A=^*=C&kR{x*Vrn1cIwi}_@{@#gqz z_%Mv|Hgj%w2JInzPZujIrV##lt z^4s!~jHDk9HycToV<7!(UwT(wL3#b;)yt@z>}e&ubu0bNSi_ZN5%k2D_ z$9mNJ?sveBI^HvS(_P$c!q)(&1cb52t3jy;)zjxxPZG)uxEvySR)kfT&8({csAv9l z$D2<}7(4uOo~6%E*BgwcC_-@I&iwTTiuBR>61w=B?(+-WnvOT)>)GN@c02Y0Z{gdY zE{?u>!hbraozuU)AAkP4H=cT{hcQGq`14i9zuj)n4&S4XeAP9(*xv3d2S?k2#Iolr;94jC{A! z&*KjcYm4VIS0j8Kyb6-uA`(%O*%u?Y=yMrqeRVtWMb(Vw>~ZEKh|PnLIk=WN=m?+V z4xcyQtiGHfo&1@1yWD(1oIAf-!G&0P|DxD43UGhE`USUt@&2`S&B+lLJ#v5Eb=N_B zRfha!&&=}=#Y25#TvtoM;3P^FFrYCp!?;6|Rx9JN^t?Y5A;FVXP>JzhEk%XLuvJh& z(8*CD#kC?TrgATFhf4ZvjC*J&B((V(@rzX;ff5x!G9rSmG9@A2$Vd1mZj~U0!XHtYVuBPO4pHcaq1tQ{F7B;jbw!;#stN!+i6Jmy;DQC$ zG8ZglOalnQS27R?z(B7Eel1Wdq~Jggn~Y~O@O3m6(j_NWg=oNi?=QWXKlj|pBqUE6 znHsuo5xwfqgJ~+dgWgyI->@8c_)5EBq~=pRAa=vpF&6BD?dykJM9yjjGTcD2u9x0q zvsm6Prgt;q#s>so;-*NEf510BE|zcEH(v60gI-l;m`waOdte??DHzxw$a-Q+Vc_vl z77SsBOOJ+JT1=>i;dmHzMgFO+a!Bt48fNgsK*9{Jxq``G1cSk@0w({F_;?V>mu#rt zDyfpeJ7{PA9IM5y#}jI2VKdv_lQpx;@C&lBB2aFEhR3zR=%3h|LG+RFR^oGs7qoyZ z`cm>$;)977^f}ua*`xlz8gUJ=j5b8QVrvRAk5Z?I4_)E(1Ye3xPY<{FPhpDUacR(q z8JrtiL3@4 zhb08nseZ?2zinTXHL~nsDG1_XBZ8Y6LSk<|fsrYq%v#zn$hD{FMQvz8>@SQKyxr_D zG*O#*;L$0f$l8hmkNopcASdHVc}<`)Y8{?fJQW*$p8D7nv6OA?6`Wbg>lJCY2}DUv zV-p(80}o6QCD~R8P_Cls;mHk5V0&sFm=1o^c9*L_6pmQmwss6eJVhNNJvJeqxwf(C z;r*uA5kYN50seIn3Qul$LZ)wx!xPhh4qlVLm#^>qz<$rudad`>_$jkE;?9 z1pj{31-GJEZEjB02Ps|9{B;Kji? zpO^pN>sywX|3B!Nhy4F4HZS|#qoZ#t{=p9zzhb}Hwej~iAB3@uWp!}=N z7;5jA|FAD?e{Opb|Jmp!%E6z2%!JA84}+f2>-2iYe2pus)5B&>>=M=Jc90^B7wS(q z`o?$z%g!gE1u`uXD`u>esmtI-bbD(i{utxM}nqTbZ&!^uVu`dLlc(Yh6#doXpT{I?) zWi%m2-Ri@a`R2x3W7vH=o+GDmRjCgjUCt@F^OtvT&yX_xeZZqBpDd)0gWYozX)n&7)tuwYT|hvhnY|zx$tV=+@=>)#CQb$IcrVw1c`_ zt}%s-m*dUNyEzTS-J`#c*Z=fa9u_HW?p7GuO}g{;_4<~-`RjPK?aK6%Vc(&*FW0|p zX5o!#a3^dZ@8Cqu#>=J0@BgrvZ$2*WCMX$u=;iHlcKJT|&QBOCrh&oPut#^RjrYHx-yS?&O#^Ty|{oyU8tzil=&Ws*rvd|WI*~Lq;^)=0e;eA%Izee9P z*y=vEUHuwe#xzb&E)2^!ve-q>IO?$rn$EY+0xyoe>j_f&%FzdUzF`{YAASXK(Y-Lv zfAD5wT9el8bh{TvA3kD}^E2aJ_$9+Oelt(a-;Eda{v0EwfoI^chH)HZs^hB_SA|5& z*^Z6hPHz^s-f3(B=_w}q)75zCPuCl)n!7!jEEa!U;qU1cW{exmn}4iN*WPCgGi!If z9Iw`%i+OtGe|B&0W*dJw^Rb}}>W?2<`=92gpS(F)#G9T@mdn&)Ufeqy41bTR88^lA zZB3sW&sk39bL0Fyx&uAJgC#aAoJ1BL-=L`MBDjSQzo!i! z@QZ}|KmFcIOD#|*5kAi9_OgI#pJAwJdRwe$a5RPEyB9V$lz89gOe|u zEE&}E->g$0D|3d!6?t%}9&Tlzw00=gb9yAI7Z##K^#Zq)aT0J#e6 z&?!aeV4U;ch&!cNVHiXlJ&r#)uc?Tmm%twzWn_mOlu=OMLcW#^7K5&Iuz(?+C+Z7; z6R#mZ56a9X)RF}oTLm`Wt_+DSNZQ_0TP=dUO7W#XP%%i6bmS~(2%gEg+ah@H$H!S|wkF=wJJRUNtZY$1sp1H_~WqtrKY<;8k2*kdRtH!dI` zuNA_o*dyv{S$UyK!icdtZAUX%m$}SX*loIcj9iFj5_YMtaplDTG2~-F?9jNfM=rz* zv8UA3zAQu!nN)hhjhwcs+hHYQDlLsp&}p2+i+BMVO&p8}%%vt>Nz`W4F{sRY?FY(IAhe$}K)o=Gxc znI+Hz{ROmHO8%H5q6_ZcMTsTQDm%l`Xuj@1+=o8JWX22JMKM0!c*X=<&O;@e8Kfo~ z*oG8pJhUjtqEP0M0yTs1NhvYWx2;Ow?(OvLY8I2I_uu>2-*x_}+V4`v1e0`sFp$15 z`|@w-$t!OSb#r}&Oo|iZ-Q8w+x8dS4Zk-_SVtWJR3j5Hj8)N_(Gw&W507rk}2!$6` zc!9HYsufmZgfNK!32*Dg-3rN6cWbDZMzsf#Rmx`W)$_SS{`Y!w*#AAb|GVi}v;}{| zEwP^VeE1bL3&``oupM&254qrnTyVZJfffd^%lQB4#y3G~_cyiVf=3Db(kyxD z+hM_2>B6tYKefj;##1#6F%Za}=MvoFjZ?FK~(bv@!sx{U2BUlC1+k z)&czq66)ENL5c0g&p0fE9wb>Y5Izxak0&=i;<73GDY)2J2SdO9YH>H;L~U*w{d&AY zK~2f_lB?Lw_y@Mv(RX<7W@SGyCKI|~mI*Gls|MoB3Pv#-n&P!TzYcGG@%XY3`mOjQ zB_)==y)7^M0{=+-lhvkXY5wXj?qcsEF+SUxPg#KX7fJMs(9&OFQH|Wb#|K6Y8 z5iiB}>^9c1#aK~}{z>=D@S{P1@$xhXytusl8saHV^PGA?4)y2(7?ckWyBNWwY8T?~w)0lOF)M?-coGLA;<0);rjU%ot|&gBq=$w^zmCMF_pb=TjO#2f!DX)M=l=KA1Ry3pX3AW>+DP6yzwTguiM>LS$vm?YHjJx$bvdQHMSj<) z%rfHi3Z*E!&FomF(D0)p$Xps4w&RV#yWgd zGFsg(R7&UzFT#fLHCkM_?ubl-m+>C4Ppk5i^B5BCva?E;?)_{^i{-FA!fHI(fUvsr z0=Stg9FyFBHV~6!Qrt zKkPTb_Ntgq$Ot$f2-a!30br(K#X*guVpXYlUP#FtpdKoX{XsTsZ-zyL!nvC7@x}-C zMh6}n8|#9Lo)sRm1tSIFrET{4g^klS9>%lF8v76!Ms*A|Z z1!Bz6W1|&!^nytubnM*!`Pn8PV}M*@+8gNd=MS!P?@ipz<@Foi?Ei>A!_Ddo^LKvy z<%8vRywCo|goMGUAo3H*Gwk>se7b3aB1nrIzJciQDcLX<@1%EWnt8V_W`6gri}CH2 zra>%0n2fO>5yhs@!ahF0F*VJ$C`2;6BpAr3Z1G}dbxY&FjGz(3UAm06)yrFQLnCKx zQv#bMV9h=@GjG(0sG`sE!NBP_Tx~=2d2h*6x?=sQ>tlD%5~z=m`Fp5kf;#* zm=^coO{ZxOzL)agsbaOXraV7B(VEDU=Qp_bL}h4tV1g^2(V8+naiu9P&n2fRj=1xB zT2r6LGv=u2c%}#UJE{YZqzARMraW&v(VEEpOtq%Q2kC?xo-AJ-=CF&La3Z53B&v)} zBjRe{g9Ao;z44=`E0(M#wOZu zw3gOnS=|4&oTl9cR5IO~#EnFEieBup4mfi^Q?04#DIdknYE8Ack#><2PHag%t;ykD zxHW8gfJY_MttnGuP#T*`d*S4Nrdm_enuDF~h1cRn+C^S?Z9K3w(ngNfMkm90?N#(l_fvW;^1wc#=+$BaVdqx*C+jJ@MYKX-^!rlr*SXs9&eFD^5;m zYJh57vO{^ZMyOhxNvFsc$2yI=8q|STzXJdW3MKwL=p}<)! zs-7|1$#ckg{h2`EvcW2Ck;aD`IM=)s;E;q8)p`!!%38P(Xy^QirVU4~_KMn4P={Lj)z-bv zPL)Lhf1RnaY(LvZT}o%W5CF#G8J}ULvWytdtI#S{*2#+pSWXGNm3T5{GD9@9ThnbH zQ9-;=0Fsrp415`BG5x$iAXxble_|`lfHJ4ekm=RO+i;c<@|^i7CyMFE?BzC9w&@VL z4>z8b0MN$^R;2|LdhXS;SorG8M@*LOOFj2Y8KO+1$#d9a*wkme$4i*)!`F|f?_}Gn zWWzicKW4+~`7dD$e7vODeu{dJyw6Mlqf9%@4GQ9p9<7dI^F^5QN{hd*7Sk^sKfDu5 zf^B$i>rzlrc_TTtK2J)|*!)YItXR zv_#l`DnFgos}AdJBL#9Lghh2JyvUNtAe@z>>7GT&XdSI;`*&FS$H zVo^y+dn%L*%e1FFk3NZ(R6RAD&Po`-Igdstp@em`r(9Q^+EewsGv1yaF(-DAa?)AN z>abs)o1TPAE}u4?c}9B|WHqQl{j^LE%k#O}d{;g7ENoDZmlivKOP-$b3gyBw_RI6o zlMPBPpEjN8GDtY)LJ8~WVMSg!wuGq3D>ol6Gj<^J%dNr$k1`D^&o58F#SF>sL}~k0 z(+M6}$eJ}m)nkw%kDTr374`02Qmy$2^@z!_1DQ{5Wm3TkVe+uFPtFXPZct5A2Pkl6 zgQ~?KMLs!pAE{}CvK}u#b|`botwN!?#0WJk?UXY^rW;h#`5h>5W`nB5AVp3&_He1I zK|NlI>`>;ETZIaLnFdwbDQAXEH>jr5V}{vIc|8Uxa>}jRq?kuck{!yNaw}7WQJL~e zJLSxf=?2yGqU>R|Q(lij3Z3%$sPe~4k{wE&@=Qfar9qW<%B4)X)pUC2Fvlsc#UO=F zd2KX#@9~mkhf=4!4x)Ti-YJ(7ShfDTe*EjiQM^pHKuPD8iq zpuR`tz3eno8R@=_nr$5SVQEyALF ziH0Ry6tq-wgu>)J%JY_kO?BC%9Oef{2L)tgtv0-Kt|Q(29kq%XY9vnDNGbASyT1nM zfJecR1w9;9{VO6)+K@Qh9@gsgY_=hB4+q~wTg>Aag6xIoDS@4Zu{VA|Hj3{`5^usC zCC~5XQ}6mh_=NPJ1{CP|^2V3R`wU}Bj zwU*OwE_fNQ4$~uhf-qYn|_I zH|#+~o;qBlOH?v@Zp~uWB$lXT_S`5;d|2+3Dsuw&-0V>VC$U5& zv*$*0!o$qmDODD#?77*aNKj&lDrV0;msa%K&D<$f7EtfE+35^h9wLcmhb1bRJy$Fe zAC^0%%4nZGH+vMBN-R;y?76Cw_^`YwReI*$o|`>0N;P4LN@iDyQq8<6)zmLa#ma`P zK?atnWOkJ(HE%{W^$Svw{-0rW7^0HVRbte<`IJ(qQhffNk1&}bYSrnqFhY$T7#bY+ z6sno26tE^jRKqwqIk_;5SU#RM}NAd7;MntHsK@oa6A^Z;j*E-%Y0ULJ+67*1c7z}xKg=2`wtvwfCAuXO@RnpxSw{q$2ISqfCNYYS8Cb7{sRY& zq5wEr-jD*0@7|RH&T8H{0Yi}huG9*K{Rgg)KyfLYPXU*RykpLZ)x2{eP$%yCNsuSK z666WxXr_=$P+oE5n)gmptVt>2e((Dn9Y9|&ShB<9Qqb`u2h*cvDg)-N>N>qH90)RFw+yO`K~7n7c-A{~AB=-P>0OiUXjOJ4&85A{g&O+B4Z z5j+qr`QYt~f@h0_i>CgJ2p|ZT0svdA;MpSCqNyh%f(Ejs05q8+(;fxS7P%Hp-53!! za4iM6$-J0BmIKzq zO%*&5IPfe5z_nb#b3~d&Qw2{14lGLna4lEx9Fb(vRKXL01IJPTT+093;m2p|ZT0svdA;PpkaMN#&mMeIDkz&zQ z!4rTR6cQ+HSMX4S1a+dTf+qr3f;?%tf;UL9CYmaEB6P*HN!t~?fykZcs^E#x6_Y1z zSMUZReWI&^Cqh@upR`@U8;Asot_q$AT`_~wb_EXy11G%{ofW)3SMVH}g4a(fcmt3u zwgw6w>X86gPX$i|4@65oc>AK@4Mf64Qw2{15QIwsfGt+=1|r#_se&hh2C}69w00|a z1CeXdRKXK)!@1E#xV2otLk$v>oU5sVCjtkqrJ%#LT)`WPREwqxo(LS6mIB~fuHfN3 z@MMqERKXL01J6GW36!=gcte3Y(N)0{fh$3tv|Pa(rdShA6+98TV%ntb3f@rUPIOi9MCgji zleQ~(LyZCCJ6g`|(7tAZy&SInTaUBMfP6pGFY-heB3bST>o-fa8@ zOIz6n%Cw8-AgSPuK(h2SQ1DQXMBmg?!4ts)(UK3|z9@Jjk#Nye!4m-l;Zgu#ixs?) zNVaII;EAAtY$*V(-3s1F6ewG`mias_WBaxI!Fcp`A%S_*(`xq>$msTNHY zJP|lBEd{`}T)`WOM2n^ho(LRxmIB~fuHcPCnnhCuFA1F01Xh)lIP`nkslAbj7qu z%N0DUD{?2gDtIDv#pFrL6+Eje(kHqqcp`Mg{7K6dJgX}bD7q?mB6P(JO3M{It1D6{ zIxBcXuHX%13f?fG;8|UeEY|)jcvO!>;HRg8CxQo}B_F&!QShv;NVsUK;0XYlAY2Ln zY_Ec6q4bG9=W43piJ*aODFCh23Z8}NCW)J-3Z94?xRwIk+O6POh;5R9URYm&fes^E#hfoCZIuH6crWr{S5rV5@299WhD z;99QWnIg%ese&g02acrxxRxt;rbw}9s^E#h6%r_ISMW@MI?+|Z6M-v1p0r%SGgGXI zrV5?_omEVmv|YhN6_Spnt_q$AT`_smb_LH8=@VTQJQ2EL{-o^+o+T0}x+-`gbj1ux z+Z8-Zq)>EL@J3w08_E>CQBuLPK(d$`D0rwxVn)NVsUK;E4c& za47(=#R{G!k}aAlcp_*ZTM9sHw}NMhT#Kd(o`@T`mIB;buHacB*P^L{Cjtkqr2x2= zD|nVjwP>o~3BdKhv=ji>as>}HNVt`*rV5@29C(%j;99QW^+cLQQw2{14lGLna4lEx zdLqf9se&g02acrxxRxt;J&|J3RKXL0DO@xsPXw+6dD3zPua{y?G*$3K z=!$8Rwkvo&kvq{`yna}<;C%#LMV&^DTQ_sn>=^j71IznB}A&1e?$cjHC3)9udJUmJ#T za&mHke~zDB`J2gjy>VxA(=qXj{I%gD(0VqWPF?@l`0ey&aqFGF@h3Ol{L{%#cZ<`h zcYnGWFUO}>9aU0p2gX{Iu>+IE(w1<|=4}C=94<*eNslO$PCiFkB(Aj8>E_B>Xdg&8C@YWNb_zw zN}X+xYM!Z6-ZRCLRq2>&Ht(sU)Y%59=A1ft&gs$(=at2LGTwM|{55Xuw&arB!08oNZJ=q@KXo{kift-j=Up zuZ;VJKaI8Gf6_-fgLUdScFvp zR*O}vjP)4bX`H`Wth~$ldV}HZ`1R%McgMtQa(a{AGX`+*=?(nm8|w9wFZgH|#OdWF zF3bdjYFl{uVY66`KY6%%x121d9@y09;4G(M5%KT*ir<)D1*OM_-!E31HUH^<`qRw~ zu1|uWUq&yeBvN+L$&H;>1UPng#2CH`(0=A$cR;*mBDNYY{b@k9o=g^tKd$ii^a|C# zxgD?m01xYZ-i+sKcfB01)}DJi-mLu3?(N-d<1c4E#z%0+pn2E+r}^n8Z%%BoH$9y! zm#431i}B|EyXiEz=-}QN$|fgsQLX1!E12wxSD_5Ffzy0+^lgPdN8cE~daJ9&+A}`f z-J;H4&Ww-#tv~-{-21FYEavNKPxv@qeeyQOWVV?6VSsP<7t=GN*Xi}<>zDlQ-F)J$ zHe-Lj!Q;D~;b=5pcaDyzknxEqvST^la51_zU%XgIch$*vbSip0n}5pLgB0%UbtK<3V`;!SHJXvcwYI z1<8{%2C-*8H(os0<9;*yXq_)GVps-7)1$v!5oFX9qWX6`CVQ942IFs5ivWqQBYXE? zZ#t|@+1}5WH~#b3vtB&+X5MY*emv{AZ(X`xKmXeJ(+BSUe6k1{>3DYMtugkUq+55{;to_+bZw}QvChI_m|J3@eAyt~^h z?>5Go{5ZOGVqDI*H!y9p552m9>u1codvA7j^cU{)g%?(M(F-r^@WKf%`r*YOycmWT zqwvD)9@THeAI6m40f*!lZ@su%O+4dnjiAV=Zq={y{~&kd^l$ISpZ^Z`)LZ3$cGq{i z!Jn@({_S>qcK9BB4^_#qz{;b@P$U`L_x{pD4w>gpCY}2ruJ5dok2dYBmYdG!+gZlX zNpDl9?%S-7n*+z9z8?NdZ&`iY{K~ZZU9;b_9IN+L*K+WIuZ%|eWZ3^>>2}ge6umF~ zQu}Y7FIS6eu$31_N9SvA!crLL<695Z*YU4lNY=*R-+aKV#Q1~j#R}wJl8=fvmFLI7 ze=Yxw_p8PKqGHDvs3~2@KlNcTyQ9jZ zh{^gHFMjp!$J2#z`QE@=e;NS|mHn{k9g1{4zV&BcjxX;0)yDgLx18Or<2Mfk0k#@og8Zsy5r8rdOH=M;E}TD(~-mI{S|!RZ^u<zz zrQm?SG{%z~A3*||AbdY?$}f#qi@Q1g38%fO9E=lVG6?~Jeh0meB)|FfOXG{D+7ubkQ3zl+cB9DIHV*$1Cr=I|bT{^QWajJy2@pFcm)tkdUD1tW3CJUh6I zf2t|>{h_9X!|xs}aInC^0tX8mEO4;E!2$;h94v6Kz`+6s3mhzPu)x6r2MZi5aInC^ i0tX8mEO4;E!2$;h94v6Kz`+6s3mhzPu)rQ!;Qs^V=Y2u| diff --git a/benchmarks/tapa_flow/sextans/design/generated/tar/FloatvMultConst.tar b/benchmarks/tapa_flow/sextans/design/generated/tar/FloatvMultConst.tar deleted file mode 100644 index 7821bbbe943658b543d5811928102c4846b173c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378880 zcmeFadw1KmvNzm+Uw;ZNpJz8t8%rW}wd?pCH<#AyII&mkwEL_+J$z(|ws|5;I-=y- zyV?7*zrPt=2;M~M8acIA8CQPz+f;al}qLSIBVbk?6tez=$n=ND&qG|#@|Y% zT2*P3<(rCKacuh=>wYEJ#DGqMaeIX7W1s&juTImt9s9T5OS@^?&04EgZIt%*oJzyq z`m3U}j1Af-x^4MYDUpHsDK z)o-k|%*p=Z`hRQd<$^x|uzvB!eqjB4a&CR#`Gj>f7+KGz2-UO2tNqS;-5z`UR``26 z@~wC6k>%`Jc5S~_*{{|ur{dJMw!X7|@kW6^=sr-D6YouH(6>%I zW6Q2mIp;abos9%=XNczLNXpgSFv4q*3 zpqi`pt>1gtx9z|dgvmigYg@NfP8^}e-5jRRIqZg1NoP|EM$@5-Nk*bSe|$KBoU zxxi=3des|rK3RB>-1)5W?S8gC0{_vt?f1tIpXaQhJ#;(0PZrfsEmf;lKfseysydE% z1R0gmUWHy}uVL$Z>ja$bcN7OQIbu+s&Jyv}{FivC*(9s6b~+E8o)-2*c;uod&r@5y`T&wEHobe<)`+&d@?>-xAH6H`^;~Y_u^sbp;VMVi&6x*`29P< z=U@0_e3XwOP3PzjmW7KT$$ITU$a+$W37hY%V+@wmeTeXPCxbJ)R;NSN7);WVVv173;Gvy-)@2?%sR{_BS>^I@Uy_#pIQDz~KSV<>QOlc3 z%%ESBuO$^=-;iJ!)8S3Jo-$QOUw{k--0&HZrX1vJ|*0A+)ysHDaoKM{zx$8S%K z!s1coQ6ffj}Xqpbi z{pjT8SyoNewbfKxTTS(~)zny9P0h8{)LL6jduyx7uH^N(W%VZ;N@9BNURq615^Jgn zN@7hlK}oEsCMbzD)dVH6oSMQ>EH?ZZuX%aGbbb=A=A#&&Qm4V_uEsAqx*G}dQK!@7 zh^EZE`p^pxITD8W7(~P#^YVo0CLshwqzDS(=Oux;ZU(PETc<;9?BQwD+qZHO^`k%j!|#r7 ztTVJh_+rQHWg3OVgMpJqSU>38MlOxH?>g?)#H}{=+#yY8Qhr)OtncZOZqRodFgquI^J9MHUkzNp?*{G&ZeDKxlK-F;Y#U@aE{%dS zW3HyGe&=@R_WFAjYF4LWr!=bsPB~4Ut5q^r9cfU!2suZCdVP{^;&zfH^hIHQKNy+7 zr!=Sp9+6Hhv(X15j}~wJptBmew4BeTDNW3!9Y|0cd8xKm+(Vh^P<^4*CRdv!xFMKf zvLvaqqN+-2rQ`l^GPchBf55s7rGyp9uuibVJ+Nw<*$ajT~N(Eu|jYdr^6{%AXCSz#4Pj1}Q zSd0*#x-8UVlo5C3B4W=#gi30pN_}A zha1j9n20{yn7;#36I17_r>X&BQ9+)FKHNwhb&3HQP5K>}K1BDarznFWm`EVamXiMX z^kOz3%$i1`oeKadq?EAyRMVxj1%kN((ui5N+W8<3}C zvLx>-cCEW=cf7^@YV$m<1oO>*CFjMbXfuRwu~g-X_2J^gI>XtpfSLZ;dhL(Uv&0IO z+@i;W&Hx@U5C`!)A52E@BR;((e`)oRQ(sBfP-IT^xiB$~AQO2B5l*KHcw=?SUc9Py z{3Qf@@^%zUTgovW_1qis?~QqEn};5dI`YPoQQv}(?8Ji`5=xE&O&7siDs0%4M<(=T z;!XB0Mp*s>*svQ>4cvtn;)&ml`)(``Hd(1n_p_zp&Gv9IopssKnHZsA*KKmkzz=Mp zeBy<_82=~;Ds?!3J<%IMPE-m^YrUSZ%TXpn2A2T)j}a`6j1FL%Z8<;e{^ZtGKpCB@!PT(h~kN*_?@OUm!)H$P6f_+2yR1*ZN~Xu zJ{w5K1nDQ@KR8eEAJ!o$Q6F{4e_d)A`>y89qa?0~~0*@_XLl*4BYIyDLx19&R0|CvjHxpse1v4$85tTL&Kl zZ*+u1FW3EBuRjh@dV=F+hyCE7%nw@!STfS7*SCD=_0Tx;dQgrgAuHBGhiT_tk(H9R z4lV{m_>Fr#+D|>4vW`0_M{=SdpG4#1q&WTR54wkR-V@mp-?t7pmvOlCkdA;JloOw~ z4(NcdfB?ei)bByr_ym3>*aITN!?*fW7ARAvG3hkrVIP1ZAGQwUS=!SpamMzj-|jsG zej39S)UHV_pJ_cPr=|hVZ0I`W^bTHSy`DVkry9D$2Xw_jL*3**dckJ?0sM~_ojpOzH%g5%>uJM02@3zJ@Z!|}~wBTN+^ zh#}(4$q9~)5%KYNrY)58DBTMsqfDK;s4DZUrTI--pf1wQC9?}Ug zsDQV4!>N@+ItF%7rYDG^JkNND4Eh=R6QAi5{{_+}czx2z{HV*)VW$Wv!h()I8TiN} zP!W{)D3rpAtHq(H5P{T6%P}rU=_B)|6eLjiVccW8As+jrp2@z{`*cv|m#qU~Ae^qW zWgdtdX+hHx2Te_%Ae@~6{z5SMFAzCZHc75f82Qln;b+PN*P1K;8pZS@TF)OH`h9Q< zf6+ehJR_Oozi9UHc;sK=)chgbGsmMr@1PuhqIL?2H69h+P*HzLy4jlfm!zC*t(#3a z%vURsb+QEiH7Uo)(0%v|lCDkNFr&xGS7`_3s4ka=+k$GGpcK~OalwXVc^PV4Q6dfc z8$jqP1}jY^Z!K&9k@41C%8)E~DB|Sl&rw+w_Vj|HO8X*(MK#ufJb|NmhdJNqw#V(_ zlMQY^y~PqIP^Yf3JH}{SW^XjNdp3~NrHHC-GB~@myPH7eN_r&kV8yAEA0JO|#2OR3 zzma7S)&|{hE%ZMB~Ef7aa@zd(H%`#%fEd^Jg# zzW?Jm^+f#FN(14-pZ0%DCa&mtIe|nA#eZE>%-6RQ*l?7Z5_i`8SU^&#&XB{Y4HbTzo-s^Kdzz`q zu17<6iYtRStB->npQmIp7_B4Kn$c~;kJDo&Zxn~LRDZ_-h~@cwLXpGuEN2R126EK< zysJO6VX6cvL1}^{zNw=bO!~%0$qhqi#AC!#Sl2LM5>X?6y7MQ3%ZiW$$hIfqauA3$ zMaiwpx~uh;h)RpljU2m?!tH+1D7i8g24V4GhA6p~ZHMte1g8Na6uVIO%_^O#2e)*i z3O?4QTvVGCI!lJ1-KdC0#nG*0V4+7XJvgKSjw^bCBW@UqshP7gE)2 z!c=~euaQ6L!C}&)<)X=S52EHvnG-2rARN+D;c}@AMMs}CVlERAQlMxu|Awjj6d_DU z)+02gikuD7!_>un651L6vE+jKTLOv5=Eteh7(x_RZ zr5~o^*Y0+4>c7=Ot5N*4ro$l*b+?K}t>h5&O5*G=co{xbWpp78kD%2BG*jspje@Bn z!^wz@tp=l4t%!(>62Ev5Ms?hkQMAq5PjEO`vm#G_1<^P11>U*bYPQm_;! zJ?xQ&ryc+|FE&)M`K}AH*g=}A7afAdU*K!@1ch%exEW!@5$I;b@KI>$zrfe#1vbMK zk1|ogrI`i~WXy+*xIP-7d?>&N=}#x{O%F{Khsu1&;jbytDFT)8seqitdwmkQlrIQ8 zBg`l~>KPUl8VA#LLI#G>&(raJd{JpYooG1oUrDm~WYQn|5?VZ?;b<`X$c{%7i$p^T z!ODw4vnZD0kV{-lsA?nf2W85NK7*|0ITx7pkQ?VmBB6Z&Zc&h|d7^kO3NjvFMqr7N zn*isAm`No(9#&=vAlXZw5DI^&dI2nZ!<)7{38C>*$jj^)9&J&QxkH6i+>X!hV!*^} z5s)J1yCldn_k9Y`q99Q^2{N3~>1ZyfLW9f<=%ULhkW+)Wm>`7^;S0J1K~Vs#LLjN( z6%SC-Z1MR(4n6M^f`}K3WTQ}|LJIFB;S5qtOY#HQ%m7l;ovyKFjC``IgmxNL|!;|>gZ&|6)JIf0?&UXDNqE&u_`N^U`kGcC*&1RpI}OgTU3jO_S7FsCvp< zlmpZKf9H?+V%AR`drJJ5s@<%{;=dq!^P4CCUz3R|dj1OIzu>^086D;+<_jWtG;k(O zc{N4i!QhyZ4grGb9De`Wh$y2|5@AC)rq5H%7ZI=KLoBGwrpJ7lJH|;JQWVBGf&Y#f zPy|jqDw>G$M|g^HGH8$Q-eL2Huk?u@zBTPV1y31E^U=HqjhAvVRoSKDr#545sb3GZ zMWUH}J=7M6VDbfsg{k06MJ@S?sAU`I=JngvG_J6+#;KLY*Lb6DTC9gx9Oeo^#Sw2% zM!cF9YwBH`Onlhv+u5vi=O0b7^j^y<`j)2=Y4&ip|v`@ePgf8a~yY5zCQ$5p&9 zCwRj7Lw|hZ;Tj4{ZW&tQf)HzPWj%}S3oIcF)c4j;UY~BEz=_$b!RWR<_6L1=cmih# z+hcDZo?q(scH~>{+9S)^gG2m&t+Ee~bX;jtlZP+lttPsJxb4K+`Ela+x>mK(tT=Fz z8T74FTx)4psi^Z@mPN>Uy6sYzMZ`yXm#OE2-b7#~P>C_Z+WCd=3bBsQ=qk!TEOCQ~ z0h{hiv99>Slzq#%F-5```K_*Z=XZ$Wv>Q`6>(t z`~H~)-deY~wWa6%U_Bd%_a5$vz}t7?je^u(0e3DIb9Phia^YW{K|QFy%0(Pm!%xPe z{FqEjei5}9-xbKTGce*Tb)Y1L{=!l6I0z;lJG6=qDg+J=T0yk>orllXF~WVa)G3!v zDo9sh=wbqtgh+qr7v@fXk!Pkjulna(4tf&Dk!->QkMHHc-yL!F%5&7P(+{3=RUzK$ z%8<_%-`(-qQkTkfaic44o)Cy(YgeQ7_AS>h5T=9VoI=+`6g=CYTR=Uizp6df(AM9_ zuXtse!hb-W@Oi+)ZlzQS&vogDCHjGaeW;T1Dg4lvF3I$zZd*J5s{D;wfhH zBSQDZs1G5}3>?EVmy#Bp_TUAgr2b-3gnEtd>IIQY2%%8ALUj{)(izl)`nw)^T+TTA z^RF23WTfFG1nv9IIy!SHicUQ2O2`}PrCZQVKgsgQ;f>b6cB)q zMDmr_f25EamJOd6N_dLnGaXoM#w0=YV$_-(DK!r+PS329 zH^00&v0k0NzxZ%^lEDe$85PR;MP&g)9uGsZb;8@iC8>!&(fB@*3L`HWSWxZYsJ!F* zvn3qRWbI)>qFVWZ#7#M`5L-uH;0ehRJWe@nWrC8$$pr_W1t#J&mw4f0P=L>8m#7}P z7KADkN3Is8eK{)R94e%IYEGP&5#$UWm)6@!zeCeq>u7X6;adPrSu@+$e9mZU?nw#| z_>0qim{=2Zp?$`o;F)ctTiU3?cq}aAy7zs?c@$LvJ&!Hi0~NamUZvAt5)!Qd<|(XI z!#sthswL@+pdE}MjJF5l_OQLbf9G}F@d0M-?ePnQYdEwHzYR4p>Dte9MoJQe=K_Td z78{QRxeZNy{_E~|u#3^{U3)l$4{Da+Kv*L1!E8fD%+V1<;8m)pNY^s~q`)&;UO#ff z;_%W)X^Uth>-J8|XSAn&Ov`69oftACYL`!8P@SaXI1%u2O@Pg77W~%Q85<@g$7Z#K2{&HCRqu=jZr$cFX zS-iE(<|lE;_=#*fvwooL@zf@>4Jh{)!h$>;^+DRq>#f3<7(~8VlbRkMs7~qWQJ~UdE)L>ONDSr$6lp`aeAo zD)eLUiMEX{$VEm3qN9THryuBDzUXiIK{l;*CGh7Mbs|t*%_ZFdYAFyH%M1~$3o^p4 zFDgTu68iYozDEf>M46KZ9()l+;^5J)T$w z4n=R~=1TA$6)z6HnF$^hFAiS!#02)JcyaK1nb?y~SeW;AC5!i{cnRQ1E2i~YH&_aI zCks62S_1afOz=WYFDCbPEfc&@(+h&HXMz_kvLN_ICV0{cxk|xDAW{tD)yAHP#7FWF z{Uyd)6j3>NT<2PnLwRJzl0DOzcb>DvspZZGI|d(lqG}BxE03fwbyf=B!%I zJH=+^;*;v{Fn{g&T{WGhUDNh`e6pI;ra8&kLa?qBGSV4lL6Y3lA+4ZT4=Sk+|6*5d z(BZwb@Y_Z`MXU$L(jbeWkD`VAe$R(pTKx2Qp3e8rRtaumrSi?-)+?X*og1upcYm4; z%Gh}>kJ>}OD@;VYox$MKCH^m8Vwd#hwmte3lmqX6+{P?7z`{H5Fwez(>i4ubphdSY z8XkaXC0v%PZLeGI42R{|c6kZk_G=Dx@pkag@9-L2;t!GQ`a%2p8iDMvMGKL;YmfZ) zC06w>)eeI}+XfNTw22@##@!K9gmsbDA)z@3n6tH+>^Q;-rHLxJOx7k5#4VIYP}n?7 zP_l(U%%v|(Y@0+-b-@;r=DCgOL(N(iK?PcfiJ?~7q!y}Y5tO48ludNw`p{k$K?Rfo zh!R?1gIcIn$s#C6rJhYCFF&ZgT6Up2L5ww>{ z&?B8Gz=xD%Zs>IeBhS6O9p5v@d0^G;LrpOCw?QprHw8fxhbig^io{IeaT3&GH78q0 z(!(~=rHLGEc$R}vr_2xcKKOKBzUg6B${V7kn|(MxK}z_{=~O|OKXIuoRDd9slJV%l z^#)=tH9zXWaw}?`FF{a)`Vfg6&kob2W}&ZZZlOBQkXJ>_ z7ib||Y0G0F9Pn23TXPFFT3;DKP2GpcZEO{dwB{CSaUWV0F<+n$iP_3vNRI!5(c$6p z+i1-#w8t}ruc(D=IM_qYt&pNMw~$@o8S+;|kj(_qQ~@1HJ60~SE3LbQa5M}ew<2P` zfR?kx?37|MEU{HgQ0s1?nqCk^;=-FKE%v-_g6h0}SP?PAinSBOEu==)gM-DIBc=4Z z2@=z7(sDSV5U5?Y6vXEJw0446ZLf$JV#0a|!fD(dY(6&28;r_sr#;1$f8NI7aw!B2 zuCB5{PBk=UT74uzxH^>QJ-AJ5Wj`V)X4_8Kv(3sEBS=mZ%sqEi=H(P#b&m?l$`$OX!gd0%%#a!onEhGtw zj6o|TXl*UTD*G#HAu;V)13~L*Az@{_R!0z*)@>qyQpTZ3di-UPK2&F;oIX<-2fdv4 zbrRI%aaD<&B@WKf$-`YZGvUfqoVVJwcPlTf{sPvZbrRHKg1({_iW=o!E=R=TP^g6_ z{n0=#i5J;4&Ya7MaY*dLE0OyO2*RyW(n7*^)9+V8(mGqnwpq=oCffZ92#QPcix zTgIvn9UeYX4Ir+Sphlz*eFY-d zh|IRX0+AD*KB^CW_Z5g-M9Y;QKS532k5n!6x37Sph?e{IDp zXkFVW_8yNzH|>mb=F@w7!PK?3&>q_qR!`8nTF9wLCuanT#K!wdyqwqChnxzVg2$s( z6STG#62|(kh#&<0hf~Mu30l|wkW=N!>FNnuo5r~rLjn($*30hkV z2}gz16STHIRA(c}>Iqs~3kj>w>Iqs~3pH46e?TopD2)rTIxDY#mR?BG3qQ*c!nNmL6xep7H27Z^b)+_pb?E{wzTtVi?9taHU$ zt@2F4yQg^itNN{%Af73JARR?_`DCq^AU4*6pj$J3*m8+lFG1XgdV^ITh+5b3p<3mc z0tn)G+{@0|@$BltP_XtaMm$b-%T?P=m)II)%Bq9}%=J zBS}?+>!H222F@F8{|_`~GJ{o$^M@ zfS80q_rK%!jrf!JTd7p5Dox}=ARpWQ#=1{}TK<;_-Oh;Wmk;?-Kt%kS+p&M^y|kM+ zsa0#$s*Td#9(L;OjTPBP!Pm!vtqgJCnjv%&<`4?Ym zP1r%dv1^Tr-KaWsr~XaFuGbokZ>+WSN!9<2dks=qke8lXX!AcFU@X7#d)^`6qJ1E4 zI{C#L1-P(7e4|1BKz(s4j#F|D%IaN|DyI}X_!xMjqk!&p;JaWAV3WQ-KI{hvWqx1~ zT*;Z3R=jQB`n`w4JAX9x?kB_E1UaKgMiJcRczEBLIIYU=Rd9FXwDz1`=VaGI5lRYk z;)Ytf(z!?X4j#s?mN+O!QjJ3G5zgno>J2)d&b*O7=pI%})hebH9jfp0+K_Q_~BPE)maO=jUL_=bH@ zPE89dFXz^NpmUtwA^c*mCvSQTDGl-KP-9u0hfdE+NEqk(5%+@bBJhu=fK2*b@9LnO z_^vVJVn~*8#3PO)HvAh!)gHeel{nG)^Yc@$@Jd6T^5;N&d7fQD7m? z8KAN=L;)Ssg|&C>-Y#VBP@)m}mX*DIpUjSLI{QH=QfUH%Zjjk+4vt1%TM4Yu0iYR! z!DQ4iyBEs^E+{>$L&)i`Mu1b^zCElqD>ZcHx3QFyj~9n_qXIojPtj68emHvP+O7XQ zgwD{<(JUX4g_8NNPC9@VPM~;jbl3KKbP-NUqUa8)zFMUUgfglm>h>xQh)Jc>X;hlk z22e^T75jpX7E+VcG6{QBGEPhu;s@oF7CKDg29eLx)sE?b6dJ_yk{3)92yn{`Uatx2-Q;con zL1)loY{Z4~2W8`P6v*-Et3m(DzmCJf1?h)=AMJy`(GoxUHr?y*V4B3jA*G ziLoouv9Q@aJc;bmN3Y)SrtMCqF}AI;WX}eIPP^A0%{ve1voc!tB!DM)G#k)EJ5P1O zA-~%mw^OG8obMISX|SfnYBoB(nR$lrZW?!y_{3M@xHU6h&)oOZILpaTyq%A?bp595 z_uatl^6;8Hx79hP3G#4&p5)D~A*hb!FB9rEtXp$06j)@Js3kNXUA~}e`hr4desoM< zWNo%OmctIxou*4RoZqXO0k4YTblX&6#X^}MotST?ZehO9pk5v&>o-xuFyo6Vna$<; zqtY`#*6os&FlX+LjtHa`55eF5FK@H9ztuvf!Ic$;Ku8BM}K!;zd5`3`Q>(XJIukY zj(vD!d7ruwZ=^+y6vus7zOl_6ocMvUuTKE!haDi19<56x%4DwbdNg!n+yAcG6?Z!w zbXV7|G>H6Q%mpH7Xm|#mQ=lD`jeO~Vj)PZ&+ac9lFLrqZ4$4XWad0vi3}g0JR$rY?d_%XK zk~PQQM{6hTFEh=bN9Rs@Gv#_Ysj`fF!nG;S<0(>FIa|a$hpN=9sc9*~S(x5po3AfzQF2xIPs-ZU`~$%J$OnurW{oy_!fa3X`3#&hlhr3Z)3NAuqG~7t zhZRnzlcsqh`ObUo&Zk4T=fT=5o>MDh+%87`@YP__A1lU%AF>N68l+d3dd)6ybQuhK z*d$HyaZ5|e2Be$yn0#K0xBMcnz2W%g5OY6ON_@yK$P)2D{)Vb#bbHL?J@Zt}&S)+h z)B7s#K{>6Z4bQerQJLo6rlF@eQK>Y>FvDF;1VuWz@*0K{0f1nbD)Bb$z0Ook*iGe5!9tU;Azt^m1g~T{QmXDf1SN~ zxjh(eTf~5u+Z8-~eE<67&Fl9^?~t->y*@ra6VI0biaV`&;*Ia;XSD9Mj$c!*<9BB# zFSoJg!jfy-Iyt&{^ZwO;ar(*WDKd6C+t%rssEsD>+t%5Kqo3X#QCUn^MFn{?`fcm{ z^y7zDK&yN+xb@1$d4+PoO3_7`02*k9SY(f)$V z9rTHnSlF=lE)A8KqL_xttM=u{he=W!Dv_QvRC4hYJ7vVLAaB4PwTFH;7{d$ncDFMa ze7eN{y z`~uQ;u>}fmovjzsyK(qJiCCKay=^H|7S9Rkz z^VhcZni_FLH-Ok-Tiw=cYE+Y0?W@~*O%I$BtNv;06%6@nZN1Jhp$Ye0v!*ln9&=jU ztT|09eP>po9iP}xFIjwZcD0-~d_f--uUEB!%N_yjQ2+y&IZ=l@K@H8X=jkv+hpTCWTiXo`BRw(OQ*&1U!zokva%Us@jMmrt&MqHtbAo9GtzO>Dmo0MccNfv{t$Vn*2;iHAlSMK9qqkC4gun zO)XD>9k&lfc*ogGQ}n{^LlMJp_R`qd=ss*8@}Fflc}P(PGpOr^h)>C6pf@F#(E!n0 z3+n+9O;3rKn6^gbOMDv2K)IOd4qb|n7nL-Na{cOeX)TbPVb3gh5~;)2M;AxSZ8{Y^ zkWk9uBnvjLA4U{RKBj_VsbZnQ8C|(zK*;jjcDQ6v4AcA@dDl3CHW=}r7DIU!p{gG2wk-m~1 zY%IYlhu7{Dt)4xZ2;saNmZ7Z^}R>$y;qV5LSYf_5==@wye&;z?Rb=7}V0b z1VdYOuh7(|NpG@am=w-X;;DNGEzahlLS2KScg;LX0RD0Y2?B%wdE1A-epq0LASfd2 z+xFqxk0&Sdjt>M!Fof_~#rPoUEg;e%O$9T{IBdyrM3j$@WvSCn>WK8Cy&M=kX$dsb zBB$us0OIBy9E@d;BuQSP_Vcf4#;`!_63I=BpMMPvm%+9rH>fIc6_4GwTUp}h%%#1v zSPtgVn6CM;e8dy$^QAyr=>aJk4aOYvadvebHc)gItzJJ=J&=b%iSjeRqieLBAJM%EdY z>A)>w`dozJh=*q|9HFJW7ZyTp|3Q|E;!MYaRj%S+SXJkRH5<=)J+wf1wF6olhq)Ty z;`GcqdGpJg6YJIK`-=~!Co5})3v3L$5KUdY4ZuKLAGLkRdkHTr@j6>Wpo}yMv!$DX z@Q0bfuvwO^_2LdG21PbP!i&s+^p_?i5A?vsylHh5YOe!$X!EYO=p7W0gY{caDZvX1Z={*#5H6{qU$9AK*5Lv2^=`hB zEL`|!zS3H@)RZFN9wOq<&PqfA7|l->g~#%!B(pHELK2suOcP2|D$^e)7$?G6$w72x z`OZE1`?1A&GIXi+^P8jBZ$7y1PcPoQ+zlE4 z=~-8k5l@G36laW>dKg%`q`d|dl#`C*cww3DWP~0AC^)u+Ut+ipoUE^+|k`(#%<%0$&pXG=J|Nlt+YBS{V%rvhw1ZkXgW z@>S#}AwC)VJ*@dD-fNC>#NL$K!O5Eq;kZQH$zM8Sr@A1{gR84-ieCCg8LS^sOJkyah~7$eX{?O`^FOOz?me7JE;)EB2V0vmi+Dag2Iz6 zIkWCX<{_WY{+W?iN)$~nzVU<6yJ?W2dxMtBYSV(?>o!QMq+_noX!`WK){buppw)54EV*2i;pf6zYH5G}QAgs|s}v*0*Ws=Z{4S{m+|*dhxZ%e{UM<#aAX|c%uI| zje`8$GbJ}_FK5Fjs211s-*42E#x7v!R=nTcFwBeV`G0K|=8fX=zG2eRC_azeFlnLt z&~t39O3uIAFli~STgsb-c{6`MNAdh`8-{st-6EqVD+|(`zHQ4~rrOQo)5y;o#`oeg z$p79j%!^MT)huko2$*3SNx{N5%@Af6IEoS6_*aWtCYRb*Tlsx;Ian{#o@(#qYxbLV zuvr4Wm#{Rk+isKPtXwW5!8^vv>l0V;C9_CBsc>!DLhGOpI&lH!3`7*Vj zQ_Y`mEf4dhN=q#tbM(&5>YKHEO}Gr4m&)e?8>P#@d8txe&tEMs1Lvjkxxfm488|PM z&qchyHmwg9*pglbpO-2d1?H;Dzf_L z&#M&X8)<8+7FZl>0yfdsR;7y{a&}X0aj%pMzp0H{`c$j=gQ|Bw+%TN;hg0ATJK`qk zMO^2UCm}%k7Nl(y*7L5XB&dQQJl^nHwo)a>x%jISYW+j zU9q0O1j0Fx%@U7BzMjSzmW6R%=JL2&AQ(?Dx!o|F^934r_;n|pSxuM+z4vo_-5(pj0lE|KqHE|1;w8dZPsZO(|Ltzi%@BRw~t+N~0{_R1g%vcD}Lh zr@&lV(gZWl5vpGrz{ds1X<4^pAGgQbP5AZKTD5AU)UcgOy;6VbS&yqJ=fd`;+bhpi zaE3zEshjmW^>Mpdcg(+(M89wBTBBk&s!rWOKHF(D>~F0440X(%RrUW9zjK2?LZ%|D^xp`XA0um1?W`r2jX+`!0+j>HoLAL3@1n4w3X<(KTzOyM>`f z0g!@k)Oe1UqW_(0-EJ8AANlNt-N5{BEpxKJxc)Dft(Ob^wgADn=mR%=Ts~O8;DV6A z`uXJC+O>Yh1tPmA-ksO8&L8@?LL@-a)o5^Qy?SB2`u=;X-S1kb2sicW#JY1Tj#F~1 zokndJ!AhPJ@L#-9fa^o{Es;i_UJZs1Bfghp=hbuL&E9J@b}5_ncOTI`?_c2RlTL|m zHTgi<1M7nqc%wV7TOu&@{{pmcZT&yeoI$6JK*+Y$53Dl&3=VxXz0|!9f%}`*`7A{MXr=m!13j7vZP3 zC#OdjFDvGk>g4p*f4;1iV9v(R zNI3fN>gSgOy7VRBujl{u-W8dhQmtXv>LN3JJ^?1Xw$62NcJZ>08)Ec_cW>TFyeRkU z^E2b^?c0~tW~HX{o_xG`X*VhkfB5CihjXy+rQpavx2^A;qOamE)06}bptbeoHFo~tHuwWjB)OS~G>vo%DvY7S;ik*$$~ zT1!^y0J$x{Kb(vO!yvCenC~pFkuNN-KWw2vbRiPh=ogaM=oc1Q4d}P3yb65=qq3}%jqg(Q3_QXzgpMxrTMVR@X`MquHDx*luomhtEdpE$cMNVQ z++i_MBc-r(qm>W|i9}j3TfPWB%NNOFdW#dPznK8(wsP4|xS3tQfA<3o8q{SFd=a3LtNqbe2@FDN8z_HsfPXD=t^Ru)wKr69g6>AG9ZSh+4N``A3i{XT|Mp-x2O zS_LszO+?}owlBV#eF*AV@x`uFCwgxSd2-M{LIMA+LTP^Ic1T@Asv?HoAWfy>Xcd`c5@Fy4-I>m(oyfFj*@Ky_D1Fe?j;R)lEV0m!I_#` zotj#knp&Tl+L)T!6shS1wIW5MI+b;pU5Sv}VeN&{1&fg3;19%v!p(?&9}6ek{`U{Q zo)FUke#PyJ*M5KN-zvl=A)|5<@dJIFL+Vl7es&3jync6UE3Vbz?}nBuSeclKmw+y& zH9O+Zb1{FUj~MjmqaOQ=B-WifGm>PKClxwFamsF#CPg|!Y07StW_3D4an7&GYmJDp zzbFi|OahLWwD0IV;ysa#74Xazaw!E%j>bE&QCTH32CS@U?IRGa$%7Khwx+KWG6nE zQ@A71W}a%zu2MSQ4wQziUb!*NA;8II8&zgE0@rCV=W0bbXYj({oZSdn1WXl+u#IWr zr9Km%1?Q3&fO*w+mpTki7XAQgO~AP7K1ir!60CHy}&b|rVC z8xbW&vMGcRt5|f2M;Ld^X-Qe-QMx{x6;^%pbHTm_U- zPKq&!tq|RSmRWK2#;XWD)!k~RX5z&}UM5~sE7tBVBwkOX>i!PT>i_SU|Ex2I9RtmSqzp?wPpt~pS#{w8{SB%oH5aSc6p!VF#wSYicAb6wtFap zKmWwWCfR8122c0Z-0(fyv)THNT$G2+_OQ~b$zzIH965JVEb7+xmfd{TZPM;|yfj

    7b^8P%3b;0fU8o(_8;wjM>AKmGt(w`G;=LGGi`-O zGuN{-(}s97b0a%5ZHq@UH#u|qc!`|ac#MMoQt#5BE!mx1YEmV_Wg}#s8n*QgGBOF1 zf@(I-L4zS|V@NF6E6q}2Z3PR1Ai1V0TAeB(HnkM$RGl{DN!;~2CR(ZaD##dHGlw}- zwz`mgXD8Ohz{3WF^ttu#JpDsgCY~Aso-m;?loaS&{0Cpcd)>Y2EmxWoQNP0s2MyAC=>tlaJ72_R0U7`q|U@pYZ%oz0_#J`>yun{~h&W z{yN`M{J*DpxyvXuyX#rN$84htqPM8X!IYDQ7&T2d-C{E8=i{}h| z5sA4*?e%z0%>}VG8@hMBF0DJ=dP6ffC5gdME7rs!HRP008FqxDq()dOG8#F8$))JC zlE{cZ=3a#szfQ&UAST*6gMJsDb%Va^-Q!AR0>{E7l}UtSy}aiqy|duipEVz<7RR*vP^#liIyV(LszqmovxA=2!$a!r|*R!(@{H^}oo z!Mr_D&PgjrZqnCoqncLEuE@l+g0|pV!|;%o?WGJ$&R)_xpS&A3TwVuf)Awq4`e>Nsp^tpfW9kM;aJO;WJxpcVbn?M>4I+6w;(<`l6W#tL zjg^c5ZLTHAIwgih7h%6W=ZNP*@@E-B3aKY*_wt>D-9u>@5VkIokOwfHV(9qbkr!PAxom= zV>xRgXW9{&Sk9`*35xSzau=wzaBwFtC!dF@HNmL7oILrgH8Ic5$+^d9Ho@MUj6A=p zHKONr(s;xNdupVLb0G48rCI~)i=2$2dFuJiBU-1P-#VgksDI>CE!w7Dplz6swfv?b zNvnx=5%VbJd}%|ubgC{|=BXzq0R)G1Zb<)qAWSrJ9Ka+Pr01y!vAFVxCZ_?~z_i zFdjJv>kDv@RvelyQ#nWz6rIzQLAL2UZavsofP=Iw(|noAL7L3zoDmKJ#v_-(=KLJw z)xGA+G!F8lUgtD9NH88b2U`npu<%I23!rokKK_wpZ+;H4ok;U#nhf${QRg&ekYGG= z8MG@4u(0q@0+ULHB4oSw;~q-v1y&_&bJVgmRSGl561G4;auzPIEMd!RAr`XDM&~p; zGQoK49eIIu37KV!&1jG_qazcH$Iik97A9=v*RnOOBeOM7=QO2|U_5pfF0eA;y%5cq zsVvMKP6)6aq7@Pm=SUPT<*1zV;MMgmzt={x;3K5HAY z21W*DBZJs3|u8}jD1jK5fwov;361;vlV6hPx z)KM1oEG7&^gO{KnnnOodiJd@3s&Gl9co=w*;U_}REOFcrrsuQ+knz%LA3z;-WQ+CE z5M}ylqY9`BL%FOc4K)?0!{oDOLfY|Z(2`z3q!N8v8xFY4u*6or^v~l^4S*R6gAh96 zto8^D5h{ie_6-Re`Vni@-{rD7b(^Fx%h50@97JA^$)GvEeo41z_Sss*Kri8nn|`bw zZJ31-lC&=RLM`JI?+nys@`Sc{lW@fuy!k@BsD3G4aK-7oz;-4{EB)5mV{2cE7hG{V zFH#~p5KmUFz3N|z7hG{VFW^uvq+$WN;1F+_U79_rGXe&M!+TQau|74_WT?flIiDJM zMEThfn`6Fp291Wc221p;EF1!3GZQLmLgo+v8_P9CQaERfdTS7Gl6gXMl4-g;J8`6! z*LkEzh+_8?=Xe4XNftQF+z}~aO^)ov2a_o@vj0gAjnbJ#(KrPfJE`PAlO8V$T7)H< zt(x`e$%VMCNlS+jqbfaFZ!V*dMcHwXjhh%CKwWH34 zyRZYutkM;})re#z163j`bIxtBccoVnkx|)ho_9Fj1-&zAWQIP)mR_pW+;{3p zZs_xEsims+-oDdHazp4moP0|!RkzW?AvaR`P%`4`PPWoRxFZpfG*jut%wZ{}6fQ~& z4h2iuj|v!QFbNFTC#iN>;XNx2XCODtR#+4Y+=NM7i!p85{5ZyxIc8CS(8!>h!l>(#<~9Nhk%$p$fHk^h`9Qh#}msg;`lyZd3BWi#sP zvItepl(cNj)eREo4MCk@0?F27X$6%XWfuJvP84N)4Jostm9mEf-HMq*LTH(qF4Y>+ z3g#B;2c!VOLAGD<9~p+)=(ZbsrGbrr~VfeDPVhVU`G zB2=Ul*cc-C@W?Dg7zH+m2=bGfiHNYk#t^|rC}ttTD6lz1kgw28M1%!4hY0f4nTd$7 zz{U{4zWlQgVHDULBEo(;eJ-q2Ec@RJsyBuR_Gq7_C5!@_Lqyn5i?swhp>JACg#EN2 z5n+LiX$khLo<*FD0-Hm`tR0(Op*KvN*td9=mM{uzOiOTJgqes4HNoZ(5%$w!9UHrY zYKSjLM1dP)!VRI^OChk*$Z*?KHZl53zolO@k+#S|`|HnX7dON`CXxSN`u-bQJ#l3F z%xe(h#a)h_1Ry&Zd(_F5wqE;+b#eh?oUsa5H!c)MkXOT-jG#0}uOCHyKb>e)SeC~g zPEtg}VZx4-CLn2LlTky9m&G}vXuTBpBSkRN>PvcIiTrDhi&Nj-C+}OcxR~aoEiCLPpFnT}Zp{WYuIuG}DE& zCr?%(BVL*=q@8-Q3K`MZbRq5ElU2xw^`;AHSD&mxI$oJBB7J_s0z8OM3%H1)VICbL zTrpnH0mKzYf9Cw)zft+;3+vBV|1w1PpZ`orH+n>By3x^6(~bU{nr^6t)O17Hq@^2e zla_3>cUrO`Lutu|T&5)(vYwV~^q;h3qfe$K8~r>jS+I@c=A|WT>7$F0mB1*g5J#he zY#EM8(p@Q;m%IUKM2dLcq-2Aakjkc=ZIao@4^U+j`iFxw#}OnaK$T5s9FEtV$VRbH zByQS;CRr)D|EX-+XC@_^L4tOYNoFI*KLt&D#iV32NYHLDDcKAX#1P66pW~F0r>Uwm z^tMWZteISG|kYvvpDRRh9a1PVZtgFbT-8EufQ}%TK7fo`X?*9t!|7w)#txBb~S2x9E^%oI6)$m0) zkaqu9v19MWuL7HX|5v5%I2GgmulhF?r{UmAu&4XK)*ul}x&P}IT&5COKcAdiyVlSC z_08^ycjxu2^N0TU#tV>iH5%MnuU=TMzW?58!|U{P==EQnSa(jvaY~N0)2QuYDe;`{ z61x}-de$%AD8ThB)`@@XkM}Ly;Idb;9ZG&R7(R?p#n`gjPy7tPft`jqbc|i3;MXvITxyTmNtD-+Do(4IfL}>IYUCe}=)oCd#rlv4 z96`2dGNJT7h1Y1|9dQaG?`(~Ud|}_c$QN>HjeO81oXA)0^cVT6{9z*>Vc5};7$OPU zvoHBIJocB7Mm6!pUh>i_Nxr_Cirzs!ra0yDk91*@)nkdef$#)3?N6Tdhd;it;Jy_2 zUC$y^%!|L6=GUjH|9F1a26;M!%$XCVDNX;fk z8G~brHPZ9%JPY>=-?c|RU3(SiI*A#Y*UkH+g6^s=Otaf0H2k?`pW<@?K#^Ghy%x?{bf%V6Y z-?_2cBhMO6f*Y@k^zlGu6*YjYv1iFDC|C_to@b#&iK(F_dN>HY?zKmZfI4};b%_jp zcGIVW%=kJz_(`-Sa6(En1t}=)V(VWKoRCx0LZLHkSfSKv#X)MNG$XXcE~6F=UANJ? z#CevpZ%t{z009Q|(N>|nK!!(S9L#^6Wn#~ zjm8j}8w`3ZmbTSlmDzdd^gJH>R1wjSP-p@vA(zWMzp|$l&kdeVsZf;}>Da=g+Wps1&JI6?xx^gB5YY z(@#?nXst{m`XQkK!mM%jX#0hZ{_wQsT*I8-tYRbVKTZP%82$SOE)0%c{l>aC5na{u zgyj7%Z2xhrTUyzK_MdvG^3)4gC2boAH`V?_+wfVJs1!H*Xj*gZKQ+7AH0(cB*ng_E zit}Xu(F|PS17;`-m_<;OW`xVM|47ph8GXn$MBq2V=F<<#_B4CXv_7--Z#%>GsD0~U z`p;9H~zR|Tc;$9*8=ID=h@*^GP;v0xK=hky! zT9PYxb%&IyRQ%Njr>VI{u%byr)YN<(X?QX-{T33iYwuTnx9D9^5zi(`(%B?eq~V1L z_>DHd1d%cu-pPzqF7IaiPH;mdmRD@uNXeov*NQTx4bB*bmPjI{dB)YwkwmNQj@dpS zOUo-Z!#qguw#V%(;FmeYkv^^XD5p5mMRBqOS*eZVUQVvCBGMTW&0=N<>5@-$L75^w zt+8BRgHCBmDx2Mu$9>GyC^#?Kk&^o)O(vyz@1ns z&@W^lLHmwHqG9Q1wJayGTq2Lx*SP|>eedHR*>EB|a;bL(EzCy^D4}vbevf5SVx++7 z_hh~ZI4NElyIX-BGys^SP};GSm}TV?Fgc&VZh9a65eC*|d+IORQm2^y67~&rPZ%iB zt(oayC@D=Led@cyR~fOw?*hMo_`;39^VBx}CSw4WX zX+a<>0|L;;qWrPCq#j7&O6Vnw;iT)8Nuk*y?v0vJBXNhy(p`bnd}kRCrrFB*o@WTX7M$hXgb(8rkX-Xm92knb+8pU#+}dv39Dw>E5oe6f9(zjw41T3 zaQQ!~7{2to*pa$jedjpA3Q@82H(RB9vD>-fY_clLI&-Rt)V{R$}obhB2`hjt5Lf{ zD?3@vsTC`TriN+7bBWiyGPKS{gKOAYZfUo@7>t{C;CB5xc#^o65AHv_(ZITD_aMIo zxYTi}wBP4dKd_j!oAkT07wn-|^*axiQ;ag0w8rivXv3f29q!Qn$WMiM zG8ke`AzePK^P%T;-Ba-i`_6?RpfSnOs#spJKAlhU-ZHJrg{oBc{tNMB2f-z)g8C;B_G?0-w%^&t2ipZy=a_*r} zaf!siz4UJGtoM^%?{{l=aQQ!82M(aWU1J>f;a@fDm=75LJMq0S#{M_&U#rPc)&PI) z^=a_I{bA(r>cX+E^GVE9L<2AyS3Z3DW=5oR-|>In(iLE<8YEeNaz*S}8=%3_+!#3j zDac)kNwI(+T;Q+y# zhW|O*jVVdO}1) zFr14$L8fJ+=mN04btfGzI&1z%W0~CuT&KlTz}g~Hz?}J?#;b%;*pxn@h9c8lB2NHUVr;l4gUtF_#UnDEfiWuEo4Us#tftRV)|#7u+F_r@n3 zYGAh;;p_n3k|LW*bXsBJrJ7itu{@NnGe_qoYO*xM z6p6Edd*NIq;{bfd`S)}w5&n}jCuYROoR}Y#_b^S#LN{mmgb5WS$e73SM49e?$($@F z5(%*3ARQ}eOk2gpG7-S+x29&)5^_?WX@ajrm7MH2hv8&PVyS$fjZ|a0EK{>4%bd)U z;H|BMyK6ebRkutSo~LJbKT1zmG}R8dTWVKN^jbJ}5~=!A$3qrRzqWUHk)z))`Q6s< zL%h=r`8hRdC|*xzj@F^>6LoCF{J#pDPxuq(|6u=lI{%kwuBCs#fEGLd*DO^ktxChL zJ@v??b9?gu_6FDG*bJ|PZ%ajV`ux9EtJtg0ySLv{qm&$$EZCV zdfjrbf8VH;24Q{A(%`>^k0X1NJUc!)_@U zKeKjD{Ql(Ly>B(#M$J-=ll78~W8S-awOw{C@H@{Hz6^g7LL9 zY)<>uAh14OP7tZY!ePxytyHs4F3!{P9``XTgwNx60GG^XWh_+62oSOhrtZen&+e!D zadYq5>pa^!r{*GlUV!hSMGBTJ!!M8>S*gjAtgIW2wT}oqUY|_H+bNPvHVmz8TzlWkXKNUGJ_8ar3*u z7=+yJb_Rn_m-xSY39rDL+xF;FP!15frHyUB0GkGZ=fYEWCQ3T(t-Og37eH~c4!MOXf^ZoaBGxB(Br6W0R58LI-b_WM7yXE1-_-4>A z^S2VFtNdRu>R7ve@DPl>+alfB?{|6=L<*au4AnRu2BL?SuRERHMhUWBmLSU@tIS`l z-PadKXGiYE(TAVjT(~d)etdHL{_mtzl8pvkan!}4^BR|s5HAr&3f`*E(%G@rHhV^K zfhdTN6x1Af(zu&zS zW5^HVmr!rtUr+pQyAOjv7vC{V08Z&|3wSK8kq{ZB=2@85{&{-JrxN zau|?lB}^A}@|#|J$g$42oLwn#C+4z0SSqX=0gg*|(bYS_wgjtam>q z8;DdlVz@p0V>7jPsZ_GIem(l|{`mb*dUo2}t?t#Ezay+5hYi#*COPC_o5HeUWX8zv z_4$m?PWm`hXjm2l^(Bt~l*KfobhF>sx1VnaPUCj)X(KUert_%o>^Z+%lRjqsT`P3t zcqUw&F~46#C=8S`D%R1|@klS)mMa6Z3(olvTcQmq*(PSUs$y=v1q zoS|2nrIyyY)79!;soJWhsnuo^>Pbw~!og0C;D{fM3E8t>_%z}(5jj)LIHKCwuI<`Y zj4sEd zFj>+Eu{hje=~yZ8cB8d#Hy3W*tmb-DY^co023Wbsba9a0oECcYA0vP4 z?PR2L_a>PZOp4i7g!FS4;C}=V9NV2*<+m@SaOL4Pr7x{@g}=Xt`B-B{#>Z9X+#Tw# z&H4JiGpkS>ZxH6^&*gv#-NQ%uh1S4z7KpJQ=-CEx9`dB&FRpu9wSA|aXbXh<&<4?G z>MlabsjiQ6=hyIVVp{<2Nx(+OrPpa=MMQSWk@qaHux{Aj7kb(fDsf{yOOcR6LT}@#=P1ply z%~(sB!?YT(nlMsi@1Xlm(ui3dLKun+D@$xW^-MDk@gT%iCt!edWsosg$~Xb*RJ5e9Pmub{_heD~)J3iSC@fX<7UonU8+OU5G*cUb9M}~5RTQp&v@a2N6p=o23DiZ;<<+>V zXtD|6O&hjUlFTq|UK(+^3f!^{VKaT0ez$&X_u#cgQiiySa2_JZkRWHezZvuS=6>}# zTEeLtnC}D#V$T%Ob-?DNHX($xB7{j-Z5@+ZK*Ut?Ychgbrpje2Y?Ne!m8Qw17TKv{ z*+OWhMgjeBH0s=76Rb0y;6hO)X{i|N?vUcP_FHzqim{+8+7_V==xLD zrP7rJ6;U0BBr`sZdzRV*QA%GXG3P^EVruZo+1<5{$t-Y-V7G*fJO~@d$vuyJiqT!&V*s{1GTv6OBNdrkwGwTm5nN&)R4`{y z5F4ZvH1=dxe1%JAae4H$g~$$;iYU7?8VtrS>F{{3-)cQ4FXk#u3UG@sMo7GoBOx|S zt@d5p?{NrjDvsSdY}+A%d@11uTG?$iA?j}e2sQiQ3iog6ti9uuYB-8o?_>P-?mGx1 zjk~n5r6=6KEbMr5Kvc8LzI5+K01Cba83Q@Ou(x4Vfn#r_)Y{v#`@sv#ySl;%Ntdp7 zyA9M2eT$mR+oV}QjsY^=npD_E=tf1n}v|G#Gd(8F;tc6uYtv-6DG@!5-vgE;H8 z#7cphK7#&6UCUy*u+U0dxvfMzTt+hyoXE~gID|$t+>!>bIcNWlp3>!wT+QeT#~3}H zMlN}xGt#b8MlLk~rOl$lw8X$wc#;uoDy62EIeCo2w0;sHtx5fVxHw_|+YE)XzWHs4 zVigj41eb>g?0xz0a)4{I+JeKj@|Z&9L%9_~c&G|Kqv^SRV^5xEJQr5q^y#G!7eBqB zgGUW9$un5h8DI&cs-1eB;In<&|ALPSEFOrTLZgjbl*XXzNf#fEQtg2{aEyn&qGOiq zNONeQnspJ0)+h0(i5X;rZZ%-f-1n;i%#LGz z-wiZ)`m!{3DDYwrfDQ;q52WSRz}EJ~pljn*d@7|G(;1I??o9y9!%1f-Etu+H@hU|T zhgYxJdH}@uU|&)SP0p|c@nPE}f+@X;~4AJ574Bh?<-RlE6ko85V^)tMUy6 zL2Izt6)u8cOf_5RSwqq&SKCuXrz+e%n73=`M!5*O22-(a;E4c_5^1Ky+MM&%nqKu! zN4Zw2SJTIc2+ALaxZIUSNgQ>;8B{)2pN4K#4^1EZsOJ zhDitOFjtrdW|0Zq6xS{iC=PeKh>@^5hh8mE9O zh>p;(-u?U!HN{b765DbVvBT=H4cL{ZjL8zj5l_VFUfU^6Z91ofnS|~>(HXZ58Pd%@ zt?g=b__v-qA+fReycmqJ4v!;NgJmJCIm{C|MCX)R#&k+#g7v{TqU7vLwkpM5?C1MrS$mEw9A?PXL zYv#aa#Q&=%*(%G&`H(urqDaWXHK#+6ihQ2me}8ND0H860q$mKUD~>S`K=<0ackiip zA0)y)@PF!Wa6KtlN2ku5nDycKrv5O^wbyS{e^ToIwYz%LSN{*P0IBlb!~QQ(Q11NN znX~$Qentfg&I5|$S%Y0gso^u0$TOgoSLgCfv&XNF+WL`pyPQv79pPX#e|2OWo!8Ew zHIAWtKpCOmoa%IKzNC#|&(EOX@q>nUB<|JDP_#`vi61*OuSI0e!FY$lvS8@8N*H*L~#gb>;VPK;P@_{(FK^<>&e%x67{NZ3G$v?BU`)7SIJ(yN-No;QpDi}35P0Rk$FN#j=kNac#~(CK za9BILw5C@uaxcc8tkL;dLpj~iFsz-uV>!KOARxT?8$%95Z@w5b2fhGiy5yHl?HK+(<`hB>2(41qY~(opJaC-x6#FF)KHyRvjx?%6RmZIt>^?nI ztNrU==oU2q@4a4q{zUs%pP$i_tfJPdBl+s127c)N0>Z<^HVm}hEIQJ?jgZ#0<@Yu!Q4R z2ulb?_W{pAM%FiBO{iypTf8wB*cieYzse2S-B&rEtd1FrHVxnM24v1kgjhx7=SE5(V6YA*c& zMi4V7fp|cPz=llGN`%pq3WU#1BJt)VYVm(E=@9bsxhR#*Kz&LfENmi02!m1)EDzI1 z3Q^*DE`));OPCDo?!F)wirFm7U!GEoNFzoO!~8^OWXyFNaQ0#27*~u8bSX&4;&3Qk0tV*s7J(MHx!Jz5Pc@qgyF`&D>9Z-!xMR6Q3WETL zd^VNRLYR7<_{lID_*g$OK>;Hjgarf?-HQvzo1u!4y-<2+4w~r7f z9*9z$hzt!(te0X>w0MCJmxoq85Wd2VL@)dzGC6y0ShyrupJe4=PJFQO*3${d`&Kn_Vkv5LfMM) zd@F(+k{+fmk2CON9$e$cEf#3w$8FznM;wPqVqz8*Sd#DeZ`5IB^zb}qf8tVhf^>5c z#M5Csf`sSSC$d>vXbHI&IGj99iyudLDrLTg8|ox7adOC8Q3Ro1b>oQx&pZ{HkltiE z*6!!_So=AUV(MS4Eaq(?j&K&0=^=?u7PNOC5$+76cAJz$>&SWDvkb_Q7!q}!8o+*7 zJW;2M@fpVw%?Rz4LR1SxwdV^g`CCtr&p7MQP*W}ns=B#+*LdRNd~wO1cp>icacX3s zkn(Q!!6Z_J=)eXe%dadd9nyzpSkz%K5iV3tb&7PT$*d`;Ag)Bw;8*H+lu;nH zwTuMteJB_D{y_rsqky9TDoJL+$cIXVSQOJ*SSpGeTr7%{o^LYi`;K)*EGu$ZS5i=P zr3E^d%yMS+w?UV4C5dKTX@t&Ofv3XEg|Htnms@SX$6oHWC%jmcIovzVui>7597%m_LQm&!lIW>wZn4n^&42>}F zAgZ&aV9Jtv9QZ^Y+{wQn{2)ce9hzhc?$LU)5CMuj@QVX34aBb$X;65PL}A%oh@?wJ zsJK!nTHdIlBw2<8?y8TfXMvvvPU*LM7e-{O6?{-YpH3MRVPS;8b3jt$)snI;I0<|t zmpJk~Q$-a=!X*-CCkS~GHsdQSj<9LdZsZa8>mZTlv#|Z#@?3>Q9T#X`_djQQ9^j&m5D`j>n>lEN zgePqs&WXT;nrGHlnJ1$ax1oEZ<@tOIN&-qwJ_xBmLLw~|+^vw}OWgcI;vlDFsfSkK zJ>f=*Cp<<@31_%Zc5E!Ch<_egR2AM2Zlw6Zi3;DH-viqp>{3**Ri6hj6=`s=8NA4W zA|oYK5hJFAH-Bp}l`Wnc(A;vlLXtetkav$y+1(x7lt4a9-07*so>%C!#K(hvtoIY3q0;VriDV3&O-xP_$u z&*vK#>pRqcM67y=@{>EStX7T}M%91Ro4sbUzcEXdqvMBGG6bUQKl&51wyy=5SpQLP zcTB?w)PFS1PUo4nmod2(Ov0&QepDoM2&Ky>RvWeK}U&5+6Yd+EJ2#(V&hKSTnr9ap|BhR)af;g z;g%VS3X6PsN(KiJe|fH{8!Bh9rIJVi*a&X~*u=u0{A)_ZgBeiwe*89?L@=R(knxEB>c;araw3+n1K2^TYmSPdzNS5b{F3nSY3%0=m3 zusjLCrz?$0g`tQ8(K@W`agE5>SZr6P3^4KZIz{eg;8FLT zx!BZ;xF(_eghjb@VXXTFD2JTOPkvn{c=`o^3ph|^1DL^$;g6E$9tA{dBa;T!Y+Sdn zJ=^taedE7=GarA=KmqZQT=+kYuVjJ}9ZPJLNBhXUI`TM2yB|)7qZ`06Z66rl1{5?_ z!@^h@33Q??pi|b*MJ|^K(vqk^!iU1!a_eWv^gfld^IwZHBd)||(tK!%5tf`EmVw~@ zud(!QAQ@Ow2M z*~~~P`DXUDT%=;MQEU(cWk1HFx$Es8c1vr-%&1Q@@;xa!+Fn@0fBjgV?WX5Zxk&7A)k& z;C?cOR7BzB<#4ouP+!AvATkArm;rnCu3V5mjXk_;$bmIYY0_oq4VFmIf$U=7>1_Ujf~(U;OlaD(r8Xd`uX1{~Hz3dX zZm8N5i~QPpmUy@)a0f=NvHCPFid~P@i1>MSHwII|v67y77}$g-+!#zdldcN;whj-5 zJd>(>J&SWryf_zKitD;iX~#9#4P6^XYVaigfUMguVgIs7)2_y%+?}(N#TI5?&O>Tn z-CAY|$JoD5AzODy>d0+^wwz8uY7w#Anb_@!y+rz1c6}jI=aRMr!V^R@RWe39B-P(+ zHLA@=P=G;dvPuBBxvNp#7yA+DMn)ZYVCEXu#dVJClGcx)Qi0Z_Cxh0sIpUYu+xduWOgoejFuD7g`#H;dU~%O+#pDW;?5vmMd^)eit6J*5hbtw9z|_ zZIprB6}j6&O*4C0)ih-HHqOr)*K#*BWKGQ%vFlfSWsfWDMr)&Q6gl6q31-O5|D8pp z%$`uxTA4ObX3Ul=B;~8PL5`^^xzDOmMJ5RLB^Hb%$lVl5Z57$_5f( zv&dXKpLdhCV5z=$voA)VKPOM|V~Z1+G)uuno{kyL_@>Ac(FvnZt|aKQOg(oo0y36` z+|0Eep`S|)_LZVd8cI(Qfyj|3+ZO?QKVekJc?gfPT$PMvw$d&4f&~oBgxSfhaudBL zZPa$CEzhmQ2GWznfwpq|)7J1&vMNSAfezNhnhuabH@FQE#g?6@@RJI-0rL44qxkA)mKA%nI|ug2XB05Y)a(%I zS@w>k#OjyqumZ{7hZ}VR@AmbhJCi3`&bF6woPn90EN{%s_ohE>34qvvo^l z1wG$1st4y$is6Pp@8#w6T+!IJmuOK|(DTisdT=78P-+PDEb$VB({lwysp4G8#Y?`4 zl(xQB;3B6?2y`ber{{9YP}RM1gHEbI4w-HQCsGP5hCtVwc~Q?5Bc#%UB}YBqOlkyY zQWo+F!=A+rpbVLO(HpA3SaRHBaw=lfMgzGLDqa+N3F4lY*HOeR!6_MZdbLY$l+w(U zN5lj*7*^>@1$~LalyDQ|=l5Kh;O)}erZhk0fgaf+D!+$~Qvp3KqsqaQ# znV?gcFD>NB09mNQ-k3)Sb)sz7Qqm$d@g{*5$gW|?G2di7HQe$=EMA_O9{K$7ohZY$ zloW~4`m>A<6D9zs2zf3&iuh&NMq?viOuZ9j@0OAlsfkMQqr*ft5~l^t8PT-ZbY$e4 zH-LO4<_($vH=Q@AjvA*1c{*dLA(Iwz%Bfsl&rXzuT*k3MQ{cwbK<)^q2Dw0Es9|m< zsdBA~=|ox1rKCoT0i9{qfHlpjLB7!#YKX+RoI2GYm!Gr~Wlxuq8Zl;dCThUO=F}jk zX$&>mn~jZJ4%AMRpJG&W$5 zb83*AHHI49&BjJ9k88Iowm40I8;=cXi?cFkG1L&NWAcuTT&pI!Rk6lt0^FDyo;6PE zA7aSS-)wN?^NV+@VvExhxG6nat}U*UlRSnVx>!$?cYNgYnRlyVkkc%N26#^oC&v-94H7XGh>3ha|$*Hl0=2e)02#S(cW7ePrk{i3=i?Twb@7e7o z9~)2)H>O5W0wQ|Tv)W5e4m5vbauj8Wh~D&U_L7sM3Lz1_Srv1<5-}0ISrv=CB0&+o z$%Iq|TqISAis;R%nB`Roi|Ea&nC4Z9i|Ea&nCF#RDdGvPPDEftZ+ccd`=zo?1+6VP z8_f^3vuK@y^XN-O^rmOTmz)??361Dj-z&XbB_~PwVzDgQAwDqmZ)xcUX8LMALGu5LtfdIi;xd(%f*q;w>>(0 zQ9fzoIWWqKJldT{!YdoQ5@4Z?qdD^VHc4kM%7?t?t0*h-G06jQJdfIvs*nin9?g-@ zw^KSHpKHey-SnIiWko(FM<53Iwz97-0T$Xqnj@cYyL9%VTs&`j&WExhACnLehde5F zt2`gtN17v_Z_ji>KG#ktI(GSzLC%sQPc<)d$oaOituX->+Dw`wpKs%I_M&_|?>Q67 zihN9%KaS^7azf?#(2mj^`Fy*l6Y{xsIML10Td!2hG7rxOt=B<#S7{D?zCF|l`h5Fm z=w|7ySgKr^2m7!U8|^#*l6n0HgM52s=q3|1Wp*J@p~^hqhYZ>94%3|R^$nZ|`D|IU z^tLS3rOX3<$d+ZBVTdV!Z*MHX&+kXbw+Du9mfoDDGL(7151F&9&Qlcl`CSRg`(1=Q zmuBfLTBH1H4{*%7{MCVNqAJTafC+*wh*DtEtB zuSRz;x_{B#i|L(MpQL;(gGvZC$R`o9Ia}UdynTPxV2j6UXP4IWYQ9`uj6YeU^RtF> zN-NA}V|!)KXPP~Jb#%%Cfb-?RdRUyF4QFG1FtJzGayZdu!>RS^Xsh5I)i@;?0MX{k z1AfehqLdVTDAHNnD1sa2?nHQspooV-Td+ZxTf6`Ct!^Pm%zMa?a=cqbpPb@Z= zuA0AqY&7PM>E>X*UdeONB?I+*pU+3d(mQUbrem0jag-txb_p`|nY(7mNpx)AQiwbQ z%;MQ3h}}TAI2cT9XNA4FYG(_uzJrD}!~rgihpXZ3Wd1k1>^s4&hO_#7UVC= zl>0%Wt4&unCI-E$>)lqbWwz_6qS0*j4+E*(l+D)qrA4B(@pdvFuI?|_6H;1H(e%n* zSQC3@4MwB-y|uiVJ67Ep-C5)Mahw}rxtXhEvfd3$aZBdL8$3)HnOyTIG6?isI&c>f6_kM zQ+xLLrB);20IKzLI$WZs?EI%w@y9(l^^W|9r>8%$2fk_A>&bldMZnIdDb8uwTO~c@a=ti^NZ_-KrFVue0{va>GNFor6 zh_Cn2knpSi{}YxjOyV=z^U>GQ#BzS1{_qgGLTmdAt@XL!Cq&7Rjq2LC*;p5U?C@*q5^G&19Xz$=hpbtfGiTomN z4@Y;lb#IN?tDs^-_EDo=&)2h+$8%#&B5J$8LvDAyi{6n$fc?mKSzh;D@*#7ojYjkt zA4o2z_*tpr!%z<&yU%>Jgeag_`aik5wr?egA#^b3k>ciw-|Mfl)t%*Fs=ge~kUGBH z?h6+)QV~DAzkI3bwSPP;@U7n_^P3@tNOQY4N3{L*o43Ddm-DeT+3wXB&d2$Jy@y)) z!E&tCFQb)xZ~bn6zN3y@IIri^8yh}d3=`g$3kRyka4}rny`Ry9-K_mSbpEuL*7$?9 zS}&mj=yc`stuuY88Fct*xD;c7zf#IrdiKKku$ssVV}3=-k@rxxC&R_U64&3%XRD9% z^$0CvAHA3^CKp%yncpy{j5*+JdZeqM`UPBq_x5-V*}f23yyo~OVCXdB@@ey>W_v;a z^CzDYo?l%20FNAezGG{#y2ByT(6&Q8f}q!APOK-^b}#->d$*q6SW9hwtG&IxL`oIu zFxpEr+3P4ybx1L<-?(sb!Mpf|y7xl6=Fh#-{;#HMhGuFlt*v#m|A)5_?Qcnglg~4t zfAl`5t(L=?!~C!gM7^$^o}S|!HG>_PTFqn!Ev?pK2W_p^W(OUu)?o*vp}MVyYgGto zdRvXP42?Rw{)DDB&$Y8R)@1k<$40%`J+EDVM0);9?Y(?R>uZ1M4gFu*^Jcx-oIwfD z@C~#`(~gd9JT{y_nHsV%FdWkEP5%o{_-{_M6Z=Fvy8@%z6z9OhtL57AHGw`6(FA0< z#J9m&SR=-3x5E+ne<_xtTnl=Eukiqzq38kW|l zD2fuenS3gqiTo%1$(GS?^*ddoFM=5GnnxfH+)flIKmp~P;M$BL`hF;4&ju*>=Ep;X zjy&-FH@&NcC5av&!R|<6B#>k^T?|;t%o2`SHdejR;s;!!pvZ8&n%5zjh7|b#M<25> z5Y1SIc0zALMk$Qwm?0|I^Vp7VTnns0za^HC&!;ub>_y4Tw%4?f%w`c37I2oq7h0f5p}*)> zwY8I*C7Q&aOKVTG{O%;Q$7ajHz;>K337o$gck`*$@cGCZ@Lx2R!-YL|R$ztc>1aOx za)ZB(8yLcOa0h&G8jke<>&Y27i{a9-25>(t?S}zUlUDX(LNg9DFucgIKhGMUtr^XV z*0?cREQ0>ZI z<#9GRiULQRHM=TR?ua5385 zEGf6**zL5K#g2okf&JHS=HssgCuh$u4f-1@4@oK|=_k_Apm9J+w*G5T+MLv+`REXX zBw0}?3d~TfUB32IW*yw^?=;N_L0kf(=()>jKPcQEDUgjcg?a+d3?+Dg0$mE!)7Ry- zC<>4#ha5Sou7*6X7*S5Hzgp2#5cI=gl?n@aJ}9lseBEM2tFo~&#wF? ze9=sndV_!6cF%73CHz=Qax!%Pw8zZ-a7rzFBYY9;gjy0I>fx@Bw>w$p6NUzqj^%K) zg7bULvi6YRqT;r13PLycw+XOKIut_G5qzdUa z-bc3qt|ii8TV147?iV=NLtYeJZS(yi2ouTc zgAc)OZ(wXSY*Q^2rrQZig-sID8sYhv@{DX2vQ6sow)rC|bc(sr?QMldlGVYySi2gH z(iKGog7?cwFdI}(BDY^GXxjhL7|}Br3}%wSK;Thf8Sm3u48)E|z^DC}_X-}m7zQtX z{N(}9H5(#AC>teKCKsf;;;~4|aps1wMZc%$=}ak`hknQGFNh(_65fZirb_ zZ|{2+g~}9$ueB5Sl2mtsk5;tp2ELA%LiPT>r%X^F})Bn-lyZSA@Ccvv^`N zOW68ZmL|gF#xc+k$pP_BnmrRRI!K4!h0=ZArbHM3Sg0By97THu4zpQQoJmEBp@hR3w1<> z&ME?kuq!Y#6iIf7SLcGellk`rO8^9v2iPw+z@G3x@V9PbPDrvN{2z$sf_{_2Pkmh4g|G*8*@RDKCgU&{JG+SHw^Z!S3)t5fgt3U%_;{_ zXgGd)P#_2u-6k$T>9f5`0yH-cf{<@DGXy@JIuw~yAPAKTBMA2GT)_?(aS(+3qnRP_ z>8HsMgvwA81pC$wP$@VLf{>3hGX#mMCKo&`8-zJHL$YAsKB6}1kkR5W8-?Bi_5!Lo>IwQ1`G(_bSp$f?a0c~l&UwNpghiU^i#vrR|7*VU3fv|5K zxgDz>qJKB2GX;w5Cs`4!kxSkxes)a|3$%$R#ac_-~ zNv?OIy;NxU3AGDmG;3z6V4(g5yo+xy*AuKldKf$5c(0~0faIFw8mLmXM`{3%8btWAYD=`N@85eLR^3USB_7DF77diNwF2NtkGoKPe_ zWcHSiI55alh(rFl7~;q+1)gH$z$90Q6H4nVKXJOL9s-tT7(*Pn3&ax;2Mt$=6G|Ga z0C6(-2q>i{hB|WRj;Ekb$U%_q+bx}7>!y1MSc+r}d30Hi=qczE^b&+K9xE_>(%l5i z7am6+S?=d4=o54lWblWVZ~UZt3Yd#Njy_N5E9eG&1sQzw<)cr!vw-b}7e}8bbQg4k z?gG91&K!|WYKnAH3U?^c3921xD(R$MI26n>hJVm-MY*d&_$NRbxD%2|Q{eDVH|SDG zk6M>N_yq_AmqH4GiWvT(!cHWQW#BZtNTZB;U4S%jD5Q|4nBkvp(4kO?@Q+HI9vliO z#3^R@2Mt$8PWd&4kV4RdLm`DY#SH(T;VN+|5&j8`9Jmuwh*Qk)PcP_9s6_ZDKpglI zQixN`@J}!3NvK5lCqNuH5>kj$%ew(^Ye{8sVP+ebSu;MGgO8+ll~v%J0k(;h&ZW|IjLxQ23{% zgn#;QC>Ui7|DfRt`Kl2936KWvgk;hbIQ-KOx)drA{s|BWE`<~V6*2tN4>}YovHB-K z8aNbENK?%4Pe15Ts6_ZDKpZ#}QixN`@J~PJP$<8~fbdU%IB+PW5T}^opMKDvP>JwQ zfH-g`q!6c=;UAPjRJ650CBi=e;=q@XLY!iTfBHdBLM6gKDsl8CJP9e(DQ5hKTCR?r zN(6v{1N}fsthJxgQlOcsX#f%K;Fbh=jR3bDKBoAB+DdZ_;Y)FSqppvH&!J!~|;9p1~ zPcfrIx*qf{R3bbSBoCYmDdZ_=ct{Vr7Ag@Q3X%t&g%t7>G(4mS{R))`4+Y7S>NO~8 zct{U;4XP0y3X&&--=Lu3AwA?Ys6==uKp-RCYf#wm5ZbP4Z`BA71u2y7Iw)*-$Ot+Q zsu3OvQYhVfP}uO05%eEaBRmwOP`U%5u;C#i=t8JKcnG<_0SYB<&%Cr&*e{Rt1RNb{ zns$16dX9hIFRbNoWzT1tP8%WPCJIZ59|wal|80-3tJ-ANZ^mwg+!4{Lwl7+x*A1O* zh1^l2RR;5U=-9icSx?yJP{$UFf$cuojzN#LeG|U-uSk5*-pEb<@IVl$Pzf&TVI&63 zv5*A=790{g(D2Qi7z&TK1#&zNa4Cp}fLFXtaqvKfZGvKvU^aXvBq#FaW0kznR>CL}1}5rM>`ZHOF?1PtXkB+{cDu}Cn>G!qgOTZllS zwSOrAn=}rI^uR(a63ht9gao9C-66x;pSR|NLlL-lOPDdc|XqzR+BLQnB4vBQnbSx6gddP$X`GF&lc(gr} zX5Qjv%6F3$Lrln^>f?Tcz3ke~AKP|9ZEXplxPwzQlr&UEO4^jwmqpuX>va3TFmCM=TiGHBQ8sBc~F5|Jt{i zpmXY*E1j(*rE@VLw+b=Cd^Q@ctQr1lb{pg6=Yivlr-S)o@TkDCS#Ba2xGZ;a2wavMa0D*PeNzILqgx_3DN=tdH4K>oPEPT_wq z?Ultj2dvD_wEMX|_Hpo^^ppB3hCim8gZX+T&(Y%j zLkAm!bpeR^I+ltY^HXYPujfnaV&<#>#L?S}x9^Y0O)9*lbWfuS{B#2^^!5~Q!r>X( zQ(UjNXcLd?)qFYpY~kqrVl*FHaD&3dIvmUP;osSfxG=lnO~;R~=F63XR?w^ew8yJE z9G~hqd1EcS6KYA6XR(!N6D`S&%WR<~C-kv>TeoK8SYj=Q3wz8xVyC0|{L2mgHg2rh z=x#b(esLO(^{^VwoPo0#E*%TIvago*!vK2p%3e%th()-V8)M6{KhGMUtrF=EK$fC4LDB>8$Fw_Oc(nX}pe3o!l&e*A4GLDoy$9R;#_*;!o`-?US{Me~h*{!%mQ%`RH<@y^ml7_C5kqAiAC6--Qy?SPr)x7rGK zZ|9TA{BLyNW$nLChBzJ#Pqeuk33z^DpZuWx)rK4Vc~gU^z^_0g@T>Zp7h2@x<692d9;fAyQJt#wrH z{-JC^Sz0nD8rZaUx~2k>L;Pv6*85JquY-LUTRQo=4AWyZG8)y*>>^0*VjC?bL<{ z#pG9eHij_U?!E6Cztn!z-dpI5JbH)lpyo38As^-AyRdbibUneBSZG@5#^_T6CcJ$H0z(QFm6neVxMT6bWG zjqA(BY8#AbP$DQl>WKE7Ic`MLE?fEDBemI_M7gri?{jG5~jCkjGjnCW; zr}hL6mwS7;vL4op$=bntg}Vm64tqr1dl;>aUi0+UxxX`dedE;lg1-PC^lP{WvFOX*p`ZJDcaiKH_5lCIAM^Plc$dcCrhlRw#@AnG@Vvqc z3-LFD!Li(G4A(AZ#10?cU&89H{o`Q)=k#xr`OOerZ*KSI2%GZto43Ddmk3-;wtMx3 z^Krgl@1a)10JB!Vj8^u&^}GG~jxJp|ujkVn8v#@ZZQhp)M_O#}XC#Q5wcm%%pZ3xk zf3Q~TB}BVUS1#W=Q*rataOni^;_mf95wx;V}oCi9Ncy-P9b(Go;O}C)ReT|ERrNPj6ts!%+*9UKs5# z(tDW6Bo;Vr;*_wyrI}D(XB}g%0REh|S|Z8=^#KtD3>h7Pv2)GPY6d$nwVKHeT3W5e z4%%9+%?>(Rt-}twTCK|tdRnc=4ruOo8|Hao>HT6$6kV(;ph%e95(TlfHj8`dX#0CN zc9E2|a5Z>0pfDTaXzU+E-+ckj54c0|&Ea}Ar=YwD1LL8B1jRaC_>O>BVBH2X9z^U= z_Ad|>TP@cVdz8Sr2_GtOy!KH{=HO+1+%Aia8kI~Eu<_1q2AUgGCsYGL^>^SiU_Tr2 zJ7jNmAh1nl4sffeVj!FRg!528)*_^X`U5;RoyAZlVFD6$JAO z?AZWeQ5wDRd3gJcL3Sy^5+0gVS;*}v0A;<;0BU)Y5CSqKDI1xAF~A17+jGOhvc43I zA);k9tky6?0E6#|CzA5A1y4{up-6;@5D|Y;CQ_P=;5kSI5)nNkT0|h@+v}>75rbYZ zS21c5uZ);TN>6`>5;?Ds#)4cZYXUb9CX9}6#<;?bYjy+qlpTLErKi6!sg4$-WN$c(K3a6 zv?XU6`I6QUP?99lx7c{2V@@d1^@0-%Nw3sokjm{v8nMKZ_W*w-uYETD1QzY#RNkPtV)d%eKWNA@DI4(06Pkeig;auqXM`~u%SOX}#{U8*$1 zGBD}?tS4z0^?HG^{>vCS524WxgO%OLGThlKBZoV0nzOz+QAT_QfsFz^@e7ifDUIHO zYTk6N*+wr$g)w>&DvSh-6I!frD2@gbLvPT<>oUfMgd&aXkx~QsQt=>5fkb12i&fxz zEWcM2;SmE9Tm%8R8eILGP0>S*8yBH&obX^pM8Hmvt6lBbl~$xNbhY@^;KdLinAQ0x zmE$2)Z6t(LclRQMy>izgB*`Y8ICr$zAs|7p0MT=sDMnBWhEP{Z5l-1-4>2x7#CoXW zXoxX`1IDo;Lj)F^i4a(sEw(vEv);zSiXXJ+%lUkz&1glASQzo<`bsg7C^K73x;W&M zu9P-%Rhm4HFCkEj;RA~jeSjdAok~NoP3o>+*9JPRUU>dRQpO3prOd$eaD=tQUV3r$ zDs@yrBZMm zi|Tyw;UT(|tYQ%qfzfd(7EDL@Ibi;HcNJBOw49KtC0-tBsZbl~nFPPI$h?WF=gHno zkp{KOkeTEM8BP{=!@)X#8i{zYAj2dk1qWT1$t3=cCR5+d!wJC1JROxEDR6sKYov6A z64AlHl1c<+C$rh2tLTA1s@HNRHAqatT@@9jDsP7RFY#vyqRJJ ze-CX;t4ccGpSToR=h%c(fqw6`Em(Lk`}=7fH_y04N2h)&4xPFU)IjVJ89CzCo3 zV_zIR5@U!MXNr7XUe%nwDy~Gq`zwBYIb4WA<|-8tnHN-B&i69WA>YR~>rG-<7;Q&g z7p(Ldj)-HZoESC1y%yCYwmO6!Q2V5?55FbKa^W9d(us4Hca`L3_-5d@fm88J<_`^A_@+qxu3v%J%@-UQ*l>0K@Av_adLDERD- zBuUoD7QxIYr|A1RsqAb9n?`|XcWjnsUHFtyp($pX zO%ygGdPH-YQ0c`hcg1OG+Ppi5Y{zLZg_YT5P>oa#;tufPttR@K}u zKXiDFT2^c41Z|5gGPwU{{Y6RbZkb=cmd1~yx2z_v4C8*=-0PsCslm!9(%PF2tE2c| z?m`lO)8(3y0yW$eRelXvDF_*$uriB+d96kwB68{eGSNX^7?#ox3&O=cDke)UqdB$> zr#|(-ttLwqaoOeEL%2E^P(|JE9RsS!i&6;r%8{6Pbfikl{~* zr^SXpB~YkihpOk&)$gm&*EDpI>^H5Pef5aCB>RYrZ94S#P zK8?AfptsQ&+OAGeMB%4u6%!UEh`X}9aPJXHHpyaDk5yjyQ2+N(|MyV;xA=8hAFG8~ z>;Kjtrjt$EfFi#M^?#d2yVVTV|Lruphx)&p;+^NYGZeSI#lBm}S~_!(XM{R@+HA-w zLL6nQ>U+d1^1nK29-Y_Dkaj(FUqHorkIrLD^qw{7*TIKG)!w7?Oyzo`-ytga9-WKQ zz0tpt)qK%JwNi0h9pC8J;A6hhzDMW2(!S9TDAj(C&ZCO`x({L>EJlo0R%{<6VvbiwN7~&G#Wz>OiJ#L(V_J44%b#%^ZSiTU2 zdtZ2UdtdnL_MSE9A+%QIhwCTaovLtj2rR;1A$Q>{5fhndm@p zk_VT2N#RIQeC5$Gz^cXZ?hdv< zya}Xe(Fa?=XN7HI3n;efsW!rLF>aZmS`ShI@gGjVT27L6mSQUq!N`PlE&a1bY0QUx yOi_n#91u7la6sUIzyW~+0tW;R2pkYNAaFq7fWQHP0|EyG4hS3&I3Tbg0{WLslK6cBS8_QAe&r?1vL6nT~%FOU0q#WDwoQCKkMH8>U8_g^t-kED&qHD%HK+* zT2tRB%Xby4Vq5li>~1a4L@J$mes_xIBgx;&t9`(RzB_bYT20Gp)(&dbdg-8USL{|} z=Uc(Sx7^REGZ|0)@>)?qgSuI-(-^m!b=&+)pXm3URclnNM%Av{kOfw?hCi&nR;Xm< zYW$zLy&GqAz5mN>oY?H5?}>$qpIF+;|E>Iw$bZ{Ds91J&EB}i>d{>50%K!Jy^xBzr z&fJMJa7Rw()A7aedFSNx^sG~}DjloS^X^CfO=&vumv52;e51y7yaf4gHLSWR|Eu3s z?5b@yzGEBF$-Z&?7AF*wuK-_7*YK-s)}tz}|Fy=a2=z zcT<6b_nLYdD-gf(Ac6`R(4aR@5i!O$jFRSX$ zQ2SMP=nn1=*{wVEox9m&F!NBI$jAE5t=pqs-SuXW#rs#@?TvlVviI$ieP<^hlASqI z5NX&Q^&Ixr!x8{^^j0UxkL#=XxB4-z|HG`#&U>^Hza^}FuKzyI>U7P^y8Z}6E>3)ND!%0?cZ>{6|2iAQv! zQfgJ`W%(9%eq<-W?5L+Okcttb_sJ*`sph|gON}Pk413nQ?+qO9IrT@UbuT^QREMV? zk9=o(+Z`Z>68NHLD8WEH{L7!Zck;I2n&8##e)^Y8Zfi z`Z4Lr_-tm?&p{c<2-L7f7`><;5;Zpj9C8d!=#l`#=i?EiIDf&T)I; zt!#&S$v$+4U;vqzz(cBSlAsMNz*W=m94>+d;&W2;ERi~kBK(&(@jYl2Bg$b*y5>@4-~I%F?n?_2M#+w`KW*qP{7tk zIIC7FoQ)0|Ez9Qc)T*_5gPy8*&jlBzKp{AuegE8`NE8?UtFa=Va)Khjg+c`W3S87G zRYH3U%LV+g8Xne#L~^IY_ge&9LuC-tT^VL~PQ)SbGVHR#b~rZRx*87c_YKAt@KS!4-}#-BG_Y7}YEr)|IPS z$7)%fiOoS*Y=9i}NX)<)LJJ4VWojFEiPlLq9@JHh0c$N^r$3wk!qMdvJA_l`e+brQ zr8B8Mq)rSTg8d8CX-DcjSglTj5E||B!T6*}qaSo;BbTO8qV%R71VdFkY8r{Tm}g;3 zOh)p>UJoyEg#N&c2{U1E#d<3`Yj)WfJ#xgzp>aH#%zSq4{=?xT1B+vU6^xSTf*82W z-V&DGAI>{h-jHKZPTT@lRXzet4zI?Mm%Sx}il}%^ElD~kts{j92GEO;Z^|Yh{q-2j zO%hEhNS|Lbko`J9HWwsZq%c#a$k7=BEKJhSCoz=6$jzzdoK`S=8GF_3Ijh^X7Oh$Y zX3T%%!bgjm$b*Sh!na)0e7rbeXV{$e_@Ma0-ndhU9nJxaOp^Y%H->7-$BL9O=i}KF z_Po@cW7vzG zDY!^|fmSmZboj!XG8tTiw_Fi-G%3;6%kw_|oABk*w>S^e&F zeL+_Gw9~#APu`FF&VWo+M~fDZ?Q$qPO7l%;?pFdg72?hc`n1trPwMC4pA2K&bRbN+3hhr(i@JA0Ju4aKKye>5Vh- zZ_KYEfsi8{bxyD!Oo)iSC-gHI17VbulLst1GDt zrXw3K^cNf{eH4x$Q1tUo8(UM9LVqAwk%!*+UjT1bthX}FL|qZ>X2$BJy-ig$!6o)M z4d~=vrvi~Ti(StEfW$`2k^W1LB-^WGE_CIiKj8LEJdQ|i!)O40a{fjRJHsO3hs6YTiq|$CB7f`no};jnEPsJ-P9$xz$s^uI5ZolEg*mixF@b~RVNwL0_oc9R6ng>SJU$98;Zv53W!woEQ<)Z7-xjDhX` z-**2mw*S|{{$I`7?*C;TMNciyeQ~v2Vn7{vLSE^P$y#Hr4nhnH%*`EJT$7x<) z@;OXC@BIJvl>hdWzdRQpT*X4pVfxqs-=8GULa~L4C$*ijJ>{>@qa>c;4$gINPx%MD z6+9W|iRGjC7UY0`BDtMLPQy`B>_i;Tm*n!8mKL;cg5R+ ze=}r87P)7;N?3^$$kaA$9Lxx0@bs94-PlD>6T%Fb@hdWfs-UI~Os7&vf5?zI$ddH5 z6g97>lg=XN7JeSD0fa2dXmE!PlM#=j!HHo8)6jWUNR49Rj1OP}?FSZ#y1|dD=A-7A z2bk6Dltav%MQ4l5*;DdV5^ISxb$WOCNs5IwaF%IWsFi2jYe#+zUU@tjv z@{1Z`))a&ZN*kXBmkEXyoGAX4DdHr%z;U26Jt+PGuQ7X@aDh}o5P0*%pZW|YQp6mr z5A5+20d3%uKwE)=3B(L3`XSU1v!o0_A07I#$r8 zRB3oWErG2-S7Auu7 zYGhdqH5gX~lt_XtJq`5Z=e7miR=g=2h#Pw+~u8=(m(n~tENatkvMa+-eeI$nkdaiH?j-xcfR z!_TZQhdQHCF?jWW6EhD%8xM`aGvJ>&eUAph;6+xflcrBI_QlF|26MWO<)G>mbWaQD zpbK*RpiDeAK_!Sy5Uw*VhC`-0g$BVZ#6J;yA_Xi;^(e41)M*512*bIk?^@o+`>y@M zB%lP2F^EV3OyKz?>s-F?X>gK09fY@0JTGKjYK$8Wt&)c*6QMiR8AP;EbfaK!617V8Sm+J#%60ZQ=2n;C{yT#az_%jK}H_p6SDRH+xq`){r?^^a=wl-iT-~N zit>?;kNN(8i2PwS3p1)#Y;73~M<=sOZGbXbUUb*V9RE z!i=66{MtI19&h3i2nnOXhNDV+MV%zeQ%dZJucepD7AImFM~9~V8ttw$f@Ku3RLw)> z>k{YfU-O7Wh&PRxaWXj3ys$vJbIM#_z}{z`T^`(b;_)JM{K10ifj$2k4(dO+>vD@C zjqaN~)&5X*>cM@V$MBo%_@)`&*zroEyU6l2%lhyZT~YC{ZmBP^FmEJmoE08rILw~} zI1V-`5+bs2{i=`X;UfL#vGK5x;V?hW%f?Z#(cyr`XkR>09CAQ57PKhZ?Ij|_Jwzd( zj*HFv0`xsH`q#?!)bS@DM{WVdix%o=yZ^u4|BvqfAJh@?ztz~r|H*HgwXikG{r~j@ z{*k?&zyIH?RBPt`f9<=9Rj)N0+x`DdFik!OFY<$J`#8yfU zVSs*Qzc?ehcY+;{uEx`0*LTMwc|r#lRCj&nkh>*{f8I@9_P#r1b_-X&9@Z*{)jG~r z*)@5>M_y*4ONdKO*t4H!?x4@Ajb_ERn`}H{r?^Ses!~z=xh#uV@^rzbE{jNo^e(@i zj|VdWnE*uepFR7;F9l)8XN;}|k#TN}D(Q9=?l*Ij@obu=wE;WL$Hhiy={d#OJ^9 zpcM(w(T)Mt&F|X4-)G`-mFKA7*~oj&n++gVmx9o3!Ltz#OQ>sO5JHLe>rnwe?~6v? zy;CsbDhmF%?Ac$9c=e$EuA8zy%5xq9bt(S>LAYDQ9bMyLzf!7*(^ZsNM~To6Mw zd_&k1-ULsfe;VxB|5m;y3N%{!k*eUM;tQe(i2>hH$nQk&7vWS}6Lhu)$qpV3=-8OW z!HM8dbXa1AyogkS!j6eB<05+L1Fms*?|7o5#+_(LXHfM>+yx925h9^iol8BaziZ^X zd}hgCf5*fn1Ks8lHs;k?hvJ*WuX7Gi0@P7N7~QU*0OSBfIs4u1`!`9~LC4DLZAn!g zWBzDKAV~Dc@lqkZpcpu)zfFhrlIf2_@iQ0A|nAGj{U! z)7umF`t-xa$J3J#(!%*e?3Vlz#wlh4E~hy}kh=QPZUtiWZ}hCBmIxPnqJTNZFnZHnZ!1qlle@HUR4qB zi-W4rG^utmhW&u?qI4qStlF|1_e5rW12;W;KBziu``t<2=9UQTv zzfsFlDA1t&LPs|xcz8}PY&Cf46~V@EKmUE-AMZopzVA*Z&;ru%z_D(Ufd;mLZc}7) zW=Db?>#0B{)@dLzCQIQQBBGxMSR-U7NY#ZowS3K%)8cfEwJvDJ;WP-?+A~@QZT~ehOvADNxO#I!)683tOBf#hWm@YJ21Js_Z zc^#mi0p?*hH=uuDpSlCL&t$b^E9l;t15%1UlWk;D+9kpdfeC6Qsw|6I;}0k4vj zjxOn>5agodWZdJc${_9WpF%=SVsA0l7w6arAtH?sUEI;Y9qAZ|BvTjtzOWMZL`vnG z@z5!sxV;-^biMz}Y+Q!nr9ACU+`gE;_Iu;;=S%!wzJ!(FX4sv6_R5}f=XXb5$D4Gg zp3{MaYU0g`sLnaQWk5*5*`n0Hp!x{cR%WJ-H9Nk>GUb~ z#jiWYzAF{xgue8~!^yxAorQFG z?6F^MS&4lKR4>s%zUm?c4JZGnen6W)Du0$bJWCP!!Ub8JE+&Hk)-MS>Ci-#did91q z`chq;E~K0ng2%WVdpKQqKZrI(pi6x!XTFI*-+j4r$%MH(-y)#*}@@lva#%r9Bw z7}2Fbv>3U4AULcLeX)|q%Urtn!^y3MD;Yw+0`M4MO45^a zURRP$xa>`PW&UvIg5-DQn*kQb+-6+5IkdSv<;Q(OC|dDl4QsIsec>|5pWb(zu`+S5 z*bgfHD1E7N9XHp0JX&9Bg2(ct$>a5fk6Yp~u1OFadHf!Q$Li7^gq2X9zenjygU=1Q z(u8pGIDL`!ps#^0O+8*{>p3?zdlb4H@bQvsKOT+84)~gIJRxto@$~2@C(1kuU0QtJ z|2pVmRk)!p@6J35U91Xcvah2r7Vis9{1`Ow2*~I6ICOzCH5MOv_JgqTIDHYyC7sdB zha#euN9v1Sz(j)kuGF>1=}Vm}{dx9-knl)-;dD`xWxKr+IdtL2>5EX5Nshr&(KEK= zHCzvQc%;5?nVe@osPCKX3l66YV1=2^<^N=wCIYzFuFvS46noPUEBbRe5>_E zYRPNq%cks>aBszM5zZe<9{=&DM&Zg2M3?#Y_6?kgeLwUo^)Ttj<}*r`Dyos?~19u zeE+oj!VTl9FMoU5eF;tcU!Hbf_!?Q!<-eYGUqXwqc00GuJi`29^PN{km!qSn+?Q%- ze)%!br&fJ>1iFX~3q_axReKPWe~i9_=9m8sU|IF)5&F^yjhCm*V~voW{Iq$j5z>=? zSe3Ja@{hq|AvsnKU|IF)5&F{P8+=NReZOiCg7S~imyjGo$b`IpkI|Qqp1jz&kh!am z(U*{({9ldA)5A6_9OcOw9$~z+xExzkUp7k@yCOY$5m^Zv*!j8iK7t&xD_pnq zr)%lUhUp?~<6lQ#5GNL{5NqnoX7^w0D%UO7)RztOSdI4u<33rkK0I~vGTE+inY^aH zY?v-$gMUqZ+3Cy_>$DXtewkjf3DEruxw!v0KqzcuSCvAhRiUU@vFHhPATdjobV^7)!TdjobV^7)! zTNTkz6puY=8*Ejq_f=n>v<z zB{#pWtX4&|i@Qk-m=zNqqc42D@7zu76=9DSe~i9x+c^3%j6^ny!nW-DWAufOm%(@~ zXL&ZO^H-~U-bY`o%CeZBpZ_uF!uQ3fFFB9?$LI^U^P?|c!Pu|!btN6E%lY>RbZPMU zg^mj5{G+~X)^<^C^6}!$hBAU5I7j^U%C@++SKf^)(nxD)s}yldZo91BMX7Q^vG#ACGkxXJRVVxoG^4WF z$n}p#Uc1a6con>nGoi=4<5%Dw-MUlXxtmP}Gvo|^GK%1KhohvMa8ZOl1vzmu8}5L0 z1|M+7`RF~rE23QvB^r6VxJtr*Js9^s<04&m+&`+8s#Roys-7Q&T)E6*FF#A zO}9z#^@vzZ+>RS%EDq_gYT#X4~G^gzTye#3$0+>^(O3x6k=$Nj%yX_A4v7S7VV1&}r zvUl&|*^#ERw*!_+Vi*hqT(d{_hGUc}=9J9del>Nvku*+!b#-=hP`rD0)WCRs7qrf^ z<1*!=Myp+>zZx#Vf4G0SV;%ha5rhKW#mt|>S#UQqeWgF)4|Fv%ec^xgr#8f{xYyeN zuKnt^>kjC`o`jEKKx&n$Jr|Z1Zc9%B2fel%m1ea8kPDDI)@mwLkg;egkWe#QQxW!H-)=aXD(c%wIGn`S;UHy2D*h4e~Xd zhYQrHWxP}LO}qjI!R{*L&Z?H2%8Xa z9YC|iXHNL!cjRvInHzu7WyDV%ow(woFyoyrb>8ALNBK#YV{Z|f6GHXX%AGzRH0jfl z&e<-f&-9ZqR&vhtp_4qdk^c;D*PAQM@m$q;&6O7P4eQge{<5?Rpz+w@_qoj11$5>o zhxAp{s`a59YnJ{z*->zOuWMdg7s9Q~QU&a?l`6sV=s#yHa=`2#E zp!j}jQibjh>Qpj|7Lk1`UrejZgXN3F{SvCn6GeX!C5=RWRwbs$n17NoC%ZbsQD0DT zKgSkY%$1Tr<}!-S6GeYvWlnY#r^uLpQZfg?cKS3_7g%I?r;50AnuqPW1>b-N@4BpI zwMzJ=`>8V6V+xD%Ig-6_qJ{9y@16QOIedfohQX9m>xhzlHLd9d5=ffii4wocj9`6 z9}#_{A2y)H_iz*9qx{Spx}Hut!riE&yl^_7jxUbSJ13{7XPuf==~x)5ohIA~s7_ue z1d6WHfOS!g?Xr{d;CXWy(2AeuYLQ07@M;yvG@jeUK318uFL3#v_%J&NN z5GAmNOCfMubme%&eK&k}JPO*7-+}~A8-v2>NN<@w;gjxTjZw}Dy>{(miPBk)fi4Xi~5_*|4Ub_ou-!Z z@Y2OiPpC)@NuQF3NZ*`PHXa$0r@r`%kAN zBDek9g~AUtW6s@Nh;Z4$K-F|vr?UD&l^>Z?;qFKsx zBwQ$sgya$&5MDqbg1;nZPV)kdV1lv<2Tjp@%xhHV=dH_H^>cFD$&RL~Ci>eJtp#qJ z#(PSgM0j1Xeu-s<0vLB^S8p+^O8edM zyHg`o>b3khpE!{Kvk{Ka^bIpf8>b3zRH4&@K?!FG*$5W44kBN42F~c(zkwyLUfnem zWR-vF57^Yf{hi2o>kMA*;zXRvCyu@)wTQDi*Jk5*W%!>KP%n3-%iAuZO7xw(m%Ei+ z)_12k*nvgm%UyT0%e-li)Ox&l{?zFX|2FV{qWdfl5BXiF^m;WIcl{Ua;BVLdPmKQg zTX#75i5ES0|AC_QW+Q4_y!q>+b7g>~ha&&Le9@#bZ4!La%Bf-Q09L}>%iUcz^Kj_w ztPQlmcg;4@8L>V0kRG+mQF_raqw7EoA|{J)6>R*Pt$;>@t@szs zSK~!|Wi`?nt5(aKu{dyx_=++`7;7$yIJP9W2WPPi_74)7w&#lxDvn_7$`QfOZSJzm znMZ?CkYcMP827|j^n-Eq0yio3+fxy$uo&cU!9+yzCM0+@%ByU|k`I71E^yJmY+eKG{Ic8_)I>*rc8@;3>AZP$@hXL~>0BAqBfUa*kKVpNyZFz} zhZU;gXd#f^rq!Y=H)OU3GLoj#j{;!Dc_%_zm;sXVYIoOc*$H?7Ubt$J7J-dad+0wD z0weN;LlS&t!DB}##}fov7hiQ5vm9t?Yl?6e_UaqLA3}!?cJkyznz>sbd^E%2!s$k>rk&`e={(3(5H-a0Us zIguP(v-K%H7<1tOJQ%=?>GWxzB)qtzeDrI7cJ4jq@m&x2Q)@t9us2xNGrq2Gmnl<9 zc?7(g4M!3twT?n-IGptYCRXuznX=XjWx0S}rEwwQ9|{36&k^L(ypFfaoH}8Qw97=; zNSZ1Klx_g)2 zR3_HotZoeD^WXRV@jk>o?CleGbe(|mq>;QdY0L@b1;ZPS><17>i*(RP?J&Jy^F~a3 zaBE7d%B(yq6GA`t8drvqvmEa+=evy9%fwVE@+Kx%+GpJ6Dx^^`wq>$*S|C?wNS84# z{N!#FCEOZND&LHUPWi;`-N4CX|Ciag+;?uv)9%FWi?O=j8;?I<;{WocGwR(8yVK7e zWbcf%dRa%z{Kf|r%vZ`=-+*f7=WL|A{Lm;Y>tB7SBirA!D18$CddT?eHT7S*Vu!> zh%AyYsJ1YS7f6F4kN2K&94K+YUNSW?8JkLB+0dO%yZ0RkA0H=|#_%pHj*zUjU~*h9 zUa*HZoD3ZBLn?ywtX3@4ES^A?Vi_zHh*kL3cEC1&RQ@b=(os{;(FCj6dbx(9go@K z6`|(|%A8td?K;jM3N`b&r>NR-t+HmROjeAirTx_^jeNyT(wG8To}BJitH3*Row^@K z%KULOktgqqv|OlJIZGMOzsEMiOW=CKj*szRr4OM(t`cfi&O^vpbNj=|Evla*QN%3%9TRcvQOStM+FgB?#UTqf_Sa9fMv zCgB2h$Hq^wgo|Y_Udj~`?hI-c`O6j#-?haug?L3eEfWg*Tf&#u6>v}RmTn~!v zQ8>=YpfD2Wz<1KazI(wqr?FT>776f~?+&o$w-&PvwkJEdExag;X9>8ycUG8@1{Wz@URXhK{F`eJ6uj&odjPUb#_;7Ie$e(op_ zD;FXff!#CsN+~J%$DbLQC!KSaHCU$NUjn}v{YwL{geXYh-?-j^s)FBiaf<5e8 z`;`}LM7D%Nb?snr*NR4sgY44h<;u98jixwVw(1-#I6s3Yqhh0C0d85Dmf_r5_G8gN zUu+RpNZ&6S=-C#1(7!Jl=!-3@3UnR{v}oWjo{JRtUy26$ z;)S6C{lAI^diIqG8J_6>qV-_$?wLZq+RG_e531QE{f~uGX{-!}ZiV~(f_e9l?Ca6zHNCf zQ>|upHS$Zr@Sa_R{I7yRo?U@dT3Eq4u!I^(R}mD=5M~`LmNwpvd$qb{GS{(suz0NI z19hJER4c<-=bNrqECz2amMwX}oF|^`3`az8Y3>N|DjWo#D9{{aR~GAA`9Yp5&NJ9b z3ktctSX0ao@;s%WU0tkih4M8eTzOEL&SO!_fu>d9iG5)ym>IT|r(fTU)iVgylrse^{V(PBlYZ1BLfu+1jcZ z)|LwLV%gfN8R7#d$O~y}t7cdn>kbsr)>fsM_KPAk;GVY*{H6-E^r==C8ws7eNx@)V zyu<{|up<^pE>;)YH39SxT`LsSi}`vm&U!u|-6J|r4YyidJbwaa3yfbVOfTMUAgGHr z6c_K@1L}ee#ronU5YB-Vi#-~P1VZmTt%+QnRxIgPHYr<@o z!!f;a2g`JPgBGyHRg`$Li|_jOth8-?+#ivDro6 z6AKkTaV!6~@_#G;i$6}+1tH1*_xyH*((St1AOYW~)l9js<^g=M8g|o;$p4z%g#6!# zPWFw<|8kkVT+$4% zifVoK?Dccw&1xMq_9+|t4<70B1+GWymDsDnfPJLw9{cEc&h*ylm#7;0e}%s9?EGJn zoL;YsV6GM$d8~{-6OZleJo^C`@qK*T`Q`10w;x|!9G`yZ9DjIs`f^tcwT}4n0)a?7 z?xaHyckCDc1ip~%?6-@~#ebf?ec8Ladl4kPJ2`!I@v>s39RJ7LH=&fXS0684-t}ho zL1q8SyS=dwTK2wuvhNtBUZ0%4{`Z&F5-hU#86RGKeEsXoG3Yb(c{Amd)1 zDUk86UG~HCot+_8z(B4*7kj2JpF_lDTqyX$d>5Ainkh7~`=LB^%U>vguKNomP#m)R zAVu9rR_V|sz)9)yPUECcR98G*+^L+Do?4Z-9XMWu0y1{eK$9O+E0y1qf#e_4AeA5I z*PIA5a7cINMtVZ2;tt$|4?OPF&hwvkc63Alx<3vKaDLIb@`iLlqwiRVN3$PB`?t!(Rp;e@?(1CGQ(V; zCC|-iVIKIhv}i#Q=#RQ(Yg7{tf-@t~Q>x(1D4OXDXH9SkqW=&-3S!F_L1+0QNlb51 z8kuPd$vVw!gi)$sMb3I1cXay`%`-Fx5bbCT=&!-KyCjH7c*+8Q@IC^(*XJ}`e%kp9 zS8~dVM3Njq!I$glL{3nhGZ~G&^Xd5F_`Gv+dV1EWS(T0jv~-${4(gR`uc}?Hu)x{F z$_f-etgNJnEUY+T3D`LuHPbu*2wj2XqK8)DjvylhW3Nz!$$DUpB@m%F05Dt!ETs8O zFc&1Q0xt5U`V${MjA=goAo(=l_mH6PT#_I*YBRsu;%jozYOH9_5m1vJI2r$iSTnd2 z*BwE3#hsG>;CEd@0G;`o&UE&BVCLeJ>?+rfe1qt*4}01ryXb1-`NT2hUr6Z ziN=J&R07DDzMhFc&&4E5i4Y`|sO5?AiI3`M59pRr2Mz8etDquA4K&1;tbvLcHSmGH zWEH%OszZ-c$k%1+G0Vm35_8HkokzUKvT@PyphkJgP<>oZ(DW%<)vxhPa-uf!$&`3j z!qn36X^9oBPben3UGW;v6opSu{PC<0g-?jX=UnaV4*u%id+hJ**#rSN``7$>a15vC zQY6q^>Rz$XK*Fk$2DWA93C+2z{W7M){>0ZVkOa&bc#ctfQb{Ex=^F_TE$+CkP-@53!#|kwz7*1`U=4R0;hwdN~ZsRmUHF^SR@i&$>EUM3ws47Zx zQL{*T1X-8rP0A=0u*MnB z%hd-xn*zs6AR=6LF7t%5>fuZf1ml0sh*-KmV)lJlf7C)oLYFlAsQ&0?0O0!Qqu1~c z=#MVDm_9n|QuIN9YlmwtVg`P$=bxzLXNM8qBmDBoCrw}_N(d`1#i%0sp+%w7paYTC zv3eAF#J?$%mC7=wB0~?L+{C@Al=&QOKC$z2n!%bjL$%e!Y6VW07|4KQg*imQIj1*q zq$Lfi3>6t@q1-0M&F8*z)twFeMC_Pg?p@x+@r;Uyr=`xMl@e3IBvUc!5lMek?Y(~G zPZ;sKiJ8e_9L{W|XC}jOIJ3<&C(B0U)C+GE{9pAhjR6uKC9Dh^DKZO*rC<)_iAc3j z9ug8*#-f5H7>w60O9psaq5^bGs;A2|t4c`=4G1gug35Bcdh4E+%Xa;D<@ z|FqzXXKx2sE(5IKl?47j3-^2;>>xyr26Oy>?7CG8`~TQBxrA^1e>T87tGU3ydxkbo zw*Eg6|DTZG%EE!Q(6J@(i%@D&D1{aPp#(Cdgc7(ZB1kcHx`fpE&KQvbdM6<%UE1oC zJ`qUq^faFnZRAfXLRDpQ5rMLg<;*-s5>oh)3rkMZ*(1UEBk&YZBr#kBkVG^Irw~!X zDV!=nlG=tgsS`A#Qx`fUNUxQslSTzFCHZGm=Ju&|S8*j-;5MPVEBD7~Z-J+2 zgO}JjR%y!clf@;%BDW9FNUQ-vyUC%IqW(IJJ36I^0B~7XjU!(q0bHexr)+3+s5Z6 z|6H>ZKF7LI<#`+RguK*}_zZ84aw~zy1|qB36T;v?+pMSs_+4LWiDH*wB_k&CB8$n%9b+(YRQhMH|<= zBDQV*neu~Zul(x;`)5RX{nx)#qM?KbiH71HBpS-TNQ@!R=zmHM1HD1Th9(>&8mp8b z(OB68iN**T}>h%4;TC>t<82f*S6M$ea+x@@w&>~vv&JX;T z--&(3s6uxBJNtR&4*IOxXySN#li_I9Y0qa?m7n9s5{zd%KGWG6t%KSDWqUVuMb;Xt z92{0*yS3T-Hy5fLm3-it{~d2UoAw-59#8zTKOPUf@*NKpQ04&(Iyh}#7EuPuUT^A7 ze6M^LsgQs_eIF`#fxe+k37M|GqnAc8giH!&>Fgs<1PG z_*xP)rz1A@*l(A!kw0UI+fb>MYV73VJSp$-i1l&uwC9hf_dpNy=Q8fk*#}bh#ksfr z!R&vmX0Kk~+c_sH5gIRmZb69oMasSLaESFVCr})5b%QjA3;}*e9mK@@Zvey8-z1P< zV?F8<7^s<-qGwfLZWk!z9#y|riq#v21vkWZ{P9EuI9QOo+wXTMk{<$1+>D1#+2Db4 z-?=S=mE6AP1MJ~`Z#@2diT}%&I2?R4>`p&>WzV_uyCbjTVF%Q6I>W9%b?-Vucw4%Y zfr}di5M~1v(NT`F4(CzsO(trFz$4r5T@AX|9^3c){>$EvKU&Su<8caXes|I>Uv_(+ zp;(tE_x=r<;%Oylp!`2?+GG2!cklVmFv|#aN4>$U?>wXowdhYgG3d(Iz21JK1okb< zD$D3rnWwP*Hy5wYUUe>Bef;I^Md#&z9G@J2_z#j3EJiB~|5tr}3R|EMh8~=J*n2!u z?Jx_>^F~wnzG1U4aR?U z;G}o$K*HU+x844DZwG-~B&dgsq~eV;n2-$9(zsr!GtY6@Uw{2o5<b<|V3@rQ#b_7EuXPj>G3Tte)H zk+*MxEFosS@#xCEo=y2MJCv_D#_v1RD@-SBf7t2Xxt#&bYNOu$%SyCCD@-mD9T>+x zON#dr=gx*@1>j0#LT0#V7+kWKRLLSi+9Ubs;Aru<_nGZaoT)p;bdSI?m?FDFN7GMr z1hHT+QCbMlV}LT7Fj2vtB=;Ws%k^(qm&pppSG>-Vw@8)>{B}U(2@O0B17zG?XW)#k zQKMb2YP9^vyVH;F0Zet@vKoNq0;2?3-QjG=&>#n27DKQipqh|`3NpeFBPt~K6w|N5 zM8Kq>nMw9w>O;wxB2bYJ&?#&Z_#fQCL*aC~Gk=WP%eivz7FOp`xTTJiMmtJ3dE-L< z`@I`5FCrmLY0yl@Q~!`vvFdBaKqS6-hg0z0jnl^iFx$IvdY?T$D+W_KKq9{yk{yTa z_1SMiO`-TmhpbYnSU@7WhZ&lGlu}-Qwu8@a2i*zI*)s9XLRlKeyzEb`H=9nKkdik9g<#;~jH3!14s0W8N0-87VZOyQ?u;lV7JHUFyJVVd#q@iL;}T_|Gn8%) z8;92Og23c=z0ZY&sF{qTy4|w>WU~>}^F9k)%=X5YTocTTRG6IyKue7_Ig&_~2F4XG ztHf$xWqy(CC0Yo$8V#yuK$8rjU#q+c<4{>#UA{#lsuR*JpXUc_aI71!4Zp0nb}RR{s6VJXMcN+ zfHZ%;0PtC$p;l5x)+Ux@V6-Z>Ny5yw5XDiX0_o7Wx>%q8@#iz(>>I(Hb=X=3aR*?< zZxnBKeHFxE7=NRft86)Ld9xE_9MlXbr{;vZP{u8g^I{gkMAJ{2L=KL=k=esKIJ6G7 zn9bc(dRVitR)A`pFVAwXl4sA!fJ6rVZ$Q04oX$q>4Ejx?vDRFY8y73$h72OBI}+{3n|Z1_w} z3nZc+Q=nB3T8EYA^Y>4&utHB@C|qs(R8$k+Jr(JT5XC2!EvD=i45cSyIEn0a5!?NK zIG%Z!a6Rl-PCsM9?0Q%U3?~D}cd+{~9pkPO7q2vz;vyEBOD8gjJNy9nRQs4Xty$#J z9aBP$PKF}Qw>tJy?rZBX$w+q4fB~ITicH^wC}|5o9;j!ANnV)F_cWUg?$s7O{1#v@ zrX6!!*^|7rv=IZilxfj*b`qlF?Dd#{*DTH=%j5f?i1=h!w0nEUib3}Q&dd4?+gjqxEz#L!)W`;%3^$5ajFdkj&JqcbVuP|JbVTz9y ze3ro_Q~7^obq_0Z5MVvSB^xoBW-X5nt1%ZJR$~c-$hw{kMwX-I*KhSok!kaoDulwt z^#4|IXxAX8UcugQPxCKF8uz4wr#D$2uvsiml$I)c*nC&Y6*=4SEK~{^`|xcNUN}~% zfYLa7FRdrtOK8WhlyMD&;nt;RhBfVZbOFZK72L;=^k!%V z-&Ni@#a+NIrZ}kqZ>nL;{i|AP%ya*$ln%7RY>9>4ziOqr_OxB({#CDAN$y{f4v;G_ z!GFe03tkLZG9sn={RZE{VCq5-g%L)$bNHQc*L>WJhdmU9O}+!;G5FqwHdA7hLGe+) zJMA+~hlIYBD%GG1MQ5_H%cD(-_2J&K-Qr;Sq^# z@8tFJV=m-v>#+VDTxA^?a6a=8_KCw!7Y>`&i5S0;f$v3NbKxh>XloGX&H}-Z$b$1_ zf$4Z3<3e3@E`<(oQc%i*z*{{aQk~9E?1juKxF0gr#!ViT3(tWG*L1_xSZs{K@7bzZ zhZceuB^s!>_bfhL(WQM3x2!Ed`>Sd123dRl4DR)6FeIW`bMsn80pYk-HAjIyB4Wz2 z8%U(T=p=v|^2w5nipZO``H=_d{JNJY7?62?#b1=QYjA|$-)F~UmBt#0i(wfNSAvp$ zyWw8^R7;K!p1=O}?Hio?f&VeMR?iV0j3*Ko8w zR1oq@Ty1e7PO}{!BMyo6g3i};2TZ-aaV9vf#6P68q!1oJ7*Z>O?!-X~WjxpYP7?gJ zU;>LzZs6D8b4;?d)VKMP1)l6-+5hwL2O>`$hpCB))f_%_d(-iL*Bq?!d@8Nj4U!q< ziDYmwfCfb*)0=Pu_sXH8MNqPEA_xxm8b#rCqkskX%udnti~|d4nY~& zAw<_XLr^cS)}thBbO@3s119lboDrQ0Awft{{^@*AF{bj57r(rv^TZ7?S7_^o*iUT^=xlSNY+y@SXL<@C@S)KDL zOA9{PKFOdj9qs}euU0FTH*2U>SuWRA^%|h&w)EBD4UYaPKLc4`&z}xDHy&sfEIR|T zS!NIc1Z=qG+B@LkhuLF%VBDX^X;;awRuQvU)hbu{CZMM7H(xph{HYY7h`Eg-E`(%T zk_<9Vf5!E8rI;reY;?K#N_(?}(D;c<)sVb2CJvm|=aUDQnn|l`SWV`b2}98XqDu`c z+ft)dDIvVUVyJ(c^aX}-0vACMcnp^$h!NysF2u&?D8yCW*|~Ub*`}dB)IuRRs2fE2gm@i@_@-y|NIAuT%@){~hw35| z6?Q{$=mahth{1r>nLh(=UV*xNoyrfS@NXXb3tsKa11deZaL0{b&4ZS#^{t217?0%e z4gok0SoT3L`>;^ zP700Ds+KCvkc|}^4@0b+ttNu8z#HxD9X7UUm8^oDv98a8xC>M42}lX|Jx@vqgK={M(ZatKOo&;0r{z zQ@!VJy!Ys{=Xa=&)J61>hfSf42ucHL^jAD}uN{shMD-K-fu^Z*^zQiGDfJtVJMH(* z@C<8>rVRv_irPho4f4tFAmgr(y4TUXWS!(ba;gAV%Hg0uF+eS zllK4lk}c4c*n)D%UUl^iG{oDi2KOS7^JSs)z>P8Q6C!Tb@QOW;hsa4xB9ve4yN zqf36V8ms5jp@yo7MotbCqiY;<;u#*X1+j?5L8^ z(1fK+mH)!AFD}CZ9pQH*Wu5jrO?w`hqBO7oX^aTyAy>nswhG0xJZ9Wx`;YLct0F zVF@Tuf1J~>$|Jh#opvcKLTO2ScC2FiKvslAK_$$1cqOGa_#-3`=gPUCLis{3;rhaF zp^Tvy%2%^nwN|5Px9YO#3^P**6NH_m#)K)m3aKZ^#p%2;5oa1KM+q%-gl>qXznEW) zlq81v8JXXA;r||Cmy9GZ+FFVLfvKjTLP;(|=Mf-TPm|&zBoR!3Amo9}6_N*q7fR6d zW5Z5Pep*l^@mQ)*!qVCh2Ax0}N$FvH{04+lU@|M{m>|u5p2|csbzCZ8?Qh7Sm84Qu zb?Ko}DX@+el>&0nzZFY{NgP&;e8rM7#2Vt~TbE6Nm9nTKLmF1*jf}W#f}JEU*(8`| z&1zF%l`JY50N0`^;+xZ(VDMRkfZ8fg;>s(rF&tQai#jr}Io!sa-{R z3h~Q&)h60>OO;C79jQZHYxvZ5q@ueVHlOvmXIMe!e{$Rt6HmfW!ZbgnD@XZ`Af7Ue z2bq7K)m3lX$p__7x6`KcH6Gw7%Li=V;p|P9E{)^K#tS}SAO8Ai>yn(iL+RH4A1)f? z|C>8zpGJj={{NMON~N_OY)^xNt3es^|4(=OD6MibV7~u<9S1Y(-&wUr#cEXTx()w- zyIQL?xBmaDQ8ruYnE!t|4`etQP=g6%lP3e}(5gjycv#a(guG4$1ll2Aj1|urNh^nB z91S_4aIceZ%qlT*{(6U7i9e3V{-IoD>J4UN15u|f+H?-BHMe`tI2yjxiJ3?AmtA13 z`^J33%yE&shuC&M!Prj-d@%|-VJtA&eZvDodco<*;UN>o)^$>hg}7gL;38AdfsyD< zY?|CmAqtPS%c*3L%c)Q!zDJz35*>@pV1yHeGuhy>A7Tl7Ex6sfc*^Pm-$?1(81k21 zyoF|xNKrs3f9e)BPzo_>q|2d7Oj7<-q&eX=s7~vs zO4LQpec|&EnnF?yp&&$bb{&X8m}p5Mm6${!ifHr!1;X06oskZzX3^X-bO`(e=F#CX z&xk{=(mnzH=%t`|PCB3zIXs}rf=SRHPC$oE9_mAj%a9`RpcuMZp!53Rk$JQTYguWu zz$63Abi@%$M3L(!oUqLQ#6E9wDRKbya+kEILjz`<)yV;WWWo&{j9fKoot97V*`;VCG@lb8=*|Viun^+} z)3kidG9Bn@mO^e|5G*uurTJq?_q((juU(dP{S$smkcWi;#>n^QoH%yy(&4QzIx-=-qG!?CDLOukU+Ju z6pIHYjCm}cx2A(ja1gV4Aj8HOsMy6l00UBM%H(%IA9!@4a$+bVGiHuF3TM~xpfw`( zCMXr2hr^m`7}>O<(BW@z^J%xQrvW+vcMuDsqhsjYj-i*h11B|@P6j%LTV9Hq!Mb}M zHS-=#`BPJ_9ZiWwv@}Oogkl&`lg{m+PxFLxhY(dgADlG9je$h32sJYhK~%OB@*ihK zo;&hYBo{SY#6Hsk^kXG4>3F%}-dhUskF#pdAMs#!Qe35FMBzPrS}wx&ST#7f!lwgX z@4WBOBN4%$VqZ+2)dg8HuzR$UrSP9^wOn|qqoS^uhl8@s^bw+9?ZD^aCIx+v)4h-< zYHsiRe;;ae&sGzW`!Kx>k3XDu>bFj>;~!t0xCd|XJ3t&aKJ~o)cy4z}4gvsI)#eLn z3b=c0RB|!T9AqG`1ZNql8czDfn@hrDPs-{Cst(HKGBoVuOOoOsKWST~IVpwcLRv(0 zTyaI4?kV>0r5BC2bA}J+{6h(6o4F1l9;!BUalYMv;VcZ4JPBbD8r2N+kAtxkD_|5n zf|4F4a+;DD&b1;d$dy$7tRR=FbqIu9sNbjwE@;&=P@k*{^`!{TNBlyo!sAHvTnR2W zNb@JSFs*hPc@ezT5CpgEW=4uPmZEqzQ^!|8ak=xCKgFd1x0x5kE&D){yxz)4^5#+` ze;m_Gc=&Eas!Q8|sn>;9|KVvns=o0^6@xUYD@jR6&&3nn#Y! zxP4825UN+0gbyVTSJH+P|Gv|x(a61VdC02-#ZBq%A!ZRH6d`E@lY|!n8AvYzyftb| z4cxE9%2Q2R?{1X#(8?qMxMHSg&-Eom(sht~Ic4lCu`3Z}A9tujCzIsnYMDuHXjftc zuY=snX<}cAHLEJOVda1p)~t<=ZnBLD$Oid!{Vf?$MOUS<*}#iy_~m1PvTgw5yZUcrNDi~WCY&;d#3 z?CA)yXHd3yT}u(E$cC?Fh$PJ%^S5*!OeS~|2*;&-h_sXg0nI31#W+f`OAx(G^YVi! z1P_Fm37B?D!y83eBwoClr3O@y%}mP-s05QjwymNElMtKO$(u?_l_9Swchpm_h9a9m zG(NxtK{I|~M_$;a#qY|NeMRM9UxrS3FPI5u-;c)GS4DW0zC;ABHy`D53!dOI$4+i|VPhO8xK-?}tV z~DZQ4h5z?r8GaNkZxl8T)l~rDGbg+ah5dKPU$q5 z6JpTIDSOfFVzM@I=b_Ty!aMi^1obVXy$81*nx;=B9r$JuX>+)K3Gq{UIFvlX|Kifp z;Obf2IQKgETB0jWORiONNm!6;eDwe1bf^jzzrGN{M+haMJSfKia;t|Ay?T`bN4-k1 zBVJX`$Z4AnRiSEcsZ7%CAp9ylcvbE48bkFe9lB%tG#S<#hy}RRY9pHoukbDhb!oE^ z<3O;dcoxj5MvGuh^_Jv3sCbjM$pq=h8Y_ch5DNu-`QegZbDePD6AdI^c8w3TL0ZW` zN!9vN8}{!jt?NHOe=dJcQ*LC^z_-s%MTkzKe$cXWNoc8Dgx&}=yDPSI2T{^P#< z>4*K`$$Z@3|B)B?!r1GNeLbX(_ zvXO@;yHu-M;t}1blv)*fS-ypxAK3|+8hQ!?sTeVOpNtZbYW_>O)M%2;uxGvd-oWvm zQ-5??_tGOyb$IIW2vLv_xdS;=C{ocglwcqp{^d{IJNaZJvY||+d|&t*<-NF{I4Bjy z&#FB_z4-kb)z5#ylaVMN#W$T}G|mea(IxiA0h0|R7ZWr;u;URFM6jQc_@Vr2hZhhz zD2!nbu8%mfie^KdY%&hJME$>BlBzVD6@jd!}z7~VM^4cw9Q@$~&6vv%IzP0-da zgYjh-U9YTGa{}zI-@N;Uy&w0T!D>|>dl%yguZN)i=y;C*s^`16&adwE4J93WugAkn z7Y0AbYSEWt4>Jcsq4+naBND`wonO1&@9xy;e{}rW6cXK{l=ttvq5Sx%JJmy(s#If# zJ|BA@{eep8ixkBlr_h}S-O0p}>2Jm(|6)Ar0W#j`@o+LYJ`-gqR$^ZuoQpk5T}|F6 z@=Wi>>CXnvYFPh)eV7d|ohch%v3KY1;YmPK2s>m|%w!4|c&*@-a838O>2%()AA)jl z3Ga?PC=26}haqFJ{rw|mvmKj1RM}3IKhP|$+k&xKF8is-&N;QuEY?2%1p7keh_&B1 zgYG>&mnxN`o%0JsK{;fnst~KOKdiF#CwoTUN068dZJ=4kc7;6-MOO{NDQ&s15B^cU z84sQEi3{Y9uJ?bLjmwzl%hT?}?TctU`@Qk_^CkW-Ut+?z!L<3=D|+IDGObsgvY~btMO;hI}-zYx`TUc zkDCGaSo;j4fU0(Y0J!QqQB<<_>+#ef{zisfGT81C)+F-i8$%4DJ^Fy!)FdQma(s+3 zmQkZss@ZrwN5nyhFFc)2dJqYq)E-5^16Y4e5w;J11*rT%Bq8$|-4%!$iQK=teg6i} z`=a_u@IsIzFhG3~19Td+o2XF~HOXd-iz_Z)7e@I#!UA$WueDa*)Uen8<@L{d#U_T3;_CNKMj~ znxv_$Xid@%X_BqQoI=iLe|6nx=)K>Ov>WJ7foj%*-h*!e!tD$QCmlBo8TQ)#u*;D4 zNlI?7I~X9!ISDj+6wYve7kXp*ZI4i7_|`H%gg&16c*h}y;5a;~yrBdzwpI><4g#`0 zY85?HaAfGAP(8W10jlROr0}}EnD&XPQP)Dn6RQH&mUWnlCoUEei;1da0a8$7i-~H8 z1#t6A`f7r1XYt3A;h0ukzLd=dctK)YisV z^H$;p7p=rsDbo;^zD5gq@zuQLWWIc*tP2KFI|1uRE-*e8mASC?3?U{zp*3$!XOMm+ z<`Ps$mRwj#8O`LyVe?ieAw(MedYI%=i&cY(o+O81B@;qSejGMW|2If)P-6LMQBWb7 z!?0K|n#qa7Y%Cp8?c*Ut8vV-5VUZ=o6Xz}9YE8UlFIra^Dv;DqGVxXj|A}0Mme;{m zT$3;2g4BlET-XI^Y(-?xQ^lu_FUKUFl8Fm-8s8u)WZo?5bN)M#!dV1fF#P@^?ES5_ zB`G~bdfa0K`+V*gd#>cvF~T_@k%}8il*0)2AWH|W*2pVi(;gd8eEaYSsQ}~R#$i3| zJ7F7afFnrQN`j9vcG_9l}FmpPkP9$;_9V#z@+SKZQRw zDGWt63kWldNM4$S%iIMt%dx*({}?_@(iEv|6Oa=8;ywncdb@wZ2iAC z!D_3`spRH}xpJ=mcREvTJ;S%2;c#sx|7P(s9u1f0t!KE2ovmj$_KlvVXLyLc<2)aH z4xY@>k@Rfl)Gq1Tm7XxAen?b1<;K~8W4bAsoJ;Zfc!Y&8f5D?XI{@eZi>W)|Ck13p z!sVV`WIN>l&OUU9I2s@m6HXVXwo#_ryK%AB>+|wZzHw%T>Uuq%jr`!OLO*E7=%m7$ zDK>)7!BY~hcv+dn%o*TqpM5&MI6m*3oSvR_Z~_^g#Hy1f%jxq6j9C%~)brT0JGxSz z?;Uxpgfbe9ucbe$tzHwB$=lNhFX8(ioIa@JcKU!H4G^afY&wYWXr~W;#F+29w{Cw% zmN0kX&;b$V8OOQ;Z~y(uA#(#^!8ZfwpwYAA-2)As+e9xa5*L$qN4j*f< zARW{xhy4mHR>HIW1$!fU%B@x8n*L9mWBAwVXCQDGBG1DQ^UTNF%^k?%z*9|np6IQu z74{9YA3#}|24NSxC+~ccqwh(W2#Z`#G}#}r%NZg9yfU8nHmCHJ(J0AnB+PS{;Xz{( zL&hZTY{8G@atgpiu}s@qVq+o6-5k?rlGaWh4Rj@OOkz@Q z?im82Egd4!2#OBdjI>pg%eq8e8g1cCq(PUo&2psWs~NYk6AaI;r{fu-0$|1LkJ-s@ z7wj(=ekM3k!$x!f+PI@UbTnP3gBkElY`|lT5@F?I`aHIggzr% zExAv|*KUu(B*YH=G_gd`Us10zET)`0uaqo0*7FVyLBGLdVV?hyK#oa`yu-ivc05ui z&8ZNaSJbPOpdKQ0ke1PwO_2qjX{t)^A&@(ns9b(4vT8JG(x#5u$0aP5$PvOW7Tg^D zW*`Agydsl!-hmMr-jag2B04AyMoqvDMkinVeJ{d=s<-gX?T<~}hY)$_X%NuQZ>d8^=tO%o9Y1QRBZQox##gegaat$8+sNrw!@ zW~+kp^%c{Pg9$9>O_(?)ycN+fZzUhSPYE~)-xTX@nisG>=MbRlQQ%g@!@LDLpGOcu zM^7Vy0o9!G&?}@=dE+)v8{wrlDT|{kbhWiRkVL7U)+w1Q7SBQ!7Zm7#vUCr33`yglrgQ#L@4_k6O3feIBA%jckG0g zqIGa*017{_`Y>b$_l9m7nOKnqJpeL!x8@A%rSKP9?rC%BE?=!R^1`2S6X&K8h~-=i zfsMQnXsn@P(b!;>7;5Y9`{;U4ONC&&*~TgY*OZZT7ng$6 z<}gGSQ9e%%mrZbKu6oAhV4||HpfelQBy8yEAvD!jMAJM4U80E#Z4*tnTSu?zGt+#t zXo37At*Sj$)%;j`si7zm>;mH(0$CvoG1DNPTL14{QLpz+%9J2`mjjS46|SH9%~2O17}DwPVu*8tdUyYey%#SGO!n%v0x+ z?Hy{)kk@aiSHpU->A?bRJwMw;b)I@2;||(W2v!OYS#HaH-$%1upugd@PP~tEhMQ95 zvq+zLnmp;Yx#9BBOc%J*B#cYmt(?#|Z@ED2@Kq4*(e*$;++;!#rk1q)NLGA2%SDye z4!R4{^fPanwG8{sTSpN7$kZP+z5@Op(Qr|vRYeqm^R@<-LEyX<_o{B$z6ySOOTUra1yAgWRsoQ=sJnoZNtQ z_qotpXOB0!P)GMoTy`4K5S>eETyTR;SHdMa$yYFhPTU3@vuEVSK$}G;S@%sV+KS42 zZLTse>>i}ThtP@rqOS#=Wa~H4x#D`DHg7#Z1Dkd~gBgb3b)Bqb&<)&)n{`slFt2`J z*BoKhQtnqtvhT0B=UJP#ZXnFjH5IF2PHuBPD(0fA1>Un2CzyE)16-61ydiYn_Hy{( zV*0ep;Ws{xu-*xihTCUWogwu~C&5N5XGmHr=6xai#<7Rhj_d=_raG2!EPYir+ST0h-@B6n99d;Z4bsPUR7XP(r zS1fBA|8*1bHy^u=Q2f_;l-JVTaIi9n^W(o(?79_=|5|C<&29YGl@Xtzg7#!OzH$c+ zF2iek*yu$lKt>@pums%wgm{1+`}O1;;nBHT4ULxViHigGc16JUm%EkSqn$RcZXW7# zm^X25_ubURW%W}A2QsU6SgRajJKL_DSAlGbv_=qATp#C-=77AG6~#_Kt2Z z7xxRKx6z*glB@2}9o+98-MUlXxtmP}GcUP0d0PQ)0e5>q%Uy3~A5`|QyxSZ5pk?pd zC;N^rhJv#YlH90>14Y zwf*kpz~Ll)xx345x(I*gcL%be&(6KaJog{Y%iY@U5f9M%LZa=32Cn~t{T5uq&@NLU zK+^;Ihl0so?&1=;-r)1@5#8Q^WycFf%T9|wRZ1;diL}e207@e83SgoK$v^?RbW(^B z<=ODHl4gYlSlAq`<%VZSn9{t-37Wr>9p4aVAAKy5B*Bva`MY`0T7-;4g(l+eR{1y0eKUrLoh=p5T9@T9-agOUavC2!%M;1*%HWG^94U&pRkpAUuIc6K9$*GDIKMc*_}{Df{XgCLwHrLE<<}2?&r1IG`?eFG z6Gfi&&Aw$?&y4$8q{)HqHrsgs)#naBm0fFW+-|*F_aElSG)KK*YE?8d&OIaZ3E2na;3p4sC1TKsnQPtkE-LP^(lCcpU$4 zy~S5|_2um6onKgO)%n7U+JEr;@BIIF{#WzAGdOn~$C}uqzw>|l!e`O`g!*9 zc6&d&^49LsTe-7^f4kmo=UdNT%@&)7)%NRou-=|jpGfdSN8aP@=YP2Gu&rU5|82!npAR;~SJz-_R@m-uQ98b$>9@ z-|N6Lewhb`H8D)*2dDpoGcc^a<@9>r8^5{12FRQghvU|{WqkW`=Pj=ddpLsqk>Rh5 zcZ;oI+TuFvJGkyD@PBs~+vK`+xDRJO_{*J$kN8xqukr0~-rfA#H{M(sub2Lx#>aW^ z#ob0=*E_(!ncsTLhaZePFW9>GyY+In0l=`FaqZrD3!&HjVrPx}XE&R>uhw{Comp?s z+#Zj|uG|28bUR-yT;rz=JOO|uH*}XgH$Hl|-s;N_Mo)MJY_z+*od=+)+<$%+{gREd zbW7blJ9{oKcr=VxOMmf)0UMEZ9us-5AB|5Sf3Tf1^!(!=f zz7q;1$L60mf~@X$QqMQ5tsC6Umrx|m_n~fZi2?3||K-;FKH7>7%A>|@bXXL8lzXD^ z$A`5Gmt{?)h@VOfzKv-RZqGmP;D7;Syb`8@n!}62S7sQ;I9`idh&v>#9QBAD`yqmr4`csqAk@_CEMv` zQOt;HBZG-e`Gft03n@R|01add52xR(AcxBx*o^2QVLk@lIs+J5Rltf`gnGuW^ILGf z+%KR{Tr(7(FTQ&2oqH{d!i_hiMS0mPf47obF(0qfS`-EAwAh)U-0~<2kA#-+v--nm z3w8t#hbu`mX>7(5G1ce@ZDSTM}DN=|! z_I`@#2g>EQ&K`S@Ki#hbcO!026rgg5m|2kdWFZ0Z`pxTi%EjSkIYf~ZaVE>a zBcnDfWyAB}Z0bi}&sq zZvz=Dy&kqoAZ*hLjR=kZ*oh%Hc=6HSLIa!oB~pYwjLkV3PNF8xvBm>gsL#XB7kAKL z%|9<)6W)h}0!4g| z{b2kzI$*?GOj4w_hz$XMLt8j~TkvNBj|%X|8ba^4w18>%?crF+Gl6|}TSz+yVL~Zj zBT_wSQfjgV+?HnUW%ll4iX%YHl1V1c9aMHx5V;lZs+;mIDbZaRLfnUhH&o$X{C~F4 zFaGroD6Ra|v=12>ibKkO6zLwG5oE3xg;RkPDf63Eh0^n?Dgq@u6Wx&C-0qe$+gfen z|7Ok%?wn`WoAu0`eHu9+&m&qWPYV$srX&6zg|{ETNTC&u0#ywv3$ax-Y_6(Nb5)I- zt7_6%RpWkhRhi9IWi?lo-CR}8Ws7lh*<##Wwiq{;Eym4di*a+=0y@B|S{klKWYS!= zm^7Cypqr{O12&f}Ce3AwNpsm^(pW*^c;Q&mB_XsRkm z7fn?K>7uEsAYCw3b-TNtITk!z!P68xPnms@9&*3OOrhLK*iD`)@EHe`$6Dg zJbb>&popqOddU6is!F7X+^?>xM0&{mYO2ZIDi?pIe;;$|ZE ztE(z;Gm-n%Rh77z$o=Z7s<~`oHkU2T=CXy^T(+>9%NAC1*}`frTUgCy3#++oVKtX6 ztmd)>yn?j%t0@P{k^^&&#cFSKSPsuL_6Ca~w<_)pEz<-Q>J@eiP&B@)d>T?S$x2E)_`8 zBEMNxC_S&LB2dCJ&%?LB;O*28SJ8`K$tz*s8{s<=`^Uu_9Q#MpS3{z6Y2|sblYON~ zB48w0QYH~LI+DCa7~9kMZ60{?#ewMEuIR+0@ot^GG$uz{U%!^)tne`X(%b&&U2ne{ zSKx$n#|$5%6|qz?)NQ56v6BA|!>c#DnFX(o&(;OWQhC@no(r-Fo``>j9lu>DG?cFa zhzuk(hahYMib~g0)yCn6Nr;GeG)t@rh+T4mkQw(hg$IJNGN#*+zP=*gF3*4 zBPRn}g^tW}n&e<}cO`;eSUYr1?*G{4_lMg&a;Os9YRIeGN|9s3zq$#DB?pC6hsH0_ zg?dJBk;$Erd3d97n&gr$&?2O-yj3Ro#4fSj!kU%((--Fx*X1*~d@JV73a0lMAH4s# zGFNXNjnIaWxAQN$$8{xt50?TMb?w7!B6vYR5l3zaAE=2p%#%tyK@=y6AR=YpevxTF z#6P6oqaZfkm)U#?NqjDn*6*`0(hDKfd^C)MS|-x@%R6^5>qBGk$1HwVvk*c}42dEN zgh_|6=n(da5WmZGKiI#`Ewn|EIaR(UtdbjtQ>!%OK?*gFP5FN6NVfHodZtqu*at}w zg>U@2X=UtY6isUgZ4v$-7TLcU3u7l6$Kf%Eg7i%{8N0?SA6}so_g|H9e5^$CS>XRU z`wd!55sKpGIuauD2kdXk7u2N5!_BBbeCH4YSrO2%pesTK_@O{{2n4U)XGDp1j*uu+ ztY6SyA+Qbtf{8VXjhyr*Q4tM*!nlw&QbQyeb(+sYpx8#E^ycI=pu|Q6kHS*5LnR7r zWEMQUM>eViTF+j6nB8n{6-D+p!A4;o4MSIL8xkHx%?n7he|>V~FreZ_CIJx}Cj;g0 z=}!jAbKqp4yz@>5%9H72pnNVl87SW;av0DO<}uCOdv7Zrl^)U?4Ut(w7SMoX9CHB4 zIOYIyxKtZ(0S%7=@;0;0Zn1!=GvYF6kNSBs3M(DpwbC1!(8|&O092LOmYc5uJXM<3 zC}|@H`}rS$;MoFD!v-=;Z(${IVpD+P{6Egee%Krx4ix8qbKgowNEDg6X#5XUH~>hz z7w>_2!kY-kEE>m=Kvl+$fkFd0FjpgTROSyzbSO}0AOPAoP^j9WKr*mq4%}#FM2U8e zkVpoW0HR7H0}Fr#REb8?{{TdlNJK0+zfhhd+%I1L3898GiL6=7BbZxU@H^OR@J>=B zk(_w32XzEc%p>`#J_RV|k$kzE0u=K|z79+Qig_eoAf*6B&M)-Y5j?VE9$AHrh)8UQ zMZX>M$SQiv=_rXJ9$5tm8!UE&L=lgy;%GYpDB_Vt%-QxV;*mwn+4d~rkwwhev8jun zACEA09I|AfIAn|Ic!Wf8$QIM_2%tD*i|Kd-&^XMG{o*8Y1kfY~Dop)H0LdiMFHW-} zIUO7#n@FPKM0*g>diLJkK$mcokZf~Q)HwnYRXrRhK+zp!aY8xWM|j{XI~%VdSx~ zoQROakh_Nhg?Y_}iOoeQaO_Z^Fs}g+)ka}nvthD1QKB%f0T5N9Ft6E@qBru6GIqr5 zNzpr8M*&65o)o?Ha}3ZZVm2)1M>F;)V)n!#dJTr1MXt3c4ppL<*#oLXF|!9$iDG6C zsS?G^9#SQWnLVOP6f>KevthJ7bU!s`k7H(2bM`o9HZ^CDV`fux_Bdp=)2HU_ada;V zi|^8+e;nP5_Nh609Nmk;GQdQMqI*$TqK^m^--}Xnc64hrE)BJVTH0W@TIBl=_wKcz z$qrv}2|EteH;m%$!)+l@zEAr|pork6oZy@>`^i8=iJ~^3;JNlliBcenL}6|-i{62k zH(CdKEdk0)BdmUaYVq)Dl-tV3Y2o#TxL<=dPJ1X&Z0O?0V-V(0AlZzV$T)2^(1GK$ z3Q*Vs6j48pwS&iL4+TnWRQObzwGk>&Xd`5two0Od2UrxK%&RZ4jgm*vn2}}Av zl_YQG3zxpK?4hd%hU#aGklD%lMegO!Crb;y|M=Fpg0CZNLJvF|KY9VA-|#IPu`ck| zU-+=bo5;xF?}NV!U_sq?pT&y7@xk!?t7wH(D2}cp#v(twb|=@gO+*kILQHQZg%$5o zh%(z?Ir|E){u%Mo#f9sC!}-A7?t+y8DRbw-LVs{=0Ph%Oe*&2gA71+nvNiDHi`NqO z1we8xeC1We{_I*V2&~9&jlwkw1%*UOX|jwc zhM^+F=hr^G2I>aDAN4G}Ot@T%*C|CYg+H*zga2m$FN^|O&OS`|CfPp8i%o_05pSo{ z>{EqLwGWPOk?oT_;1t?NykJkWPZd7ZJ~+NjwvSj5Q2q+-W0UPug-^9l0lrNBVr>ug zotHE}#CN@rA6AgYWBnsDM1N9@_91!~J;9GghS2@;8D>&(DKk4j%$|jPVz)@?JoSA3mcn z;QyZjzsDa2{K!7xD`ctsjP_C9PD}Cm?4!WfVINavP%8gn_K8W7v|m8z9DmH2!k`rY zF#8;YuP_Mkqx+vQ|5WkkAbf>Esr;<=NnD)bbJ{0?Kbk)W*vI1FPtv~c^T*=g4~oyg z9~7T~KPdjfO&okGe^C7YOW;rD4}x!V@F%(d+2@bV!5oo41a9@&q4N4JD^kfkFyWf|EzXE zr})R&2gj%L2gj%L2ggqnP)+tB^9Pe(?SM|@KaM|0|D>sQK&SY}@dwAJ^9RSL^9RSL z^9RRI8!)i{N%JD^kimw#}4I)89{ zI)89{I)89{I)5;HwF5f!?{WDD>7O*!4(JsBIR4=HbpGJ@bpGJ@bpGJ@bpBxYY6o=c z-{bg$^iP^<2Xu;m9Di_pI)89{I)89{I)89{I)5;HwF5f!?{WM=`X^1b13JY&jz2g) zoj*7}oj*7}oj*7}oj(}9+5w&V_c;Dw{gY}3bc%l*e{g&{e{g&{e{g&{e{g&{e-M0& zq5oO^mO{S&8Su%^UlsUd{#4+T`BQ;U=1&DanLj8#L;tgd^iNt0{m&KnbpGJ-)A@tr z)A@tr)A@tpGxR@ONdKh8(EnV4Pv;LVKb=1~KAk@}KAk@pK12Vrh4fEa4E@g)_;mi@ z^3(Z)Y~?>Ii4KR7;}KR7;}KR7;}KNvnk|FebkPg)H9&lUJ|{^0V{`Ge!r z`Ge!r`Gesz^gmlz|0F~Ia|J$~Ke+sK{^0m@{^0m@{vh}^L;tgly#EaN7TS2`kyQC>HNXvr}GEL zr}GELr}GEHXXt;nk^V`Wq5ru8pUxj#emZ|}d^&${d^&$He1`sK8|k048Ty|q@ag=) z<)`xp$EWiL$EWiL!)NG!wvqlxo1y=?0-w$wTz)!#aC|y{aC|y{FnosoXB+FEWaxjc zz^C&Em!Hlb9G}h~9G}h~1m9uke|C`mXTT@-|5V_U`BQ;U=1&DanLicyWd5M|4E@gz z(m&}i^gmbN)A@tTPv;MgPv;MgPv;MY&(QzuApMgLL;rIHKAk_f{B-`{_;mi@_;mhY z_zeBe4$?pAF!VoH;M4ho%TMPIj!)+gj!)+ghR@Ld>>&M<4nzNQ1wNfWxcqef;P`a@ z;P`a@VE7FE&koW*=`i#^SK!n6gUe6n4~|dg4~|dg4~Eas|Lh?BlMX}wa|J$~Ke+sK z{^0m@{^0m@{$ThF{m%~4Kj|>^KUd(>`Gd<(=MRog=MRog=MRR@(Escp{gVzu|8oUC zoj5D zKDqz70-wyE3VbquD)7ntslX@m2gPUTe;y$HlLLnS=L&o}e{lKf{K4_*{K4_*{K4=U z`kx0#|Kxz7|G5I6&L3QUI)89{I)89{I)5;HhW_UP(my$1=zp%jr}GDwpUxi~pUxi~ zpUxi)pP~PGfb>re82XHNXvr}GELr}GELr}GEHXXt+(VEvN} z{m&KnbpGJ-)A@tr)A@tr)A@to4;lKOhe-c3;FJ5GEAYwuslX@mrvjhMp9*|3e^7je z{^udmKRIORf3Co%^9Pro&L13~&L13~&L0e)q5pY^^iK{M`kyQC>HNXvr}GELr}GEL zr}GEHXXt+(BK?y?hW_UYd^&${`RV+@@#*}*@#*~8$A5lS^b3!w|3{^Yi>DB|^Ur&| zXMg_=w7~hr`NjWU&F}x|&ad6zz>AJ7)(?NrO8)lywiBNdMV|G|zGYg^jQb<&IjQ(= zvz-S}{Ye-9^)Ir<#_iU-b^l?GOmpOn9cOSpa2#tg9Q++ce|`5>Y7n?7 za%^Yt%yfo*b7)%wd-$wx*>LQc(MU|j@&DFae05h}&VJtcMLImII$wBE`wvdnfq&yI z-OFBY`d)J3H#gXT(=U6|c+2Wr*10vki1&Nbi(Jv(^wY)-UTikrm({Ji+HT+P8fMa8M!^rOH2#lLo!zs_&nOO(9Ri%eO#bRK+hx38A|;*Tpg@cipb``osn*xvEp zRF?X*TDZY>?ya^Dm;Liee|oWZxHo;h^#2SIK()L1wLiU34uQq?3&H?|Y z4J6_D))j_}L-6Cn+Pz!>Q072y`eAo_I}aY--F)ySl{SB_e?FYp5+M~mU#2&Gv)a1B-F$fl-o6C;W%kw6^ZQF_hqM43QC+&{ zxWuJzeSaOhs5ez|KV1J|IbZy7X`MR|B;hs$QQ)m#`MZ^f#bCbr0{LSq#51QC;t%Xd zVIWq-2FMT>x=^o7Ym85ei$__E;XX!s-HXo~f4SSbs%NtjSs-;P(r^sa&x=$H5=Y&e zH$p3AFOAS2-SzhCB`_~O8y*lofxAiw>$l!USO{E}-On00jk&BFE{YQburhGxar}z7 zfA4PmU9gbZcQk%r*A_$k?i)SQkuTyDDqgt{s;m`5y`as_HYbG zLaAi66Hy`-ps>=5oE4%-xS229h}Oa~+vOG9-v}eEL{l+e&lbx+rWbOjH+}c{cXzR^ zYCxh=zca2W{HcU-(N|8-$C@E1Jff$Ts(`4=3&-3H!g;QQsmUu^?_3AraZBs`U>t8B)a zL(+Vrnu}+=r>gt4zXG1NoACY)yi)_?z3b(Z)g9W1>xU=l_#5xWpUq$1xrji4c>Cw5hv+0AaboV7*aI-0SJwtoiRb}zow z5*oeB(r7EXm=#Qh`Z~m9vzp0GDqJ&@%~=(bn^ZQRr?{DHRWKQzAUecktD4D8DqJ&@ ztx6_0schX$wkwznT@M{%vR%#OCKaxk$#x}^n^d+ICd;Sd8GOSAG|Ao}t7ozd-Yn+J z`JuPREBWYoTBnEXND{ptYOlxjd^ zFqd~2T8vn`_@%uTI+2;Dki%LRimW_sfr9n%G=2TQ#EmmhKYOF|m(8hiDncvOmJtdFzlvVUa>2;SK3NWXzxg0Pipa&p!|@@$j7Y=E<+vDu`a_2yZ@*>TIQ&oSYpXdA3PkHo)1^*lbeIdh@K{Y&+Ft=4>mJ ztdFzlGO}d}2xi1}B+tqvZCj}(CufI9o^8^X4RE$JHk;J5-aIQf+fFr^Iok>)>*H*? z+;Uk0f>-}Kl4s@8&#hFGld~fv&o=4H1~^+9n@#FjZ=MyLZKs;doNa}Y^>H>`mb@$h z!J-o#$+L2a^j50L$=NZIXPfk81Dq|5%_jA%H_r;rwo^@J&bC6y`Z${|-(Qx1VCkHW zJ zswgXS(FtNrs@Vi{%VV@jO>54%g1IeKl$*KjP_stnR!1TQsWo0fl0j*Irn_zBvjCPEjTdF8GbK9Y2jm)i{hh~8dIx-KdtH)3!R6iS5a2xV)M`%RkI1^md9wvnA=iC zxtZGzHEU#U^*l7IJF|H#bRL>sMOm4P%|mNc%_f*z9-|#&Zc7#AW^OywtdY6Z^U$pB z%;vGsd1!hSWo0fl53Nx(n_zBvjCPEZHJmQGPimjnhiGS$UHO~ork7ZQC8++^UxYqvkB&w$7six+fqfj zncEIEYh-TqJT$vIvw3WE9-3Z7S(%H?Lu*vcCYW0uqa9;zOBLm2ZadVhk-63L(CqHa z=CRRvXnGZ8WiB=ktx+|bU~YMgc8s|#Rg{~#?NGBu=2p)`v%52!$42L&=~a}Kx!63k zM%8SBx#cn1G3K^ZQEuk8L(LkQTRjiW?#^r;8=Z%yS5a2xV)M`%RkI1^md9wvnA=iC zxtZGzHEU#U^*l7YJF|IgbRL>sMOm4P%|mNc%_f*z9-|#&Zc7#AW^OywtdY6Z^U&<> z%;vGtd1!hSWo0fl53Nx(n_zBvjCPECS8(2c3teS5a2xV)M`%RkI1^md9wvnA=iC zxtZGzHEU#U^*l7EJF|HlbRL>sMOm4P%|mNc%_f*z9-|#&Zc7#AW^OywtdY6Z^U$2` z%;s^>d1!hSWo0fl53Nx(n_zBvjCPE)U1!WgX(!` zgYL{j18tFcXnGapWG?7gJ`b%?HJe~=X^b|iX}$B%By(G;C^vK4p=OQDt)7QA02_2< z9@+q%ho)CiR_0>!&>B^<3Fel^Xvdh_QboC$+YU8rWN!65v_W@f^9;~=XnGZ8WiB=k ztx+|bU~YMgc8s|#Rg{~#?NGBu=2p)`8+2zj&j6i=rdLr`=3?{E8db9i=9b53$C%qv zMY);V4mE3JZuLC0L3d{J4A6OKdKG15E;bLXQ8k-jZh4G$jJYjUl$*KjP_stnR?kBl zbZ0it0G)@XS5a2xV)M`%RkI1^md9wvnA=iCxtZGzHEU#U^*ppecV_bp(0OQj6=h{E zHV>^)HJe~=d5m_9xh++co4M^!vqt7t&qEt@XEx6Oork7ZQC8++^UxYqvkB&w$7six z+fqfjncEIEYh-TqJhVY~X7dctd1!hSWo0fl53Nx(n_zBvjCPE!&>B^<3Fel^Xvdh_QboC$+YUABWA3ne9@?-w^Uy$BWFDGc zMLC%ZdX~>aYgEl9m|Gg7jcQu&JT%GNmMY54+;*s0BXg_gp$)+X9hrwVMCYODRg{&v z*gUjG)og;fsMOm4P%|mNc%_f*z9-|#& zZc7#AW^OywtdY6Z^U#Lfnawjq=b`CUl$E*IJhVpDY=XJvG1@Wawp3AW=C(skI&&}H zthR1&GhetLcDJ|l;Nh~@n_jE~|HfOom%V3y|H>?IesO;BzgP47f4cK)Hz+GbJKhg} z&r1IG`?ejQ6Gfi&&Aw%t&y0IowTE53+id3nRDW3M&Xux8#_iU-b^l?GOmpOn9mhEz zT4QTu{v9=)b9RA3fxGsD?ZwqkKhIv?ZtrJT-r8MyD|Z$^LYTdrEjACU?bq{Qy)C%- zz(XRahmIp++#C%o^)DP53)bNFeYx|N*M>bD!T!kbSH`== z)-Y{xo%J1DcNO@*yNhjd9o$feeK_;MU+%UFWUQ+3?Qh=Q{Mt9(Tp6#I{-4IjdGN*E zMqt-Fz`vQ_ddr6&j5{yby7#;Fa<>7%u$*!2-gyh5*ZpE=jr(Ueo4c>pcw(JdZ_nHw zkF&1ePRS2$=c|Ql{Ir4O50>1}UGm)c=-qm&FFzPP;T5n^cq` zJ(mEFhVg3YFa9uKBeKq8BJcI1@d@M)wsUW_eRz}?Byh=w3Y#7TIieco>)B%YhaqaP z&u!aSZD7kfcWg7<1U35SlfKwFzJ}g&<1JWrwE$n^7E#1hq}&fcn|wE4LWwxhhnm3^1~?D?ms|7uXiGV0+(t)5xktGt%6@!U zyKq(3K2(hW7k;+Dhu^?-U~6(d30+|r=K099jGgdSSSl&1(nydW&`*7w)S+0bZCB zwFHIRYsi2S_LaX|$*q`t*P*Y3*s59ux)z>R&7y9rg;NdAjPRaD(a?$6BK&vrJ#xs`w^5D%Wr`cqK>^^ zBHLNG75#y7`K`0Z-s4aA>%iTJ8xIAj9HJkcGW!#`B_LkEdHqhgINU6UD3T)1RT-G$ zAbxRg{oo-3pv2HYw)kbY+ILY?VUTqR9wv35EOTvkM>gS!Ey0|>%>z%eUu`0Ux!6gx15`{^?zBzZzHIigd@!-z#QhRd*DL5^5ChB$EeWC-kKs2&pF%!3^6n^8pXn#=bQCAS1U(wDHeWcj7#lN$E+V z&ul0~k|rV9NJ=WDlD47nZZZ}}{#C?NxbUJYad2Fphr=0 zfv~#T5Qhz?+G55egzGonm)U#?y_RzkNWag_ka&C7t1KQm5s817d2N`xMJTMl=z6mL z#bku~qld82C^FE810k0D!M!v}I4PDYTao=EQpJyWg^WspiV%b>p-eG*#N8hpif{jb zF|T~+w+q=*z?cK@!NadU%x*TfaczDFj)?fHhH>)V}!QTZi{u0h=iLZgbuc8ih;0yX(N|hR@ zDThA7s-yo!0C}Q^ID8}!Wwya`_EmJW$0J<%5n?zMxZ7Q@GN2oI=R&6yToyo_Wq)kY z;&qKII2*Lc{(DlxL^e@@d`3FmAl^0f)ntAE$^$KLj%$Dxt=JOY0Dw0+=htxCz1j3- z5{sk`ZU#GW4JIL0`v0i#8`RNSL9? zQb)E9?;N;o4XE;$N*zA?lcoOCtquA*M&`D4ItS(?UMoE)d%TttPENNq4o%`U4o%`U z4o%`U4!xj|4~Hi48iywF8iP*f)1Jg@Ac3FNxa6PNxa6PNxa6PNxa6P zNxa6PNxa6O)3rHH;5XR}e#-T~P#-T~P#-T~P#-T~P#-T~P#-T~PMxbHk ztH{NNIvEk8nbI)J_Fi# zV+Ayc*SORqUgOXtUgOXtUgOXtUgOXtUSrU-@x}o%uW_kKyvCtPyvCtPyvCtPyvCtPyhflM+IXXb zj5h)_<$b;iXbP_@peekrfTr-e0-D0>3TO(iE1)U7MxklrjSe#815?mQyvCtPyvCtP zyvCtPyvCtPyvCtPyvCtPyvCqu)eO@fw$!#A_Uy#A_Uy#A_Uy#A_Uy#A^(iHs0tULp}~|ys-kB z#A{q?60dP+60dP+60dP+60dP+60b36+IXW}l_(l|$&br8wDHCYXcDiHfhv%i#A_Uy z#A_Uy#A_Uy#A_Uy#A^(iHr@#9Ekvw_bq{m%8y(tsV+Ayc*SORqUgOXtUgOXtUgOXt zUgOXtUSrU-@kR$3@^NV6jTO)&UgJ`ec#T7oc#T7oc#T7oc#T7oc#T2R#v2`E$j70L zH&#HCc#TU<;x!IU;x!IU;x!IU;x!IU;xz_M8*g;5As^a!V+Ayc*SORqUgOXtUgOXt zUgOXtUgOXtUL(*pZM;!k1v7tt4bYTvnF?qMuPdM_ysm(z@VWw;!s`lX3a=}mDZECZ zY2%GHGUQ{^#v3c3Nxa6TCh;1FCh;1FCh;1FCh;1FCh;1Brj0k+$dHds8*i+DCh;1V zn#5}yn#5}yn#5}yn#5}yn#5}inl|1TE#NQv`u6TaXyc6)&?H_X16B5r)PG$eHHp`_ z)FfWx&?H{t&?H`C(6sSJ8yWJkY2%F*&?H{tQj_vE4o%`U4o%`U4o%`U4o%`U22C4p zOg_B=8GA2Z)5aSsph>(&2C8h@cw>dsBwpiElX#6olX#6olX#6m)5aTZWXQ*+jWO+ZG>O+ZG>O+ZG>O+3G;O?5UEq8#U(?1LE1*fdMh2>Ei*|pFLz8%o zLz8%oLz8%oLz8%oLDR+?ZDh#Drj0jNK$CclOHInxI5dgZI5dgZI5dgZI5dgZ7&L9X z5kC7-`rZ?K6^k@3gF};ejYE@ojYE@ojYE@ojYE@ojYE@ojX+zp@kR@o-w4nYUROX< zcwGTa;dKQxh1V6(6kbO+ZG>O+Z zG>O+ZG>O+3G;O?5{Ww|vxzVDHH&#HCc#RBHfz%{kA4YyCh;1FCh;1FCh;1FCh;1FCh;1F zCh;1Brj0kMAM@V3zov~hRzQ<@jSN&-HtqfzhbHkFhbHkFhbHkFhbHkFgQkr)TF8)( zMH_FdfF|)8mztEXacB~+acB~+acB~+acB~+F=*O&qlFClShVrR3TP6qaj8kX#-T~P z#-T~P#-T~P#-T~P#-M5AjTScKLmO|bfF|)8mzu(#9Jr zph>*Or6%zjhbHkFhbHkFhbHkFhbHkFgQkr)n#hokNgHphfF|)8mzuq#=c42$Ytx=pi^2a2H~)^I^3v0A8c!6$VVM+RG<&GH407RH407R zH407RH42@k>l$oL;Wa8Xjn@dYI^3uj8il6u8il6u8il6u8il6u8il6u8il6u8i7`a8x`^$ z%xh%GM;&fdpbzFX3QglR3QglR3QglR3QglR3QglR3QglR0<8`=D&#wu*T|5MI^3v0 zAIxhMn#OAsn#OAsn#OAsn#OAsn#OAsn#OAcS{-gw$agTWks%*-xKV*VnAa#Yjn^nN zjn^nNjn^nNjn^nNjn^nNjn@dYI^3v`?_geILq5uM83p=aUZc=7UZc=7UZc=7UZc=7 zUZc=7UZc=7UL(+vrTel^Kkd-3(d>D!JR8pbc>B?5EOj&h%K!~X!Xh4s3_nmVgsw11WDj|9sX;>Mo85AG zj6sfo{xk5lt|~PQNr%!DyYV1sV2DX#NRqFM7-G&S45@&oFr*w>xDhOJIzy_U2@I)% zCNQKN8W;kfSpc)dArl6AMaUQt`^43yAtRwF45@&oFr*w>Fa#`eIzy_U2@I)%CNQKN z8r%pAJ`os_Jfj!o5Sx@kDxfJ0DTfve0gIf@kSb^bL#m(&4B3Z%epd7gkE;JirHYHo zletsRd%b6Wk>B~n`NjWU&F}vSH#BZgkI?<__pIb^zi->|IZ@SP<{63li9OI#_iU-b^l?GOmpOn9mhEz4lHYA{beZpWPDYJqJg{igYCuDPe0FI z-fr(_SKiuPdMkG(+8%gDTWlUy+pp*Mx69LO7ePIA91-K@Xke*-A@)a>IkKOb&aiI| zZEIi;p7kxua_nbDBQY7r|66bI)m?o#`+4UVYFc%^@S^q~oUQ}^##_3Vz25Y_TX!YkCpy_of%QqP^*-jT^k!Y`ib4TX(hHz}35zx4m3#rWbOfH@yn{ z>)m4edVcFIA1?2_VC&xR*2^7~$ex0t^I&^FcHcXNUk=-OaE4>4kC#jJ0PQ(9jKT{NQ#D_&;qR|IW9ruvr{^ zA0O84Dqj&4AzPwn?mk%4S$l5XLwW_Uk?%3w^qVOEZS&p8Z zd3Waq^X2j_$h%rR#9m$qiyDiE#nMgv{nFiR&ldBI8y5yc?;Yz+UkJo6Zldwxqi`quZ?v4?uo zKxTco^uuz#_~TL#26!R2A$$UF{mS31L;wc!)fY$_Qz02pO8kKxDFsY`g)Y=9 zmCBC7NUwYGdE+m4TUYgIRw58OmB<|RfgyR3ib3Ldd-FzUrR=4#`J=nuepSzg2ZTG| zRuTgGt+x>t0&iva6WgYNmNouGaaI5>!liN0ieP{5Zv0)akSXK!>q{HdgFn6L+fN@a zO?x=K5E~Ex?_c~fGspkBguIn(_ohF7xDrRiAIRHKM(oMIAhZho;%@FO=bx9ZdN2WU z`Zjnv*$r_geG7yMp+O{T*dN(LfLFxp+ru#&2}P9EPDF`VfWk^Iau$fVe=}dW5s`&e zw#zHHmk|b9iDm)%9T&?#rWbOjH+}c{cXzQx8jGj^@LXiyz}@bGl>yPWgJwq_f~Z*d za0((q{sk%CLDRMM7yeS#whflEuaFg#!=lV9e|6)1fyWAT|(A z{sn(;w}JN=7=F3%SKGi}LZV3y2`8nRDx0y=kRYF)(&8!Z395Y!LoY3MHgq-BLUHeU z`4rU_Ey%-Db9X#%ahSg7mp4ILWO|X!;&LSY!1NtXoIE&t?{OO%vAz5q4OAbVzf)Dj zyDaTgv_Q|J+bKm)cm?4}=y}~vHRWBLxc^Y^JFe&3`AMXW-^^&INBKh(ZrZZS{=%)C(?@QRI`>4EpJ?Os>lvz)t71gOGXNabs)+lXU zV3Mc4`y$>}RDSKFor4EpJ?Os>N;pEs@0*)dLpf; zPBm)@(elPcr>e}Ys0h)PD#}b4~(WI(b`5h?XZ^ovPLlqAgXFJw%^|o=7XIlee59TD^AB0DRq* zXHj(RBE5>ThA6srQK$4oT2Y<6ttCXuldeuxnOjkG?V?Um7wgg0>QLrXgtVeM)#MD( z>a~joIv1E=4pDUNBE5>TQWssjs8f0(t*B1k))J!St*A~_YY5SnD#{+BPeV_n71haG z#t?O?*Di9pvvv_^i>zIwS5eLo1wE1ZqMg#SycN}|W-TFFnsl|Q%G-*{5N)ZV>>>Iz z^ek^hweprTM61^>a&#^*!5pIK+C_R5Werhu?V?WUiL|0Rd0R_}mM2}Es@4#qEmf2~ zM4yJ9NGqz7x11qby>^kKbAbuw5JlH6(yJ(Ih@xv3bxKd971hbxT0*ou>FQLqh7fJ3 zqU<61H1tGTQJuWy4AJVfiyWN`OfZKix^|IXMOi}>UAw4LdLpf;PTtlMqUA|fr>ZrC zXiF7k57DQgC(?@Q*mMY2~qEAClq!rc4Th0)zUc1QAxxfT-h@xv3=~a|9MA5a2I;AJlit6NT zEg@Q-bakp)Lx{FiQT7mh8hRqFs7~H;hG_NLMGpA7BWo8q=-Nek6=e-kbnT)}>4~(W zI(b`5h?XZ^ovJdoqUhR1ouV$Xc2TGFL|RduyyXnh>a~j;oeNAbhbX#skzPevTTyiF zqE6|Fw4yqBTT6(Rx1u^#tsz8PswjJiJ`FvQR#Yc%8AH^rUc1Qd&e}zwEwXlzUPU=W z6!b*aF6xw?<*lezHERjc(xj_ZRo+%qhGZKa~k(oeNAb zhbX#skzPevLlj-Rs8f0(t*B1k))J!SNmr+;HH2tO6=e_6r=cg(it6MoXNXp>U1aNA zV1hYB(Y1^8D#{w7=-Ne{(i3S#b@H~B5G_x-I#sP9L|dvTdx$;_J&{&aCvQ1Jw0i9# zTjv53%pr=dU8Gl0)(}P4F6xw?NGqz7x3z?5dD7LXY7HUUQbpNA^l9jcw4yqB%Ne58 zYZuu%7nooUQFQGhy^6AiD7to0r}RWxQJuW4B}B`Uu1-~J2+@`*${wOmLrTAp-us#-&cwp3B}5PceYBCV)S z-g1U$_1Za~k(@O4*OQFQGhy^6AiD7to0r}RWxQJuW4B}B`Uu1-~%TTyiFqE1m4 zS-YrHdLpf;PTq2cX!Y7fw$246m_rm@yGXC1tgR@zc2TGFL|Rduysaff%Ue;Ms@4#q zEmf2~M4yJ9NGqz7w~QfbRj*xSb!Y7&&=y&{NUx%tAqsjTYZrA&&+=AOtD3chXlc^b zsw!_QDnqoTin533)6lcL71hdH&Je9$yU5bHzyx!MqH7oFRg^VE(Y1>@r6f~)L zAzGevb*frJh_+Nw_7Hs>X+?GNmNP`F*DkVjE-=9yqUhR1dKG02QFQI1PU(rX zqB?n7ONf>yU7f1d5TY$rls!bBhMq_(s*|^zAzHn5k)?Bi3FZ(**DlhlC~JtKYZrA& zPox#q$=g~&v^?qRRJDc>ZKa~k3oeNAbhbX#skzPevLlj-R zs8f0(t*B1k))J!SNmr+;HH2tO6=e_6r=cg(it6MoXNXp>U1aH8V1hYB(Y1^8D#{w7 z=-Ne{(i3S#b@H~B5G_x-I#sP9L|dvTdx$;_J&{&aCvQ1Jw0i9#OXmU;%pr=dU8Gl0 z)(}P4F6xw?NGqz7x3z?5dD7LXY7HUUQbpNA^l9jcw4yqB%Ne58YZqDI>yE5lWT9&p z=~a|9MA5a2I;AJlit6NTEg@Q-bakrA+=`-W7j=rd$l67n(i3S#b@G-oM61^>vUDym z!5pIK+C_R5Wo<>#wTn8XC(?@QTHcE4RJDc>ZKGIcI6!5pIK+C_R5Werhu?V?WUiL|0Rd0R_}mM2}Es@4#qEmf2~M4yJ9 zNGqz7x11qby>^kQbAbuw5JlH6(yJ(Ih@xv3bxKd971hbxT0*ou>FQLqh7fJ3qU<61 zH1tGTQJuWy4AJVfi%gvhOfZKix^|IXMOi}>UAw4LdLpf;PTtlMqUA|fr>ZrCXiF7k z57DQgC(?@QRe!gIYiO5i}WhW8lvdhMV-0u#(3imqLxS5ejwMb|Fsl%7Z{s*|_1glKuv)v0O? zA=*+!*+cYc=!vwVI(f?(qSb2`nK~DkU=C4q?IOL3vW6(Sc2TGFL|Rduysaff%ag87 zRci>*mMY2~qEAClq!rc4Th0)zUc1NyUw35fA`@M^NUx%-A&RbD)G0lYR#Yc%YYEZv zq^na^=2jG4yQovtMb<9rl%7Z{s*|^zAzHn5k%*G6w4&(RMS2xwZAHQu6h&@4@~Iu+#)&33BE9hy%;%koxJCu12yvwCSFoy$k?h9Q_!-!)zryY#?Y)@ib&^j5xk*^E<~hNP0r9n zmm%tqmgTLcP9^II&C*1xQ&IlVY^R#sq4^ZFEN?Y+GL|tktCt?qxjY1KXrc=bX;qUm zG|^>;I;3TJtEp4TIzqEF(dtx`KQ!B^CU9^uRI-lHEKRgJ73B}jcB;u8nomK?@>WwPV;MuUdTAk@%RlgjCc3bY zRy8?86J1uQLt2)%nmU!NBQ#4BtxiSxL$jS~a);(q(6YSM)X7-J(5zlcNau17yrGFM zB&1bM&d@}c5$ceZ<*lYpCF=;y(nPCMQU1_ur<&ZM`4qG)Z#8u?mN7IBSURXXYaYO) zFqme$n%}yYy=kuXqF~gor?0dn)rf2 z-61WuTu^tkEN?Y+GL|tk=hxSPyV;aACOSO{GQIS+8))EOY`1~;dAD^hBXOq}>7m~A z;{A4ce(B7q}+b>`j04f=h2Ty%2wUQ`zz{XmsP< z`0z~Vt!Dk%wZGfu)l<&rUAOkV)z&>!PXTnQo&)hclD)S6=$25?W#-tr$ntzD6g_g?e+3uj}yIvZ;sc_BN7$!kfWaB24WnuEg8`0N$GhetLcDJ|l z;Nh|d1FP%6zwwsP$^Go_pMDFRUz}h3@74VNpU~aw2KC6(4}Z@}{`UK}6Q2`Bp7qVX zWm?aS`+CI5qV6`^c>vXCk3N|_Yi!(Zy<7Jm=EyWh&e(Cr=fh#&9$WU`0r~`35V&i2 z%jM$gr=MppZ@2fe#pYqP{dyj(w|vTrpdLCh#?8^d60sitg{^@-u&rmNGwho~+Zs3~ z#Q(?~_MaJz#AF=*Z@tA=clG7$=bc}udDZ#Ci`sv%*ZT+Y2LQ%z-qza~|9tzwcrW>6 z-1vdJDl%mc%k7^d@s)BnL48&=nf3O}?eRG03hu%D;C8-RxW-Q#NcLdK4c#TrjgQ`~xBBvf z(Gy+)8-+J{(f;$Z=$CAqrCaLe+1Yam@MsvX;LW-}4A_XQ^O(qc{b+mw`Gf5o-XC~) zloup$$%YD>9t1g}8sOE5#qtkB)L@_6wz1mCt>Iu8Zh{*9^GRRq9A884x$zb(yIO#+ zaf>KoDpKxkCI^y@SPvtv$@q5huvogA?}SQG?Z&tB&l^EkR~|LwP59k>3CcYhSKiuP zdMh{74=ysmh4Kt+&F`Zvi^t;sBPtUhopu z&2Bav4TSXYdn_v!o=(kfM^+t}j@X){@es8?>{dIA!C_+zp(p-CGn0L-wl5}=m6#vH@-qp-u4)6-G6@CdQ0y=A-Ndu zKh+z~RNaIp8EvEUX|ep)^IqaT$>_)pz{{8KU;HvN$Nz%!KYqB9>@{A$hV$Zrx1T=B ztxr(sv6q6LE`_LL@0Z9H5l>Q7mP(lzZk;{$9)G%Di|IFzf)$`VM0%lMx%gRw5LQ6E ze)IZWcvShn93llvr6_FBa}bj#W=11BYLOf#j6Xw2@r!%w2M>w_Vl#p;<8VpqjunCC zLKf-^h~0AQt(We-8>BcnDWIX?$_F1G*6N-@I+yD74;YE0R0HVdWIL3cdUWDnENs81Ku_54Z zXbY!ri>fBj9RYu=A<#)$z_k1Ja4h7Rz&^Vzq#cAXp%kzY86n9RsV$-{9x33_H}j0N z_k2{$JvB=v+f_x=^KvWN&HPFF6ND|4UtvlT=M#I$!bQ&*X)6E;8j6b+0RD*l4?Pny z`-^K+;SznyHmZuI=jB$koB0#zS;L)pNKsI5G@OXL4#yfNc|_=0a`!Jr;!l1ikzp$T zGi>=(V%lNz036k3+rqRfq}ls{mC#>uKDBMw>LpE{COxHbp?~$mRrG+8GOv)k<)_s% z`!QG$eThvBBNueg^OxMk9OQnr?yT7AnMkVJ-Et=WnZwP@bXJ?0-Jdz|=J6-XG=bbD zr=vXK_2GHWGg+mId=TF76uUuHLsc+6F1F-ecqlqiuoGXd_$a;AN_~=biFzme`ZYZK zefk(>KI7khaJ_-^FtHl`pRfLaKmYz-?0z5a6~%8PUMx%UH$5)4l0w$ z4U|cCYpcg)Oq z4b&qOLId^4gwQ}eG9ffjk4y*+)FTr@1NF#+P=7sEL;1jJC?8l2@YHk1#B4dsJjL-}A>Z$5~|iIPE~cq8{WEhe_) zUU(=vQLqyuMB_}^vEg*wObjZezvy`Qj!t%*X*d{&A#SVhgsYV{{0b6^z? zF-GFWvLt`g<6=whg@>XO1v~Mz&wJ7Mqj>Er8h!lr;zfKk9f>U-nT%n=O2fUR{$!)5 z6v!!S4sGVAFJ`Vpuk^ zg^(o?EZIOMghir9WARG!1e%$(75g{!`g5@<{44(1>8qOJy{EL4cqJ!P831R?l?BOH zfcA$GXj(J_7>-9qwVKg;Ug2&G=)nLsK$$S3P7zRfwL zSP*448OOrO!X*;g>5FebU==+9gk?`d38BXzHK8J*d}FTKhG5XphTh_KEsZ#kazY2F zgpDK=XT@d=Xhv^CNiCGubrqEpz)7gMi34W5EUJlrcJwaCV+=SNhML0|ln}8*!tjN; z2qZ(BL}i%5^jXZ3n!)^&tqX4}gukS2KTuVcgWGW#Wf&U{#a_+<+RT9akwTPk6svQ( z%0O%}Nm5LBBuO&KMp80!bz#$z)R?Fo zGAJT;{Nk=GW?2f$O?VemMoOlRq~<6I9xI_l{N7Mrt*vMmauvk&heD~MsjWe*bkZ0^ z2crD{W(D(1j1S&_VDdru;z`&X%WYKWW2L$J306AZY{hcN8;HF>X8G5u)hrOEdNrNK zxhjSc>$v1mWIi|^1{Q;ftrY$Repu-=1enDj2ot|r4V&h05M|C-nyo*3C8m96BobF0 zCru2Kkw{3RCdKfTnv|ZVn$&*%FuU2@hH7O02N)1LITnSZVq!QFHV1Mc<`>{4@g8Dw zL9}tWQp$SH`$(t2m^?5R4@|gVQpP+-DCwALdw32^hsJu{6iRq+el9MJiMZ_f!I- zh;$MRi>JirmK8x_+w3O_+*9&<#;I9inBz^%;whUa`z0`nfllz0ExygUZ<}LHEMOEt zViO+^!;<~rexgX4V;%1Bcq)NW40M9093D>z7)6j%J>`Ij3wU$9iCH`~;PF%fqZsG} zPYrlHC14amPW9A)$5R5PK$>G6KIHLK0;7m@f~ST&o)R#MAg6k2$m1yiQy|T;o*MCZ zDuGc%I>A#T9#07vMUYcHHRADEw)P%=V0!9(!R8LKKJSAWXq&e181&%tUk0ORqB|5=V1&%6~27eGL zaMVdK`?r1q=4cb|JL&`&m}|q)o0P&Rt~%aR0K@S-C1DgnPK+sl*>~0Po{}&H(j4h< zn61R(sRTw5=>$)SZlHoEm?IxqK`D;x2QVz2;^|F-*Bw|qmB7$ECAxtaJjK(S1h!%E zlz>sp5=Z#4F_m-!DF!+r7!nvoq?2G+JjK(S1hWZQJjK(S1al5qVk&{5d5Whu36x^V zemuQNAPq}QCEY-@m`Y%1p5p0Ef~lx1p5p0E0%=%0m2?BqJe9!EJjK(S1e1ALJjK(S z1k$j0D(MEIc`AXSd5Whu38q7{c#5Yt38Z21RMHJZ^Hc&u^At~S5=U+c#5Yt38dk;qkt7_SUi=$&^*P{n*>U+c#5Yt38Z21RMHJZ zx=V+pgCd91JjK(S1k$j0il;XTq+#(?(hWrOR02cu6i;swECt2lDW2XWkcP!mNjDJ9 zQwa>sQ#`#%u$UH$r+9jkKpGZLCEY+YPbDxkPx167!E$6Qp5p0E0%=%0m2?BqJe9!E zJjK(S1Pi*cc#5Yt38Z21RD36(II6hg1%G6XVH8K51hfC(TMUEuQ4~1pB$)ljDFJhA z=R$#_PJn@R{y6T^Qy9fn$M;bH%)YA%VNg#=7)6j1dy@cW-&MzZO2QOKbELyzr9>7_ zB`}Ieg(gNr6Qp7B6i;swNWo`^d`Y_ z;4Gfv=}iJ@SUgp5>sQ?If&QDU9N(<8L7WX5UqXFsP>_j3UU1y-5JG@2cZHC1DDrInv><&OVE$5*S6KLKCB* z3DU55il;XTq+#(CPj3=@ser{(2@K6sJiSSv6h}J+Ff5+p=}m%fJ+OExfuVVdr#A_d zV(}DDZxTquaYq5mn6r2)fuVVdr#A_dV(}DDZxTqu;;Ez?h;)|@pDl?TPV*E`ZxTqu z;whfqB#?&1Q%N@v%~J^s%~L$RN$?pO7Ekf?CV@08o=UobXr4-7XrAKfO@ePpuy~56 zHwmO+@l?_cMDtVvL-Q0*ZxVb8iN#Yqy-6Sqi>H!qAeyHV7@DVedXwN|QY@b0=}iJ@ zSUeTq2`G*#?s&l;Sz{Q*Q76IdKlm2I;C&PYjyefu|8Yvd9NW22;HVQ|;2UEccj+mN z;;Q5OC;(>PRfRC9rzDIb$cep40JHC^<2@x|3ZyyG;qa9<7EdKGib#bfMne;%Veu4C zZxTqu;whfqB>2u9i>DG8nx}YrlRznsb_!rvJjK(S1YZhd@l*ms^At~S5-7#uDW2XW zkcQ)qB6(t^-BBbkild6#a6J1JB)?)9yqzj=)JZV=A$7{FK!Kx9fJvTMX`V`8Xr3y1 z@IArAMGw9w!LWF$=)v~{PbE*RG*2ZkG*1;h_?}?mq6goTU|2j=^x%7fr;;aDnx_&N znx~2$d`~cO(Sz?vFf5)bdhk8LQ~S3Q@bGc`?R5mB`soyy{af@hY0!3R|90Xem;ygZ zrH*_M+P|F$r8y7=KF%q=V(Sdys=Z&~)1CUU*+Kj*K=?dru${re4dQcm@L8cj zwr+6Hhdbl%b?*O_-|kHRQ$GNm`Lc6P;cz$qVb4q<@ug>o%eS9C#-I0m<-znd>XqnH(#-9WJ_0uo2 zHy?kB(1(-sVss0TLv~7Jm8kG>F3!?@deT=Z|yF6Ky%N_{w%@3hQ7~0IIM?Dzp0G zy+mg8`+enxJ^*>S`5M4yvLn`w)ti)ZTq$$7_EgA?_~Z2Al9+Y!6XBsb`eO_$dk$m{ zleR=w^S6pz-V9{X)V;%y<=3BojqEW|TLu*?yDjW2#g+esn^B3_8erzpBw|PZP%DSr zklzgsk=3uoC&*Z9mX%Z86EasJ!#CL@J{PvQDx9)ijjZO?IQJg%_kjG2wx)`Zxy?tz z9wfOg+Kh@scCJU}Ua$8L;tv3fH!EncZ{`b^j`qFrVRw5w4<4ZXuh2O>t^OZ5vFy6s z@#j6DO7eUE@vU*?2ir|@1Ty1~UI71xAMrM>0)Oi-{AHNt4da8q3l^^N?(^^PS$27q z#Cv6Yd|10;|FHoLps83a|43!dZV7?Bl@v>)cu{y8EN5Rg@{m$CZtLK9;BI%p%D9^^ zckW~F5v~c~6XUthdB>Lu9C`(^1&txIe|ajn_E*v)S!}rn6~G63MK!X0J<&wo^|Iay z#0|njf%tHUL4)|4>+(bL*IcsA7VQ{|&c zKv@*(SzW=)88m490wN_E49uu|tH=kkf)GPoAbx3!rkpGwQc^*+i4LiNWTNT{Oa>Dr zeH}$6G8s%%Q32gVXayF7iIT_XA`@8*CaS1_ZX&b-o54g$XLFH>Yz7lmR6sWoT7gWc zxrCIYin3gkW}5JFEEh!;WO8;=L0K+3p@NK^paMKyA6-E%Atf3dXd*O{rHOJ0DXHK< z6CF|k$wbu^D z1tb#{R1iPJLBP(gy?n0@Xb?qm@dHSB6Qp1WmBlYj*UCv4&R8zh=lrneOzAIzD~oQt z6b!tAKLc-@?RQBvD1O3`(i&(5GF!>V*dimP6_lGOgRrkb=JcMCMENQcWe}<=$Qvou zpxi`;tV?o<>OpWq~G~AZv&qN;HTo*rSmsUuB|WD#%;tkSF~kG=SEOYNGP? zK={DiBazbEQto8cL{$}#O@vnftr^usI$+}N;N2p|5J^Otw-0&UT(QS=^4!EKAIDS{}` zAg+MWq8(O2Y#Gtg${%K;xJ=j{98v++q8(_Wvi2aXp46g65U3AezE1w$@mLe#8elEj zfhHXP{NSZqJ<`^s(@^w{R(ogDdgWwQD1n- z6wT}?SLKdB@AaPjC4T1@=NJEbHNXES41K#nJtFtR-?Ngx{l4wQ=R}cbeY0=q*Yo?^C0}(SsE3Y>adR}VM6AbuVRJCF;T*j1-#3T0HE>Lb|B*QuJ~JAL z$vFPsdW)~_>dV>BJHJr#s`G^xwg2FB9r!oi(!K2Urtc*eeshBjynB7wo5ovK-?GlF z=|#NXn_lFK_NJdUZt!BW@xH8X-PLvjSMOHd_HwnEUdWB!6yEH+-YvGT=eOSS;quN4 zw(k9Iz1%^G>?tS;b2l#U7dva*KfBr7eYM6D>&$w4=0Z_%syF@UuYd8c-KCgBa2b<# zdXYH{rRKpGcl&DTFaEf41JA#{w9joDitQcmO=YQ1tA!hE=kP++!)5<`(w|=J9qvtE zFa1A51kmDce(g^$ltW;gJzIcA@am=?+|B|2rw!!W`PLOSieGvcFEd`Q04Q^yH;rD? ze0THFyY*IIUaaQJhmBWc-5B*ctL<@X z@vvCBsefO(o9)?RzH#Hi)_8iccd$2oAt1lFnW7`dvCZj4(W&0_-#)w>nJGRP^~e3u z^kV-^Z<^Hj-kmSOY>7DibGWTA1l>xDWQE%Yutt_~3jnH|`BJL9`E%BJe>{>1spR=G zy{UZB7v2m#1D9V~lj%j~fO>v@e<@7?hEB`CLDjc=9!z}u*7w)3uX@wvELg*ZAC~jQ zAD7m-17Q+wLl_0#`jx+1iNFiyt1pl&rb0IGnD_%bP^Sq*6Mv!ZxXgumVOmpsTB?`9 zkjg;N<#Ez$Uwq#9%iY#h9h((uB;-h>vijrUXbe=zLly(Qffp&|%#*ana%t@WOe5Jx zF2HyLQ&Ou)uuOrHL0P5GLYi)FsU7i4W?RWD2$O< z-n9FU2_(uR7UL8cO@+?NIue;Bk6VC{GjrbT03oHlh^U|D!)#<+6en*;7J)mDbF0Y7 z@7;}jTU~6weE;H?nK}N~r76>3yw{ul_~Ghu0)!NQp)GlRIqr`^9oXniVY(ZfbHI*b z3mR3p>=NQZ{srEs6}-5cd&~LfrK=uHYIXWHcr)3Js_k2jQn59Jd51%QPwEDr*~2j$ zQL3Ma60rb~L)RX>Qa`#e!x7)z`3_0g=;jgxVzl8js91>1RHB&ZYCFN`V-B(jiF6h3RVv0kH zw1hFYT1YD1j^+%ZBu=0(PUzyKcnC`;!`p6ISUFyvCk@^_uHr3LCIzgR0ABY%_bZ=U?}p(k87rQH8vp>BskWQfW~ z0Nu8zKOiDY;8D@I88n4P)nkFQLz6d$xjvC5o()1B(Ln)ukF47k4TVP4qeA0m&=eX~ z4-L`|P2M`{3XKCEA9UNIq0p#$kZ9ZtnnI)MkwV&`$s0>up>e>&g>G9k6dF~J8I7Bv zsnCeu#f19A3Nrbp4CQo#4;XpnYkRjsQ7>Axr5y&yC4{H;9G!z3F^}>~3@==f}(x3$zje~g6!GcCW>K~ogsDAAa(;^G> zu_$QX22BP*%z(m{pd}orwJ8VNnXvlvlrz5Qx_hY>5q;4*?r_ z7zpnKbaJ4s5Qw`3l*MxM49FGHcso>kzff$2aNXMW7^0zQ$a%UrAaaE?(xI-H$UOh6 z%Sh)5QCLu;L28SSLPfDBXStjKv}3XL8Z=5nu~KZ3@@Hv{7RldF)EYP8a>DX!8HM2z zoo|p3dG%q*_yhR`i+DD z+OO2S4Vn)DtY4{l{qr1XAOy<$l|uD(_A50K0%*Td^EPNc1h9Uk=JnSQ0_FWmq53-e z6dDNuv|p)t8#EsRSie&9`qvc#;p)ek1xI0F&SYit_OHUOPr|>y|MBO-{r(4h>tkq-l<$8G;QJqgL4WY~_djZI z#U5m@_YdL^0E`dfqcJXgnZk%x{5HZ5gc$yf@lE`Bj&JByJvV-KSK^Bl#+#M=p2ilw zRPuw-6Cc<6-uMx|Qt?Cbojt>N9eBns^T4nshUxs^^nVzb27JrJiHb*`GfA!pKXYPy z`*P<96U0x4N2O>6<< z+u!5|LyR|9hWKQN5q?HQ0To|JF>d51QhqR$Z=^)PVR_@)z4I1A)uL~t$fCX8b3<9S z-uQpukZ^H&BU!ONvYRY__2CEOo9EvcU{vE4zSFXF|3Bj!Kipr!cOqc#`*81izMbEI z?DDeQSI?C1p(&e5p?D+ydv=y?Wwz79(N=muy(B%FZb7{TJI|%G@rU?gioh3SK+#RS z8~%ktZ#J8qD?jcl4m}#tM-ar3coVjh4-TZTkB0c{LUN_NI7H2CrWa%mCp(XY(*8d~ ze3oEeTCoPQkWzj=0{(s*ewXDtS8VHDgG1I zD6WC?;`=S)Z}>qK*vd&OKV1@E5nf`LsU}j|sG3xVbPG-u>?G0}z9BxX5djqbiR;ct zYsim~z$x<_J{|(LjXncw81Ti9_=>1zXObMCN^7KKn8l$W7Xp~QjAVzZQYQ4z`~9fy zf$6}Oc|I~NkT&_qWNMwTK*n5{w6>Ev-?WG64k(@G1m6(zu@m9;>>C>Wy*-e~^zr%?H+oyp9^Es>Petwip6+K!WPtz*0FPO?*}U0zu&x3yMF8cFT3 z_vY?rzdwM)3&jJHARsrXxN9=*CU6eUI}Q#=0MzydS!(4StI5T_Nk5ME(`+lSDW>$_ zGOWozG-@f?PFFYU+a14WM?{nqCuA!WjhlP;(8E!9GVBY9%OPOWqN_5+ec6s6!o)Bo#fm&zcZ`4ST)d2bc>2SO zdl?2O*|BGTyO&OzZ1{{t{LZq@N$1!3)$U#A_v+Zhi!3;Pn|W>*55l+x8&3~0nNMN#X|A7 z#Fm_|B_0=d3#)aLgA`-q-(2<*l)ocXO0X<#yjxJMTS{OVwsa&@H>fmD>0-kcbxY|g z>!t~=2%D6EY0#v8oS_Xx{X{l^5f+kk%g|=-mZ8nuEkhgCP26ZAeJke+>J=Jx0=}er z-(^%c-M0#`F?|XD+Ur&^)ZF`P=kmqN&a)@KJbBi6{NnlLs~68QfhB_{^M@9{^k1{# z3#$~qWZ*m_#Nhr{$-j_8=HF~s%M6(LLmyK6osFJc_r~h2 zU!=vrH?!?5jdFT}29fzS1)t(NFg#BNOs)n?{$N)+G5qY#BR&ptt556~ex=o3NYAjF z`9tGZ|JB#@_Zrh*_k~{d@G%GCy421Ox63K3Rdg;k*SGxc){L!Xn9=^I#{BORYepxK zJg!2NI??TEW zjVgP-nczfrUlUp`Mr`@!W6L#4E$Ec_eaeN8srbi)qgB_Yxg`f9%v+ z^e%jC^<2n1p@|rqm|ZmJ%tFQ*S~Ip9lxxPe4=rTAKbx7J6O;>?Ycm+B8aO|7e zKW}GSEEI3%*Y9?nH?z*$+YR=7H=XrlvzxO_es;xXOVs|6n9SE$O-Y!m+YR!D&a2C3 zool{-%M<@MlPy570>D+?Nxhv96)$GXYZTMiP9z%mi~Mn>1?#^Z@NG}-p(y@*l~RZ~ z^$J_i*GoSI$4B$!Rp-Sz-N<%dZJEqMPgdCPNk7?J{vw-HI;Gm!s^&Sa)t2GX_zPBB z*wsTU-b}7?!JVTU@_)uu}#eBuep{d`PsV)W2m`ABD`~lmCO+v$zdIX6Ap| zXE>NKYbY4VoR0yaGsB1ZPd)-7?aG=eqDQ@%M$eZt&gi*VDC%S8SkCBqFeA~Ae4v+s zWMB3%wBk-ZXf(*4?E<(8=L`YXfF4?LM~~=YK+kr$oT-O@8qg<`fScW)!DvkA5jUNw zH+n66I&?>G_Szth+|ir8Hh|?j3&-rWK|F9rZ}!?C9=fA9duCaBMxp_|d%O>Nj6?%^_jn)l z7>Ne-73}`Mk)B7y>O_?<_NxflzmtBlxBR7~BI2@ zT2RVU_8(CTN~NLr-tWd=Puna1{GPnX{dEBOpQJFV<9VI`kIo>d)VC7;1ZwUseq zFRX$WMixF3Rq~n0!e^pNJ`-8^40fZcaBbl;Sb|l-XyG$aC7+2bd?u>oGx)fzy7g4@ znaILtqDnp!S@=v;$!8)9pXpcfnZAY3^eg#H-@<45m3*de;WPb8KGV1GnSLdo>09_r zzmm`3L*B|3-ml~{eG8xISMr&@h0pXW`3&A&sLpjIpXpop%%GCb3@m(RP|0U-u0&<7 z2bFwgVBs@^NgQemDMSoqAKlFtk*d}dI|X9gBNgI9y9aBbl;gGxR#u<)5d zC7&5s_{^}9&kQYmW?0E*h88|EtmHF83!fQQ@|j_Y&!}=|wnn>O{LJ)If9!Wdjnq%k zIxY4lXYjbcy7<@5)9dAGgO@cE#M}Miuwp5d!~Q>|9rgh}!{5a;v2wNcnItQqzF4!@ zR=2EBO#PsEj#4y#vz2PTlV`toewuB!*t#I8&V5Z&EE4FXw8Ll6+x`&6G%-EC!K=LZ zoHNoSZmcT(9C&*@PQx zudieF4OnN5BPKAnDt=Gm3Jf=c*C;a)3tlry#luWik>T^reAgOYQyWf`4#BJXTrXjy zP_KKR0#mFvL$BEcOYmA*ubj_v-8O^QA!);fu}OXTSvfj2f>#vxcpSF1VV&O!(Wx1{ z1|+YAHoV7YxdpS>cJ~XS00mJGdM%Ak&EU1hoRigSrRdZQUgSu=P&CG}dm&XN57 z*89&2(YP7B(sNFE9AnT0wSm?DqIpQfj=UC`9XpO(( zyaZ~_si;@ZXKVZwhXqr-TI#hW{%V+C_2MvQ$xIzl%{NT1E%I0A`88~fzv7e%%7!cY zE9bK{{(9ydhZ(=^@Ygds_qWh%d;ArLiBL9d5r?Dp_^VSK=6trtU!CJHa@<0 ze3t395xM^vz0N7DONc$my@OHZ!kqY}5xnBalv=S#yoS zT+7YSE1mln+OXQ=sBFc};FXR|)#g`m`fj-uH-lF?HWk`%Mz7V%|4rZ(cX^TiT5iL+ z6Q+sis~$CjS2_+?sSh(}ty&;%2CsA+uI8^?x0MRS&ES=e!{z>}@mXQkX$G%!?r)>l zDuu*m@Ji1)RrOl6kk|}f={d(nuT=_8jo=lhNn7WLX&n)9__wMBr)Ka<*I;b)TBR`2 z3|{Fur>ehJElf0nS9;DV%$vkICwsqzN|K1*n!zg_hf8gEkKeNFzZtyJak$Wi^L&l}H@3SqhGQ8Rd@bN^BsCiyj6ax-|X8;8X@UFfxV9or0EYs6u$ z)7*_Y%3z7#n!zg_hs)Qm39qeMzv5^nDmGQ~SI%#H)~`4;isH3!&QUg8`30v&*f5T> zqIk8@Yiri8xVfC-wW?lQwSJB0Imbq?ty#a~;4c@wwrc%~BgrUUZS>lj^(&4xqj;_A zudQ0Y;?OmU*Trgu?_F_}1kRFRX%Mate*2clhpIkm#GGUJwt@4Cvn|%s)$I}=xUvH( zmiWXsU>7;Df7um17C+74m7ZSZcLBp3-_P<8=@eS!`Ymjo{VrKH_@5p6Mrt{NCB_KH)OYhxm8hdHS>@6y=z0 z2CsDPU#3^KA8+&11YRT9B9%)Vqh6zc*6T5z2NR_^;%&$egqiX~ypHtjn+OMiavN5x ze*SZQc9Zp_yWLE?{Fje&1jUctcMF`zw%g1mHz)7DO)B=YoAvIKO_V6_``OPls=zC+ z?Cv(7;@PUo@iXO2racrl%qL^FfxISBu@EOl|JoCu})BAYPXkWQ}H~*Zdxb{eG1`bm4wZDX-~@?m)bX3q}OJx%VYR zL&bmHcuiM12jca!?&lcw`e8POyW(CyZNB;KKP!s2Qa5J9h3_}*-p#ibXPL4=>*+P+ zH8Z#R=e1FK%@ig4^V%f6Ci$T#!1(92NqS8R;ny?2Gi&0`&B-Maf5p9jh)vr+1h1z& zl@K=EfdJy&nB89W0B6fiZg6z$=0WhF_f2PMUtesRUX$ar{up{qjv^9zeOPJUtlEj` z^>(>g>Gh6--iuU{ON{u&)gOb`AP|K$zEJ<0Pt7(>uR*{Au~6)Twrn#XHqe*NF7d{pVzI9`Vte?4v+9%j}# z$8E#Ow_(Cx|60X1tM+N04QJLl-Ku<4>DM@3le=JqUjMBM4^{g#kJn5b{!>*xs`P6f zubFj@Yw0T^g68p>S?By$hFHfxn#XHqo#XE%7|5x4yk^!p9^W2r(z_waeom0w1+#rO zf9rkws&RTvzDGV7uT9#M3`YFCk9U);V;~~H8>iRgzJ-JF+9bV(z4VKf+vRk!oB8}? zrEzgM?D0L0-R3~NHcGF_-qjz2*W|3fgYnv={ns!#|L$PCHp+(ke4T^1L`)ivkD4~; zgngd-AB@*V={0%5>0rDz%3lY(wstUH8>QEzj(9L$8>QD_^0NOQA~q#2t{qITjk4in zO?NO}8)d_zOnvyM_c)^Do+?ovKI%P=sF$e^AN3wblzhM~^m^2L98oV*A3o|mj;NQZ z4Xx!$a6p?-TUg$KPTOj?*Dx``S^F7**V)BX0%@N^OfP>UN7p4HrC~<9*!mq!mm0X z4?|8C>+NU9_O6?ED@}7{;%-Is7u)Z0D5@6$>x3kT~c00db-prP}t%mG&Ip3Wxx8pAVg`?nuyi78NA0{{R z#i#QR^UZGd@piqqMbB)L1~S>~&Oc6X!?WIlx7!cz!n0BMAbj><1`yVydS0&9Kdr82 zi|06P3lVjY?Jl1+oHaLXlF>bti|8lmOuddFclPE&>+;auPd;h$g&NjOV z?)dw3-a8rf#@*aw1@XgT^{)gYxcxA>T8+EfBi?V^CFM8$^!qo+U$)uIPIPFPRHGROBPa6^=dX*KsA!&-U&Ol znR$evj14wmC0(9T|L94jlv!z2Cn)=yjd%x>=FAJzg|qH@6W@NKB7VL zdj^d6xx~eYkJ-hDd3fHwnJllPQ?;)_W~_+cMG%xDC>m&qrS#uB27eUqc8%o4(9p=C>+m?a?Nb78C4 zXe)UDBZvKznK?%SO5 zGXDk*`>GjtvlFg1i|6KOq_f8KcYJ|c9z^1)C9+uBY*)9Nsh%ctS|7c-_$dy~{{1}Q z`JnhKGii*!fBo`&gb2_6&9?mT!}(e73}VGE*_LNNUjn8NJ7m9Q+kVC{=a~HXzp`nJ zg;b8n@x_P9d@*^mm=TRx4*I4R)9zC_y0cDI{l2g&FymX7>Uw%6+^-tX9(s>V-WU|qUfO;-y}#%{BS-yxgU z9%qp}eerm;d^^A1$MgMsb3R`}G59wN@n{aNF=6w6vrQMf-DdsIDWB&? zk9iIQ)=+@XrZd(VK}PKS{^YXkpv97R$+ZqDcx231#j&L6Qa{vWcR;bTn}=;84eS3U z*l49~mtez%Zx?S`DgTCs94>x~sMB28wCKY?72-9Slw=cp377+$!)3TlJrbd{c^5TeFd;0|6%m@=yTOu`C=Ix6xp+$tj z`^8@(jCx7edVibOUby*&b`hq1f^TMo2`wT_LuKB+2oqUE7_2zHL>Mm-CbEk#?Gt=6 zBTQrwVHzs)_C*+8|FS8@BmiGx4bF$C|FMwDW>WcEm1SD0f@VgYQ~}isG)ocJY4(@UH-N;{#X`#TB?Eu#~+*0Pm`tJmiQw+O$NR374zEi@4-21 zOO^P(S)c>`a?@G?$y-8B%1x|kG z1Sl>GF`3TItn3uYy-`6XBg?ov%w+mEQ}!(hG#N?8rJ*L%y_te9GWx~^n@2H=G}y^1 zPG`8-)4uJKdLyeiiQFrOnnsJhO_4^}d$mB*XtB32&S1x?a-2b^Y}>l2v2iA-n$jc& z-%!!FFU|xN6PiYgy@hcGJ5!b8OhY%NilpAyI1}2%nTCqKeQ_qViZcxrdy&OAblrp< zsLFAsp_@-dQg3XWiR|J`Lq*@dI1^dLnTCqJ$l{w6XG95pw~8O*^0=~4v)8?StEWa4 zg!iObA>QmkG*kX92|0VRERQ;S0L>JBTLMp}#vWG;KO|85^w6jvM9Q>6C?esSsf(5b zBvPW~VTlB5rXpGuoFW z3*$_+U8_Xu4c$5^l6qs~OyymxMvK0Eai;37RinjTWbsX^^6(Tfkz}=9tF-TzeCCt; zx8y?ZR{2arw@=y^XR7X6wbtSr8fU8QS|w6%VGX~r`Ap?qt452yeQ~Dhu2rMO-jI9- zmrs%xXOCZ9KKp*QonJ5iKA&wSo9Vkx+CdAKtMyN-tJ}q_^V7wD#NR)8dHMH;_oMr& z2ftJ=>GGUiv;FePkMSdHdX2lm9C_yJQRulBwo7)A%yxfZai~I4-1Y5Y6}h~E&d5U*)F}vc z3PPQNP^Tc&DF}56BAtRrry$ZPh;#~IA4*A)PC=wo5a|>|It7tVL0_k!uT#+1Dd_7I z^mPjQIt6{5g1$~cU#Fn2Q!vme80ZuXbP5JK1p}Reflk3dr(mE{FwiL&=oAcf3Whob zL!E*lqhNA%6)%>!bBj6as5gYKcG&#S{tJfNIOwxHpa*9Lo-ha)!08$945HB)2`JCY zMrRy$j()&|Xf$B0+uJwEpHO*0(uN!5MUtK5f;cPMkdmkA>eJ=h)#irhU@Ch|+tdS| zdu4L+{UmwZ&1c5rXRFnEo5jL0u>%9+N8N18xJz^&znpD2fyh6fYIUZtsDAzPdV(PS`si`R8;N${~LSNt@jS z*WG_Q@12a0yXGF#(1MREoq+J9AE8o2w&l=_yOsGJ%bqVjU`e)EJc9(6Q*B+wBqDys zk7nE5gXv^D6Wt({+_M}#419dS@L$g|(Ba^0+@%_56u+)Ed&3Wc{ZI>O^iIwOqs}dm7WJa>DvtKC1}CRM$g!IH&^X1a_33iH zn{$Wei}VkZ#d*~E-wu~#L7!rzm#ogdT#dT|1AmZ%(G0W9+>~K5w-@G?!^ll*!{bFZ zTnLlp9eC_XdQpKW)A#jaGJSu}{0-Fd-^oEa-pkE={dje|BuWbzoSVt=nphv}eKZQLTA4eb{}_32ta5n=VUCD5O8zBz~X^%@bSf)?P_tmo9W)h zVkz@BV1YFwh2=g%bTp$CR`&EM6PNZ^Imq|3_3oVxl{_d11v*0w0}@iI{S?;FoKvhi1}{(YPMb7Zl=_%$xZTyAI>AhSo}kZXngU@ z#nWdon!{o5G-4$h`Gf}e`7-JMzvwD{r+Ys8`SLu7hOjgILU&2VN;>wU;h7xX48q4` z&5{6f-$$=5eu{&$e?JFa`Fjy1tkZeF7r{9a()a@!f)m2qg(M0(fB*U=BZB=yV@rl( z?W0}@g{i;k{(STltNh*2l`+L=WdG7#lF@jFk+OjT06rvd7tGV0k)YBB3J%Sd%@?fC zS67r(%eKy=r_aB?{Kv~D5AUzm_d87Z5AXNz%g@ihfA-}2=NCVr<$mY;r>|cozrR79 zG+wP)YL3URU-I5hzh|AE{`B(M!~1V1Z#MJk{m!$C%O}qt|AV(bd+`Dt6F0x#dGRtC zkfV6{>f*3ZE21?m(0@om(L?su4aI77c&yn1@^=oyFtvG?}^TT(9Gle{Rl zD%-JIKxE3c7OMyiE=T1bdnpkOuv;M}h0HP|=iS;oRJL?d8CzLy$0rtf{vEgKXrlm; z;d6h39P*=$nD5~O=t7U<@}y2TIvt*z;^7PA0FzlwgF$cG)Sot{@+aAZ>= zNzCx{EypS#Ov)E@n*}QN|}Y;-~?m-ErL24V`soKVxeRVJ@q5 zMjXe^RCCHw8lO6{<8sfX1Ew%el5o_L(-JrzqOYY>b6DN6iyb%9{hU6Se#6fjWCyOw zbN|h!+%tsYM+O)JVr}8Zu*(zg%dxBTo9UYlBn7YnQ|uZO3ls*|nDZjo5ncQ^wt#2o z;xE!4(}U^wk!sclvPJ3X5hVw*jgX<=)!7wiy)(G0xgj;8aERJ0 zQ6oy}ton^cgC&ilz}q3~>ifVAmNw38Z;7-kzx>=_Y2#4*mPotu{%(V%je8GTBJEs# zpJ$-Nu|5r!HZGQEiL@*4+csF*xVfVx(yqKm+hA$qYLu2pyYhZ)gQbnTXIdid$_G+4 zSlYPUrzO&^eEw8}rOht#YKgdm-Z88uTeO_4e8xzV?Ylh-%HSAQl^}Fl$om-9mtlL>m*Fw2FT?h%FT-P4 zUxw{jUxvr9z6{&5zQnah)CYv^dJ7_K&-yYvhV^CGp7mvT4C~9NJ?qQp7}l3jd)Alu zdcFPeJ8IARGCGF!Wz?SaWpoVd%cwo;%jg)^mr;Axm(ek-FQfLXFQa2vUq_*>>tDWvfrNdW&aq~m;LsvFZ;)^z8th? zeK|OW_2r;F>&wA0tS<-cSziv0VSPDh&-!w34C~85d)AkOV_07f+OxhK9K-r@(4O_> z;274IgZ8X12gk6!9JFVBIXH&(<)A(5%fT_MFNf_}Uk;C9eK~B;`f_*->&sz#)|bO$ zSYHm?v%VZwUSFc2d5%U8LuyKv9hJRQ$t_FpjE#zB9%jq&wJKSsn3gQnbbYm)Y69q;Bhv-tU8q&>aIWS-mR8h{_NzWoBVIPnI=y@&KL9L$L_nuw!7WoB9NPt zci)~3OlEpoIdQf#(HcTyH-wc311LM>ayx5O9Ke0(#7X~**v1$oyH}-LzH|6I!YppL z9#pW)&15~lO3duRbhUc_2LE;6%$C!4HA3sT>gsked%AqP+CY)G z{VlnuX#B&|A6{rrQ`F<1x3kUT)$;B9`tj=KX0p86s*8=rQ{E7>`-J9;S!X#x{KoZ9 z@nW{T-o1NxKg?FZMgPri(b>$lvmH8qm@OXOU#$Kmc)^u8h7rdXn`?b={Mo^O>;|-l z_g_AV=eSi3|98JLUtY~V@=WJyzL`xKj}Py&21HkOs}uf6jQvlG-FNfl?oZdd@BTEo zS%1fSyq^CLdf@7x`-)M1IQ+YRy_&t%2w)G{&zLuKb_wPsF4cQGnc_+nU`~G3sf)Mw zxtQ2&f4jxiE12#lyUG1dmef7P+7Gjy&ED4;Y24js6Sr?}u9Ya57L?fE&fl(bf=8y2 z<>u}LuhVx>(PswwoWj45_KtMAg4ieP_?Fo`Og|h9ndx^(`|shf5v6ryfb|@Ji|69- z8n}o*r|ci;;RacH1@W_V@7r%b%%(9{!P~`ZviqhJ6e;4&XC&f^V06cr@>sk+NFY+9 zAQpUvQDFL?VH9ZiGmOFv_%kVo5A}I8#E1GkYT`rH(v{`pCvuL}?M?<^+!dxp0p23B zj#X*afvd*+#oP>eWroWr-Ag(wrJ-g(T^?AnHbowL1b!xoJc@O3U;$J`9M-eM0I$~j zvz#=1gYYVWh%gFaJbbr`A7ha%gAmG@Rjkag z^f^cnk|cg6x8sXJNH~@Qr>jB~R+}Q5Oh8hEekKV`9w7^rCWFdX6|ww;n$M$OW>ad( z5aD=P&oPM8_!(kQGS1;+P%_TpV^A{A0b&p@2Bb?s+%laOIJ7mPdf1W8&-pR~3(x5S zHHoB7GR5_&_~Xs(mQ`eu9_h22)fHAH+r{L=Y~P;H{pAFg$7%zzsfPWGMH|D(J0(aj zUcY|v_$jthzK>r$dHv+_{y7NQpi;CPcSX-VtCi39h8eF{o83>7_1pENlDY)2AhY8D=}-} zf5M!VGfk$`_#G?PzMH&9F|t5gv;`Jg^>#Pe?CziQe+*(PguhxX;oI#0>p;)17Jz2| zUk4hSX;+`_pYwkV@ba;yBgxO+Gx?l(rQ#^7@k}R0ctIzPynn{ct6hD znq&sq6-%toUwt2ce{p#sRhgBKR0zU(HfCo~&2HAaPx12p`IDbsUj8F~?uLy^h!OV0 zgh=AoG$%>jdnTWsXGmt;Cuj^DXS=5yT0k%^sP4(LJtEnT52_y6v)t{qaPn1aNBtTn zVQr0z>2D@#7e&|>+$=G}&FmWcII~T>S|?jPsAx`z{h(Y~Lk*?TRNp~Zz3JdS!i!oS z-Gt-w<|!PTPiNr>KZCzWF;EswdYI0t9ncrYVY>}#(R;YLB|C=m?6QZ>&1?3MIXlfB zzC-!U-Z15}%pO3cd1eo$9S)-toiCyLm}~SA()~@D`Li}p8Ch-^zm6kAZT;LVPoZD; zIq0mDC*IPDs?R+6p}x3MQjy`3;qM{%@F4ywD_g6GMU6o3$8$g@R+KJ_8A*>HKVbwN zbb=8a7bjNxTvhDdA|JRo;6x%`kvXIT@KEKtT1nOHYu-rsj(vH;;pd8!;EJ`baSXob!cOIZy(1aMql=^neJwdsbRO3oDaOO+ zSehiNdO?<3OQ#LEvo$`W%ZMO%hhFAi1@K`r<%vAn}?i+tIGJ{Q1{r zzLW2+Tf9?@5uE28joSDM754LAU%9yI8Q-iGTR{*)xZ?i5aRyHjJtRy-myp z0prD%u1hIlu6lpY0o6Tu)|9+VWAT8QnfPAuK%T*qOEHGCZ)CAKc}EtNqkm+P9n3?r z!<70+wtE#X$wIWmPclRw&{Oya_3WF_N)@!k2-44=h$+OhSI?qf&yS;|1iQ^5T)G02 z4>u9G4(lailxj{QdRO)l0njEF;WQuIKdKhUT>QgZb&NS1>On49mgXPqQY|I;gZoF-`j?A;c-y*XT1Vl_lYg*-SAF?Mc(`?l zGKPeA%6v)x5d2vHe3?J^5e=HitCqK1{KH#qi}?rku|4@m?!@MtU&MqKAW6iv5cQtKwxeWJ`RFB>sRN zCr?oGGF64AIL|Zp!DBjx9|sf2-2F;m^5ISb*I~U#j8e^cMDNNzBLLduDxBtn`-iV; zS&@Hus+J{6^ieGnnEd%iT4>^XrJi>sdE68f+xUm523DAj1o|)jp{fCiOng<#iu}V< zwJasrLp4BP^5-9iu9gXkZT!QcS|-qc@sEA~@Kr4<@()kdvP6kKs$~L`KmRy%wMGMi@cwxeebX6tlRlORw)LS=0k01%iZRx- z^Q0_2Pvjhj;n;DWLWApip!~gNXc@0?)EJmU2Tsti9*40bCusf#s~htig_{I83O6xu z6b`ardp{0xVBiiiVBik?Gw|BHC({jhN7hio0TOWV?g9?pUBJP6J#b#!tsQe!5ssfh zSugI1`m%l8Rl_s=SB$=6+zX32E<2@+yKH*gd#25pmoHv+o;~^H$+OPm7tb$Wy?92< ziQ}4cCv>OHotHSp|C`QB%>CQylV@^{{rz)(@c%cRi%7JzriEv4fhDtYeJ6zWkm3BEcWH83y^EA%b&;zGL42;%{%{qlTE!@b z=d+Bf1#m)BYryZZ2lelx^q~8FlpYknkJ5+MWqu(vpFZ%VeU)KktUx?=9VX2*IPSD+ z;UA^5HRP#uwuU^)>ef&xxiTyua|^|E0r}__Yh$%m8)qx>KgAdS@wCJH7}k%SzdyP7 z{>iKO`HRaZ5AQ!;?PlM0E*1-1xd*(R&Fr7Iv+Zu%xtU+T+jZW|I&W_`yLYoqXN~K^ z=IoN5*%g~wR-GH%BROAVO)X)rZZ}8TEd z@nW{T-o5LrHoSpvxMW+lv)vB(wkP7<5wW(`L@<8IuNX?!+?rI9$LaTl^W|cW%gQ>q zuaJ}U@czk37yo;=x|wyK&8P1`$%7wnSKX`Ghwf&wo?j))(FfDj>irx1*L^cvPT$>3 zHt)As?SI@&mfLs>fox~-&1AQke~eRM%##6tXgj}Nc2gn6R4|71 z?Ak^QLROuJ9WmcvX`x-Cl{${}ko1DdrU?eS@}(wXB^Z=$*c`^+fXoQzBsPnuv366% zgRI0u+RaJac{9)4E#DIB!JDq1&3f4KpoJEM+wA>{$Y4QCJjGVj;P^biEPF61sdT-K z5qg04ZvBd8FGB0$X=98YlqY)i=k}~{iv3Gg0~$8R4-P%YXNA@OeEI zO|kVfI2I2Nxwhc3nD5IOiyD*7X7VYPb<2jOJ;PJqL3w|sV$#7SZa1jWqT*!~Q)A-}dd=PvKlI%PpzIK?rjsTOqVeR40fpmxqG$x#O z#-cOtOIKqoVnS+XEIRXEmL_L3A)uC8(&wAiqISlj&oiSj;k49(KHn;z38|&A=<}@f zg@B4JslgS;(II2Dc#n#`9NfBM+UU>=SWP-@tfh?(xqi*aroGPPJyP!{MDjz1_PLk$ z08M4oLOv~Yu(0QS)oQYyvP`JC^HNrPR(%v#{rV#Y);xdw0#kp7(j)Y(uTw>w}VWm%=tv=Y?b2s%V2iEyQPOWshgU@aI z*3{yGsx*BJZ=k*@oI#H|l$z z?ddpFUN>5-RydDmG1={A%VvF_7yAD)c=h(JdBw^lfuqFM)79;A*ECspPkwIjY2w39 zz>a=n{|?Q9c{5*L;i&c%&UtItv0dR%TcggGhEv??AMU}9C|ksjI&cphKlcf8!c`5K zL)ynbZLd2w+iRR{|L}g;JAE)1^sy9VPqwoUv(0?>>EZofFJ3)=`uxY_@tf5Z9^K5h zTXs_4Bt0a)gM;Qfe`ZIx|2d*}L9(g{GpLX6(rigtotw-_8i&vLVFQ2}69{+Ih`0~Z8)aD|y z7#lsQoO(C8?4;5kwNx~69jMgHF;$eIg#b+cvW5(VCCQ8wn%#Pf!uDvQ3`kRP`@^>N&8BZW}u7_~c+0lV3z zyWLE2Nf>_lI7bxz*nPLaiPQXUq?32wR@jK1-K=+??tj+fqASp?t&Mi zD=G<}UO<6prgjaYS9CtBQ zw35QDbIX#oan&yfuafLmCA_q~KF$8# zG}5cDP5!HCq*q^=u(XE#*E9~wch98Rr+YaKZP6j@lq7_dkqoAp9XQV0tw+?}(1H-GD1nejXRS(K{U3}2&Rn8Sw z_&#X%D(5P1e>KeqD{M*okh53YsF17rpxLW!jH*{pnpJCyD%`3fswd5=wMD)1IZ;sF ztXf-C;nM~|d9!M5QHASe1m(@DwM7+fei4*6uhte-xRpgv->h0&RN=N1L3y)kZBeg0 zuM(6uvep(=xQ0bC(8O9>l`|M_Chuo4N^^}``a~5D!<~IxH;m@;=@c}h<}co2t@(Yu z&%7&&%J(2Z^bJ^R6xHP`EY6FTt?i!;qWm&eg*xk+ztZyH8(xk0ZttE=0oZ3%Ono-g@owq9*^ z=l8~4;CVY=%+BxK`>N8vGjz%5Q(-(dI}pvM3bo_20_^PAbj;1ut#_s{x+;AGVA^-ud14d@tz@CWAM z-PNLdX!e;?pAH7h$Ai;BsQ=5F*w0r%f7lC#Q8?)L;s4=q7=G0m9GWnOU-Uq1OUeuNV%Pd>Qg zqcE@lKV)&8i2p&*$CMCg@t@^?{r+(9Rp+zhWPkAZ-|coDI{n-OhF6!*I@hx$I|yuc z)p_%&^UHjPFYW*S>~-fs=kN3DcMqQ7F#Sd6^{3_T-E51dx0}^X=kYh4$A9}2i9~xmYYZuUPkO=hbXG+kBW^oiH@)KL_6L-TQx7#Jc?SW z|K-W6*EpyBVIr3Q?|$d6f4O(>21{g!T8OUmwYG>|i5EnT~b1?RpCYZI5cuYiI@Dovu*i2G=6hoxFJ#}%~ z(iWP$w2`2Yw**Fnfq}vl%!DvBA`FWVhLjBXP>~T~RD>`xBIE)#3o>mkkY?J$Bmv%R zmTTHvhCe8#-z;X1zfjg`k3#y*Qs>ZxqECBd@r#JWZn?dhYmriKV5jdS;*}iBo`?QNkz;D1*2FWkB+t3V%)HV zz){*U9F$NP^wOTVQKp!eKq{mcmXH}prS$qGga%SEy-^vdQaQn>j8>(f=nTZ(n=jY5 zyTrzjrhljZ&C~SE6P~7jcMpMG0(l7KPvT{u4_DBxzU($mCac z$Tp>uzlJdb$#6@^JZe6_vekg>qhsf-g#+*&)EFul5)AA$=117;P&xp?Mh1m}k$j)* zNN@tC3f@g5^GZiviM9yXOntOvFU(>%;AHQ&@@ZWDwTt#Ee3Ma)~p0_ zh?8VgvXsb%gUTd-pW?K&1aXpuQix>&N+M3OeF^tlj^ZT!lpQpRW#&mDPO^Rpmq*O? zkR<=ImxeuUE|PZIr9?8kms##8e*DOOF|B^gIV z+r8k%vTG!tl3y9uSVNLtX=)cSlQr@zL$#%Nxd+KKF@rhVl*65E-p8J`S2jLhEhxHE z*G*bz{>AFER?wJqk!!tz^x5yL~xQ;trK&VCnH%}Q! z+#+RE;5zPfC7~MktVHDU8GQ<45REyZ?|0bOX)=Rn^)8TQMxwjq#-qFKj~br#C5hG)_dT4V%$6KUW|#hv zBz5T@EG{9RV}A)t;Ym;uuh?UyP^v*C4zh1%a?U;#aXtG~OpDp4Vot-;Jx5>;%uSO4 z2&&n`lxqc{XwSf8A1f%`8+#fy{ke=T8nsD8q47wsR#XX+Gj68yA{rD%GO&woQWjah zM6<$@@R8U^p1GPaz` zfs{lm3^g($3@}zI9YH#?nUwOhMU9nj6Hr2@MUZ=aQtp3?0v2(f|NK+@^zsR^iukM_ z#A_5DlHvE-@h}d0L$H)K2Llcs3{jwEO{Z9Kil&G)Ew=AA@nV@apY@Ew0ANDXc7DCY zM&@tfh{0cP){Ls4HyFliXpJM!c0mue6&OEH2N@0aQ6)@*lG71GHahJo76mT759cN5 zDPn&MPZ=>7iG}YNJDrLcP^ubJNUZz~=A~Lv(ef2{93^;1Aty{Kr^iN}BX{8<2nPD7 zk!(x`4WTr{pn=9o%IEEy1ZNawaB^$dqA|sZx`ZGm8E$&BhC0L3VM-DtseCDAX@)EB z6NZ9bKj8@I;Go&|WQa)F8drFFfpk2%y4uXPTTq_B^5czhpL{%><)8hFJrjf`911-D zl)ZnW@XOIP{P}19nknI?Oi28)cNTwO<{%(>K!`PS5yU1w1~WgQksmpZq(kz<#-W}T@PlzAM3$e(%uht}gDKn0Ph{jrjw9)i{IGGT zrv?0A90`%-r*Gz`Px8|*;-_!qM~)-uko>T5sHX+|U>pgNe5%-eaj2&S{9qgjk>zJ-=4VLqGc4j~XyiwZBk7R*uyLrT1^i$f36bUJ)XdK*$5%-eaj2&S{9qgjk>zJ( z=4V9mGb-X|WaLMVBk7R*uyLrT1^i$f36bR|=$RQp8hoCTZK&#OXuxK(aCD2C3jlxs{Kt_GZu?W8CYy#Md{L7qAV99Ofi_Rzj zQlu|)PNBvk_@c84K9*Tu=DZ@16Fy;wbY=mNBEHPIg&K?Ci_R|iSZ2P=`9&Zneu6JL z!vIJTU*;S`jYaT9XBm7fGhgOBBajII!55ur0Hla7bFQJrBKV@S4L+8cFLS;T${Zli z7uu+}fyV`Wq16;O)L41G_*mrQg1EuPk}%nPBa}G+!55ux0Hla7bH1U*lElb-18r1x z$j3r&dR|7Wk*|V$18?_}`YOyf0A$pc9E;$K&NqOqNMGiBBa}G+p)We$07#L(%=v~I zi{OjSH~3g)eVOx(upr++8>z3td;>s6eaW#1zUX`d*oyRJ&No7t0}%S6^9_I$>C2pN zsIdsX=zN2ZW!9HD-v|rx4YZN^D$F+kWYm`&i{OjSH-N23U*>!xEXX&|M)FmdZve>1 zmmG`Wi_SNIt%xskz7ZDW8)zf>D$F+kWaLYZMes%E8^Bh?mpR`E3-S%Lk$e^A8vru$ zCC4K8qVo-4E8@$XZ$t(82HGgT@VFpupw+~e8Y|BiAB%ikz!w`!!esM}s36}!8_8E; zz5yU3Uvex-jLbLqSmfg(zRdXsHn@!IFSL<-73LcNGV&$IA{e0a4PYzc%baguL(t3@ zoo@i7$PUfT_*iDX%=tzna{z)bI^O_D5ntwfLybl7MdurQ zEHhu`d?S)M0KpfXZvdo-FLS=3#v=Hl^9??hnJ;s`(J#n1&_=}#JTBl1t){r4#>(@> z$08pW#0@rnUd;>4inE9gf4S*Es z%bahhu?Pm}e1ngL-t@eTR-?WO@{K;7Z{TqeU*>!RfW~>5k43P{#xnC|&Nuop2gt__ zw2^jLm~Q~cXoqqvf&n_;0Jb8&%=t!N<^Tj=biM(QB7K?j4K)_Q7oBhLvCR51=NtWk zd;@Kyz6$dV02%cq$0GQm^9^7t(w8~k=ojQ0Xe0S5%r^jJ6YxPev^Uuvv8Uwka`aRFa!ED4j%HwH2X$j3vpk$e^A8vru$CC8G)$b5s3 zMLsU#%bafv3i1uKk$e^A8vru$CC4Hdpz{r2E8@$XZwzD(KPm~Wufs4qDd!55ux@UhH%ne&Z7LB4@D(hdvr4FDPW zl4B8k(fJ0j71^OV-@x|_#(W-aBwvO327ruw$*~B&=zIg%iuf|;8v~gG5OzrC8vrTt zFLS=3#v=Hl^9??h*$&P5#z5u(1YdN%0gxiT%=v~Ii{OjSH~3g)zRdZ?K;{4hUv$0! zkRra!`Gy*c;ET>T_*iDX%=yN!Am2b6etf*ms6ytcg#)l$c?vHe+iD zxS!U9C5*$8{3}Jc3;UL)kzv0+ED>L9*;j+tU|$bZwKSMUvzoB3+Q-oZPTH63D?G+VehN2&r*vgg#(!(!OF}3DKVY`mm1LXY8xNYiM6D0MzkcEYa(0pDZQVM1G9! zrhUo25~7{<)51kf(Yb0L>?^`+XkRaD)nXy7ebt0@jQl8jxoKaruY_o){j?lcn|(EI zozMsNH3ZgKU#3`Fi-okJTNBn*`$I?V>-FQBEYzO&=}NR!=mYys+Lzk`YW}q|{&b(B zmgvaM3@i2rj@p;(DM(T;tGS|5MKL5*97eaBiKC{X(ewKV8Z>!aWBurhwfT3_bXo?7fX z)cP>EYu4vj>r?D27qT;c#(sTR*LmNu)~8+~Q$A?NzC*1KgS%?qvDT;9ud6|aS|4X$ zjaw)5IoA3zuVL2leetelO;|_mV|1r^U$L*WU}gNA{ra$uzR%cKgWIP)nU{-eY0#n8 z$6p;*F{g&{1B09PU2A}$$Pj&rq{_Zj;d0_&_V^U8cJ?K{-^_zUrF+IOt= zDfX2R?R?*%)<=I2V5NP>T3_ZvkXqVzsP*yBJlwSJSnE^l*VTUdLTOFWxki4+TA%vl zNNK^&_#J9}^oLSb#_w3`Q|#B(e)^hpE$x%Z9kn+IOh+@z1B#xOIHrvDT;9ud6|aS|4X$ja!p_4S{{mFJEj^TCg*Ihgu)b3UFQT zJJ$L@fn(%%sP%F7HRaV<@j2G|)BzQBweL{t!{DykcdYd(_LUawjNhTw$Jtlo*71GE zTAw<0rKa|Qp!SEL9cz7=bMNX@Y=EG??~`Ac+p_PZefeTr zUF|#6`uM?!YTP>WzGJNq6u9O5Ku}-%&b2;_?iTrFu}f*eF7!Fn`skxYt&HEX)|WY> zw3hEX)cWYtPHowD@_qSYTV3rt)cWWHbFJ8Sto3D1-mRs5hxhvEGkk5?chbImv8}H5 z9cq32Xl6BToyhN4>jMRjk>8=#N1se>rG3Zu`Z7n7*D`*GS|0{?to8td+ltS%)+dfq zuPHj$^}b`RPaS@*e9&&*cc}GYa98a+*7_9tDuCLvUmw<0`;N7~%=Hm<3|QPTQ4`it z`xxEH_Z9m!HOSeo59_FX#=aWde!ZW$6s4919cq32$`ciHYRvn<;HG`oS|13gz2f8S zYs#~)^)dD}1lF~_%vC?NwC_;s;}`k3Y2UHdr`T6Qw2J&dP+$AxIlnepA4Yf6zH6;d z+;UaRa>%0_t=M<0^?`b~oS(B_*K(X|eHh(M`?A=je9+GL9cq2_1#ec`cdYegZi=gA zzz(%O`p!99_Lb??nD3>(U);rvF}*xQ|#B(zC*2#z8}<+8)wp$Xe#crLC~%zj z9cq2_t+!U%cdYfPD~OdA>_VSIt&d-3tj4XQeaBj#VqdwCJ^S@xUDx}LwLW#Rw$g$f z`wq1}4DMR(ajf+z_UmfU;k`c2z8bfV@jKS~)OGPSwGRZf-|OQS&#Q53un!DQS)XEG zX~D|)Is5ft9etm%uLifD_XAn%Qd+QM-=Wrr!5w`c7~Hfk*;hieXTLtItM(mheSti% zuCDeSYJC{oRr`*$KE-}r4La2NIQwecI-$?8))&ZPS6%Hpyw``pUA6C6>r?D2E!g?K z!+U+4eKl?!?K{@`0@qp}5Y(UdozLsT=x&i;vahsYr+tT7ABcC2{EqMS1+v&x*Y_RX z>%-u#zVBG;Q|#B(zC*2#v#-XjA9Bl94dOw1wF@l zo@BkI)*Y&O&M)pc*79U6t7e3EsN^{p@*L}UlJ%Necc|hy7x5fxc&;TphYFr^0nf31 zCt0tlb%*Mm`vH7zJGQcRRnylUDtFF>JIA`6WWA==9jbQDMLWluoomU?p-Jx2?SXZOg$l+aUb>gkWn!fH*sdFyXIM(O|>q`DsIlN1i&Q!Gnds3kz@+2NtlK;KD-ag$2ZT2Np2JxUdj;VFAgB0}IHF zs<1F!-K=kSlihr^jNjhIr$cN-tmEx&ve}i{APsu8T9#Tb4LQGB)P!Vi`$>}fTX@?SB#tfrF%CZDRwMF9#u!zg;=xBx}f`Mv;!KIzw_qWVsF0Ug;K+m({iY`26G z1z(dAx!NjCKMN?yt~OmMQ9Kz^oDxbDd`(JZ-N8jB*}97>C5k6|nPkf#H7Su5I2V~@ zE0C^~xX2`15UfdwtVO%XBwLGjrNl)h+0uATO60DLi%hb+Qm&M^$RxW-RFe|9Kj|Wq z?Eb7PB`z|_ZkN`iMDEnP$Rzuwf-5C1GReL;P?Hk*&WejnvhVD;QsN?$>?<@iDN%25 zxd;VVJY=zo78kK_S`>o1a`BVQ`pIS`Es8DsGzBk9`pEIUB(!*K*N44GTAbvP-O#9O zFJ6+`z3%{=X>pQ^m%LVe8R8UQykxeD7ALuQ$!#q@7b{qf?R_&=*Is0z?Iag3`K|hj z(8*rBWVnhJC%JgZan-lAPIB>*KS)j14K_TnYm zRkS$C#Y?`cPA74Z3$S>|Ulc7aa^bWn1U2UXb!Lx~T)gDFiWbF|eZC7U9`apvl9iKO zyyUxz7ALuQ$#>QHZccLXQpHuYILXCJzKeqgJ!}c>o%~qWrzI^;a`BSyswPOMO?- z;v^R@`L4R>(n&5}@?AxXlU%&yyXy8=C%JgZcNHy8a`BSysymULId=^UQBxX6Xm zq7c-y-M)N>K)Hc^UI#2b-lU%&yyM0+xb@C%G`L3eHNiJUU-M)N>z)3D%@?AxXlU%&yyL~S&>;j7qKa#XK z$;C^)+xPO)F0lBJi=@R#E?)B8zRWS5{K!jvSJC1m7ccp4-%Gv=EI#Z-(&8i+FZu4k zOTG&%9^|5EaghtBMIoq}*9~Nj>EcJg;zKTy7R8o*UdL%s2+=_D5~`L3eHNiJUU-GP^U7g&7wk)*{*E?)B8ftP$2SbWGu(&8i+FZu33 z=9o@?0bUMF9J$91N9EZGI$HPJY zyL-v=4$eq=gTq_ivy+l`vynV|h&4QZ9lzb)BrU-}fTZUX@{^TfypzJthyu=`>|n5M zcD4~th{4%R!&78v>Df#S*gU8vfPH#GL62cLVmqtam{K-4(TB-wvt~30{h=HXcr=-T zMpBlFz-<4>(En75;kSq%*9Hl(kM=4^G z`XD#r?q(g2INWGRU}en--k^v2Y=+{1$#J*2T~6c0@@$aM-HX>sy{S>XjGyzyQ!u49 z1_Op5Z92;~4O!Fw%s%dbIz)=g80&#;9h~>UJjuJ9CS5=xG$e$Yc*hhxFf5$H5xy@_ zUAFV<U2b04xr=oj5lK$s0Qf#7M?Ly*70<* z-SKuzg=<)&pfTh}GD%hwU7TWcjn!lb(dU$lBk1+Otkx;y<~6%n?>@yr!fepP_aS

    DCjtPKVcBbD8+!CN7A9X2b>gw8XdS0155PPMbr_M99cC1rj;97$*VE#OC_ z0q{AGR=RV&zSQCuT=u=GF)V6~l17aX9dEy|bx_zkEE@K-5cI4FbW{k6xWPqXU`W|NY&dK+a z-Q?H#)$ZNboha=5<(uT`MY1$_HCbNIzV5(_`}<8POwjB6O*o%hM z5=#h1*D+r@i3VNE{Ejx!V5w&uBPo@tX*!4tbS=r0YS6XKS5<-wsR&)`eAz2l*R{^CbPx@eT4%R82vAMyQIXaq znNktD*7=H9pwzX_uU`-imRe^wF9=Xg>mc(Ewchumb-BSL6`^aLZ(<47b*=O3TSSAU z*4fQ10#ws_zewwnOsNQ6>wJGppwzX_uUZiemRe^wBnwbY>mc(EwLb8pb-8^e6`^aL zZ_x?Xb*=NOnnZ)8*4Zsh0#wubph)YIOsNQ6>wNc4pwzX_uT>HamRe^wDhW_c>mc(E zwLbKtb+u6`IMlVyHy}lWu62Gbn`p4qI=higfNEMF7HM6QDHWk>o$pNwl)BdW6>6fv zQtRyYGy$q<9c132)=&LtU2Ve(4t1^b?N!mBYn@-gC>kua&Td~6pqkcCi?lAul#0-` z&Uan~N?q&xxt}wnE;n|iB6O|u&11p3u62Ihs%Ws(I=g9A zfNEMlE7H0oQz}B&I^S0oD0Qv#t5HRRrPkT4r~*{eI>@|3t&jX@U2UNY4t1^bt#Q$y zYn@-MEE+7e&Tdr}pqkc4MOv3+N=4{e=ey z)2LSj1dqDj`T4L?NxI_Ef&& znF3r2ctA@}0fi+zMXOY1CIT3XcmS-Q0WezSc={A@w{<-1nEHtTvP4El0Anc+1UN(h zLop9Xiz0xeRVpN70LFSAr&Yq(MgT)akI{OU5x`STPdi^*_<1G=Fjn;d=wJYbx*m`g z89;Gmk00_a)tpHJU21zkOGkjat?uE_Z9fq}7S8AhU@Y)~00#pwl=y(O$N(g*Qq7qN zV65_SS|yBa1TfV37_E010X$Xu)G6h(0T^q20CX?_L$wb`iwvN+-UndVgNS392;frj z16n!)+-=Pd$Ef>>0J5A$8-TIw2Lc=nz)<)D(jo(pv`RH+B7m{>$7z)?wh_Qk{bRJ= zWd!h4|5NAA(*|Iy00Pj#01P!iAT2V0;wm73O%cGQ4hXb#1i0HuAda;65&_f!`=kNz zlk;T@G%nwLLrZ-F05G`>#Pb3JKx@%UdT2Hn09xuV0|87L0G{7v1i-u5ehffX*QA>D zRRF&tK(=HIz@-uhw6p;fRssQ4XaL4aAOIZBl5}%@AZeA#%ou>N63A(lFt!F@ zs01=v?=lDQR0&k~x6lS)tONqk!2k@EKp-tLfZ|FZfK5rDOC=C!=?HMQl|WoD<0k^h z>KbhT#!4Uva4-NvB@jr93_#KEIb zl|Z1SBf#BO0&&}wp9oM~3B)jlN+4Ps48Twc1kxe{khIE#PEP_kt+GY01aewsi)9iB zVA=rgwi1YIz5Ez}tgg`!z*q?c0S*RWs00FOkpW0rr7|-HV00D!n-q0gRPEPOF5mjR1y9AfxpzBY>w$pmv?0SnOq%fyPQ8038g#PzeOm zA_FL{1oAr#rJ6HIpvworKubq}yR8J`jzK>WKvvi22w0vWA$7y)n%q89^DmokzDz;9cWEzr2E1fr$B0RWgR1mSss0id<0 z5QJt!4uF>Wg&+Wv5dhEc)BrqH0=1hksVN}2;!?C^48Wxl2(+{T6jlNit0ELx6MXOYE#sG|!Kma-z zfT0oyq<3lno+^Rb-KIj#83Qm@0s-hS1sE!UKw2~f6juWI1*_6DG7-S#oj{Tm^Wl1Zvmvl2d@O z5(q#C129wqfwaf~iYtKthCK)_GE;y{B@k%o2ynNRK-~E2Cj!Xo8XWzKhHz}MyqVeL;#mcAZVfu;BG5{xJl5D0m$ka zZ2-nfAP8_U07E4ZNQ(?W(kj)QF#uyFkkcw*ER#S0(*|(2l|bC$=*IwLb&WOvVl`ysjV5kH#TJLfd;HeUbt31=pnl=DqB@loP24JWJ z0%?%}NLr;bGX`L+1aev>jI99}DuImFyEFh#mB4|luF(cytONqk!2k@EKp-tL07 zl`ysjV5kH#TJO>TJXHb*vbshafUyz?KnDXbR04st$N(g*QkfY8FjfLNtrEu801TBt zM(Z6K0PYL-k^}-zQ4WA+lm)0l5L)UR0D#Ft5S|wp09uPGfoO(3C|cD8ylAOk2m&y< z3c&L_H2_bQz@hx&R;pPq1fkhv04|k4prs9jO7#nU^)WaZ6$E%sS*f0 zg;RjB5(q#C129wqfwaf~B&|}J83Qm@0y(V`#?}A~l|V-8eh%>R$&c})o88Cw<$OI` z%$KuxGn-t+k2)3Zxc~ZI2R|p1bv#|X|2p|c%xCy(v)!?W_$OY*^W_JvX}g8%+3g56rq`8xZ$nrWih(*n<8XA#1*%Bq-NLdB8*t8T)qm510mO|GibPbV< zXG=74ma$Zzg3HN@&!ToLW+q;ZHfy`e%+neoTf5SyYz>XD4_od894RYHbI45m8g15g zmDw@W5ZT(5o-#-@D%G}=m4eI3il^tc*r<5Lvw2%YRJ>xDy)7OhUP+!UEkVJNva-fT z#Vfv=u;r18S8Qcri$|rR(yrvX*i!HcE+;F#?zbZ?Q!3DCvyNAp%7TW-)~@s-gN8=L z9b4`M94RYHHD*c`8g16`DpT3e5ZT(5UgQvHP~u8?wzDe@ZeLbtvdym&5CV~{T>%jh zukh5;t~dlikFXCby8_3TQ)an;f=y^7EjQm8B&}S;HDo38WDGFxf5`ttSqfGvumr- zW^GqYR(VTjySKLN5%EgCdthl-3N9xr{%(aGX_?nCq^$U>7`BM0c*S1Ju*E~fE6KB^ z;1wJxD{E}jJjg!^v*nSpEB0E5Egr(I&@kS@D;)>`2SJ=OyimzvE?#h_Wm8 zzLzZ?!mcFGmV#Gsq^zv5QFg^-WsQikEB3ybwXE`CPrfZ_DR>2!lNEm()Q+^w3#8Jn z_{*cVh$y>aFOu5gA?!->Y$Tu4FCPQt%2cCoB7UJO4f{Z&&v9cK$gVg~-;f^mlKholBlA1+U;pSy^MF?8?60 zp8fPsW75{H^ml(G8dW#9Gg1YYla+nFoqzb6HwRukw|cC2PT!3RG}8S=ray`B5FYc!j6dc9r?| zKm=uWWQR3-`FI61!anR2sNhIhS*nq&w{uxpBckkzRnKkNBkW4m&FzpWxSXu)>+Lv{ zhj^cXpZ{ZN4`jU^h-~eOs<#78J-bqHq^vB}NY>lAtgI1Hc4b{}XVT5p8F2nqDl1C` zD!81i?Cb6PaIt*6vah!T5j785*W1~#WE4I1>`Kat62J94nECuthGhGCJC_wjk!`$U z75bbJ$Xc+aT`4#MrFDKq*4vZQ745=k<}++5bnALMh9>Mv@@yFx6dWllYiv}0WnXX4 z9tf$+%9?6qZ>v}sop*e3? zl4naxP;jKItg%t?%D&#t#Y-84tzEGSeU33%3%0Z?1xKK?wkz`ec7AxfHCa@CWnFK_ z(1cw{o-Hjw!I84E#zxtdeZ4(v}trRo<>-E!a|l3N9xr`+7US86qDa?Cb6P zA_)qS?Rt=^w*z^-c~HTTva+-*CSFR9*7G1Q(GwKe#w)7cj@wu2tp^ocjxzgtJE)-Y zEBkso5K-~Uy50^vM7)wbTUvsGBV}ccjj}8IdOMd@-axJE?MzlVG`QBOmR)IZ`?5ll z?L3%(5QuE+qCiC06`oqgD-J=>Q!8EpnSdiu!bq%ANMIxE3Quk0RRTg#WEro3hp;PI z3$~jFasQmK#~fw$^>%(qUT*rrQ){~->+S5aJZtvy@k;S*X$ewRdAH`pb33~t>+M`t z)?^WNQ6?*EJcM1zTCkU!TMAymk+QPJ zM#U@svbvptlJB=O&aDX|>`K;xEfuKXayCUoDKxAuIRJ|Q&>e-coBV}c&MkcF#n6a<7bMaD$Z0(Aww@0!TY-v{tE+;Gd z_uD}QH4oaq-ws4neq~*62OeS`lssEnf`TJuWsQxpEBksomsQ@btn2MeR(UkC7Hnx( z3N9xr`+9rCK?p?F@rsw|2}HK>imJDR%6joi!4Z^M&x2&W9kf~3ugH2k5ZT5ns@@*S zTCk;EDY%@h?Cb5If{Iu6^>!el;+1v19e9X%C3&`tFba;8l{GdhUfI{%xvcVm#=73l zWR*h`%383UU1@OpvO*J##47bmKnO&(@d}6tyTVh;c*P+IdTPZhAQNx|O51n^Y=m9m zscpPUKnRK~;}!4_b|q`UmX@I4a+KNE+d~dQAhNbAvfd8#wsyrJ2zrEl*m;eVRo<=b z>+M`t6e4T8VzQzT+1eGW(C1_&Yr&RwrQisZ*71t0w}<>?bvqT3@3#YytzA*|cA%+e zR|<}lmEAlDDyVp6UvKB)r3}K>u2_XW$C#`ITiTU^BT!n~6)({fh^*rkS#J-m>+KwZ zpr@W)Nm)_ix1I;d_uE0Rb-dyr1e3OQMb+CwSqrwbD+QOM%)Z_ZDu}!tPp$2WgAf$i z#w)7cu4H8yVWh0`cEuRC#zw^}`+7SUFGZ29U9k#%PUNx{Y-v{tjzDQ0ugH3PXkTwn zKnRL#?TV_m19`o8rQit4tnG@dw{ylV4U~Mp9f)l0ib3QUleJ(=yHaojN^83!>+PX^ zy*&XTD6+LHs@@Ld_3TQ)5tLcm6v}trRUVD31zXycg3HOu zzTO^^^>#e9&acRNI}q8%E2`cOH1*<@f+J;RX;);uoy*D^5mjffuD3Jk=Iu(>f-UVz z!R2ISUvCe|dOMz4+Z9=F2O?X$qU!BHQ_rscfA-$}Ns`+}5Z2H0S5(|xtb5kBRGIab zS8=wq4%=~FpTn|!7oqT1*E3x+YP+Yq-QANOt%%)mXW|VI zAebzY@kCn{h6CD4@?&v7XqM;&iAw9BwBFv(T5wrhd3dp8@TzovWl;n|rEvv>ggOXM z3**XQ2=Y|L6%ccH0?E?(6;Ko63Z9n6l|>OGDvT?jljf_2)`AP;it!T3%GcXL3SoW) zPmAM9TyFdUY?WpQvv^(>rQ&+Ku~lI_i0kcWt71Ar zT+v!^VO%j@V*c{=_C{Q9ho{AHC9byvq0+dL*4u$hU0gAqXsbdunk9OHQ1SfAEYS;u zO5;jeZ*OQVxG=65FOkeFo|lb5alIX6D~>C1e>)H=jVo!roo!VZ31q7@Uzx@8a$8A+ zisMRLZ%11dt0&|uS_>|WE5=LW$}FCj*-Bh*Z_3x(Es7vfX+KD#1sBE@<0W1!UvCE~q_`?yZwEqBTotdk107-B zPC6Gx0^^CcDyAmI6)Ij#Na_cR*W1xnX?W6FaA90AUSg~A_4Y*}Oz*|=pi$wsBLgj!d=q;4=$X$s>ASKwnJwA5Rcj~Fc_So-l#TuU!sN*7ns zix<+Rb#zj;%=e5Y*{GD35J#wSDH)-%6)&J8LaY)k?Uuz6qoo8(<49aPFJC$rSI&zU z&ZTv8Qnt)#j3(Krl$H=jX8pUUjEF1d#S7+$5UWH>xn*(0Xeq(cI1<;&%a_W)C zVO&}lCuPgb&1jO1N@)pkWY)KfB0yXbFJ2Hwgjgk7sx6BnMoS5n<|A<}ynHF#V5HI% zE&xdD;G}Gs?-?zX3ZkMY0K_$Lvz}c@MwlNJFMvzy-?TJa7DtR0+o*i;TU`4tU-}kT zzHu45$kNifHz`}@dq$INR7y+8N99Z21|yZGu&#;g-EOI^%-pnsn=H0eEOv`)-Q`P? zh!NYUe4$%dKO$wze9vg9RHgYy+*4k$#El(ZDotS=N$cC)3R_teIiy&k(uxM~F^SUE zMhTHHR608@)Md)49%c)8f(7AfM51_7bUEpCuR zVyVTOy=rmDur(I%&?5d|aj3wd#q9$LFtvEATfD8YxJ8P1qs2j}a*G=zkyvW+R<}6J zbZRW#p+)?`;xKm(Ep8u3fT_h7y2TeY7Pm+dZ?rfFRc>*EBoa$4zR)cWT}_R}JGAG| zp8xFGv)}*nSNl)jJbkn0|8aePxVgSP>|fr!xqtg~`E-4EJA3_bpN9Y`_nY%oJ|cMdm^!~L(!gLi3Z{fze)`qnWwulas>GNgML)6}7a@DPSGmaQ6T#pL zLgeZ}o@QDUtema@*!e{GOcbDAEvYhChPkAhS1ZlDj$-O9G4nd`dbOnVYpLckTVAa+ zy*Y}hT4H*0;Pq;`9QPBOk4&oA!?CD~3;v&GM!R0GT%a6ouK?u2{$pM?&4PL^Gsu3i zfAp%7`^ym^kf0tRlr-VO=b71-W@3ltn7UipTt_xM0mYaxMZK33WOKxXhVJk43-|W# zNw?>krfRXtL5_#sZe_(z=={B5v6GjyLZG$H8D5MVTRgV{lO-rvz1e$q$3IeL^|mJ! z1jAI>Us)ybd;lsW%xJx@!V8QW8z#4&n(>0NsOov46}&)VXe(4%j?ROU3RMJ!wFi)z zM*{v4Go#h}3NJ8jO0_EgD4$3?FDwKvkQfz4V_ZpvDuRL+Kx*~^{t+{yZ*dh~VBC~y zl^2u`o}L$$f)_}P3ZpTuq(T)z!3!WYdjbE5nbDW^3NJ8jO0~)h%Jv1%3oF43Bu0hN z7*|rEilE>Hkea=Kf5gmapG<`p7&oO_usZd2w@B&E9Ucf(M zX0+?A!V8R>QmyiWvbE6j!bb1{iBVxR#+6j4A}DwPq-HPRA2Bo9!&>15#!abKc|qAI z?0I1;c!9*IFdE}ZDpU~^yZ}Rso4woN6d_Wo>Jik4_TmF

    }Ncmg%g6#ygjZv1pWswaDkfd5wV*lS!&G3$O7v+kH{T0cG0w~0Y7&W#t3z!H6CH) zM3Kt2TK%D}?-8l9?*HvazQPC7<&MDU#aI?D?xyM55-85vkYaV#+!w8Y*UjdO01v&)SUQbaOPokvg+iJCt~q~4s5ZLIMK zwYF&;$^C>kXB)9U2Pu7zNF6#WQWMamNNPhAsE(xMk)TaSwNi%Esn&Rek&`iEdhUub zBKGQV&Z_SbsappS_i?C-t3wtQsqu*TJ9<>a>qn%XosV#?@Q8;TD*~^oIz)>nQ1d(j zFlo=uvQ(JQLl#(9jS-_rG5}C?_K5i_VMyI-jYk++pj+n=v1f;~(|wOfJ$wJD^O;=f zA&ZLCI9cr3Q4!B0QqKSsQDg|dUjT%#v`OiYQxH&-55Zk=6giy+4-ua z8jnz`n|h?OX9sztF%tCb03*~9lBLEYjGPSi%AVaQl6oZQ*-?=cgu2xlk1%qgNM+Bi zUPb4R5vgbIza1`DM@SLLKy{T}?Abv|e~d^yJ6utCL>*z|#3PkGJIEuAk)US>7-5W% zEHz_sqqLYl6s`FXIF1|_B|r?>~PEX z5guXW#3PkGJIEttt)OQI7$IwsEHxfsWKoeil2Xg_BPWWO-n)vVFh+op?-8kI zXIW}ILW)QRs`H50v!fzh+09>x<)~Y&86%7=(5)LIV$Tjgneja$_3QxBrQaHlFtVsf z9Z4Z;p(36~q@I02-D-_T7&%d-vS$Z*q%jio>;NNVEs~|ie2gqAQb$tq2zKeT7X=kb z2PJi@H6CH)M3Ks#eIfSj@YEk8QqK+`M~o3h78R-Si0SnOYQ9ILo_#^xYK=!2IbmJd zvx7X+7{M-`Lrdz}S&e(06t=4#ikrR(p_Us^!3VL=_Bn<)TR%<-M$cZAAJ^RAo3Do>CBK7QmctqA>WPx?v zTubcPK}vs&NIm<4y44zwFmj?uWzP=sNMi)Mbk15*&(4a}1T-mB#DIyuD&Ligg zydb6T5vgZiQny;;5k^i}SN7~6k5EV8sXs=fo}Cq`$y%gH>Jb#EjwIj-X7N2D_3TUP zR%<-M$O-Gpo*m?oJQDQm03*~9lBLFcj4UcrM^f?#cIh-}L`71kQMX#-5k^iFsqER8 zV$Tjw{V^i->;Q5^)?#E)ks6PPJv%Dmc|_{jm(;D+c!ZG?MJjuCkVhILLC+2_!Wbc0 zYRt#Tq9S!9r7;rp?5IdOMyOk@@dzU)id6ROOR;B%r~Vj`dUgOgVvI1ds7Q@R#GV}$ z@y3YMvoEPzt?>vWCyG?|>>!UcMuMIlV1zM3vecN5kwr!7NJ?V_yL7H2QqR7mZnefE zjGQP^*|UQ@l1GA`9bg2HkSsOkV`Nd0I+Bt{f}R}}NwU`Jn4aB3junAdVA=AX-Qo$< zysQNxHU z78R-Sh}g5EBAm6%UkO9%R%<-M$O7HEF(UTttDt8$e+dka@CYfAhOFtmE5?Y}v!m#q zN2H#8McrzRM;JLVP-V{!@(6VVp88`%>e*S5nt&!nQjb*j>_!oZn(q;*XJ1jbTH_H$ zPCQcCvx7X6M}nRmV1znCvebBlkwr!7ND7r5Mfb*t)U&UsTdna3BPWVf_Us^!ptXJ3guJ3RHXmejKY$Psmfkwryn zJc5cy=Jv;k)U&UsTdna3BPWVf_Us^!G)97+9bkkpLbBADkC8=1>PSi+33_%^By}2f zt2G{BXx5j*ooG4P+v#-UT9iI9gk$QFjsn1#-vZzRnN5q~T z72(;h`72>a-D-_T7+IiOH%7#seI4}d<}ZQa5gs8$(vYp}*+EDlYoX|#N2H#8P2FmZ zM;JLVP-V{!@(6VVp88`%>e*S5nt&!nQjb*j>_!oZn(qRR_J8&z?VjriifrQ`(Jzc*!;4M!(_%Y`F z!f60+t;66=Glw4Lo{aX=-rD3|yress%>7|_bCr8_-`Y#BE^ofR{PuD7^V!Ay-Q(fv z^rxqOSfI<|Nr^AXuUSqRjpS` z9Ie-I@n&~fYn*`0AouPv%0;NtD`=DKKqZE2LLxQ(*0Em2-0}E+kb}F z2u8Gwo=RfaJx?Mj&|}g3=!(-$+0eNFB{6HE#J~R~Ts0V|YE+D0`-+MHp^65?jVv-u zPG1-}vERDdv|OX#+O4mzO|!;f7uPS}-0yF0+s)dRGB`^6zO_8z?qUoj#l+3LhbIVt zmx%5@TVXIc-aLN!0HN7oZs+Kb@4kbk2jdkM z2~qwz%+}g3n)SyELdCgF(fme@u~ZM3>;C4Czw9Jh?@%I~|Kc-{W()hgN4I8^nlp+@ zFHk{;>Wd0k8ziB6a z*G0o_g+hca0mm|g@@8ito4JW(`vm3PK+3HigV_WQ9Yt9J_b+2db?|TFQ}_*a#-{)5 z$A+ydN^aP=@+VE_7rB?Md5L|KNnl-B%xef0%9jk2N|1P7-282SJL59$*J%nMsVNbu zpvr_5ry#*ZN6sU1zQu5bsn(GkkOU|d%ygoeN=^t&TtB!F?Nmabs!?!a&diLzzUah8 z0)jILtKMK_Bz=A>#NxX?T(J*`M=SRiH0pBZ@ksyh0IPD9FN$P)myncO~d^(+DD`6`PU_85& zp_&MaKJ2FLll*Nk`4HrNXi1mTpmz+u@3zdIR~4k>pFvFQk8o?fvGWuEpB z6Lm9+Bt@G2EjEI_w?%-^&jti+;4jk&--=?V*BXKG-X$CK#dz)L_VCV0U2k9(g}8^8 zs4EWWcsz?h;kZ%q|2haPZ?jCA{*M|^eUY+ZIf_i@;SDq0mKgy;USTc;oI8|4;Aam7 z&f!Eeyla`=7~H#bx!`d4@Z&?0%0JlwM&9jy}q z`t{Wf><$?uBZC&nIIc}`*7fZ`fj!s~iLtH5PzLMR{dwJPv{m9`GfsX1yIi_u`N4CD z05RM92aq(W#f3WILwK6IG+nTn2-p1#qfcQ1xS!|M3Fo~rTE8+O4_r|ooc`6t8hvn2 zlljylyGPT{z*XKS%MUM|}?w`Kh-}aBQloAR`c>R+>{M5|M zu|`Epk>Q%BW?}R+)J8^!`Chw+@fyLD+u7p-HYd=8*qPNok4bT6sd!sCGlT_uK2*ok3t7lx7jF!}^r`Rzs_*aQrl zV7py5T`y?$%&~%~DBxsQKz0hBVG`3vzD`E>W2SzeSd9sPP_KKUD09o-a+eDaYfYF{DRPRUDNHong`Wk76ZHL-NH66SOn?;BUxb_7u>Iiq}6J zSL?V+hk0m4j#5hO+I`iOCc*GSGrO-zdbu<&PrN-iF3Q+Sm>*@BbGn8sbxRl}hEwd; zq#f(c-OI}x_<1nwZ0b&@fKA84e~>MpM-?+Se`(T1Yk{CDPq@x2U`C>ZQyc*vI8iAX zR058%Glb_ccILLKf1WtV&bmB(c8*2qvomsS);}AKC6eU_19ypymHxoBKY=q@; z3J6Azlsnqax;%Y$9++QP^l9vzt3G)XrzNP~x;ZIS!=?hLv1{p%ldk&6KOMfJLW@;dOwkofI1}QS78W~g7KoqJXc?_GjY?yCYPWYJyPyyJL~c&sYMl~&(6r{ zs0yD9u7QsJNIuEbKswsBt_CuCTLk5w5%j8l<6`OjQF>sEXt}u@0ajfNWc0{Iwb9N5)q$tvX2y&} zQR1HAr^wC3O%Iz~LSghsxufl@%hPA)IKlPV89AMNu3@f`Q$r_j;2Gw5J{-efEq)aClTLN#nEfEv4&{uKG4wg%!As&R-MW6z2}O$Er<6X}m+ z&rA(m)zmtD^MT89AN24>VULtD%!Oaaw}vty@t8jp&hkRhv## z1I>-i)%F~#2Ii$u19fl>bo58cx0xEauBm|rX=r3jRRd9|isUi420Hp9`6N>V>00f& z8p!C8i)yn66I2JD67q~0iK65YhMyug6E{6%$v zU)5x)8i+#ak)irza1C_yNAgLg25yi0eITPpE~<@oCa5Md#k`CeiK0Xc!%tBIiJKla zxrD;#k#a}dS(m5J&I9uci$0B=ZFP{p#N|z#mY{m;=A=*!n+l-DuBAUke#ljyK6}O? za*RDI0(Ed7xa}(aNcPOsz->(pG)U3FS0iJp8i+zw_+)Smbo58^Nu~zwj;n!;9=WJC z+L>T!4P?wn6eU_1eu~^o-1M-?B@{-Flsnqax;#p%Rz>NvGjcllTIde4S>2L`!5q!H zIVn`b4z7Vt%PI0hZ4E>j$EtybR(V251yEzuYB`cUGc|BmQv(fB6q>3gQ`JBesv>y| zu7QsJNIuEbz~f3FVMh+C&CEovG~Nj@5=4m<0-qu+J7#*o~MQeie zn0S)PS6%oJaV*1Dls$pHW=>0ef`m|8^F}OrNUAsk3@&&b^^r`OsdqKy4soJ@)FNW4 zVpmh^5NEI&=hSoo#KaD1OWMnjngF^L*?IuUkBvS+FysD~YqL$I4 zV5^OGCRkbn88Z?^u`$C>k(-H|9yYmz!swB5N84GKM+sw9ls-Enr<2z}Jcp|`l+zMa zZ{3^}s$o+BRGV7*Q{;zS^~r~9+J7Bm&x$}z1<2SF>5pX3Obx6#5e>5J;2P-YPoqhN zPlmREM(GiKlBt1ozExe~VDyo4GZQSWfs7f6qQpJJPm!C6n;tf~gu>{NaAQ$x)n9hh#t9Dwdqtfu=+%_ zRyvUE7<*O(>fk=mX?gm}QF9_1m~wCpbo8guq{1hI`@qRgL~H4&t-2b>=+WS*VyaraEhz28Jyc(F7LN#nE zfNImJYGCz=XvUsn^?`XQGWLuG$k-FZ^YoRY=0r3w<=`6V=ue|bMe-P211CEXt)=s- z>S`dPkCdC4U}+6x%t#a^?iqfH+)Ui`u*uaxMvs)Mt$|Fi+Rg*>OTg*mH4x9?stx6| z1l3zNCxw!;jp&hk)!3b?2AXrt)DX#sY}$q$V^4kHWb8ROMnP84^7NIX=0r3|(t~TD zqd$!%6+RhU11CEXt)=s=>JkT|M}xOE+L@p_@RX2e%t#a^k1#xNI(cp;ZhF|{5(=Y7 z${lTIU7kKW56mwt`ZRXVRiC_x$E$(naI^9NP6be7cd8ob&I*&i`t;c|4w3q3wKYnX zLJick2xsg$O%1F$5e<^`;2P-YpS}jV6Uz#HGPnjh`XgzQ*%L!YZPnF4Mjt6RGr`gn z!kCdLO58L26uFtW=`|;pP#8T@t~RSM!D>6l39ir1sQJm~8u_!x@+MA8P`!0+jVj6y zM)b(Ns!gY=fz>CXwFWa%=NNnH14pTWk^mWdPE!MGPDBG!4z7WY{z#Q0v%ANgSXLP0 zgKMCpKawVy8c63=)zv^oA1T_IU}8|y@`v;Y!fB#0981U^MtcFgo@lS?Ip9cgx~iFIj|@YMwAG4Ujoue$jg zaW80A2F<2}t6oQaf`pK(HrYTOuk8b6%fmBeuSKS%K9VUjof58K7ALa7tDYV8Nz^F! z#^6#1Y9RHI)X=-V#c?O1dFbOLVvk^9jCh!lD00Ai@Dr3f=B5WtCXIOLk#dy<&m&lE z=XfgLXJ^#>)ZHHFmFu(eCQi#vy>)X^$Ysxp9=TVwsii+fe#ljwK6}O?a*RFofs?Uk zEI`JdBj#JZ`hkP*+B?Zbc0oej?h!X*p8P&gO^O8Ymq|Rv)c7DU=#0382QPr9YBA zGu@Lrv8*t)4X%NX{xq8C$xQXh;2P*oTpLM~OpMd{R&_Oy(MQT2Oi)c^ig_6`5=Du7 zhMyug6E{6= zNV(dq!UU`BJTR66PA9K{)hD7Yqyx$7ty@t8B>~jfovH>_pNMAc8HdO*_S6TCQUi_X z(QwJwbDA3HPAn^`9K%mU1FKI}1Ko*b#hS!Hq55R18c63=)zv^okAkf>+L>T!Zf49# z6vf62KSd2BZu(Hp)j&p%lsnqax;#p1QAO#qGjck44a}cKmN#+QhSgiQq6Qk#BloH{ zovH>_pNO_Fn2|ci*s~%~VF5J~AY)IYKT=r^wC3 zO|Ln*1kLD?a!1=)m#5Fp17n#*pT^F%I>;k4Z{oBB)mt|wg=*MT05x_k{gHBZHb3O5 zPoF*G5IM%46@faq4|M0gjbzVEA6RoD+G6;LXciO(+BBL}_+;>&n8{8=ThRGdbv2OD zN6O7iu(Sp;W+aM|M;LyJ+)Ui`u*oG9Mvs)M%_>Z=+Rkx;>$5Xze)2xB`b0Ds326zc zw{ArZlmt+1I#mrc$BL;Tk`LLm1RY~fec&i_3L|+`XJ7w z62gu&JJ!UyG(9FBSo%orNlct8Ia%wDSNF09)Mz$M*=rFyRne>dO*|rw6{ES{Q#WPI zUN_}5^{(5VQdA^{SG&nJzW}51WHGqZb<|H@>6XWxh~}Y>6XYJj!eZxPMxw|8@4-)y zitxwxpA>>S`dPkCZ)_AULvUvc#B?C`#Nj{1myFxanb&ODK#UDOa0S zm|(S?2j-W6)5-flcUG7jI(ZYPC8*xI6*bU^9=TVI-KlDzIaW*!kv@CIA##j8^?{?* zz~LvNK^B~<4|FG%$?>UbGPnjh`lqkv?!>ZUP2!+XW8AK^j-*MZ52W*|>S`dPM}xOE z+L@p_@RUGd%t#c)#tc724J2;*P|hV3Mvs&`+RnN>eRdug%PjgdcFt9wyotxFfi)+h zEe%rSUNv^7s(~n!9wL4Aj6S`dPN5NJb?M$$=1~O(Oijqedeu~^o-0BhvqesdeZD(B`CAFxc z^w}9XoxBgk6TE6edAu5!mqImcDu8O!scK;LiD*lMIa;(<)Idpqj6J8Rf$qezqRKJ+ zL^QDaR5h^XL^LDbz#8c2k2EjI^nr9^pT>S36|DC#*9Q!;-2BB$j!t}uQ|C% zHKRw$)z&~JSZ(Klu^ezZc?~qjim58)O`MjXdh6O6Rg~$5pNO_}T27H4a@D8Lo^gmA zV^4kHD07P8C!!g9PE!NjiDiY6F?cQ1(H|)?G97KriD+Qx!QTTN{gE`u)Id7ls;&ky z`bfE%395-q33MGce$P;EL@A85`sQ$r*lvguOfG4|94j+zis0W$WSrUurWhz6lKxCT1Z%nloO6ObE)j&ocDK|4gb>Jx>&zO-YO58L26uFtW=|ee}P#8T@t~RSM z!D>4XjOBpS$!lQ#EV8_b$Lj<0Qm6r(3ZTaBR5j3@6(;vBefEq)q&`}6-Dt+1u>cu+ zPE!MGPDEP{KM~D>!jL|F4Xim4&4@SHCsWlxIL{Z|N;iss9 z#I3FdGJ2$3ZB}7|)pi~j%K@j8*FZemsy39<5>#*9oD@pVHlj!FRbzLm8tBdnE3bhD zGg9Xmd+GxxW6!}cYHRH2D@VA_jBKNAXJ5>!d$BI?kGY*mZXszf2jp)PeIZYo}b0XSu_=#v16#O+(<;bjs zx)aNaYM?XWJZKzDFeT?r)YNUhpfCwl6rQ}PEPMuI3ggusE%$>9^1Y)%HvrYU>PoR<1XsVy@puKq0qB93Ru^6*UA z>!w8NBbhQ&CAuw|MMYxxm%onsBx;mRTeytV6~m&yw+!D)cn*n5A@0voV z`6N>V>Ab3{c5lV#k&9}hoe7raX2y&}QSu1GPm!C6n;tf~1kLD?a!1=)mq$r0swjPS zMouTMflYM{G?=4Vx1t700;o2fss^G^dWhshcDx#xmqHEHRDg^{N zacSOtT4H6>9c1XBK6Ul ztHesaHKGr<=QK6YomeK@Q`KbXFCZYFPt^z3oQP(`i-SUq@u}8A>Ab4C8p!BTu+>I8 z6I2tK5-5xriK5t;;iss9#I3FdGJ2%k(RSA5>9g~|SZ2|uv2(8a#e-@;)$s z7FpiJX$h*gZbc0=qDSskV|S_=XpR+AL!{51aflpaPkrDhbBf_7qOF{kr>}wT#Im9q zXpn|R##A-Xomf_^NgNbvj89bq>Ab4C8p!C8i)y2t3918633=NV%i!tjp79=Yg@zqEBPzT=mJDc)S|uPAn_R55rGHTRHk8EwN2^@(UO z62_~6c_~!GrUIxowUvIPOqZ#F)hD7Ed&VJBAFUNN(1;!lmyA6zJV&x;rUtqb%Zh5? z@DtI%>QnWBH7BAO@#3IReKJ)aNat16)j&p%f~_{%nP6!RWXwnu#l{RjMQ$c;ddC zo)v*Q_3ZD$_1Ko*hBWaSE=h1mpbv2ODM~ZePSXu)a zGZIC~BMd)94J2-Q*yIv4qesfsW)&t_ZRdgWxq#Ej`@rfG(N@xdWcAjqsDY9IYV1x` z1I@W+YKY`RHZ4KN*i#=k%4E%m9u1d_J(2!M`8LxB)|`k2p*gq)I{MRSQsI-qHE^;M z(N=U`Rb35a^eEVBqn!z=15XKg#*9Q!;-2Aw)5&u)anr*lmrxizQtoIw>+ z(WkL;*l4k7R<(z0Ww z2TU$C6LzFoZSf;|wI&{zR(w7upJ7!0Fn+{ufLR%oG%c{#B6g~x2O?Dl>UbqDD}!#z zp^-UNz3V>B6)lJluXY{v(-%8nq(_A2jlrd^qdt-vdZk+*cOsgHK29R`2o`2y4>J-) z&K(~71m%vo=|PjJcOH7ATxG%Y2v*y9SYin|ox0`$w_KlIa(Gohc>d&ms+t3`>8c%AxnIMkqZpRG$njfkb~K zO)@o*&bO*+_tuOaxu`aKFu~H?%$SiVN*-bODQX~b)59j0pcy?+L@r5$dnYqn2{(-+%r6I zI(cp;ZhF|{5(=Y7${lTIU7kKW#|f^_&d6y3JKO3YXUn{a(-Kr~-JBGvVN(HAn_BuK zWABK?u_ZKiU# z6U$_Ks+tV0fsXz(npF5?a1C@Pu8pKgrUtqV3Uwuru%l3`jdh}@W-%p72r&{w$sq&| zd`_O09Wy;(a;b!{Bh8LAu`W%IiQ~N1V`AiUdK2eLPS(2P)xGS8NX@1xd(E6v6}{}P zlO9vXp-~;96)T@Y*QuKlgL0(YnyGg+pZ?%+z0%Q-m#Zor zV~>-DnI7m~G9O~ZNDw*L8GM2?Ow9Cf$s`cQjx?*xB22H=#Bn<7F)?a=>PlyRDX!|1 zwQgE!sts#vQCZlg>@{;vRO#F=zhyOgOc{s95vJ4!i#%zNeqFDda>U%KS3398bJ>)d z8bkX!NB!iL&i(GZRE;F6iNRh5ph$4SFXPfc5LfG}bth-_X4pCAnrGkx%8 z5(r~QnpI{IrdMm?VG$hgId!EozXw`1f9EW-3^O*|}u13srWajwc_tvgz! z!=G2{gGdY8l)V`Vh^;w!sNhVm+l2U2T9Dli$Fk589R@Fnl#S;!ILOaT7p#RVE{_Q@x+-~V!def#*dzkB<% zfA#j}W`Fy9_8+t4_4V!kaesJo|MaZ_@N~ET?9J0RJ`Iou1bKKuHpuSz^VvTc$`Em% z%t(Pw+UM{(6&FPY$ln=NA%Y?uTWev2!v7ApSF^(nn5URf=PFCa5F)bzQTpF8`ybN8 zIcq{3S6Fi~mNiqikOec=T)eB+TvSepu1m>o z29e!}WXH&XxzV?&ikB^GbX+d;Ow$n>5-(fbR2SDT-`wwSZd*9|?A6=-ZrkkdTbtFd z<~c)bs|=Cm;>x7HODsCX5IfxvP&Z#)zq*SnCKWiWoDAUCOa%n1Zdf@9FlX0Yon5>0 z6ulxhsbQPBZdnSk%^E|jnK$!+G1kDmqN3J~HrkprT!%ziBTvsV`ML3`Y9>K9ZN|zl z4HG9{t%hAW?g=te|`zEbum4WEnq#)Nd`KbmEVV)J!xSVQ?H+8d)X0&OC z;H5!;rH8_v}=QMB;GtOyd z7ryR4o-NuRU2UE-2S6|rp^ZVBuRElFKYa6Ko}22mo43gS$FpV=VY{Z?b?9Cj`~|Y| ztqPvA9exLl3n=u=K<_*s(3=h#9Y@a$bdw{Fsz=~WhWa7}Z!_S_6nv2ZU!~wn9b6Dy z2Tldg$eoIvkvbJRBl9}ZaHY$jy;;hI3I3(VwaCv!mdv*PEeRsQW=NmM}q)ljV>^#8Q@hvpOU!i1>A|_!MNd zFmrhh5kWPBpxQxDi!2llvibh%`W7rXq!a4|B{ZI-cyF3If(A__*wzs=Xd=Ny9YKQ@ z5xo5LtHaA48w!(tV=fO@q?$Kmo~mR`%P()uJXOi0mTKOld8(3K%?BbkY{ZGT9IpZ= z$PnE(AtlB$I52u%vu|XU;m6QkZZdev$RsYfI@a_<$eAB_?ML(i#_`SLmk-bvAVFBu z+Iq0p`^FM!R$UK4`4Ae1Mf0Pp#%nuh0oLTuT?<*!&K-W&tUKZxn5{xTw1y_)`RspU zV}vVASjio*7Jv#d%x{AS+AEn3qP z*f|Jnr~-bjwY1#Uu<)sJd-L|DD==VDoX33kom6?g|HUz4A!&d|w_C8Q z#RU7$5i;l~Lljt{M4UA=jv>y|!`s`J;PtI>))o#^y>B8^xSq?h*gYHKZdBjdGtQf{eGQaVykEmAbU4m#b zXP{hwDTEyu&CTJ}c@qtJf9>LvS+|mc>oYu12-Zsvz=HxLg$zbEfKrwNP%y-syQ{Z1 zhuKFT{r;D~+J6cg2%dd#UjKdg(T5-X{P&mN{2JDy4iBf1eQy8zK>2q*Uo71_1o;3y zp0rK-!R(vUh!awMi%|*e!>9jc{%W_gH&_urX*Nx>S#Foh)rakJ+ithZa|`AFGCmtq z(J!xVD0l5$65Id&`u=cpeS6q@)7cNds^yD=dc8DbyxFW;9P93182g)byKFybmg{-5 zUbL&l>VtXPE*J9;W|NFbH~xQn{qoDh?dzZZ>g}DVXWx4f>D_<$(MK?)Ip)7-K;aL6 z{O#=Z;r8$V+xD(zFTS1q8CHBAXTSdK=P=#)_4Vs7fBM_QSBIO~=ilBweR+6G9ijTOXa5f~=i|#um;p4i+sD~Q@X!6@?Afz!TEOF}n;nP)Yj#23C86PadGoiQ z_EfBGAMu|H# zm6tk6vs55r;Y?p838#OmQkr!Fk>nyr5)M-fNz$Bl!NlwYng2G%`2}o1#gC7|<8EK7 z@CF^nkKyCR<<0(6cZ%0MeFNLc(}#Z-p1IBYDKu;qPapnWct-aa2;|NA{VADdFUdlL zL?)ssBr*|g1cU_ORYszfEYV7ohzN;HM2Ucq0KCpfw3a1WixLqbk%=e~5E6jt z{2?KZ%rQQx`!}LQL`Y;JN(6)iU^>4+kjNZHkV>=_B_cv16Hy`{BmmRzYz2wTPf}Bf zcA`W?NMs^P1cU@&SYhk(tRND+6f+V$mr@ebk{O9&AuS1?_HoP3@yo}=T;{j*f?RUGZ*%z`UW)l1o=b8uEkQ0rOMWiJ7wlNj>kzz@<&yI~(~|g`E2C0- z0g@;eaz=5Qt~|@iS{B|k^z)_kF+Fk%F&WsO1@vn`5qo;?4{&;q$SBkIa-oS$@dF6 z-^1gKT*~|&X-RTXj+W$7^8G^2_wYC)my++1mLwPDXh|+5-!J5R505i)Dfu30334rS z`5s=1`3s&)anH15M&fuxS`s+rXu)2vKT4KM&i4SW+sn|B1rX)R<$Kr}Ez2e6djQYK zrQ~}+66K;CE!j)S_e(k7!{dxxO1?*0k{KySOL8gsektdBc$|?-$@fT0l8bV*B$tx! zVb`7*_e4u(B*(p+?_q0Nr=uj7lJ5aYl#6Idaw+*9X-VLeqb0eNe7}_QJv`3%QOWm6 zOOlInv?Q03@0W7EhsPPYlzfl0B)KR@OL8gsektdBc$|?-$@fT0kZYC8_wZ88U+`Rt zFQz3k65}3eN#K;D1$(WOd=Jk>xrmm`NR~^U->)b~OL8gs9*{)2h?XRmlJAk01Wq|x zl1s_=D>>i8V?Dm$rED)b-@|WqJ6e)lO1=jq(OyJLGJulrk(LBbIa-oS$@lQ{C{Zq= zB{P!kCFgti0Yk=KO1=jqQ7)n-$))6bq$Pne>)ZRc zPZkRH0RGJX8}p1DahzP?QW|eS<{|6GUE+{@f*8ske{}zHMz&_9;COH6F%;C55_{^D|9$N|6+&a z;!TA7o?bydAwHed4(spm#)X|o4RB7((@g=He9<9lWlj&Zn9^ZhfDl1N_HL5fp_V^N2Gq=`c#R+yVRgZ5#Rh1Q| z+8R}wBYS*_s+n(Vvf`w>m#W7%psLD>({GI`&6_>GMAgi}HCb^Y-b>Zv8&Fkc#VNT) zl{Y_njEO9~%~UMh1Lx@LBCGFD^?BJ5dqJk=@D6v^)QYFq+J8#P<^Ja;&_0H@ZWvobIs-vRB=7WPOajxd^22d#~%nndB zyTMz%<}qPOVnY~S$Y~P^dsv|FKZiL*7&Y>QP1Q)v<<&elA$N4B4^C~>ytnGLflVJc0c#Mzo> zcF*<`7A4NsJhPQnBg~s%C5ho}CRgBISPv`AZcJE`*bs&na?L}+9#%w{+A)te8q8Rc#Mzn$yLWRE=aw|R-NMY9CC=77vuT*IB8js#5BBxuB+e~tdi#i(H%pwY zd1gB?V}%m)Mqnvdz}t+(xF6WV(g;f<&k%+ea?L}+9#%w{N|VQ%OkwvMtAukk&)a*< z)(Q#h66b0jZypvU&elBKL+oKirpVSjK+V)VvpJddj0k6I9_$~^MMZ9H)7!7iyxGRt zKF@4hW~@kJDoviXm~gh{nLW(?guRFi3F}djt9h_PIkQp-Z*w-z)jTFFN}R2ExNX|Q zifo*%d9WKfCvmRk@lI-wH`_Q{^UNk_)p^;P2m6$B66b23w=bG`v&7k&XSPQ(R%GLB z&4V4xIf-*M&)YH0yjkLG%`+RP87q=FTk~LVb57!1&GYtBGjEnSTl378YQ_pB=FQMj zu7I~0iE&S~houpg;@A*|7jn%*!X8#cI9v1Vo@lrzZim51Zw&o#W4=W;^t$DD!I%nhD z_dMPi?(t?*Wcxg`sarKgw&uYe?wrKAng^)4IL_8Q+&b>*8QC~n^I%7IPU2k6Fzv zLl|D@ggvZCVk%9d#M$q8u+2OpF%kB7v&7l&c}Up9iX^6XOq4iV^US_8PDMZ5Yd0o#bf*^g6d+xhw8lNKkDorKZN2hWsLPS@qllK;4QaHgKu<;~; zGy5|jSNOJadp3e+f9la3g=Xb=`oT;19D*8~Fp4IupN{XEB^GKFpG23@3~avk(}=3FE^ozr}FE z_%MrJF`O_y%u-VX=N5B(Te)?Z;F;hLxB3yl3Hiz_X2g62f7qXAhyHaf#-aUMC z{X~K}ZwFSnxx0f{M6m8x!W@C-0bDx^zd`OE27Ta*o4@UE16r~C5?%v$aT~mpWUIeg zM6Y1{#LVF0I=EhlJuwR<3oY!(EjU?f0EP4jJk+(9dM_M-@J z;7cun7=WZTk7$5~K_Y;MrZZQT-tXbotG72#=0E@(@Jsfb2B5I-1s}$qsE3~Gr5<{& z7d-S_FL>y=V1&U+g0uCCeHV@*ABGK_fgvk|E)K)p7!-WA-ck%`0EP4jJoH&F_0VU% z;GxfY!9$<*f`>i}M~5@rhUVkZaAW|oMd%8R9)X9Z3nR=0%!WOu0T8{AeJ}Vh_C!7O zTrc&|bG_i9=X$|I&&8w7xn|40OGXmGuz@o$WQEYiVT2hA!41W8Y7xKC01D|5c<8fU z>Y>ki!9$<*f`>lq1rL1|jt(*%w@4ZQ*&=jBFL-FWFv7ZEXdCvN2B5I-1s}$qsE3~G zr5<{&7d-S_FL>y=c(gg+HSD`&BsrLt4V-}?D|9XnXViE}xVhWCUBD&t_gpP)2-w$V z2E5(y(m|KK@hz-?;cR@dgFa5ehW8yhG}b9^SQta}C3Ma*`mRIYiritn%%H<}4G|sQ zTkcztJ1nCabXX#n(T&aai|tP4Zf>`4m#~T|qjy7LyOX)&sa2pmEWXL;ouhYinfubB z!@cM-x{2fcVmFt$uPpj@r=Xj-2J}YeZti$*S94hEko*qanX&w?k-2XS_Z58jlhHRF zdMk6cQMZEcMKXF9b-PyPZli7mpBZHIF6wp*k^9C*-3nH$MRa&?bzg|wH#X{4YbEO7 zy+vQj+-=mYwo24(x~SVNW$rfWRy!r?HZJN`GItww>$wtj8y9senY)d;HGEK&P3NL+ zEpxX~2e(rz=q~EkGItwwYxsO4b9YfE=emuJx;5l98Qn$QM&@p#ZVmpG(OuNZxeok| z>0-TAq7L5Mu#t1!)<)fWr$imRx9D=N+uEqxz>Wh^czEBTi@I-Z)NSBHwTy0~ZaJ58 z9q5d@Z{VA!jBcY2&}Hs6>NfCMOh&g+x17tlZfm0su18nUZPWp}%-u%aW}`&i)<)eD zZp)TRdQ6C*Le_=?FK`I&9 z8E}{3491s{?Vw%GcRFX-#i1Z~VGHZzvFAx=*kYj|cR_1Dg@iLJLWcbh3UU{+utcwN zMmNejcLCerELG#I8qDUIWrNdK1v&VB5`;+8t^NSI&KthED}pzBo2Hh{Lg$XtIa%*! z-=(Q$p>xMsfrjqsvat7H+J!__0?(*Gs~}dEKl;Xy~fp7H+J!YL;u~uzyf7 z++yE(y;bvE3k6?C@4Visc@EGsrt7@ks(G%R>&0Q=yx#hGZoR;7S^s|c<_W%ayGa9d zzd^B2fb6srCLnn*JH1?BKj=*_5^8oDxxf_7tN(T~^H(#8SwS-z`ueZn37p=vT|MjG z;*JmVsr~x)n!cxZwFX{2UccU7-r$~R{I>tsJ@1CFAF0iUceg=$fBOPI%^Nn*e%-fw z$TN0=gKUxy>yoE)PK1ge^ zEo_78gR~CWV$tj2Zaut(tz>prkp36@uu)v6DxKK)c}OSs)ZU(+K%H#Ofu%J3jzP?+!25aQN8;BZ*O zcP95FXlKD zdOQTX?Ts#&(mbw`i(peVfG*|(@&J?_3)*iX*ye3O2V??R3ACW0g(O*RySp&Ew0hKn z3Tvpsp65Obz?OLns*W&NX*Cd-ReOA7qIfY!clY=RR=zD;JB+%bLk%Fzu3p036Y*p7 zyAk0rZnqU4~0nw%UYVfyeYKV zLMuF$wS)#pG8MEo;$vA$XhkGwXfdS6km|(8GE121r_g2!FFux7!n9Xn36CX~W|Az? z7Q@F(Y9;6}d|*D#!w6qi% z8H%P08Ukoqh9Q8aIT!+H+5iV=XRaXV?>^tdF7Lo{-R9@}XnV4~BPFsN?`Cab)iEIR zvh&Hak3O2+-+g^}`03s43}@Kamp9k{e))8LcMCs&HGj@t9A01FKKt);be!Ee4%^M` z6+HH#upzrKATMBgt%9`uAd7yGWk1NOA7tGRvWY-kT+?H?jON+1-~aMg`%m9IeY1as zOQnnU_R;-6=x*LzezU)Nyx%vo|9~`{(=r^P7MDBFCtUoLfp9y z@a-u~*?rE1tt-xAzA4S*%e@FqX%;2V)s(wan6mq{4cmB}#R5~}9NE2yOomT%)tP z>FJA3`xSPvYsKg^>tBjF&$$FucRqdQbQ|?rF*?nWbY0O(j85|%PBG^hFUIYT=!&{+7-nBLS%#w1bwz72 zcf!sEZLs5}hI1`NyCb@yyg6N0v=*b&eD@_E1RpTW?$mP~>_>D(d2_n1Xd_0a`ChJ= z^NhQq-4R_;-kh#0+KAC<_8G|LG`pA2H9C*zit^@kUC~yIPS~=o`f=W#-7iPrwN{h59?=-(?b-c22YxXu+EZ(c%x=gtw&xL@QQn^2@0H*u)RH~b z?F!v*sLr&yH}fM}qr5%4pY6d<%tU+Y^~n6F>}>6ML~oS0r~8e#^u@^hlun+^cfYcW z?D^*HH+%Tb38z@V@0t5IZSqde!cCjkx2?Zvv)c{|L>BVnrF-n{2TeA92EyJ!>aiT5BmeQF$bf7{Q}dw}#M1ZLA7Vp}mjio7_K4V-WB=h>kzIoQhyTX&Ni?iHpTHcz$Eo#+?a=MXy6?45 z#10*fJPEAm`6S9ho=>8o<@qEUTeUv1eY!oa_`UXt*r#J3;zu_71p5&G4f_Q95dRJP z1p5&GO{Gs@_a#<$dj|CT?2}gP)#2Egz>1zvqCDjJBpO?uPol9^>l53r+k>^=YoEyd zdX$GepG0|xeS-anKN{F4*pK*cYJFmRc6(a+d+igkXNONbL0889(LWcu+LlX^1x;nx8(z;!*wLY;OyuGa8z4nRR z!AE(B#|fOc8Q9nJNi?=RpG0G;)+e@$w>Ln%*FF)ucsL0$u)OD!C=anu;5VxQ4*LYo zVh!HZ`o#9}_F9ei+9zTk50{8&RqGSm$J+~F-fN$TeLQ^LR(t~Ya0PGJC-4*8;0^l(&btoY zRQe>iRp)*7$wKVou|M&T?r$YyCLZ5VJ|GOo&*FKT^_$Uu~ zK8f-W`vm(F-&^bx>`(kRwLY9C`n6cVmyUzrVge>>m$*e|vy)@Gs#`ML24G zHVkb4r|zem_OR~g%x-&HcXVhsJT&LS<74wb+?NJ~hWn7dHSqX9ycc-BIX=gKy~lLW zJQ2e){5=4=s|f+<4-dd_L?q%WQ8;{a{lvoYN%rQs`)o2tbzUFHeU766@)d|U_}34h z6#n0yq~?hCPEhy1t!poDzP|kSarX1s#r@sm;p+9lTxtMEr+0_t9`|pWF00qi%(?Jzu>9;-a1Vqmc3!mh`+FObgj**_WE zYd1oeA2G5(!z6+$Xiysb4^8X-9oNj_RSJVmjzQL$rf!TP%JkTNuW&E#S%%j8^<_(hp7{vdI&`JrrK7|XVRD@l*G#YJ|0 z0@rxYVHyatld@W9>a2&t)g5nk5=*DMW)D6&C3eDGfaum%v5!EMcYcPDC z7$d=4TwLQVt~a*}*tw2dpUmBVa8Z=KZ^{`?o&K?TuOIi1Z(qJVJU(`GV6T;#8sWWF zj*gov4Va8v?jN9s`*U~G@uFFnA@$vNbiFK|z4S%XEI!_?|MLC!97qn)ZTebo(IE-q zX7h2go{O07bIg1$VYbWWUbGR`SI~*FipxgA+pRuc$J{KQ z({N)da-!jC_c5FaDsm(ZP0o%n@$$@OC(CLzY;4`zTRBYJbocSPK)-qX@}av7xjSXJ zS&8bwb@d-NP3S@o+3C2Ib=-oE+t7<1vQx8>)m$w;ZkM5H9WvgZ2cB$1Pp+GfSD|(8 z_kTD%zP)*(Xx*5g3uATB!bsR`{=%V3Xq}dDA2&uoiUu(!p*?nDF3s3T(O`6VXmmV8 z@LMe@z+__0Gg#g49C{?*Y#$$|QV+ue5h0dLj>@pM>NTBdYc`rkOftUg%k{|`9L}WOb zj*HHCb2)m*r^9eE9T$P|CXkp8!wGaKL1uI!7>i$?D053Ic0w30thg-Zg2&5(#w;e9 zlL=p_18bY1W{lHA&2St<%^VHbL(Om;M9mzG*F(*497N5osEXBt>}EKo)LbNbwIuO^ z0Arjth+5(WftqxtzXT%IGMOO~Esic7CXO#1k|RuqiDOKMI+SwXxoJNpQ1R%{H0;n-fA3eiV@P|Mz z^@jjtm=2?t`a__n`9lCr{UHE({wVKe(#5rg?7MIP!EIuuQ1| zCW--i71A~rF{ZS;GtQe;NZZ^qXrU{jynopTKeLYDQJfWnKSNE;Wzw;x&YSBH)?5G> z!*;%ee%p%^_zOox4C_1@z``dn3D)^>9@^TR79Z1fUbNqNDEiD5?lG+Mq5XKpuy`9^ z4C~Hd-}$;VJ8V4?SbO=>a=r`YZKSv}o|tb#s&HjXO4a7n<$N1a#mnifv?q%=$~ZO? zK%d7;(|!&aDdXVL^fp4*p{{U+qSF<>g4&GJ?p=&-LMxhU0AoMGNBxfWCZug{xl5s4 zoJJmk``si-T%<-mGIx}vv|X%5F=ejcN}*k}Mp0#Mn6l8P_rJAtFqu7p{};~xZ7|{? zlSo!yIRAIwcDr%h-NqB!apC;m2BW^aYbJ&6{0~1I4RV?|mKXcZ|7}nyyL&=X+MWN~ zpi%;~tYzo_HmH={9SW;kaFlrj-6gQ?j%dU0D-3OO&~^mfh5L5LwEbhC zBWRmg7P~pq_75qJplx6QG}HEv(2byNU@dkH)Ao;e4WYezeKBa!Ou?~BA+&cJn}ZI1 z1RX-#Dzw;cND#XlX|aXHy3UiQ&qJLQ%@T%6@QHNj%y&T4!c@*g)~;a>`Nz11c3Iou zxqumrvm!jg$g)R_M$qoM%a&>ThhIj}?l#8-)Ao;L4549aX60TG?cl(`2)Y{)Fq?OB zZ~UX|BIs^Jzy;g{?H{scp-=DsPH2A~;(N4z9^yj_osStZZiKE_SO1`_$TDt(uGx)=&_74||pj~Y7pxgMz-bBzYwm93uOb8><9>@|wyV&AvyYY_-38B4HROvLwt{p;(wSB+Hu6$A0D9{?Lh>QWx8o4bUS1j|0nVhbT_SlEAa^0|M7MN z-Ayat!Z(8Ue^wkpchd^E&Wxb_AG}7;-LwKO>mq3Xr47_B7&>H|co|I43ec{vZVp(@X`6QUgE#s` zRQG~nqhzbIB|lIdl*ED-c?NV4!f+FaEyJt_z^n$qEC;|W2EcT?(_dIq%QAO6&$BSj zm-BROF>tu~B`JlAGL$$z!XIl6h^~S$BY4nhQJF~Sx4{FWFM=-$!HlB)S?KL0oIuYLMsIVHd-Ztz(meH5ZbCh2(ZpH z5EfD(U=Ljq2u$SM17T4W2m#huf#8)!v?@*pU=A=~0|k9kg)cWR2UR%<`*lr;~i3i2kcNa7~|bh1GdT)29<~L4ynNdcAz)l1Fcj1-BANJ7doK^s^MY0 zLu&AV9jXRnyhCd6fE}s^W4t?Rz&_E!pz<)@AvJiw4)g}>lW>Z^J8Hm=2Pf1(H9U-W zNDUsaL)Bo6cSsE$utU{gjCV&3`21fOR364Vqy`Vzf!=`Ku1@iHM-A9i>x3GphKKPE zslfwws2Ys%4ynNdcBmSR@vf+0eydOvQ~}02qy`VzLEZp07~|bh!&^KXsD_8}4ynNd zcBmSR@eZlM19qqyjPdTM;VqsGRKvq~ht%K!J5&wEcz4wB7S9H%;bELW4S8>a+w4Sp zN(#P#;2xQq{il1AnqW&w|7Ir%eEMODwztJvw4 zdDX)>FR!BDWnT3#&P&xru~$8e^Ha6VtElQ(j#Zp1myJ~q#fj6$LNzs)uo2s&0zC>S3Ips%2h9RnKy);^Ix&SoJW@ z%d04OnO8lG^HOzJ>{Sor{8TOTDyn*xW3||+jBs8)We4S#3uz6F5zb0cIHSHW`}!E? zr)tqSHL9NDIBmVPzhUv~W1N>)y|uprRnO9^-rCp&> zab8~a*8U1qJxi~8Ykvb(^)SxMtKQmQfvRWeRd4NYpsF6md3n`a`zuiOEWPTj{S8#r z!#FRmdTW0Ls-C4+y|urAs(Kjbn z>S3IhSG~2r0#(n_tHn!8jBs8)<;A~&E@gzXQq=5;Ec#aCW1OF=-KZPpRHN!Sj?+c) zYN3yDUS2I;Ei|g0rB}VRzkvblVVsv&i&qO59>#g8>aG0^^s0w(eyWybU~hf#yj1np z{swy0!#F=x%e?BXFP@jG-rCS3Ips%2jF))&u9Rd4NYpjSPN^Ha6VtKRzJd8z8H{SEZ0hjD(YmU-1%Upy~W zdGT+cQyJmx6fJY0z9os%2jF))&u9Rd4NY zSo$?5M|R%=&QH}cub%5_;nG|C8|YOJ`I6qa(#_GAQ z7B0QDzky!$FwV=X-r8S*s%JS?y|urAs(Kjbn>S3IhSG~2r0#(n_tKQn*Kvg}A^YW^<_E(_lS$dTh{|0Kx2x<{5s<-wx(5oKC z`KemwRd0Rqyj1np{swy0!#F=x%e?BXFP@jGy!bcJsf=)Tik7*Qmlw}U(RK0OLLcM& zR4sC78Tp6N`k2$hh2 zM$m`bEBfD8hgX+xZ=QN7{^-RwDFGmaaz8_Y&n_PyuV3HJF85!-)vSNszk0iG=j-+U z9wYkI^{c!6FZPf7tGl;PUo4uB=YRPbV>qRK4UG=g7GEsdA6-QVFW@eUzlHGsdC~mn z1u(NWq&`RbH(y_V`#Agg?BbuFdjRh%fsWNA+u=aE26c=M;7|3dH#I% zA3)Hf*N#lD8H3(%eNcN(n|aLr`EziM4VdBXY5w7!Z20`Z?snoUi;Gh4Wx$E7`WMXK4Zi0A#2BGxuw7nE7tJ%Lf0cC&A=nD5)|Zf9q8Z{FVQulLQqHFKP0vw*p-n+8Uh)}p&P zSQL|r!(2Gbm5Pbep?$l<`IC>i>@b%)Pn?(`ru7l=Tscgg=h9+A90WW~V&5;DmCke3 zVM0ptrQLKqS31wN#oPoIa+Y1|95)?aV4oJef+4bO);h;+hZ)$XC2wwYo;!=V4eZmx zOxW_==sXSLb{Vj=Q{?4*tD?c(WX6@-z^v`w1;JJo6|VZSn2@j8A?@A;L561+c)NLs z>4IRV^Xvj|2Q|^>>4IRV>uCaSF<%6jomtzt&e4P&;C1bm9bO9;1npesXu=LKgCV_e zLC`ijPZM|xlO$Qog$shV(RrG{1I!>~7tWh)tMfF02be+pESxvnR_AF0ZxuxB*2e2x zcO@Ki4dJtxhj@#97X+=I@!%+Biy4IMV&4TpyHG{7(X(9zh&v~$ie_`xb`=D=8z6e< z*o3u(ujpQ^y3wJ>jm=iubr7g-Xy`#>lhxKO3)nby<3f)Zo2j13$Pv7pbE*kKrOWbb#!-}_P;6NZ(UrjdWLgxr{+O?f6 z9RZvB7tIEqcLiD@(CNA8BE}K0d1C>iKTp7jKkr6{Lq>gJA_OF5-n62F(~AA=3-b?B z!UERraZW-YR?%D5JXjyNx`w5b*>}l*FzK3q|C8Bw;Y`Ahpzps=-}`|nz4zl?dhZV- z>AgQXrT4aKY)!(D-rIU)E1>kAL(jgw+&|oX4a;fPA9G04oj=TA`~G{;sLkFtsx#!{ z;pXrX=W?4(SHM>gS_?@Ef53%uxUj}jGeDBIUy?3SVyKC-H2%ye6vhpaHPnLv!YulQ zG45N;H!x&GVOqaJhr-ZsgH);sqjVV1d;AYvJUv|D{2%_;{_+Md+r@t5ulvRG*}u%( zdssQ!FIreN{GX;dfOT6~^_+V>g16Fuu|&0!Mx!!dIgtJel^9W5Oem%^l7yQ5c!uk; zjmMhq2cGXQudW_o@e|X)zaPG#2Ex+aVzFUUa@a39oG(FG4HfwX5SrXeGSrSUIc$ zPS8-+WGF@};YF#YC>uiO+KE`gi&9M)FG4HfMX9EY7onB#qEu7Hi_l7VQK~89MQA0w zDAknlBD4}-lxoU&5n2f^N;PG?2(5${rJ6EcgjT}Kjma`r4y%9@tUT0YC`K#cMX9Dp zEm-0x&rom~k*t?(tQK(ihcq{2v`8=8Z!H>JOG;;lu#i^8jnK-tQM!rj*rOYvm2snl zQ^t+Z%D7R=DdR?HW!xy~lyM`pGH#T1%D53)88=EiW!wm@jGHn5>^elNv|?KP=Q=Ss zqCePZ>8tE8|A#r;Hn+m2so=Q^t+Z%DA~mj+o`MmKKq@tOfIpnmod2MS8)q za1}Q~E8|A#Co*GxJ_5&A)#MRaOs>+6(8_cpXP4qCePZ>8tE90gNfPB`{VkDQf;B#%wSYxyzz2JApRon=zj2oq& zBA>y}Xlt?-e8H~LjnK+;Q<&u=L>t$+2%*s#88Od^up+H;oM>bgaU!e&PBbcuI1yF> zCpjeYwv(ezvRv>X)(~CH&F4?}>~(Q*zyHJG5q^@ZP@SL#sUjs7s0^$H;-RFxUJ6JhMSeQ zsO%y7tIi>!+mf?ylb69A+PV z^!s1_YX9k*r*HQBKd$c&H`lj^{mZ*I_iy2cBCzrO*$4ml?}Qfk@S_hu`uXoKzxg$6 zkUKn_hSA*q_kr^7e7;z^cL?$U{LHa!+7D*moJO3G>RbFp0|(wADYQ4wk@%kv z505Yp_;_aD;iJ#)?!SEivQM*%&z^gKHM{NlrwBItzt=F2_~s|G-`u|ZaQ2Ivo7o=_ z{BZ_N>*3+6!_|jK2LJB})t^24f0#KRUtYp=rkUM7&OU;F?jL8*o^^8^p4iY-$IWo; zz?xmq5eKk)_2tdqe&YZA@c0z`ZGJl!Ji*^H2M_R9dBFqZ^DRGdyI8#iCGjPkejz^p zT6umYgS*uRkro_2AwK_Fd445<(|VdD03PHfKbQ4@ec&>9Mh|mXoS;X$m-PT1k{+}Q zDG6XsR1|nLz(a-?^&lRy0J1-jhYT<3!Arh^yyk>Z@wu$WT=oa?kmN!h@^e`a;30so zXgyA_FT51v3Z9F4z;nqT%tIDH)Wh(Q;YB@Y1yj<)oI;iQW3^TE*vfhk4@oX_VwA!| zh8OjqHD5^&b3U5DW25M?k@X-Rl3eC2Glho?FX}<7p?suxy&hh z3J)1x)PueUNqU%jEd(AbMUR!N2l0^PGFMP2JY;xL5Bkz7>0xeN5qK;WJ(jW_#6yzH zTz8`Ikl{r==u3~JhdJd_;IUBjfS(}AWb`@+Yx#1%LLQPHz(abRtLOH{DnSpdwUWSc zJ@^&GaH z$a={2+}ouh$g9+I!$S%nxt=d`^&DP`^&FmydcbqZAIw9L%kYq&i{k@%NZ?d!1%JTW zy{v~)&jDW4gLudSh~ooj$$9_}i44_RNe`u-FO_-@&qY0mhb(}s2l9~NMLnq2N_r^u z9KH|AaV6Jt0N2Mkyp;7o9+DowLwZcLR?mk>30MF>5)N{i_7Fg7SYOSP) zQqPx4J%{IFToDgRE~TCu9x}YBN3Nd37Fv0nEA<@UMLmdzB$rapftDOsay{q0#gadi z{v43xxRUER^N{pV`g6lWh8O*jtLL!GTlR-i&jDWa2l0^PQtCO-lKmmqbKb`;`9rDa zfF%1vuIJ1{(nG1|hKCF<`2$XZ>2isn2fP&h0nbG};JM@v<{`*sc*xI1e;^MDoNBG4 zhf>cMNOr+u(nG1|3#FdJb5RfCA<3om=Z1$2FX}Ni4d|Laymk>3{u!Ypmr~CS4;fz6BiEn9 z&mZNytJHIV7somAkmOS8Ina{xuH2vVuRk;k>YnKa_e7NU|PsJ!c-0yh=ScJY;y$A5?24 ze<=05Rq8oB7vqX}NOCFl-0+a$MLnq2N_r^uyjAKsJQwvK9+F&2JvTgLcu^0kwUQo6 zJ%{70cC4@nQ;AwAC3bJ&Y4=PRY21H9-D;vowl&J%%_JkI6*9QH+L z#<^0@0ZI0UT+f+@q=!<^4G$S!^au6MQd}wZ95#K+ddT(MJL@K0r-qlZKa~C);6**C z*8czOy?K`#Hz`{xxtI`sp;JL$mhF8xTyaNs4zaR2Vq4;sVO+}K)&JVK8>$M0@B-1Z#J{p*z& z!;P4m4!1qWL6Z`BciFrxYWKx9v*uRAh$f+_B7&0d6~POsr#>@>p??5qH~g)4u~z z>fiaZ6Mwh;E;HXA>+Lb#Zrg48cOdGq+|<9bwM!3-Npjz6AC8#Z9vq`G9O<~U2S@bi!I4g1dvS#F`EbMn;=wU4!;wyAdvHXL9vtbQw--k& zaD?LtUB_`VT8^$KczsK~;i?{c6%WJFjV1K<7@AGzIJPZcdBtI-Pwl^Pm?`tOIL!3v z2}m^{bebvq3ms?5{z62)Pk(wjpj$>9r<&3x_E#vo`vVj{{UD!ywc#%9ubv@6zahp# z2U&mJm89BXx&)yodWv)0$FUYfAe!YUn71hy%x{h^df3UO1g9F=BB3oE;4 z50xU?wK~mFi6O22azmQn)WRwqQiQ*0&-RB>Dk%_7!F)qnSlK;$s1z}=)oG4O%3WJu zv$8ZHtc6uNqzIBzSo=dMl@uU&mJm8uZ)u*ebPIBEv!;v zL=2wxY=0=Fvds5M&wV*%>GOT$>9Q1;Je6g>PdcQNN|7s1drqk=_kGZ-UzX{qFc+2L zSeWNS*^H&*VHQ|+`lLg;s1!qbK9tFlhP1$PLmEfK!piVZ9!zsER-78MAab%42h>t9 z-;fqo*&#h2N~tXKeQ?mM#KXf^w_eI~YZe{Z1y3Abv%Y2)ymUw>F(Nmg!lvYx`#vKHo>4c}tPZ zQ(5Nwq(fS~PpK4n{`l*)47 z2fdceSmTH|W$E*M#91~AB2Q(R?*mw!`*jf`_6*z~N@ZE*`=saGESyvR`FtOFnl8m9 zPi2|!lMd;WrPx_Wd$w^YrLxTTv7StE_3ZO~#5p*NFL^4?O%le!Ipv?v_mL;@{6m)cKGw0kw1e!B7P|I_QdySyKIsWM7nR}&o##WD??XrF zEU+wN(;;2Nh#@^6%BZ9vEwJ2>rM?di(z(3?d5SL;MQ-|t!+h4)j8}k#Ju-3#*hEpYJ1&{8^nAhqU_3$+Fb< z5r^}vsh8qX?)%UoJqye?q=l8;v)lJUpQSUl%=bx8?pau+L;8Flc|Oq3*fQTI9nwjq z&-anX1xtst`pYr4)c3&wKF^F5g%AEA%X}Z}C}G+`%2=Q8BM%d%5P7{U^L^4&e@?tX&_86E?~@K`@jj)}=ljT`hNVMV{pDm?n)i_h57VAgT*~u4;s9a_<{Q$&%I?{t zm*sn2G^EvEZphNS4~_UH}rfc^L^;pp#|m}(!$E{ zPYmh#P-aPJNDC}Cq;W(ntkNNUzK=Zd=w&QEmr!Yjw6Mw!>G@DfWm(=QJ*nuV(&zig z^N@Zj%l5p|A)Undd>?r{vUEtRznm;feIFcHbgw@0w4{H?GT#TVC4Q_J(n2>Ca=GsV zxRM!bHlUoc^!YyWETx~yGT#TVWmNinA9=L0bV!RiIa!waJ~-^?k!88>1Go~sG(%cg zr6TkBKJwtDpUN`d2ZtR?EQvgZnf9FGB1%Kk4>?OBj$>M1Gcidzq?1aY?*p*X)u$}) zlb)Y+&RAdGN1oEO=*XIAd@hltakrdQ`tm;V&}Qk7R)4t}Ya9_Ll|J7`p5gQlS?2p# z2RhRZ(plp3eZ-J99XZC9`9A5{ODC1SypKHLnIf5=v1PtbI;4ejN~O>Dkq16YhqU_3 z$}&Bf>7r5`&GdXI^L^-urUm93(!$D6DTefXDAP+C(gMp3X&ey?t8_@8?;}r#dKrt) zB~+RrEv&LbdOnm=S?2qsr#hWf`g|XGcGOR0neUSh=_JPI`^clDr9)c%4@52dm!^L^42p-w7&zK=Y2n&OgMeek(t#+Ld%0Ch*v zVn|zB*)^7iw7+Idbb4OYNu|&Ck*8AqRF?TZ>5vvysVsfIk36JWI;7QKZpN1SJ~%e& z_VDDHRsWD>c^~TlYuZ6drO)?~M_5yc{PZdFeQ<2F#KV&ZTGO6WT*~u4;$UkEmSe0L z(&D|{vuDPZ=Y42MtH0ckrM?f2oO)zgp7#M7>%<`^dwwek#lMyv#{f3uVJsU!}7+E9)Jv%| zXVY#iG|Eg!na^YV4;OVlk4K!OP0`2+u*}~v!?~!V;oQHMQCH^clx}hPJe~3lt};Kz z4CkW4=jD_a_LSB2l)5-R52t)%tIWSK!?~#Qc{k;Woig9X_!+L5>GN#F8C~zpEc0v3 za4zb6Ud@Ig<`N5Gaw{(Cd>&1CGN;U+F~hm2^LaBH3V2GWD|Kajo=kZXr_7Hr!?~#Q zc`@Y)oH8HA_!BPKd9ydA1)Oj;E<>{#s*%?2=MV;4kDW$H|Zz-eB>$Q|p zSLU;nI4o|TtSo`y_r}yPE{VBqT$zO)M<)HVrhe_)>3a;59;S|y*%gL(%FDJ@#!t_VxaAM73kFm z12gTE1DyM_gGUKY8K<>9f zf8rEPZhgUT1$pSxHg&-CZ8AG&Zo)6StEy4t+ZE{}`Deuzrz+}yx#1^v(!+4dNs zU2Y6f)12?mp&z>TIny7t%lGHd4^cRrAH$&^y1+OyhC@F@iEh3>hkoc%-b{ZE{m}Kd zg?4$`9QvWlT{EyML6G~cu-@zP)J!{ve(0LgLc2VE4*Q`?I5V&+i=X?gh@ZoL=witX ztjd??ek=CpuphcCF$3%HuSB~%y$=1*1%P&c_^qHHx@xb`E;oj__dhq+bd_BO*5O}? zcKQAs`l0LDGW|L9Ll>cC+Bx(?SB@3h<#AD2!Av`ce&`ylLc4r_4*k$2Q5jf=eu#GY z{#52G1MAQaQ3RBik;8uIVxdfb4*Q`idq?9atV2IUyL^8R{m?ZJnf@I5p$io< z?Hu}{s|yP4^0+wkL+q^Q>7{vJ{H?J5>CN}dxDNkH@0b_b@;n3BaKb4s+qq25Ob-%V8@V zs^G8`u0X@#hZd)WLkk>6!l45$6H(N7M}Xm)|3$o9v%knM$J{SW{K6_!;JTTkcA8oy zK}q)NSIPy#cE|*#^}EOdJ6i)gS8I8}qs%N=eS{;>UB`ZTNBUmq!5s1;NWU<=~OI{Nni#O+P((J6%rH-HP(3p}bpB;v}zByg+jE zH}(7Q=B7>md^Kqgk-uGHSyx@CuIHD-**xmEal_*gAfj)^Ja6>7Q+IskIOr-rjdABA61_MGM4v_=6foADO zl6;BdK;hVJ3mkQmLO*or=P-`oRZvfgkFx&cS3zYL6l!SwJ7vEC)R*+DuZF1UdYcMqG|0{Z51MlPq#bVTwlBI(kT}|a09<84Ai;Fp)KU`F>Bf$h z1&$`7+irIwtH5KY@F#9X;JES z(A&tXjvy*-BkPWYyllBiDCC8q+a9no!fGpjH`2!S4%3~S|c ztP{x7iI#mAuQF2#nNw=nN2aUTX8~17*I+ZR(1N-h^f&UVBZ$Is>f%)fRcv0N&p2#v zoYORPSV2n#j!}E#WR`j#bvI6CtRXaZ+}rdOzJx{QV zZ0HjSC+ailZ`4Vo0I6jMTV0#_loWOP8>caphx+WbH!=wu1ES?-!-XvvYT4h+CHOX? z(VD%| z0{-V~AaRV~;d^?JyvFk7Yapq>TI6e>oQS>;Nx4RZ6jv6BP|}nWETpx`+a?VYX&ze5 zI$=ohzn&Qs_!C!R6}D&NbKMHPN%_ZELW>JG%^>9$Cv7yahD#@a@=FplbT`0OfxrZ7 zue*Wrfnstz-9soOvDSGSNC_ucHa!g_HxgQ--9tzTCw&-2cLU{Awc#$f8z{pDqv>vd zWs&&MAyzwkfM+Kfz)ZLssAxLwIfqEs1gQ`)8IR&XX*0>Rc#v)8m`Dn*zH^SG{mG@G zOLN>>kJFi=e8{eMEm3y7>szmlN*>$gpsZ1p|x@6Ca z{iMw#Pr9f!w3|7ml3e5Zw9*#mNZOy&#y(B-Vl$#o4mj|xDLR?rT@kc@M?q4NG8#fI z8GQO)co zXYQ3Tm8s*u_W(UCDJ3Z%J9R|6g<6}gk1D1<5g338|nS^bbdRLsrg)Ek*-%sZ|U#e z48MOa_aV}z&tK3ldb{C*o^!I&=i>RMOyXY*t1vk^I}2_WZzs#s#XO)S`*bv${yw7p z1{_Tge+CzmSJU~)f3yisZh4q@q~wp9F!A#R-0#W!^5o>luf7>RyHT?6-&VKab@5V)P@Puc9CEAL~cK z1o~P0!}=h$21I+>FtI)mP4qkc*ZSFT({x6xwHgTeh#qQS{;(RDjTkeks|T^yW02dh z2W0i0?f}^YiY%pjs$>Ngdzm>s6;;LpKBVlw?;7^~KV zNAwXtn#pUR9#z8#t0iGW|0CAw|FYQpunF`e8|V!?L8r+hkQdw*+meFTT!YNs>LVx3 zdS8-c{HxqoGkcMOZb`b7xR$X|@06dpiAtb$*KzcK&X!p{`k09gXu0lETRmW2fb9Y; zc{Lis9LQx^$q+JgON~Ebce3`~gp6pDQApYtOuqz;9eHMNu<^buUlFN|Sv3fe=E%&Lgj z4Z{*~&J<-zXg1rbEN{&7ym!YNdFqzO8yjY8yfNo;?~XUJ_Ke3H8)j>~F~@)JjyJN> zj>j7tW;?u*Wr^~r_#N@as(fT{rvSA*{!l8HUY@=~{-|0{CVw(e+v5-AC-0a)s=AfQ zpA6LY_(MszJLV56tf~5!$)5}qlRrF%*x`-n+YhkailXZ(n7bghinV-A{-Qjt%wVk` zm{@w4?hF3mAIH^$Q~3xX-FU89?) zTSRv~c{evp#ffy*EVUq*(rOlK9mbiC`O?N$cH#bYg zl~pXPEr_k@mbgNTjdeX+yP*bW7a&$E5oZbc^U#(yJH)SP)yArR=hd6kwY;^BA2*XH1-TNw3&jTPeVPQ_YmM z(LyHGjoB+4EoRm_*$`XBn#F2?wSr(`y+e8hDvb51wr<-Hdrmi3-rLtLt8%HLv@8gw zw3=HHtjZ+@*88tpR^?JPPf>#PPll>>@qX4-laLlu5|+4hoD>RS|>sGwsp&@ zT&k#B76fyaHm6(cS|?npbqKn}u62?xl*w#8Q(C*Urm$twVq2S~Sk768 z!*^kKD>XqC8Jz+!`MgVdl_vbEQhf*+LiVO{3c!?gV=F(N?qDjF4Y5_MS?ia;x}I;a zLwW@&jGk0eEE|F;tzDy=EAOq_E4+Hc)h!ExDXr#K1a_^HpmYCqi(Tskx{Wq6rL{}C zWmPU!TvIFvCf&`=Qp>lih_wZ=RjhgI*g@1f;dLvcDV3#VAehqHCEa4zItfnITT7eM zEvs^=qO>dsrnH*Hnx|U_QR{?<;f$tKmX?8FN^6&Ni(Ts^IJIrvvMQGRS|>b1xBYm_s$8llEem36x@A=^F|gi$-D1}|;bqT5 z&@FbYlc2kvyqmKCR^?K~S!zLSO}E&!PI$@p0QQVQh0&DC(lQWCY3-7|X4g6iPHkJa ztjeW|(y}0!(rRu+uqu}rSl8qAF3mA^trH&qJ_Oxj*E$Kh>&d&hS!z`-Rh*?3#MX4n zs$61VU60qhq+9G-Cp>R`2)f0tbrN*flXr8vWmPU!oTV1T)^v+q>l9lMOsscFx7f8# zp!*PX%etkh@+{qcE`z;woB}ZCXmjg98ah>EbPB-4d6)DmRg$VyAA(kaYGr<^Q@v$- zm9T4_YzXEIZA_~K4lGvN5KOFhNUuPJ(UWRZ%!b%=y1DW;%E+X)D41+i7E zdAzo&qnKFll5Sa*OO>T%v~kbr=E{5fx@A=^Rg{(m!IV~WD}q(I#K2lfhl%wr=@z@z zDX}2-oNk_OS=CWYx|^G&R^?K~S!zLS6>A=^52Ds7Vb?m@5KL+9(wf4qbrN*fTT7eM zEvs^=qHb9bOldWXHBYy!>L@1GyEMnxwN8lzvFCJi<-L8M(5hUjs9P2UQ(DdG7Q5Cd zu^^aO?~-m=l}nYSbqMhmyVeQv-o9>Gl}i<+WkE1!X>+<|RW32GuID4{l5VkUoe~Rz zDXm?jn`gJI>L@1N&COD)a;f4hwIH^NHILU;brcipU7BN76TTwR8d+M#8$E9>6TR;#l(7-bjzw-sw}NT&@FbYQ({3d<=vcaS(Qr_rDZ{E6>FYu z9Yn2DVpT3xmewKY7Q5C-a7xXPtm=x| zC-3HFsa3gDah6&T%vstj*1UD>AZndD>_mnQ!Iai6ttmt|SKbDKNq2Lz)T&&ns9P4q zRyU zrOMJe1fS5VTw>6@ZJ*GpT&jq*1;L!9&FPj^xx~P_9)KI_I*ODa;YNL7R1(c%c@*r zV7>pk#jbVgSP)EU?ULPM*E$Kh>&d%03y_vBRh*_t;>>dp4x!eGpT;-{i^Wb5 zrU2WTpIvsXlMS&|tXXO$u&%d$?a;anDvW1WZ3(m?n9|xcy1DY+x-ZzZDwirs%YtA^ zt1*iuu;%glAZndJH&?eT2&S}lNw?UwPJ&bQ*3#x?sa3gDQMW7zrnH*Hnx|U_QR~!Y z*E-n{Olj?sZdsK}m1pVp?Uq%!R1s?nf+?-$bc)Cw3?(TiK_E+>-Ngp_^pPs1;CV4 zW9tBWqu2sq;=Dt%%i8pp`;wg8y2 zZcL}flXmbp2p?Qjlapz_J$zZ(bO7(E8pWt4A=8{Gp&eR1Oh8nXVxF%z9<3(9!_m#~ zi|50u)%By3K>ZItJ%2$z4Oi>Y8fR6`gNwD)A+c4+jyfP>oP0X{V?C-Y15@5{;6 z=ytZ=*xQ4Pcf}6S5#f769iEI&vxSb4dV)Ux808}K0 zi}1nSt=)hSrEXW*ZlgZNq;Bb3Kl?3?+W6)~IF>`>gp@@10{j5>gzx)oCs7aF$l`5N z>+C&|y~h}yR>`aB)nfQ`xVT*pY24XtICnA8f})9OK@lG+KnY={?9KFN^WFN;cH-Yr z_(R?~{E2iQCKgl2NOiF+;zmBFrl zzQ@d1c8~THv$?F-54~83=9km; zbTOA-sCUt=8Y7*w8`Z^3-|2kV9!{=r)=(=8e!9l$w8o;->kmV@yhH;`H<~!4$yl3+ z;ZYyIB|bQ*hjANX)^Gy>7SdYd1(T~v+{VHoz?Qf3F)e=*G%N#^GL5N?4GJO@G_7Uc zf#p<5;yA?@?TOAL!f#%{*dwDFr4PD;2F+uW2K?tlhAoa8|Vm$atrl+x?qk!nAjJCcYUEOFr~MTQOu`UGl-a zaFUiDwK3z#zPeEvoSXqYjGMwqDfP5_Nu9aWCdr#3lg zDWxtBxA>vu2m^Z!$1EaR2W4wGF7gy@XuUQ(Qkc+s;>A{gMYaM%xu~nKOo25@J!^@> zz4}5V{gUBe2nCwd#-J&uTz^moCvb|}ZN0eB`lR|QTh_2lW4yQ>T1!9fUJ}2xOO}2_ zGop>{VCcTe91NUg7jO`Vq0jVHViIvaS-^EIzUaR2U$6KuB?O#V^ocL3uQF4EDJb9u zHeYmKWqc9SEDqcDG*eTy%yi3{7=@N5hEnq*vH`x?i6DW{4BMKWsV2(FHXt9u3oRx{ z92!3(g{^tjilQ}Zl4}oBO0amu=NFGLAYb6G=1Qkg6f$Hwa3<*}5Ag6mDd{)46j?LyE*wyRojeLY3-p&LesCE+dKCPZNaQ2Y zh^4sLWiX@Hco01LFSHsZ^S&0#)5q}+q_6V!ni<16-m0@!%l6W%v6dz`XWtI+A^|s;zv3E98FT+6Op5E zz(nkO^aCe>fIcSo$TV{V8 zFx`4I888k_T?b8>oQ4xWK~urD+dhp0tXGdL1I8h%=ORn8U8Y=|__@ilJuL@VzaCiz zj6+u6MV4IsWJbt|UvUOzvSbdJK|Pub7>A~Tizd1H^@LaN#Lq#KT>WGQ&jC}9Bn`!( z$VHIw%w<~3g`0ckNn0&rn<5n4lRExU3dW!bKt&ss$$~lYb4W?rfSw5T95BYwA&Y1^ zZ{cUEy(naqIZY>i4w|Gs$!xC!#yC1WnhY3+CYOJdNntwi6EqdKfMBg=qs$a1+zIx8wNtWNygWZ78;2bghpcw`wc4p}ZQ$s}#F$r2q=Mu4FqGSMM& za5QUWF5N+s@pX7K888k_E*D8Blto6%iJyZex%v%6p5Fmu9337_28=_K%RkB_mYw(& zX)+0NN-8^GjHAP&$$)Waa`{KNI7nnOMAF-dpMxf`Vxm%uGS?0mZ9#b?X($dwE>}Y6 zh1~RU;Z`Jv^hhR*i|w&3SI09-!5Gv4sOTAGb_tyL6$#RtBx1wG0b^VomVi*1!1s&* z$Gt`(45=k21ICe)%QKRR+YsdpE|ma!f~11M6?0D{u^oIc zE)Gvl28=_K%QKQ;kT2B0_Mw}m@>m1J){>L~<51=DjnqDu*cEm#9UwG9#@Lpw5XQUV zNy&h5=y5tla={bZj}CeOQlLjkNR(hXK#XIV0LcYLOy>p&<%p*503YfEmw*HSe%N&3A|ZXma^PnR;ReP0A_CxDSYd z$%F9idLpS-izWlcp~>YDA;CcS`F1^lUr|mQc0G|)t3{Imtid3z(Z`Tv}IcO^1 z^~8pMEt(7%hbEU_glb+PC(o`Y@N>{qzUzsy@me$)Fb+*F$0(9ZpKsR__&I2jcFniz ziPTsvnhY3+CYNWlVb>G*37QI4s(jZI*_K*l888l6F7HT{7yEWSfuEZ!DJ@xF=2$W7 zQKg|cM7b=lG*R+Ukqf!v>?@Bnka@2or4)=o5P*ulgeu+hZQ>FP4UsWW8#Zx~cCST~ z0prl*@{ck{4vJC&eh!+-H*t}3uSJsqb$dmw&Wj z%MxZQRiAT888k_F6U^&4leL>&{V#Ii`$)R(PY3lG`XB32m*__IvZ77m4TmwCb5#o zZO^VJ4m#JO$$)Waayds3grG^B*mBV1a*i@b;2bdZNYYRoiX6(cVFSRGjVRCm8>7iu z?F1|TUeEBmTyf}Z zW*q!)5Vo_&ql#_lSe!l%N9Uu&f+Yr|gL2})oOLWt+`uB;Zh1lyrt@F_QitWljV_nC z%;;q|K98ec?Bj3(P;E7dQ<-kSLFc@i6af|I#1U>cU=+pY;lMGboC@+-t_QT!IgcX8 zsH$v09FO&Y_Iu|@q8AZX+i>EDtQ#~A2j@85Rs>baCioyXi3hY3g1zk`sB*=`QCSaY zACl=f*rb+eajT9SGzmNBao@ovxg^R9XL6u$L})sMQSW?E2Nowd*-V=uDm|S4d|ZvSUO2A@?IJ@pl{~u>tm3UD~MFdCGyOCso-sK2tGF` z0>u)E>inO}w&^iFDx>a^>4}?da)T;RpUS9=a*wV$%&UwB^{9+a+=`oOJfnJ4M(0Pd ze)~rCsf$ctAZWql>Ivo`aeUu}5W0RPSe#Pi3Sl*%tSf4$lV#uh)I;tBq^u zz}30{L^%NB29FGl%IWBY;kmqeQ(l&rqGDvIR&dufA z4Vr*-#G6EL($D$&>Cn=u%Uf|WLu(u99a@Hf@}k1r&rZcNMxj*nqp*tP&SP zI)R`>=8YTgsK6F`g5{=)jS2NmH{H81PlM!~m#}YXJ!E+Pz*}-p(e$+1Za@ zeKUM|y?!@L|1rIp%%<~+xOsQ@^yH)a|81KCt+UqIfB!go_cz@CJz3rjHf{O8k39cv zx8p>Aqb47;gY_`L09CfH&lythikAgo$C$;{6I~~8C%wL^;bGvYox9PhR zX!n0SJHt)+AM(Ew^ze6FoxckH_U-fFH2B-})$7x5CvPUR;Q9Oc`t@XmPgl#ub@0U} z!54r1E4@4r{BSdwfAMYbCTd4fD+(TVlT#EZJfgl{EEcoi?~~;Um+=SRPOqoy^8hb) z3|e7CpTAh#ykBC7br25v-Baoy_@619ig%v`&*tM+@MJa%exe4e;HSxIvV1eSY!Tpx z(D?ZA$;tmmtKQ_m0rF_8>E$G# zL2Xb$^rt8IEP4lT1;LqL2!&1kQ@_E*;_|)SmEmX>Tk&uTn3wrgb2Kxu%~65DGcYlj zP2Wrc+~4_Tw49DEW|Nf}lfqZS>`zbLPL~t$?oRgS<>XbSAqn!+6ZNYk*7{?J%PL<> z`oF>(7y;dsIhsiYO{un|BM?ZR%g9ifeltuBZWeDR%Twqs%@CN3>F*}_6!XdSJp3ri3rVu)gl0_c}#-&Vhx$z zs9!z_AS(hDyfBLtO-fM5?tV$QYnM~lGk-o(jq(l_kVFO zvi_o$RjK8VfTsq z`JX>xMj(93=6{k-t9`GGe+27yVvKD5=lXVrip%**{~tVLbv=4Fyjx{qz~nW$nV^VoX>o97CQ4i zWjb^69}jOv%hB}&?!Rz#o_$F!llULJFPS9y{^#%Titdwdz6#)1#qu{i=+Pejm3Xony-W!>rCrQ` z{+3kan<HkK<_2p} zjanr20<{kV@$(}&p+%d?Jl9IL!OyzYYB+i~#s5*FlFiXd|6OcHB2&GJcH-|`Gd*#1 zcjoV6yG(a#LK*C?C3etxJiM(@dKl=5&13@W%7V}O2uJP4rtMqq?-(#`-s0pk-8b;-SG-EIb)~qlKB&POMU|>`#4aIe? z18CZTGbP~06Z;numRKN3=K>@)=#TUzb2F~`lqM=v3e-H2>=}``L$G5cdS%jd6NJQZ zxGZ2v+A8{zq??pUCK*fLlu-UlwmTR9fm)}L{#|-8_kGvpz#EK{ zz*Ud`;Xt+4<5>-=H^u){6JqK=MEoD&$>{s~j~c9IgZxME^s8^4eUA|S&FFH0Q2Y9t zw%UUe#D2jW@#FB#WEs4~{}Ck_r>oc49s5Omzq(n7kG)oS0uSO}FA+UV-rWSJb3|X* zG5i+_H#+~f6}JBJ@8CbJ&aOx6@#|my9sEng#57XcQ~TuKCu8ggu2FbEJt26eEi*X( z^H;;01?};iYFz$PgW;F?B{pW?iAs>x7}X}Hv+2chw0s{>FLM8GC_1Yg1e|zzll$jYlN?p@sv0@T))4W1kXVhN=p8( z*$5%uF#A6Py2kF^a`<+7iM_?J63FG{5bsdZld!jw;OPQz6$XL_%pGWqum*z1*3f*d z5bReOir}u6qcKHx3NA{j0Yb(|txSf*YY`a+KQ0%qkZZZ7-S%pIydJIa^5`2>k_<22 z4}YI57s1ttwz?~DX*?w8>0Ctpz=8|8z$6x1!ORhF=cv==0?wdL^YQy2szw>&==Jb+ zH9|eXcS!&KEdEuACyN`DNvV>L;Q7sDayk4#{)Bz!NqWRDT#!_Y=jl3^1M<&r1MN58IR+>coqzNvbS6?9NQDZ?A`1!7BsikmXnv3zRI_cUUZ@ zH?#Lu=BJ{vwhh!=qUkWan7n=ye1AKe{SurmE`FViQS$ln6%6ncg;kZUJb?dsJDsdy z?Z5i|OYH~wO!}+IoXibsqN%oZh*G-oZ_+7|oEPI?O;N>H9fQ`p@${Dy(=)*1xNnou3+^*q${C^++XU=~lz5D%tx2hcEubKE?KhO8mlkbL4etz-8 zF#IX}NBw<&&9Dvee-wuuEB^0c|DVo>+{gc#e|P!c`~81!`GfDsNB+czQ)|@zVIbmq zeIeT?*pX4Y;Fs-Bg17iXHu$IhN00#s2|(?KU*eCq_(K8cf5<4FYQ4UVk9kKMnLr2c(ViE&oZMHx7xNF-Xp#6IQV#UyIy=81b=x%TjqK6(eh>c+~(tH_zOA#N#cKJXXNP1Lj;}; z#6Z^YO99LMxpsbgj(!FwAIU~KZA61>nfxO55Ct>U=YO{8r%W3lMjvUb5dWX}j(PY2 zcos^gC7$>>ljgE;2qm5*0Zqj}#m;D^jRQ~X$oa{A*&^Rk-24Cc{(r{*$NBI3`d_{t z?JGpa|EKyX`u|~fH4GCf18$=N_ya0`C0922|6$ki|C5;f|4!Jw_y7NhIpuS5VTSX5 zu4i@(zkL29u90g$g!lPLKxdcXwBj_`C&9%h!43RT<)Njge8mA@?YHUgbPyGL1TVub z4v~k!d4TdsluOEHFT*7L^}-yg)i7~8{dxl@fjlzjHyj6kMNXdGATyw9AY8i4m@df7 zu+(6PTk5F$;<3z1C1E4#gPb$at-YWN{Try(ztO2?F_vg68vG^rPf74YTxooPXhOjK z8{E$T5rBb~-;~n_q~+ zLRDEdoI&+8#WA?@*^XAy`f0~UQD&DGQs+QLrJet)DOF8}Ely^tlGgK-3hqP;tHhS3 zrmldtzUoTu^ec$MfH=5rl{*_?e1Skt(qh*Q+L)%FH#8jntSVh0o`)1cno>`wDGED@ zJoD3df+iF5=jfrRTr_`Qh`&Sg_YM9A;=v;lV>+4c{q#R#Wv@2Iz5jpj|KI!n)pX?$ zTjl)!cSBscjC;Ss5BK_0Zf)}aBV6`m>i@|954&9)2@dY>e@c0HSO40%{Qo}O|KvLh zcztW>Pw*cP)0Db!cCEvI$}4{yD6cp5VYR<*jt5#Eto-IY5a{?6sbhhTPqF_~lKCW# zBaXdr7&VbmgmkIx zQOPAGhZIvE&i0C~+!2?vsMCTgdBX2y+8J(Xnb83?br)5bYiLtT6w@pShuG)qyLh=`#Jpw z*r@PNHl}BQij5;k6^&!(pb;+P$_)yfbw9}Ot3fq3=Za4lnmD1vl<7mn4v$4UNq!na z+|_b;bp7sx|9^k~>(=I7@&4Dig;#|-xR3unOy8PR{Am} z!-TQ8*aQBsX!h(!)2ut_Cw*%6^>QkkCPBM@9=FfiQSjZDFEkuM*1QtrWVN_mB7b>? zV+v<$Tr|5nlP8AG#0@4x++cequN^sCjhEA#_3G>mU2Qvjjh6WTbpDMFH?47GWpeWD z`>%gE4_?x>w^6%&8p5&q>2{9m`(6bPDvWS3ouA##-!4ZtHWo0&6{5*lV9KWADlcVIT0gYfZBlA000hW4oK8Ojpyv)7C3$(c15&Mqf!&M>8>m#Z~Uzdju=7QbEK|DRpp z0MP5}(ek&|*$THbjT>R{~Go(|9lp>v0IOBMrRkJF)mZNJiB?ne!ZBViQiiAMaBPH zEyuy>boG9Xr@ReqRa~=V-MWy_+y0ifG+){OGMS2 z+%Ut0eykR=TRL=5GA}`?Q$q}BMHMj<%cU#r&M(2wE6L8Q5oW2lLUpLlNj#9}N*|p3 zG|{7;2eeMUp3H7&RWs{zr`E&pSt-VY9j&&aWv|g{TXL%kbF%W$|S&Q}JL6(K5;#8MHSz%0C z&Jee_Td3ULU>A~Z{(hjEKTx;n2C75cg-m_USDV&V$zPnMyS^a>6laOWeReZk^pCT! zcu&)?<$u2Z;ivC_One%KU10M9x}pwO(dEnHn4bc}HMq1V3MQe0iZ~R6O7)pA$eI)B zB+b|Vw*<3f8) zsO@OMr(59;VjMMZiH~ZvcYXe9Ho6hl77Nf2u%yQV_R~P$(2Tp4aps(^L%yC|!^b!e zdYz<&%H`m@r$rgj3XSWS-~Ya2i*&2i3Qqp<3Hx*!cVbUjaaX|l}+s;%nyV4L};OzdH^dDNU&%5X0qaDF%JzD*?lNj~fJnD4t zTwHKHMP&`Skjq!M*L0gWT_OK~PXEI_cMI!}aSG0(Zs&a95^g8LQ{%zy9I?h_ke&;8 zAdgvk(dN!ExEC|XGojbiIcQwn&c{t4p@Kh(?$p#mv>C-5RLC&g87c{jD|d%V5}gw& z`G7ZL2t>#>L0}F?T&%71?h9FjA7KZUi!lzHKnV(#pxf&9^=j_01YrxQ17j$%mY~-f zR5JwKcB?b!y9`0Ehjmr@mZ^nSZU8cvXL0oTqetSEfYJK% z^K)@Y2m950X964*mMKK=Io<7U;2(%*B!UM&euZ29C*l!4^F2&H&w#3- zf`@;36ueB@c*g#dK#uojG9H@2`k(*#k$0Z|LCaMbb{+-$}*!IUI9%C5z?D zUmk+rAPWB%{_er?s(0RDvI;3A${Bq29b&Aff1ivo{oXF8>&Zj?1BEE7HBAJ~Gx@^f zL&<8~b0gsK@$*0HSycL?p0rV?`*~1=aY!(vhQY%>(_}R>RU@7mxb(-n>sj;4Ah~t5 ziKD@J)T=xf8drq-xdNSXPR(7MD{y7G>xNeGtTw}TE#IR!eROGT52^Y6>fu@?^#soK$*Jli&elr zY=kTjYX)emAZLKE1NV-j!$H=XvWtq}!!9sW?3t($-g-&Ebss$FAZd5!Kr|SfCkb;7 zXmWf}mUIneZ0TupA8As`M>BFy>_jw3IFY6ly|xpci9k6p9Y?sE+(#5;F2?Sem1q!S z=b`Z>XJAd58H6Xm70R_+PxU2xqpWW{} z=XCn0W?vnt8xw9|sU(!8~xRu^|N8n!U`z!Vi?t5VF z4Bm^KYWAIq?fh{EgS`Z~{(EgFF&>wHk8^*;(xRBoWU2cT9$ZbY7Q@j~6qTth{mUsH zqkV<@&&9#wK)kJdF&U3=QjzXASWX_S0-WbNKbL!8fjqH@^C~O6@+)pYz=zxMI$z6J z92FqzAzgWhkdJt^vUCTNqk!{3#LsM-nVX)g1pL2iBb42E9)q}@_=rNRe=Mb1s(08p6091uMc$T5>e3z_GI`e#SA(inh3^XQRudEegZQ z-^1l1#G#}O6GK}PUR<}Ayr{Z#vVx&~axB~Hok@19wk zn57pjkzc%L*CuwQtJXck=)JIN%e>myxSw8|rkB=6vu}LQvP~?@Xk=P|aL>3(j8mme z_uK-v26+77+XddQd+_&XFP=Rge*41@KMo^2I2d9Va)novmcOBlZM4GGT-P_V$$El^ zMV5=%ESTa?s&Kn_FP|ox-b};`H>v<`yUYavuDk3kYDe?M{QdRfcD2`J4no(}t`?cL zPzTX4+HYzj*Hy+oYP-XDzp2F(E+(ve)b@tSepB0XT^!@1wmg7cUj%Dni`U z#$kWh-Dhe+z=oN8w~H|y%h~v5seC-mdQ(b0Zxv!*Ruohi?YY$i0WNbA_PcmzNmzY) zA!+9E7IwnoqY~eG!b!i$`@ncFv-kQvN<7kucZBG9$YeLtOS#3s$#qLnw#;tnc^o*q zi{8_=xh_1QW8%8-;;qg%&7KXdIT=ekfv+pt3;c&EE zj@}Q~%h7bb(l5F8Z)bSsV)z`dCGozj z=rG%p^~7l&@Zs6wW_`9^Eb!*B3RV9;T~Aj-yg+{zwWFvNolWQC+3n@ztkpVO->lAN z^LO3k?A3UD+HFOxw)s5%>tE00F9HQT%^FelL_P@Nvm@-5@*|`tYV&mA_%t4IEiy#) zwKp8$NmEj-W7PX+Sko7CcJG!ORb0eTkIZD)Jd^KdgYP1weVGkW0^9Kf7eBnGG?@_p z@Mg4JV}+(`Ah5#C7UR)u`1AoDQrEj_rUAjA+2!^$aY_0~sf?pe?@*Lk2pQCF5bps|tSd1^ znXhmm4|};z)%aK_))F?gw#O#rv{?2qC|@C>94#%MYdN}j)58C!OIN)lMxCx$rSthd zp0^{^hXS(UaM&&xtrH%MgJ+RUX5k3Qrov$FygFb>A0OFNEqsiUK0dOkQu-JreOzS2 z$2~H8MHC;`x=j=x*ZM^iACn%79CE21N4?HLrC=n*WqN#=6qo7oVNzVC$Gb~$yL}pl z*d_RSI-jmyqs)i4ZKpU4`6~F~W<9;0{w|+88O<+)7t7Inb+uStV-x7dp94I6vJB8< zavpSA-5xF`887CSE9~jw-RU4nzUoRyjH z^?18|%453XwIRxB5q^qv=zL6bYVz)8Ia$$!T6y~4vecvSy!Qyw4ck2n*@vq~kT4N3 zxir#6eJAuLZ)fP-{wL{iH?l7adPXZim8da0t_7}>XbpB+nlk0DW@-BE9#$B+#{J{T zPv1ZL{+sjQrKV!grFCvJpD)(I)oiq0Pv+`W;q_?y_lQNk2y*dF8CX(!iEK1SQ5D|x zxxEmWx5}>_gXBOnc>ZD6j>&F{*N)-$q!&@$^3`Oyq`5C@!A7&-?Q)768)W?~)s$hq zO{>thJ^gVHd=h0#jtf)#$#VP}B#hU$V7oSJt|=XrJ5Oa(IvQwgD6?n%aL^j`+qON^ z^O-KlGmgn?xEF6nz*gIDw_8FW+DeneaFO0O!>8h)fi6o zt?;KU)})QQyWI~iZ? z>9g-i6rIzsO;c67-PhCca&bDcwerd9GS8*2sWsTx=-FJLFFR1YcU!2XQ{A}E(-m_){FipYCWuoaux z#PsoO(DI4c$D)ymV=X1EyMNIbSlOLoJnmmKQaGlpw1PKjz;&Nh7L6TR9}L=b z(a9I^?O&1k`11LW0fLjseEdFmxLhpOkC!(?GFZd!Mam$i5Mi;rqzv97pzC6$zr&cl z8BJ%S3ph~(kEf3D!a33!t&?IH)bGJEeziiEB1<N>{t!yvz#au2Uh&^@WF64?{^-25}dtWTu;uv zox<;$zdHTqc5!w&c_S|Yx)_aro6IlIZr-n7FXr+$oTiljZ?zm3t_m{wq<%-t4CBie z-RGB4oct09@pc1n`($I_NW5r*-PBJebW9!Sj9=4)%ZdbNx?)vd%`C9e#Vl^O+TF;G z#O@7G(Q(O0)o*xurG}?85uAcD#ibYAyRbd7&)^#sm0%(N>BYAq@sVFTirT3iv%A3W zrx)LR^*ti0E+Q%{0qMGbJ$i?edUNb!%k+#+1QgN3eVm;bDF~4f|J#?}T3N&M;9>aS zA`Bis#?#ZoFP;ytR@cK7Jn>0rGAuR*b`&&5tSq8`VicG(nQcI1!(98K(4Qkn>TQT= ztpy|>C-ti3YvQQY^K5qAL7Y@)+SxI|ohDY&`5c3EaYPjtx=ryM`K3;UOt5P?U*l$1 zIxOnflnlx@`p(w}?w{A##G!N}ZkN?fA7~ZJO-4&y$CP2!7+hW7&W3R`U+ModOomXH z;pOTEl|ArzA~*$@=WuqAI5!isV(-_t?}kZ)u7@F`HRVUqIE?u#cq!nU=(6vvzRn@uMm?51s9g*{zti`Gb4;mYlBcz>ZZ6x)$SuEFS zj`U2QsX!h4>VY`tt)54EU_{+O*YXq+og#0n_w@M79iX1+{H~CH(m2Nj+E3J(ujaWe zPD|jd#2xjFBB?v-8O2C<)H8~H?x<&dLgOyGzdMc#?C*~4qWh+Kua`nNvv(oY^nvWV z5GhrX-jQlj*LO5isOvkLCDip@%@A_{v3W`AS&|<0Ykmwt5*R^y?8tzp1BhpUZSHmk_)i6vb zbZsMQrD!#*60BAZFYWN+yKnF;Rr@p&_w{8eIz;Vn8m$b~9aO`go_sfa^7D%yhT%`) zKOUeGnf5$Jw^+~cCEbg!9i)b>{)UnqQ<{+93J+V=GCZ9=Y9BHikZx=(L18~Yrv^M3XOzmqPX;e^{oK|@mKpQ3U#qX^=IPPpn!rU`@p{_PK#r|kj2dRZ{+ zdd(JTs)QGloRa>$#1LR?Su-lz|Ixr zybM03*Zx5DnxIKRbrKU=&r%Ku?g^6bBV9KHJ+e3;4dZdlNk|NF@E z-*!7r^fzkqQ9Eo$Vf0b(?rzY@_Iiud?-Ijje?6MNqJD5q6$y{SUKsY0ev*W(Znq!y z2mK?}h@%m`AXIt=NI=Wd;dIB)+HYuy4gJ>W@}l+bddBAuDRnmyIv(~q5$U@AFI2r3 z#ZmjCFzKSYAdWgQzDIF4X@3;_Av&q`->TzqQn=~66KMB;{A{&;_4#M>(e>o>(mC+i znP_uza`KrtGB=!|VCHlES1`SN{BgIJd@MGWAAcNvjD+mtkE4%2Kluz!)TO+?mKvRg z^xI-N#Mzq9KZCy`|8bW7OMN@}?94y{;!KR18?f8e14eSd_^t=+=>cOoU~<<3_Vs|^ zEwQw7*8>jpfE_tt_l^hbwe^4yCQ;bC>j5!2sr-RP5(D;|A5cwKtt3zrQAnZxmVXJQ z0Wz!gkTipo1)72CJyHBDzowtXzecYnLb*^>NdFbuwVZtZ{m2cJldWtJURoK&#H< zkAMC63@ywjEC+^94yFMW#nWA78deYD6Q;i5nf!Ms_=kh);!7m{l3!xYSprGyKRQ;c zuKl5B|IxQv4Xl5MQe<_} z)s8ueE!&tcncsppi|J+X-$R-pLvZ6c0G?@pPl74f7yL=&QdLU%69qB3zFEH?w$TLh zF8z<}PJAr=lxdgwBimp0uS~J53_kZ$*a{Lz8;gNhQUHy+ErmX^HF?XR^FEtWHhmHT za*sMyL;n^Tmb`4#od2~FvsH&2Hb)?0$Jva8WS-4!O5-{`wn6Zxi>2b~1s-Uitk<7# z|5A%KMzC2{fsYcN#l)RYIrmle)W23|S!!`iq@RZ|mgw06D>W_Af2uMae;vjw9#+dh ze{p@YrL28lrPv^A7&w!(_gXufg~-rO$JaNQmvM;GqJj8hh5L^bJBM+`wu!~E!c0y3 zWN~`uvzdKIzDBZL`V}%wu03vhDX^K2c`8&{vK))SG$RJ(Y>LGJuQ!K-PHTetr|0Y2 z3;WZ>;_`ji?N*S69*iZ6?c~mIu_?C9W@@L%nnrlhW=6YYXJG24{bg%MtG^*gQp-+e zZzQudlGz#28zXtaDpAmaL~(~c+$yw+)+hT%6=P@iJJj`K6RB&+Qqfwb{^Q))s33HE zOo<3f{M$(mH7o*>sEb){LS*%a6hHp(Nm=b`QBmo7IlUP#Zs%*k;Yf)( z^Tj3aZvpxOpkELuq}@$~wDBKY>Z$&2w<`)cGn&MMCF$)XIvSU>iadOhE_xAKY1K9i zv61$t!9mn~OP$rf`DFM#+GkS(RopnzOx?2>jU}#X(f8NSzW$*}ccf`?4In4-oudvk z)OaoWFST)w1eQ++u{)qn=B{+4IKPmQIy$jJ_3tlquukn;Zx*PwK;e9Aif0;sY(Igr z;U8&d6?85$E=zRV3EvwRoeFzwcasF?6BSa`)75ZwJ09cqWhmC<9jd>^YuNK!M3yA2 ztSBppAnlLE|Lp|sjq_g>>0sXGRL3U)q(g6p4Y3{_ad;j>&$kf8H_mfMjZbyIUt1ca z7L_aBgC1zV-{^*R?x$BRBnZO+La#JSAo}P9(#na{aP8xo zk-YfI@z{7#*9w3%XPA&wtl)*>R$EWEb;Gf8YVYKK3FMn51tANY`;eQy8-DV|1K2P zA%1&n&z3&cVXO(>1-YYAGo32JH)FG;zr$IW#-%^damC#jWE@r17I|3E|GGAL(3Q41 z466kG$|w&hi&?n~~=fWH$KiRe;>FvSpx~$T=|R zRQCXwQ=nST=O8>Yggw#-*y#m3)FLk}0e_+py+;+ENeiX9g1 zi5r3I^pJ7Ft0{Uq9!t}AI6u_9rt9$QZhSqwQj&UmQLmuwVO@_e4E2&9Rnd3t^AQTH zxv;~zs;1{c)K-=si+`F5Zp!Zq+c5mb`*KW$n%-X+s&zjMt4xFp2Ar9Y>~IFH@tJVP zK454&fwWtf2?Fanfniq#0%5OL$psK;p<%?D1yGS=$;?HAyY&LYf#n9~XF+W@FpTiF zkJz{GR7=o_R1k9(98rocYT6MDGoB!YfFI@wR#JB339_tzazsf#9F|oM|J`_ksHn(z zf_a6n?+NzxvfruVNz;K;qSuHg7)2^3h>|KfVVw_Tl_Mudln;z`Ja9+(z(~de(i6+ig8H7| zKkvX?Y z=l-m2SfbqFq#NTTRHE}~wv@8`H-)EEy{He3k$3a~$5nC0t&G{9or${?>E1u_4{`TK z%5b^@G=Gg^CryrthJVmCicK$T1GTEDQ%CY_5V0@a1+GoaNYuJ%+%&b@WV__R)f+b47q5b0 zss+|79P?6#yev^xkeWRPOKxf2XusvAwuv+0!H38V=|IiXaJW%&LpqT8p|X?Xu%wsf zd-hv;z@8lX#-xWBUP~{kAU*QTKU8{h9G3LbJk5SfPgiBx-ouCJ9;&jm^x_KAqiYC0 zRC;n8mh{r>ODaA5OWfG3?nB2l&3GW`4x_9F>Z;Wao03;mS3@`zi!n|+JjE+f;w~h4 z(T4qjmQ9B3q7GORNOK;0Edkeglg-W^uH-OU68dEzjS52wvM-Jty3l)7f3nwdz;aAR zh^q-WBd%Ag$S((J9vE_veX-<_<`wo@4p><0$bpXVs1+&p%Rw&m3^~ZYSaJ~DS6BT* zGxjtH4MWh;s8@z3OAL^aSaaiJWr5N^6d`&yocxT#( zZ%{#eg9gMW$6<-@Kr$0i)6R8lIoEh6ufl$x+NJ%V%~~}QOM(ZIoQRZz-B@@OTdsFl zX~(vaEnEJcExnyvuz>sLnMd_Jb5v=Wb+YgG2&H9Wcp|bdmL|Cp4SOhudY*Y~dFBJZ z9Hfb1$U*kSlEYzS45E6Td2D&+Fb7`OT$u`nBvfxKQ5;6nfbJEo5v;~msTM4VUljZ; zRsNo8&y_dWLq|Jq+R=_JM;p%;SMb!DDDF`sv6RV`ao9%*HtlOCwy#~Kz9(#=z$fHa z_|Q{H1y5}sCD^pDo!Gv1m5p3+9nOblD?0V(KZDKQ5 zjl@|+`>u?|{(0$fJuf}6ymXi#ze~cdE>gX*MBz$3?4c;?IqHe+sF&0iDLcb))cF-g z^r}~3UE4oV(Dh|C9QDL@)JwKmmBHYMg1^y9uYMhZC}1h;h{8T5QL@vjR(_5s_!+1e^A_JGRGNrTQmqqWmZ1*Z=en zByW*4?QwT(kGskSZ`i~RZ^+-`r4#iBp@YihZY*Z%*v@#BJ>Ia1P2P~d%S%V@3liKz z@35Yu-mx9^lA@!KU3CNqioiHA6WvjD0HUBfMQV759otctwL&=mETUL>DqWScDm%mR z4*8WwbWzkHh@zgO-mx9^l8skoFgT*%Z@toO6NexQ%&0nAVV#1(>h4eKus2^-Z>$B% zl}Xq`kGs>f$KAC&?x;#dP}D?4kQ#|4L01A|A0^nd$KAC&?x;#dP}D?4kQ#|4!2`)# z&~v@C9yaE2cP)=Qs6`HC&Re<*361d0i4^o*3St>Ww7|R{~-WMN!XD?^=#JY>8hK>?$PH8%Gr4I;;cm z)VuXO^{(Zq!z%b?!QOsVz42s$33UjvP$y@Y*KBmH^D$W8{jy+R@Su9*$pRCqAd5Y8 zy1Pv~-96jsu2LE#ZpHu5t)_@y8Wgr&Nr-(EVbflB&-S{j)CNUO)CNWTn;yiQzz3m) zO}pJa+wHEh;Ttt^*+azN@D1AslD(jFt&PUMJ=-O(vf~>yvEz#;5UCcBXA52Fi~aN0 zd-eSFp6#!f6eB4U#R;AG#Ykb>m5A6wS=95_d$zw`QjMf+4M!IIYNW7z7%7EbJ%7Dt z`|Bm!u*zs~WWnEt4cmv2Q=qe>HPSmh>&y&Rcz^69SAUKy`1`OSB^M9DYojAtjhg(v z?RZxy5fZP8esJu>FA)lHZ~tM4uxZD;Z#&*qYJ{RDYJ?(wjgYw9@es6-4rw*3g_h$T zSK0WDo7nhOBe5KBy5R93M5sLP#&(_hmQNm6+4+r|*!fi>@kHn_XSWu@ultn#%y>I*LB~?kv)^KFOzY`*)`xg&E7WMq~zU8mO zFnIlSWi%MFP`&ZisKdx9&_S&lYt+CxJA)P8FAMg5tm=&?3s+8I4>v6as$7rxz*X2r zRbKi))i88Ea)l7L%By{LKRhA0k_r1Lgr+zD!nU>hM|tESy~)Ra@2Zmc^nI3c9F_p1 z1Ia)Pn$AFAQ#8GvOD<>|MCgC`iX}un7Eg=^l7-N({WTW#-9$v=4dKLS=O>ijNa-=mKgO|JTbbm5qlRtMeTZ_EOy>fS&@?{ zd=ud74mc0@bTB(>(8z0h*@WF6!tFTwk+7RyV}WAS9Y z!wHPWWlb_}Sk{(DC<`Vx$=X|+$&$4mizn+H&XY7RYb;m|%i7w-l9iR4WbG~DWXW2O z#gaAMxx1@DT=TM4F+ziDxD`FfBAiXK_EvkcWUa^I$=a27*^NlAc~RF4LP9GDk#(FN zCrevVhLffH;|UD{Dk$io3aw_OV!x0m3qCzU)8>#NG~FLhXuF$JX6hk(ruOlehxtPLp+s3i>JgeYPz<5z{&+%j<#C=TZrN-Z&4DClK)gx*f#qBMf<%wHw#_+`L$}k;hP!rV* zYV4OOWmT-l)zY?<;cDsrSVE&)-;X5{)elv2{bTz*N?AVZ5t=rN458`%ctSg(oR5B+ zk}Wjr%0Tt{nn!BJxG}_LdgRINh|)eapQH@!H!0P_Z$7zcE5(spt(t+vmH9c;7$t5z zMv1K$MZMj&(UEDU1kQ}cQ&U&Y=wQX&c$gB~VTvwWC@no6`X80!`K@|1p16-G+Z3xU zl;(EJVrz3H)Eg)p#NABIgBgt{?qfe-@U#1pqG=X9V^ zXpfOHTGsek0wyH}2-9DE#s2rb5_sCOIR|@G+UhN6c(Bs3 zf)({};YM*cQ}1U+2 zy&F>=oBE$$J++1lnbi) zplz6W(N0rg(c(Bs5gB4xdutD6-RQ;*v!MNf+rpyzWpk}qZXC0nVZ-Q-%O`Eyz$c)BX%;~|$ zqscrq{!DO~c_&!!#%$2;W~w686PHZwrq>}0;y%zAhYS}fH`iCrJRGbm0^L5BHs2hd zOZUiAQ&$SfFE=a!}%+@#S(iIpnxy$L6Ta7ve z(<4uAN0bYy`C@RGc`{g66}aW5Eh9(YbdNl_xpF~=8m#mh4_5kiu%e3;AkvbWUjO5r zyi~g$jVEqb3h7|Q-FUFlw}Ta3+pt00%~buV=hwL2>oH}XdTMK>xqZ{V^{kP4b8S;> z>VFiJrQK#Uo^~Ho=Be>#m_z#=X7#A&MsYV&6=6o>iQAQVI?x!WS2M=RJj|>s0^L5B zHmDq*OZUi<8$DfoEI9@JOfxse>Dw`mt_XC?P1|9P+;opTxgAk1s1I7}(OL&4Zz zQ&~lXx*SD~#WP(yoaSMvlG>tZEXKoYbCwikNyr8%`rle)Nl}i)lj06%Z&*@P&U}MX zw92(&xyiIaiv9`_mK5b!JSpyQQidVLxbb&S@v@zzi*n0pgB1ORA1o=#v3OE+T+dRl!5C%p3K_6UOdlLRi93=en4|a%8`J8p{$z=#7v` z<`G(aqjzXI!jQeOgfZCN^ae{9s*sT_469rbrpT`u(sXcyA$#KqV|Q~FEMcgfJFYM? zZ=TA61h-~L3&0VE?2RW3S0Z9ZVkyrPLBOuwgQs!h51vN$gQu~qY}nu)_zMMD?tvVO zC+Z!}T{JFg^5Yw=3XMYB6O_de8$|6d5@d;5j>Qx84rfT37c~}yhDB{%*&WM0m<^)# zUz@}dwH%8l>K#s_G%sou8Z;NBhjx-#Zrf}SwZC|RC2BbqPt>kl%WlMX%}csw++ja< z3WMx-b)^C2cvrGFp2S>vl|z+S&EUj-=`@xFgU~=nq$uqmM`E%!p2T)Hhtj-`)r?^5 zXHH=r{W>Pi8AoEWH=e|HH__6(#8mkpH|Dh8IE`hYfm_FED|cBE|1*djmqm@m6E(zoJfdzq5V7AkP2_`58$|6d{$q(+j>Qx8 zF=dh(f8I2*pEpgaY~3f#Y~8D|c%nY0Oj6@dn@0B2rb(6k{iK=weKi(O)UHg@fkrSj zpEZr_XH8)wz5cK=pbYOy^~RH!D}CoxxE=TKwL#vd__>_<$K zD#dI`GsSFbES{)c388}(H7t9xn_u<=rb(5Gx1^bhH#HVZ)U*$DH0g!LA1{sU$4iqc z)eA{8)eCAYo~Vy0lhpXbrIGz`X;P(nA!(+1L5;-|wJVc!pb<>XM@u97(NY*mzjwth z=~KP&B<4y89je4??!nm4mBQBfCC0A%Q@!ydc0_rdnh%vm_CuvGS$>JJYY9|uJc%7q zUZ>_0rIGzaDJ+j)V(eN1)f-P@uDs5n1|p3=P8!*dlO|QF@RDY#@YGm5QM(dC2P zl6I<8FLauzUQlDPL``Kng-p_cMldxWBaQ6GNMR)X-W9v;6=4Jc+pyLWe4`nh}isyeMp)Ut;XKKh+yc zV(}5>b!t8=8rctv!esd+#;zq$z40V=M0uT>Pl`tNlcKOZeu=Sb2~=-9iMjGRhZ=}9 z{+MWFKPK9#Qia!PrV3Au#S^tFA#|{!R;Npvi#hFwL_1Zg@H)*@;i<8BqCTcfQsa+^ zM)o73ohsD}oo1>R)L1-GA5$i&@drdB`vK8TmFk5~Gt~=fES{)cnWO`aU}`=d8rhGB z!btkPD|X$V>WwEcS3>AeC026}#(p*ww$3jxcHN)qjVG}q%Inm8Ff{5}w<*G8`6b4# zB~ZQbBz8o3otjUDM)p&ousnW=v15}GRPWyq-Zj~y$ZZlPQYAl|pk13PX_~W3F{Wxg1O7%jwnd${K7Ejd2 zlu2s*VbI8a7_?iZdZF7)^@19UCu&zF=|Cfxnva4;_M@OMl3wph8Bj*upX!Y#F;_z9 zKqXf5Inc;{4ivV|FEMuApX!Y#u_Mas)O-juvL6D4$?{8#T}z;P<4Np@@;da~X`R~I zzI8i0ERSDe>{}I&Me2O~Gp=Br?0$GcaHVSYQ3y>3dNIAt zYQ0!S&uVRaE8g$_R}o@iG?pYgJDkE{sgpXK(^$wJXP$ADOWQ_C`rUh$B=u-KN$zll zh9yZ=^46dvt>ZlE5zvj2^w%DcSGAGUpd_thKCvvT+9*kX zX)#NZdNiI+y7DW#5yCN4GHGM-)$knSw*7>Y^!0s@$4hU&(v#(u!6RRE81h82yLk|n zNa{KBaprwi>CF2?qODK`N79Hy_sA2;?j|}|B7w5k(vrUAGRn$dpGdSh;fO@{$P>x# zW-?eJfwI>UiTzfqEbaA)MB4?9NOX@pk+@P7JK`01-q^t!Rqv6|q}{j^7}`#ttQp$q zI`~U`S+0W~jVJCM&T}*`?#4aE%$u;X;Ao?`{bjx^aqH1|;@;tmO5@_DfIy|Y(%hGN zPAe3NFqIXH^dFnDVwrbgWwp{qar;YsS>o2CvBXVhP71eh9O_~os_>z?I54yW3t8&4 zQQZD=UzWJ_XgqO)0|jyKMjY6@a@UMZGLOK@f?uD{r41^_=h8j$Lf9`sAif97k@tN1ohvH#yV1+|&jj^BK`N z^YE)I0rtsF+bWLSbdNl_xiUBh>&`SDtVC8?TfI-V$(<>APL$)${QvB|Yi}I6(f7Tt z^(hns#tq!KBMsT7nT2d*y*XTqYuA^tPBt%sU@(@(&g79a%4p>EUZ4J{;-Q;;X0h3x zo}mJ4tU0K=#XpOz`mtEd??#imi4L8r+}_WQjY?<7%EY8zx!co$NpkDE(c}(^JaO;A zO6mMqz0T2df~=pE0ClV=arqHah}F3OF!za^;SGb-Rh=o2&s7xN z^c88kHL;*mb!V{Bn%|X`$k-#U4g&2BR{SK-<#(gW-Gq=%R&MyiJj-pYtf<34d*$|% zVVB>HCU;2W3EfuDavOU))PbPAa{I}O$nQpzJ0$Yt{jAxjbk?k1jp>O^{bWU`BS?v{ zDele=#aGtH%~E62(xI|C*{|8>a!4Ok2ayt!Y;mh~FuFO$IHkj5bw*&bZVowy>NrxW zZUM2NNbUWi+FR)eS)EnTteZogf;yCxs2gsd4#wWpPA{@<+=xDPRzb6FdS;}=ruvE` zcLq06*K|A8U?uh*ti)!pqLUOr(ogIC`gVP{zTZFWcjuePRNhb4pE{nD=+58{>~Q4v z9;}qkqSd(#J#zcW`cp@gQsoYbJjE(~%-=$qc^<7gX{|3d?Kq~CvP_=ejW(EvM4r5# zNgI{Uq}8i2-PYZ4R4GYreK(riP2>s2yxZ0O)eDYw9Im&!_3NL%`|0XZ{B(Bp)B5h+ zcDMiG=9l&L>#NJsOZ@u%&1S#Z-k)!7UcLA|!%J*;%k`Is*H^3i8~H;y4Q=zde0;jT zUOzsnoi?}^^6aYorHAFu>&K_tJ&azi+i~=Lrl)U;&*hY3IB!Bo zr>dJ{j8i&fR%Zk@`^tJArs$@xNVB(qSWxU3@A<-2)gB0r0EtA3yR@y zMLcG)9-Sk{V(akAOVcx`oPBk{gk{f%IEP`pfS|GSfv9 zLONNwy$36$Gi&X#{yL5_C3&yWsj~7$=`lDL$9J zB5hP|LP)2on`4YqI*e9l1UBoYXGV%{`ieB&0%AdlV~kTelD0EXA)n$Xy6G#@bPI?D zIUYSdK4x&35CsAErQazjP)fMQecXWT}m zGj8>2Opn}tvLe*cr&PI{$kU0&IQp1dYHV6M%(gSfFrQE=+V$+UeQ7H>)`Q2!8HzA~xmD_u; zQaS@y=QebEuN_CDlH}HRqsbi-dCFA!n7@Uz(mA+xwU9cFM9KAisnpoCi9DTXjH8dkrN*YELvQ6FsV%u``GiXFxzs_awEb@p4p6o9 zhEvteF~%t!ZmTl_8+~PUXgKLG9(7zQRkwgxkmC`zQR#?VomJ4Ro1Wq*_NK2$nig3= zEXeVo+o*KVt(^&zSK^(07z*XdHJEh@%_qz_ zK~+vujYcD*H-ZfES~MXFlylTVxMf-~W81WxB^rg0lMX=$c`cd{1!OsDA>5V~N=H|< zpT8|<5rPnM3ZV&6;E%cxV#lJ`>i83EH{3kjuD`5zUw!ip;1A2k$D6w)90mT<)0d0Y!*cbs z-(JKYBYv^LeIaHM1DsJRZ^_ZE@}{)3%9~PkcoWQfzk9mBUf$j_i(VrhnATYecv9~y zhutAd=_Jf;9^=M5CX*8zhfleAz@q*0%9&yWpb1f6jiVOAZ64#sJSMXZ8-R?B!Up~S~MXF@Nm>ZG|gWC!+MU(GtV25IR%YE z$P@*F5b|0yAqtXE7vlIF3Vm3Jat>yub138K~+2jIlxukl*U$h zQws0qQ^0pdl5$ zLYI**O=JCjg;^_}b+J1-ymO#;IK;Nj6vyXUMBuX4avPOEBf1t5)L0a*#lq3GkW)*= zVUWXIVGzdoQHnAn<#MVK985sk^Z;(?h@X(D`13n%nBXOJ95_4kf0Ktq* zg5fvlTAT*QNZcm2#GKeV&>kbRJ@^f}7N@~6bXi9t$1rO*vJScjpHZC*2fi1b7RN|n z`a6J=fdv|clfhh_jK-A@HPBVviALz5x)OZX#mT_Z-uBBRhyYGtVguKz-dXyigw&YW zcn1`Q&xi)Bu13@1G)PA3HnF9~#Kt?IFnmVU!T|~+0yqV`Xo}Pz8L8TrUUK}#CmC32OE?+a(aBKL zOU0c~!)EneX>!$fbL!#ZWN^~NhG+h?cADdfo-?!SwJ#UKCEbPK46Bcz4KKP6{v8k((#wc9#IR!16CbWJn7BC^{-Dyz=;e*epS~w6s zT=Qww;`p2lJg%}fZ;Vee7O;C!I2p04lhL>Yq6WH(JE2Uj`mPk;(aDHu27D4EgJX@} zT4(7uU^X+n44jBs3Ob?nlBxp9YtfWA368;MZY~C!89s*W|1Da`v6Q5Sz8+1FlVBNq z=H_Ownc-(h-rAyvL+vGfJ(?aT!85pPeIBzwk0jkKdN|Zn($}NuaZ*f!&ko~mFs%9` z{EfuX-;h&H#f8u#Ugd3Vc$K%c{uPe{*qCj73^>e#lB9u0X|=klhYjIcj*x$JJwl#i zT`?Eegc%c}ybpmJfdJM z%`J*&+z8|4LQ9Kia@~gHdg|-ZM4K*E@o#BO^R7kYW>y)JP`*Vphx11C^=P6^AHVn) z4}8Gd+%`U=VOZHnI8CXe)1)WBiX)_l*vi}5h%0aFZZg1aN@-ney0FH3*W!*dFgIpk zN#a_@1&8x&^z~?>O_%HV7tL`7j*J;tt_Zb==5Uyez8+1q>B1lXqB+jMkx}PQRWN8# zO_d-aIZpW%X}V1p68YDyY4Wx3oXji-Rji~BA)d`ZX1+_zKPwR&Wx| zQ|9PA>1nXy4(Wlm@^)^>)%SHr8Q?x;v`!Wfb&4Ek;@Fsp)$a1P!NCFi=U1fZ77%!f z94F)0oQyTk1^Y%ie7-Rk51X*3AL+ssb-mdkc_2HCCDW3QiQ3sS-|(t90$OO4DriGmV#u#Zi;e@LQJAOa;zp&$bgXJPwCU!s#E@T+q#GVX z8;rd{A9d2rs8OlPfQL3m8ZJg9sr0EtQjcTkE z_7&VHEH#F1ROVVpIG+kDZc#qeR^M;QBvi@bDmiXx4rN$R9jD{WoQ^d| zY#tsQ78z909%7V*+nV1W%C%H-J{4Bo zB|Ugo-`A#GeP4IJ0d5qnZ1OxH8kIRt$8&Q!)*P{UcyL%`P-Tgz!$Uwc3JH$ObUZhw zW6gP+b#qu`P?bH1x-9~tQF9u;mmQ#u(B5a&z z;WKJMG_zeeOH=r^ndiuP&ef0v@ z_`v-jxFn8cl(<<&DU!IY+1ANL`PJ2EwtjTDW`JUjQ>9r$DUu+xSut|yeswj9V)5+g zK+OQf9OqNBfKnu5w`Rr2wc6FyXo?*jq8XrA(`4JfeT|#dlOh>aH!DW2=&r6tQ|xHr z%mC$@QewY?o1{x8L2iMgnM>gv04FsQyOJKO*_iB#h{#*)Oxm1^SNtsKiH zakFev+;OY`d`2WU>T0wBVY=j|r3}ab#T+MHvu08(L1*I-4xdpKlUJiDHeI~qUopo? z*DRP6chFJzjH(!&j>cH{*eg!v4 z7fFItJ~uZ>O?wsBM-9}~ccuAO-_6OBD@`I5<&I|o(Im(6NZc%s6n9{J_>4Lr$g9x? zgn($0V__t27DkFYSU-G5RZL!uq!`RO!A!c2C6TyU5-IK=w(uEMF?ltbV&K__;wD8+ zldXlD6dU_X;tpa9pHUT)SEDHwAWb?@86>XDAVKE5qnp&YkfsLeszcOBo>Yf}@4C84 zq$1ogE<}YgAUKvk;%51yxMM*8KBEo@@@ljJAt0LMSonyWg^%Kn1p)Yss+hbQO|gJz zl4HpuZk9YsI*2WNMpR5)jiy*YG|92p5jTq+B^|^TKBFq;Kx|onH0eNPj<_y!1RKm8 z-K55aG&N9H+$3eb)punV8Q><7ifzX%Ae!V@-iVv!jgpQ90r-qMAUG@tuz+ZiV__q1 z7B)&c76jlks$vcc0z4p^ltAxvNxV*tO`Ayvv4zj5ia8Kl9uQ4(EM~;bVn#^^v4zj5 zia8Kl9w1FRP#GhhmoaiJs;wr`s_T<4q?zlvYA~pNS9XyBZW5`OcFY5!Nsi@2ScSs>QpZWxEL@ayEC|47RK*+?1b9F+$+2V+H%k^J9mEzsqblY= zY$7@4hZUMqy+&U5KVF{OvKH?L}|x@0DMMO%wa(w3Wz2- zmL%eHqa;znDls9wTxqYBAL|m64n!6UoR?}X^AyNZ% z^<8Pc)pv99QL|>66$#i)TNfI!2CrO|@TP}%Q!)lYnp&Gm@ zM?@=!8Dn;T>%7SGdGY7(e){V3AxRQ2b|*>9>QHh8qD>NqLhq_55ml1u6CIK?VDvR< z#@|R5VXY}F?K5|+DV*+g zaxJ2rPlZ*tNDtoC_q8ck-`AaQfEz_Crkw;tqhiPCIDs`^onfKMAGNtr4vP%=6=}nI zKs3s+Y*kb$TctT~^RVu)$e^lqP>1z^Xq02|s>m!}rK+E_*qbVbL~^6@E7I&OAR6UZ z!YV42u-apD*qr?BR$-6&Prp>0@qSY*hrNE;pkqEU`zt)fy{E6sTu-6&Nii8ie3 zE0T1>Vl=_n8;mWr#RZGSp;B?H&ctw4EQzL@z9LPxfM}FsiL0no;z|RAW_xp>zp4Zi zF>FZ#q*09pufBpCg$1*O8|7MrJD&=xZjl~ptM6-5uD-83-vBp?R*X9hh(@JNYsMDC zdIoF0xf`W9V)O9ekYcWCNl=G}fM}Fs*{i5j_DXZ!X5AbX8B|#&s%`<%D97SgQK|Tq z4p5tQbD+PfI1^R3fM}Fs39P780;`k$s**}H_g7z$=KcmqqZ$iheFZlP3u*~B%C$&$ zJ{4BoB0YFl-`9gf^?lt{2DnkQV%<1Jg%TZSj?wYlIOIrGhG?Nts=yLyc*w6v8y*6p zQI2J?qEcBb&3PNAV^wB}rklPZNjIFLLa{f;;#g6sIF`;LZPv|!{;J|lL^lejreJh~ zztx2zmP%x4fY7X)LyEa7;Y8IfKpNFpFzYM0QCM(GxKXY}yz{BB;ufjGOSOUrxhYq_ zuRGrWH>$Ik_toX&ezk|%TxVC}2T^*f02>LEEjhc|KCE}E{bqYFKg|kYCBC`(w0`vh zEbVr+$A5JJu(yBv@y97wI$1QaDCk`9{J;Ch_kaBEuiyRS?BjNK@nL)O8_W1|^AQS^ zef}0m)cWpW{~HVkA2$2z)#LtrgIf|-ODMar{KcXSh4^*aTw5qov^e}ET0G8M{LfHx zZF#r)a`X5w<%VYf{OZGU)vSADU;vEo;LqKF4jtI*^q2+}FY zfd_ijW=WzP90E_#kjuwTL6W(xBFjgbCIuZj1x>K|hiVeREG9L{k-kF{ zn_6sAT-r)GR=hqTP3A2D$ockR$(CwV>v4k@5P8U^MB?9}No;K=H0+KcdQFq#3kKPu zWg_Wof0#Q&(6MA36=(_xmp1c8ei4$_i*>1Mtq*_6aR!Eb=D{Ku%S{5yRaQ&_WisN! zG_f`dTHVOGaITh{n^!NyPlAz5OPH1&`;V^mBRL+IJJc6r9G0l$fX2kqRF8hCy?#XA zI-h=!?_EJW@MN%p5$uT23SyuaHhqBLT|ul}Fj&DP$8l`g5Y$#@L3;oMm!l~-eca$(LChN;tYDhMJGN{Hfh!7T z_P7WxM^kY6aKgKSxWYA9!7N98Y}pVnR~57g67;l63!4|yM;YD~ME`rRg7X{t@Cg{j9auRn1 zeMH&3h_d<8!UF9%7hH~};L&mtcLjY!*}RCdc}tXCvO#;&1(%~Kc(k0vT|pmFHZP)V z-V$Y(6tpK@a59KQZ2I`4CCY{e zcZ;%P<{=Xy;&~=Q)DmTv^s@n2k^sZyXr^_voWxy0?jai?it=oPs3poSDQGh|Y6VGA zb}~C!PU5a$+71 zi@SoSwdE{2TGZmM;Aw3+i;fnxxGQ*CTh4GqInE%#UBT1Za)#(HGzCv@%UR*fWKCPn z;)2GAZ;CBvU;)ot&JJ>N*KOfV-XGzER+B2H(^Su%Z4;N1p&Z*vVrZkN zk6gs*Y&lD&k1V{~ppRU{>1;VmL})N+z~Nm%AGwIr*>aYg6b?C|EoaH}nMjLixhHC$ z)FE?8GJS<|pmV-gLH{rALce+-=ZDm^Ym*XPDJ>oI!%Sf1;W}kS8<+eS~?_ z*>aX1EoyPMK_6k>bhezOM~hnA74#A2O=rs)F5ORj6b*CBS$ebt1?FY9$|5Ir%2_&n zg3=P^xhr^DTh7v>MJ?_Mp4OJL^k`9wyMm{+B>njuy4JD|lL4&hW39 zc#z=TlR3RDXN5aDZ`yK(WI~B7zA3hxf$2VPIXlRfv#dZXry$2kY&pvcSaJ%QoWzzh z+~;sY!`4Y`Im?Qv<`nGYB(|Jo1NayBo(z*L240Rzul&g7Oe#2gcMpS>&SBNuTxTh1^aAv6VjLAEoY0PMJ?_&=p)RV&X%*q(V`Z21$~5h)7f&i zI9k-=uAq-FZ#rAf7DtO(+!gc@=1phI+2UwXi@Sn8!o2BhIa^F0wS>9lY;m*%#XV8` zv`#r&OrM~%gn8}?p467Jbau3;#a+RZ+H#i8V4gqDl>~PMPio6qI)jD?O~I4ea+c1H z7PYwB;7M&cOJ_%mTHF;p>MdtySKEj6ZnfWR??q-=Y7|ng=LRy^fp&Gh-K}50{o9W} zUR{bG&#r!2-@V)J_CMVGvc7(Oby<3e-@m`vQ{`pV%E8cEz*6^$E_n&@Q-9D{fUp+qF+@0UA?$)nfsPDhHgzx2F zIJ>&c+Y)~9@^Qb~!xhf1#1Eo%i%4zJu$M2L6_`tWv$U7*tF`^(^6}~Vdi|(#EgAfo z@aN=GT`KY5y52{N;zu z{(1$o`0YL88R(&2pKl_5{_^hWcDb>Tr*x4nk!rnvR$!{5R)9mxJ1786URGeq8Z}rx zQdL-DFKRWGx()?wI%*vv@Ms)#h~`xtc(V?3vJRZ4Los3@96x-_US<7ORVvJNpx2Uc*Nqt*e-lsV{-v8oP9vknPahlHj> zL2Hg$2i$V&pu-%Tp|U-s%{ruH9a5SO;Abf2a@0Ct7OH~|i>RtYv(LKB$U0;+9SU-C z+&aKKhdOYq*^q}0`V|v_1eiX2!gWxAFCz0rY`#d$7peIoGhfWj7Yp+RlhF(074}3g zi}?KI!&2+Ny}yR&?;id;-@xOa|6z&Y;}V|r&1V07@#zJAda+>_5a4wG$L9a{tL1L{>+%;1D}W}X_56Z3b@lu| z|M2Jk8Ie~EkC`!97kfVZllOc1v+VWS24ug-SAG34Ie+=i50|SqpV!w*?117uP|8A2;}K}O zo(2oyGq;(AvD(x!Z=T|rg$U)rVonoc!bqe{4Ih?2uOFXo_e)K#X7GoS$Q5U5{-Kg9 z4ugNWkryp$E$MnKXnIW;op{$PQllnSuL#DpvR(}7uX@X%jZ3!VWCMdJkpjDL&%#ul zXzz-}j%+xt!r>)rVUuhb(G{cNNgO7EQ49}9b%>2vQisVc6q7CK+=kIWCWnC{7{%~} z4j0AJ8g>RRq-9j36COrGo>+P?7{#z`q>Ex%4N$WdGRl^87Q|?96c?R>Q4Fg;xG1)$ zp={Q|P?=SHRqL8})b|}5>(5x z1;*{iteIf4W`xO_876Cin2i*3$(pgN&9bj(7g~R|LtpRLw^JsXT(7CTDb^;eI>*D3 z22Z&ijGOxE1oyr=0U4O%EKlJ0t(GTjlA~OgCvf}HRDBMDu}6-}6TH4W0oj|4sK5cA z(sB^6V8~RZXbEBfZMdDa7db9ah!L?8D(apUfd3RfLwwQNc(Q%0ag1u^T1aDae1uP?& z*iNh`$T!M-S3n-*yXLn|&})+cWd1I3dt!7V^e0F3Ujy}W+%562)FDx681aXCm(3#r z!(4bH6WuDS4<42_SJ{!Msngy_uK>vWb7|S~XUAN0j+Ea(tw0LJtHH_WI4daHYqJ(- zJOW8rtY|yc(2PKPy`9o-jZY#InZ8COEQX&k3_jE)>gf|PqC=Bfq=KHr$km$SH;F?D=K)J zZ7??0R;|2GvADK{prv35>`rtT6=}QRu)aYsinUcI?^7(PZ6V+-D=Lu-?WL`##K%XX z+(*T>YUF*2rL`>tT!#;pHL%Eq_R_rj`1nYayJBtC$NLn^YFh}RmKBxAf%d{$D#=&0 zLoHLHz3z&&RU7Y9Y+lM*Ii5yF3jn$Rs| zfLG!)-f?f#jBBE1fXkZ!F2_{9I>6=43GckQECRP#E|e`p>(X{m=>4>LZ`{0l0)lba zN#U5y8{x`AiNfN-pnRjudj;mH@?JsuL}HUv#bRec`DP>;u~za_J!}dB%DMg5K)w+Y zeJB9gG?aKmzAbA*xF5hozBW-9JS?qS*x{(DBi~rB1b9Qf5z>Bxw?Y^2gM4v)P$A!$ zg~=O_Kob@`u~V>jJVFq6y_JRSa|#z2D(_&AMFi6-_yIdf>R)a?UaaqL*uut?^zU~y zdtN11{jj{mBJ=t-m~z|NExp-`OmR^=J5%Z)R-98UN<|i}f7_eDMiNGwPOT!t%|<2M&F!&6`R!d|KkS!()&-p|I5?1`uyT`-{+0LH2pWBGX1C5S6I^ibz2{} zx)dMdjJ)5i?jO|zeRXNR!cRq!dp&&{CGQLWm^YNXFP1ID_r6lWdqTWqll6MP{`JpK z_t!sfw|hKH;NRddt!{6(*DC=fZ0ddeyURza7Dq1@4yM{>@Pu`jvj7DNRD!`*a@((T zOdB?jsw4$j!Bc*#uYjlgmaN|?e^%u?)r%5SW2Gt&tn>t|R78}S&%oqEs4JGLh_bwl zsOevu-2;Kg!}@x2zhCb@uCB2*BL>H%_o_)T@8K7I(7yn|4>X@D$oOWtecCS}Ad)p5 z*LM&5-$Z>zaM~3>gMW+FO^@FzF2yJ--{vhXOU)np|Illdp=E$Eg|zJmIrjl^^A08VBwK@I7;sJ*U8Dj$#dSs>T6N_-q`F#sPVX zUX5dO{~U6dMF#YzW!(zX%+ zS=WzGAH+&4ECAqwt5_{6Dn9=VZ{fL2tEc@ID_lx;kH2J*^`tLNLFZ8Ied<#+JYjV- zQjMRl?6kEvobU4TaSunA>m?WbSv0v?*?9SHn|9S#AT{jdSL}2qdYQYnHYKcLiR3Pk z*Qry(@Mv{B4?MFvX8?1{NDDh`@+&(!v$lOWsGmhI8%(Ski((hITQv??^~QhG%2u$+ z^M9R%isup(75e3i+`@~cW7X36%B|U9i|+U>bXUj_hf(%n1v!PHdNibvMn-l0cksb` z@c|rs7nz0i)u;Ec;E!h0tXoU^;FV2V`rJ0G9SP z*RZSP_MXpi)DSNoZ};ay2wkQ-I=5-o;zFd>wL_SPYh7Jp*=*ge$<65Cur`!83hv!9 zS{K&fU*?@R_c$zOy5fSARyK}V>T=qC+a!`k{WEHtd{ zZ}M&oKZ}hjd1Ik30mDuH+NM9}7bG>bXx`=K=GBX?hW5R+kuX{;8bU|2jis-lbAVdL z4cudou7VsjAPpT`H*YYteEITvd-w3Phl5ME_ZRCgoBjL!(+B+-n#tz=+M>tn8Dsxv}98fVeqS4(*;CS9BhO4(96S*j{2sDO?R2F(vT(G-=%x^m{5YE3#n zF!??Fg3e5pldzhL)j!IAF9**SdYktYU5r%6%{V&gYZ{<$<$F@~Qs^0Zrk;8s-7R?0 zBrupKw(IS7`>@|_9-f4V}Lc>3aII{(Q z;E7F)(efN5^FB;S>|5lXl(TwRf~Kmnu~08e0Tv=+(I?%k_-31aZ{f3YZi!8Wa`Vda zb|kIrqU>>Z;td~)RR)xtDeFZQ%jtpOA2t~w_=6vod=}3IUiuA0yZ?ZMX}A6lPM`&2 zdiwz>)6eVw_Nd+;(_kO!y zetf#U6+(&)jSWiv9S?HvmlCf>*V23nlB9OXVd|2qf-8&r)E~WAqxOI-+#GRJ zl4f=sV&a;ynM!&XBpRd#VEdu-a{s}Drw6*o7|!GXUS_Tzk7i{S8fwa0&9qPPa+ z{d)4c!NViuAEXwh8>#3X;#7-dq{)wv3fBx04c9|aHRQ!! ztc@rfsV;S#DS z6)!}ZtL$jVaj2k}2vG%qB1Pk&cVVi4&K<~vD%kKT<3c1A>^R49sL(?@T5JLMM$vd! z*xFP9XMIqiA$%rT2C2q%WJfNJLz5nU(V|JQG6us6x^P+(Ln*0D@kUHigyx^wfrsNz zqz6B=C<4HtXlk71>xw8_!4Zq51#R}W0}4l>1#b4}icVX!0FF>-feT)BE!6B`!c&rY zkXElEyKIQ#kOby%2T1@Cmp6+lquafUZl&t^}U$y+p}eZR{VvRi`ApW zdOwt*6=mm23g|U`S%pr&!WI4x+ne7Q)cV+bgp9h+7IvfWLXt^{)0=Z~i14vdO3Ww{ z2ak{w0vP53qfI6FL!RuVU&*Y1@={cN5wWZZF8zPpeB3VIEO9kSCq7GHfJIH>+PYM} zDD`;@40Ch4zGz>avXH!bcarpWRoyjpK5vK8YD_zU23cd3}dBS-dKNu;!xLn z=z33(VU5bxl(&!zu0>J^NR|cLISGYS?5eT@wLtac%Zfk{yzX~Us0!BBp-lg)bMZpe z6N1*Z(4_cvk~DVQ;3T9`0c}Yd^`dFiR3EiwFjo|Wz!!aWbRf-KW=QfZ*7VI>=7@_S zQztZoLnBu8B`|{DTBuU!jE{2GrE$i|)chLnqo#_QM-m=}P!t|nhZo_Y#3ytH=m9LT zIX6$-n`H8KK;$G$UPb34DX-E7GH=SKI{RZ`yT(E~iYm4PFQ=e9CcC4PJd*M%_W;k~ z@M80^I0F@IK8|fid(r_(u^r|)3FQ@X7)g1|UQmu2W}f&_KUO1toLPgVo#qQ=0=f&`XE) z3Bq}6NjO*w4lQ;uRLr}m8kfkKDch=Oc?UbCZQxGAVO+e4aVfL)08;Qkb73yHF6zZn zQ#@@7k&5jxa!?tIVyWRUG~U9{dZtvYie8+0EdXcTMs2(v^CBdP>=JWMVjgXwU40Va zwwBHQ8qV$&47zzBwVCS5S0Sks4w)jIMV~L8e#>yvwW*Rg0ZhK3TvJ4m7PDRXDkPP{ zp-8v`z#)QQfQL%$i;Dv4jY1_G&{Mt&Nu_Xz59a$fsf3H;KKv22VFmmWPyPs7sO=A& z+YG3}86sr^C*i;z^gElx@0;#0o5dVRF=4o7qReJ%bonwA8%<$&31nRycL_AfN9BhJ#_E z77XLbMmgXbVJ0}#dWq|y)`+svxs5X=Z%z_F9H@iaB$@{3J{tvCQ!*~xUQoADn+*2y zWk@oG17M;S0OQL>RTdM(nZ9gvuGTgqX0^77w3f8LCk+SfL~dw@SJ4h8tkiAP#?2|& zC@J?O4TtUE29Bno)R&E_v?HJlo@_MYYUw#jY#^+dM@c)r(r}Ow?iXnizi%F`A|p%! zuG^^1HkXo(lJ?-I;V`3kTxP^IGxC-j7$u4sMQ{N8*+2jJ`s(uS_GS&;>iz!HFPP5% z`s(rV=I$J8zrA`PY?L-Yhr^6wH)h1E%m~x}>NaW!;E4#W)xMK5#;?e8R^_&3@sTcEqNykhZ^BV5(kGT0vc3q zU`+R@jixp+W92dwa*%}scw#re18FlAo$5=@Iv<&AQ=~<$EF8*%8#P>Ps*+~26w4uH zn=;ad$#Rj_H?nZJ4DPN#xu6JkX-9VNuFnYfjwwZ0jPbm9Rcr;ckjVIb(#RJMkBJqJ zsqUJFu|Llc0LLn?rH(T8gzFJ77+IeUt!sOK4d-Rt!+%n_V#DW~&Hnr1Q?=of;lHxH z3vw6uxzr0RG>2Q0w6?=9r%)ULw>O|EN4On^ZS-1IH<9 zQ!vk!F>C~{-kqdeIq$Q9a%)Wvowa3-fCzjIkkBFcOWT1xI?1m z)S^B1DTJJ+a9c4tn>asO|7g(~5-CD`YSd zYMqAzagr8@<4b#$`U4qVLs6^J-l0ealmsAb>Y0Z_hLRRCxs1l(e8GU*fBTB0fBMURl0FsSHkY$-)6wNlQYJFYyh$mCeP8AH&w!bQf@|mw}H! zngYT>WVm6Z=9~N5(i>ySQsKf6PcGCQ!MSDzDa8;^4-X_r!!0RI9ib;i19n~Cir>0W z1cqpXK5BdWX~Vc3_&S9xzqpm8Ni<)>xJqV%W7$19aOBb%P|AhkyNAQQQpLU0SS_&^ zyy&x6pk6ieYTTu2wL`IfDT-WJ3pteGwTXdwoM%-^6J&gQvQ%>E3{G;f@UZt#q;J7% zJ(il(5}F!!*l_X=8%E0D#uMX15vqlS^$Ar=XlmYOLCz^<)@v5wFdEzfGNzRR%Mn&O ze1DuSX+ccW^fBglTg0qQXn|O zN{8<-)K*HbrUB(330BHx;ea08Skk0^pP2%{DVu2>qN4*v-eX8x0%fysxD0M9X;R9Q zou(@72{w;i7A*HH_4_8Xb|BWN5sP&BEbGxC_NascNwzC`r{&UxV9ho+=Xw z8uNj=DWN0|;Fb{=rE1Klz8+oV&XV&yh_OE$eG`mcE##+X49uz-IZ#NdYFUL|^kpwv z42UHs0!hr7D^^1;vytKUGbIU>*$_wDxNjj9S0MQnu*WqRjTEKP`|R~TY-oXe4?c`A zlv*1ZkQsTdI?h8yH4PuNHmvf{;pQ~C?Xb)#lw81_5jf>ZNu}8G=ca>Kbf>T^w~+z7 z5%n&XOkkV)4}MB+Fi~^`E)K$4uzK~d5X#x+;iOx8=tp& zcbfR&0H3)6KH9eRfFJj5LC8c2B}`QBEW9DLw=mNO+U7pS!a+T_!J-zJSXAD~kl_@r zEbb2}yG=I1h&Narz`xb?^$a%0$3C75Hl?C=M!h zgyJ&e)`~I3SBXN=@ZEb#e23Z_aQqiVeMtQbM*S9ORD?@4Ff?MxCvxL+n=lCBPdttNqvXv8*r=`N&Rqu7Vaz=Q+)$_!It~s z323^yy>s~uS{fSULIpDpjGNpv$K9RfRr3LJ}Zlb+@}>1p_u9A&xW3LJ1gBxx28 zhk)UpmZn*}XBlx0{HtcM%~?-2n{w)xqUjY34db{ArAaSO5!YNNJ`LZPqimI2g98o; zCE02)ppE0cmL~1{Y_*#9BuH9$YDLCH-j+k8Vvrvmh#$mp4~mOY)wCypz3NKYECH$C zTHfA6^h6|BkRcq5QY{3l&!(zrPXbZZm9lYE%SzE`6Xb{nqf`rR>QQP@O?VPGsjigG zYEW4z8W}?L83q^RxL>4c^z-DSERYQ0gyoG1ITYf6)2u083Jk!(sNX_^`s}n?*a*(6 zsU{{0(JfZf%XUhO{Q&m|qf`s6@nxq#b%dRIBX$m@IN&&QlAQ)aefX?}`t;c;(44Y; zHKyiA0z@xeVPP2Nf&>8O{=2A5bMavEq8H=y~8W`)lZ!Z;BAc>TOgKKan z1rCFHE1BM;4R5(E0F72V2WNhN;-S}(9;KPS-(6#Ma5mxD3jJw<7Z$a7&18=O$RJ5Bv? z&<|8pY#j4@3v)0g3NB&pP-kThDZYiFJ}hbZLrFN$2M*AvySo;ZIT#L;+IfQPWK19_ z`%X4{M$8M)%qSc#1LYIz3aL%_O*O8F`|}x7Tf0QO^03IUIb1yEsObU+oo(hwl~B^3$tx#I)UFNjNYHw}y-= zzfMOQo`$dFcPP&h(~{AWaL^V`<)g}P05I_3yiEbIbA1llM39C9&~Wp~s9gaQo{9y9 zM{wu8_=2%>fsRK~K#X)KfYdBmCb}}^z z<}2=o;~K?=on-ii9c8WLA|0^&NLf-&!$EGaF}P9u-Wj%*3e~t@Cm|mqMhubCaQGN* zPH`GoYpGDpTQ=yaP{cVf9F~Q0$2)B|n$=~a$ zREr-anEh58R1@-+#e}wLEenU+;8v0*seD-~97rrJb@-k|6;e3V>Y&OW4*$WeBu(=7 zSt^`gTP^~SG$!pQHW`cMIhD3)EenU%#4WVOo23HP5p(MBJ&W2>>D4+CqWs~oA6Soe zvs7R@WecnC*+5UqCdsgJ9TKU@!XY&PMjEB^W~nMUDjB|KQCsR0fhS-W>g0^Qd z3y1!|fn`n{v>)E!Rk?FzRB^Kyk{|??Fh)ip+C6UrOEyAW~nNZNhs+hPIai* zL6tuoq686qqx`*=S|dvJ6>FSR$($B)NGYoySvW)qLbyh$yjiLyO5XB~94dAY<)4Q` zlpro>l)u+fYecDWojRdodRltuJRG8g`&7o9Q=vMN^n<)*2Rl^kNQm->LzKYVXq3Ot zQla=@B~EQ#rlzmb&@y@F;SeR#f9B!P9~f`kq^i=N z6jOW3D=I~9C3zNvTxXJC;V>ZF58`B7)oh)#zF1ud_Gq!sv;^%SBbg*vIMfDraG+rH ziXE^=G0#%RdK<{k-FKaeE6_v=hu7fV3MmrI(s>OBz1dK1JOxiX-*|{(_ReO&XrLN| z8WufQ?69HgaC4g8c7Wy-YBk^n3e;O_>bqhG>@UnKc3{}=t71n~RP3-xs?-%bXzXVm z4*N+J`+>hWw|Urw)@#_tMl!xY7gdeQunqX-zn3;iBzp4^{5r`*7vYc@+%F+a6#nE~ z9Xwh9UdRDi$|iS$vwqcp*gXF07Lp+wMr5e5Q|$hKv)O-N4A&PMHoMp?;2*F)W8WA^ z2XC-*8%vb;r70Z_*hv-G!GBGq`|J=hV_*I+)Jy?Mr5WN2kObbA4Q}DY7QatZCmimA zJ0WUzSgOdObd!b%FM4$YB6GXFhLf}3ELS%-JFv%3>pkw)S>Nv;_B&acTzvy(^J8rI%+{*W3G>&3?1J zKi}NEdhvTPSZ#O9^_Pd&SF8IQ`NQpIzuv8G&+k`v>sK%EZRppC;^B;O^i(e4HjUrG zNx}HeWq!p=b&oTAO!Wk>&(5yiZg1A&NjUDEKyl46wxlf#xV>`1toOKwX2|VOypk$b z_h8|W3HE79W1*yRd76;nfSgo;95q8qm$oD&*-QcPXq_V7Z>dYMgL0^`syoqSw!=TC zV6Te)46;`sL54xW=xcAUN}VxHHXJg9`!+n!tU!#k$;K8Ii>E3LHCTBcn!VbAr4z7M z+?z3Yeg%%yYOiGoTbW&@G-Dd89WgqEf(E#C!?UphCDO(kr54s2VN&H#b5(bu*{dBA zIt6=GL}<|b3V6uPUX?cE87!Z{9~Q`&-nfIqv%v!W(FQxWuvbid9%`=gJ``)^Gdps0 z3f8K?(GY8eb?bI(twyg)teI`buTq{d4K^Imgc~{h8Z0bv=LQ?kEG#xwoM{klQg@=+ zY%s(L_iGIGh*Ju2s@bg4XH26F2Rq@O4$nqwU?*mSofrAEU(V8N}Mq*HXQ1NdpkT^tVx}$u#*?=LQ1ydHW>6Y_kf<#F7#9jW^oiYgIT4|h|?@CP6mRXaJz?R zqc!kTY{Q>KUGkxhvAPq3U`VOon|u#xd#N5bs?xyG#lYEfH}=7amKXRaQM^QJAcXy{*>78r^E+;Qg@wp7pSTTw;y(D3x)aS}gW*q@lRVfl?&43iXch@Y zX__4!L9uWU)WSQ0$_xaR*dQoT^Koc2tL{WI+F%gW!UKZJNC>KGv`U{5XIdT(f?9Y- zP?>?CxDA5hK60Scok&K@gF#RW4+v`Bg`i5&Y*OV(x$ zcIY&#?nJZLVEEI*1Am%Z^QW4{DsjfN*l_sM!aIMO8~lk`bp-$1v zJ9SzZ)M;U1uUJWKsJY7f(5y8SPjA^mqP$%5R;(3}is8cMNLuc{RW$c4HsXNguHW=^( zmHdZWtTlM5S*#LgM2n5XK~Ky(dV=!qc?lV2gPxcV^rY@Yve-Bn^u&gvCn$v0QH`P& z%;G3)2D3_^F^x7H{KS0YC#Zl{7;S9BpJE>XO5KTOw80Q4Hk?558HqqujaKP1rqPCj zpqOt2#b*YB;x-71`#@0YPBfzp20`Htmx0kNpLHRqQZyTh165#R)et#ai>Hn#C${#>cOp%*NiYbC zdq7YKlv>XTs3EAT(JFn$G}>?w6!(sxn1P_U4T9o65R|$T&1i!`P}~E8VqFNT6wM}8 z{-nei(_+KnPux3yVg`RoZTM5_gFmS|(JVF?{=_}-CuYr`Y8I=+8Pj6J;ZNKT4FL+`Gc#3RFv_(Ejw5dDM ztTh<$gogtUw$?82WV*u@YgNjOXs&5E$SLxUoS1=}Y-+RlI2}OVhh(d1FuW=9z?*m% zZ!&FlS*=(sr5V#$!$D1vchtlU)D+niWfS#nhiG9 z4Tm&E-boWTNE5TE$;Nz~383yoGuU8AQ{;g(acj~fj#DZn6w7Wfrp1Osnj-I{i5sLT zwn0s?57wmaM6=jnU=wa@85+KFTiCR$S*#LgOp6T%IN{zEzrcwbz=_!aC*}ho!nmpAkR*5sF#fC$kaMz08I5slK6SpBx+y{A5 zccNKrFysk$vkWCqku`aWaR@f!SS8Mw78?$E!YwPFE!H4Ui4A!Y2eb@bj#YP}S!^)m zDe*v_B5U$gvsfk0h!#5!hdd?T$x~#ICvHQYxDWEA?nJWKc`)QD@j#wpYw{FVGbofe zV_IxDmnTJlzN9wu>qYTn^J6%k5X*vP9%F>1OuH?56~&GhE6qmmAzn0gAIo{rQVrS zVlXG0Dr`QAusNJSxd;Y0r5=D&Vhx0&X;Wg*CT3H8jrpj)rtU;D*kEWAZf6-vn-Xi< zBo0n8`LGgaOp6VNHsPKXzqBbaXj5#1n_?flN!^KNvB3Z*+|DxCV(o!bwI;C=XFQ9I zX5k>G%sX;Q4CKUYkQ4KPoYb8t78}iiK~9+m4{;NCDEH)VM zlz9M8fCk$S>nIgZjB01H%Wg2H#fC$kGVkOmHONz9L!J^J%QJ z$y3c@l{jNsY&hfz_pJCOPpLtkxD9#YKFE{06U}0SAy0D;`}V_IxDZ*}Jk33j zr_7o>)ht$tGp5CcL!Rc|$x~*Kr^tppMLx)rx)aS}gCS42r)4O4%B;zgIH}uQk5%G~ zX|dsuC)~K=mpo+#c}i`_Q|f~}sXNguHW>1>@Ian2Yw}dHSS8Mg7R$pSPq=xdX0b@# zwhv3TRG+*)yZYTfzW?KQfBo(sXCJq_ix1nI-x!>3v-xV}4rSz1!~gKivGXzJ7gm zS$cVP1%K1cX203qpKoqnz4$$Q0lxu{w*K<)`f7E5BY(Kv?AN>1?fL!cZvE;7z72mp zE~0#1-M)Ik;7>TaYWxmPcgA-v^DADedz|58swa4Tc6Rl4d$Sf#5-k)z!cB7^&&*by zIWVLDU4Pk2ftCy;!k1Dc-RKtjnAf0b6b=_!c;`ZMgA1*0ZgxVyPwV~qc73Iy)H$4=;0=t-;E}A zFkoom0SwKp!BEv|b9Kfv+;GUy!aEt78)Qh95bm?v*3+vDlrzzc9XI|I+TL5Ct)N4U>yqt;5o zB)iS;Ml;+{7*ULyPzD>WH6yASZZ6M=mK(v?^tfLlBoGW@^$AD-{B*n8HS&{WIpIFTZLKFvvRi#GlG#RfjOpj^emZi*6wef5g07ttrjpKp2Kxr( zg>{OOIGxO#Z?!sOT5T{aDxP^~Q451b#j>VwpV^9|8HR_q`Q2!S8w!+)XC9!`!Wv4| z3^$i&Ov?=hOvN+rU}|B2DP{+zSZj4*(u|wmjb^!_fT?)q0Zc9I!4!r+=9HVuGp6MR zL#E=HcQUmw$&>~Xu!PsX1hkAju_=8wn&k!qr*N5kXpFnChEw7QB-3(ZEzg*i8xEbq zeJFnE)WV=s%#KbmKXfX;8_jZqp;OEQomyDasR)N-({gipMzq{G96H6k(hiZbzti>$z8? zI5)o=&2obwRBSk*g3@NTmK#?yFmiduwA^qA74uD~qM1Rc5<5bb_#ssJ-Ds8@454Df z2~{++CR8=c&E*->a>F51%r~KmW(J|+8cK9~%iIs4%I`+A++YY5Ze$rqsG^xQp-Rw^ zGUMD_o-r*q972U#UAz*iXl4+q#EwvjBMOJF=jL~#S#B_diVr7L(af4q)hsucXGF_Q z!XZ?+ImWZ)8ib155i0J7P~~?cS#A;xq2eA06;7hY{vGh8#4EYct5o|mK~YO{uI>zD zT5dRmihCzi%pg>$9idA75UTucG|LT!P;n20idhq?n&sy5jA^;y5GwASP%(p0$>K46 z$&anoV@PCK--~9p!Qd(G0Z%b&JXNbTt~N`LX|&pH&kvtJBu{i%3{gH>K92c zU-J21ssYa5eh-284d%MAuh;ntar3Zsr+sv%gutJ zQ?Um+6obFLpgmEVnKxxoOc*aM)#`t^4C zjy228j#&)@k^*8gHUlhLdE?M zs{C#=%MFH5B_0S>WKF0NbfnBUH3h-4HW)mGJ7|XDsn{M*Rp;CBcjV5)fm66a#0DmK`ZU9mVnry1ybk*szR44A@0 zQ-{vBi8YuKr$U+GtyX7Ds||-srQW$zVsNQQ7YFMm%8{Q+arxb7h8ql*N+ar9E3dFQO@s1v)o{~RO*3CCDvR@98h6Sxw$-JT5dR8 zD)r8#5`#;{8WwfWxuWd-aLdi_Mzh>t&=hW;8SE@uqp6zZ=JJebx#7Sm+#ll?P9+AM zVs>zf`8mrVzZ=bRgMm|-2RM~j!zocLyENzO&M=jc36Cs>}nRO05A^&2n>j#2+rq({jThRGD`|l^TR9u_ILCsF~q$ZhkkK^CUNo}}22U+K;Hk_SPgN@{YjH+2S{@FZT6l+3nE|IFyOMFD7Vq$--284N zyXC>asf7nPHMfUTmEH8YI%67cIBaU+olVURHf2{Z&d-Sk`d&1v4F*gtJb4A?(s!d7ZZKSG;ekudt+`aqaC3RawA^sG z)WSQLnj2h-*;R`ZhanGll=HjMEH@M`mEiW7pA>RJ?Dzj_ronWzZ=bRLqSu?%mbR5TcfF(<>vB?Xt_}^a4MO3hf{L{PBA+; z#r&LSkl&4Dxlt%^Dw%nJQwwW2B?@Mj=3Lzw#ad-^yxm@} zZkKPC+>TIjKZGj38_jZqAyjNQp^9hLgi0J;ZpOK}JY!mJIE0G%CRFjvAXJHl5t2o>(3 z8Azz&nKhvj$EccfZZ6N5mKzSC!c8(>2~|8Z2vurFs8TJvux&HF-`f7E5BY(Kv?AN>1?fL!cZvE;7zI}Vou}K!RauYk8st`-^MebQvY6Z@QGJ9H|LuOf}wveaUzAEn1xXA zyCiE%?5NV)zy0{*(d*NPm6TRoXa)TMM2ytWeX`+<__&Ae3;iqtKls(Tc%=ozDhEPJ z3k8kK(3A`ZDRG6Aq(;)vW;hOXnid0W^kJ6^^kH}YdAqqef4TX1vA(~tP)7eUO%^-& za|i-#>l8rrxdh(4n!V z;U|lhRp0Mw*sIG&xRGdX@x$_V^SFohKD&B=N%;}~9Q6adb+g*9KHhGB6>l3a;3K%q zr`KoSJpb=xTHxaH;_?sgR$u;Wy#jY_oIh(O|MyMHzq45s>(B5j-^|#IGycu_mvJ7a zeAOo~h#lO%{BAI>`275CzX6AuWsGIK-BU+bHT)y;>CFL$?|{(dy-G!{0_vV^0p>wm%aSrn(UZy5X^OCz2{5!ingW$`!X zU&SW1{r|Xuzx@8w@Bi|&ZTz$QK5zV`>A!h}Gx`;V)US0PxVjWC(L31hR`-wES&*-U zW5y$J9Y5~2cNlk{@3*gBaCFu4Ai67z?{l24F2!BZ8x%jN8v-trH-wM~Zy1ezL-5(; z4Z+#R8^$Bw5EFmo4Z-Qf8zy7l5TuhggwP9bn2vozkWStZR&DTx+1NJ(>EsQeyW$P! zW8V;@lQ)F!iZ@(X->^)sHrIC#h_@2xg#>ifY&$XNE1wFkhED|vu;W^53;Y zrC@qi14MI6;2~IpTO!Fjgnlmj9?|nyc2QxAK>6T?$*iKe#vV`Oe0am0N^#4vM^xm- zs#B;T6_Ucn?T1K0)h*Sa3YkkI-!dQMFiC1GYg7G5Pt7n_mg0K(O3a+l0+0J8Vs*5@ zDq+Fop8R9@Y4r)vI{eD*YA=5Q=5*lqzDZV}4`3j8t{@c$8!-tysF;(%_5FVLn?NTI z2-$Bjk<6N|?;g6yNv*-)ai-m1`mCGMl0_;ktJEPfP|B20_g!)BN+ku1= zZ#ytvV}(aj=;pRFawnK`>n(BB${L4a2FS$Q4+eJ2_Jiz%Jm1s3{YVRA2dYd;80_>3 zC>FMBWB^3&?H5t{pJlPn15OtD%n^(BgEe;D|8QwfPa3q*ZyA%?4@Q@X+b_5SmiBAz zv~X{~gw%d8x=g(Nl(W*`|L`Pj-TzYe_Df0acbL^Q%J>H!f?fYJPpi({+b<)vA2{?A z?|JZKCer)|OdcmRtQG$W89AqXi3;ggR+bWwhb7BpfICerg1IUqWLK+p(%@IWQ# z2(z#*b#KvvMijyZgdwmKn9_nK(*k>*9<uOrx}0a59ft;{&1-0ML{soPKno>z7*eLL)kf21F-7peao_ z{pduO1+{2GW6>lU5S_r$B9tbaesrR1aauH?5uL#PcjvJX?nG!p%c2tp%spbd#HB?O z8qrBKAUXjEO=-gEM<=?jq(u`N(MdEQI*CZpNizNDM3-x{XhI`8i3UU`5h*&sEf~{Y zf`@&uwoVP6nWUqWXh3ulk)o3WRYjnX8eMv@zZaTE6Ga1}6WEbR84IT$o#=Xh7ENeG zC((fDBqBv8$@HTWT}IEM35~UrXh3ulk)o4i`q7E5U1!mRMsyMnh)#e*Qw(|f(TOez zXVHX4bP^AUPN1wjr3t4WoivtVYuuNE=d$P-IUW$50EZ?tVG0;z;!X`ZoPKnoH^lb$ zLdYF42Ezg232f)5wBhs@PcRSM4qHR=h|z`v;**#ZpQO`|PcReQwhfH{B_0r<#H0Wv zoqm9Vx!|^KXhbOSfCvQ&KTvFW`Vk7A@@?COMu?IO2vGn=Q`&I)AqvhVwryy{D9L~r z1xj;J+Hm?Y3TA}cwxJQEBm;sJz|n*@%%&ft0FAe9Lt_mk84#rakEXQY^rIBO@z!l< zgeg!A#Ca(XfHb8Iryr&OkGF0^BTh*M#3>0WPRXVpr(lUd%kj`Wdn6eUrvQ?s^uy`L zDL~|{+t7$pk^ylFFlkB~PCrfoByZh@Mx2rih*J_$oPw3@CJqlVH{8~ijW{J45T`)p zLrOoKew>15z1p^+5vM?*5a)Rrur#F&ryr+acDQXD8gU8~3vq8lQk;@aKTZKGZ{3DQ zoRSWRQ&Li#f=BvHeLS>}Q(!x2z95wjh*MHhoPtFFE!yzUKm7TBd>#QrNfE)Sv}nul zql1`wu%f!eF=l&-sR(|6%#~cyqUe zUw`}IXL$SP^?xo_56h36kK2n)6up~$hllsTO!e+h%gsGD)cx|&{y-*iPs-3bw+nd= zDu;5{2gm_CCZ!xpCUR@tBtem!MZr6hgt3dG4l0cDU)zM?m_^cKD6oq#R|dx*du8D2 z(pun$^Or)K@5rVCs?bI+yU6U2s$gZ|uF)&Ogz7$3z|9jw3A7KA1AA5A>QWW>L8=pbx1FX8U!`{WiM5 zw5@f)g_rveZn_lCvXe5TbsH>>Iq{ehlL)(%u^P$>uT12fQKW(E*Zne3#=$Y8<*i}i z&8cgn*xeAv4BX`0Y;c{(i#BxMjFu0FB|WFEjR&V0_CMv?NT=C;NNcqlx_d^;v%_Mc zQ`bhZ#zA%ivAdpba9zub-8gt?q;)YYLppVBdSV(IPoM~CL|Pw3nkJID-!8w0gBeLnL2|RfQy{sp|ft_Z# zM7YXFkqEA@*d`XO6C$nNd|qEWcx$w5Ml8)bb!}AUNt^XpX#*)K+I(>J(2F*7Z;h5E ziA7(hu1yaYu+pXg10s9Ui#Bv`jh20hbd&ZULeA)T)7S2@M z+^*Z#pU=+z`A;|u?(Ozw4Qt)+_n&@Q-9D{fU*S^rIUdRU>V>&nEpAL%BM^0PEfhLr z4V|nh!3Pv-So{Y#^YZQAep>$U*FQn??{`o4*Y!1h(MT2zt1d)qPP@4Nkj;syG~FFu z&hK4G7BD@$d{{n08-LjB;Q-(3)qZ^s|B1#fI{TZ={`=xX?By352LIrkz|Pgeq!!FV z5x6Byjp;}7`eaTJ1-x20`pBOf1|KynMN8DLaU{ayI|X8agQA((iX&c~f8K6xj8W+C z2=*<9AqA18;uazqx2K6U{m>rQhh)=x5ev^NGg=F*X|PyE967#VcJclJ$2zX-Yn#@k z4h@#(1uq(=kqofq;~owf^m^9Te!LuCpF_y%;E=e zNOLihV4hp;%weoJtR`;p&6Wdi4!I_V8&bMw8a1HFsitv2i$RK-hqJ_}{xHrJ@pN7+ zYHXp>0d0h3iY1q72ei0XfQ*Gx1$HsV?4&LaYiW}|QCzLdKI)yn2*|rS{~?uF6 zzlECx?(Bm+3eSU|RkXFm$c4A1Nm9h&U6LGfJesTV$eay^_*yVDd7i#aUyIEwWHRng zQVVM|TZ~HwRZ9^qPinzl1>b5_oh_e=HM#^vID^q|ZB)dn(MnYD%_+JBYH>_W{BE=b zysx@TfH3($E&*vL3&X%(fde_Y?LulGRS zQ-cJ*gAd+|4*<=l646IoG5YFmNU?IV)GNBF%qNO$;(T}t+F)1&_>+}O4Te}5-ju6> zC#Epa{qOqAUf@K`QNMg zDY%`hn;X%fqOi%$4YVgr@;y>*6Q* zS|7gX8d1ct(2xJxLBm5gE{!U2+o%%5$dciRqF4Svro7437$W~+sfAj%^7dU?H3rXx zqZ>B`&sfx4$tk|s5>0%6_i!*B8A2O#3+`tCv43PM})0yg`o z0f^x^4s(Ld>|0!?tNCkS0;`={v@Og-2WwjxAw}Dk=3Zen%24D7(ok9&8hGIDVY%Pj zt)Z3k+16}*+0vM<1`Uo=vqgVbm!vhg81R>yn^!NoI`cuj9e6Oo7)<}PrD0*fc+}G; z_F#M=n@}~5MKcx`ptYnqY)lg}3(2bK_(bh@hWLJc*;+tZ!gE8Y-i`FzdcP)yx#`(EE zITn$r_@>YTCd_9oM$n>YYYZ#uS`=ZY_-2a}c))p6SE)A#DEYG-pBjfJ7>6Dp^xr<* zZEv1#F{_1%vqDSnR&&JO!>{~x`|y+amH($cRjK=KJKK9zQnsGL6hAT>Y8%olUxTMOf7R!SUHGnM2+tQ6a^(i5=KBQWzBn0yG; zwMq}cvCzuCO_{}}k6Zp8g#;%6Yz4TsFNBcql0#1`a8qM{+a^F)~qs2cmwNZ3T z{AI55O5q!&kJ?|9f2sVc`?q4gh!<(b7m2#HrD2rXhh!G$jHpm*qGqAbFOXfQ)G=jO zZpz#S$+3^X;>_b66lE)Vje4i4&%A*z|Fn8&=rNWm7?82^srw4f2C1I?-C4lbSgm4R4oIZu*Wj$ zaWfD!f1?w2nz09{0{=`^2F2T+2dKY(_m8vn{eJh`w?G8F3{b_+a#_LDaAATUp9-2c zRl|TMB#%$XM~8V&cI*YKgl&?J`7raDN$b9D((E&?q*t&@-P@YtZi!&IfN^|J$2 z3{R5>$S8PIw^I zv|T5CWLB49G>lEd;CQvqj66KykyaB|p$Cqa3j#~6PTz0xfybfcDko1oyH2_5gy)n^ z+%S6BI2uO7@HC8$SNqJ^!_(x^xIT-mZITFcc=7?qD_srJaG!^#VtAT78jpL>c+2oK z431a(%-F-zRK-gKc)t!&5OlO`eOx0T7)ywqljq_wJYm;rQSr z$2~dYs6u$dlMggr>1s&FG27{RjLOF-I4fl001BVbVT>Ba#~VA&$O9Fg6g+JfsLwKf z4)csKkBex)#PzGoEFnNXN2cbjeyHVe|v^f zrGaYl%pA_^>9vmfk{NKoqKdhEoNcnmj;HdH{N3ee`G;KQ~KZ zK#v)FXqr4ePkQiqkVBIXdX62f*aP}JIF&c$rIRP;_=H{Lym@dM2F`1JX5`^1ojf$h zC+t!o$Ph2`4b5S6dS2NpZ5mD|56tli`z)i*p(204Ty&bT2dK%z^7I*&H}o>!upIl^ z^NOCypVG;La(qIE0m>gJ7oBG80c!G)Jbi}b4Fi;KNREB&c_ptjKusQyr%r%8@(0L8 zrx|;Inmim&d*FDGAzth|za0D8^9o*RfSNoXPkZ<{T1I_ti-!SnxM;rPTy&bT2dK#- z^7I*z*UmkOeIasPmOMYX@OcF>60P60m=t7ulBX) zRXvkQWs`^I_=J6y(J(*_gXXnPGxh*Ad1#*XKy#cYf*YU`AJDwo*Pd7PN(0p7p?TH= z&CxRI15`2$n%6qb*aOt$p?TH=&BGj^d{FahUwdBFGY6>oA>D&YhC%aMrx|&G zn%g1sKmYLO|2fpj^t!qrJSm_id8(@XS)KL^kSb?TjYsn`25zl7zge9AeE(s$Uft~0 z|2f~V^FJ&fA8+oKaEZ4ceulSyUjOF;4r0YUAs28W@4MM|^>bEnzob0(mRSgt-f8?29#k4NhYyej%dF}4;c#BEn>57+9ys{VO&m@W$Bx||QXE}Us!bd`4yMm=IE-dm zotUH!TwPjD^$-TS*~Bzu?AYN!l~IcvZOW80shWp0tf-@vNlD7U)ul3K28l8oeM%-} zR7+{{*fGU}%A?rsAbEiFYI)}VS zKW}g0#LwGxt7H9W;Z8T)nr1|khcZl48JPQvprnX9laJroTul`1U0qHge2HOxvzwK`MDehMGZJ5&f7tA=xA)hp{rVpMtMu|WoBj92 zhuFO@HVpp38G)TcHC`NeUjDa*40t!167W}8R8&3Wpo7y^7fMkIDIsJ$FAM85jz1}^ zAN;!8?AOcNdmM~jor_nh;&C3%{~f<#IrKmVHEIOm4z|CAOve3bYIQ~RF^;y^+ui#0 zAK$-==Z7LL3&n&Zu<;zZs26IEXw)TxF1~wM?l*VqBeU-qCCPZDfo zc;kQd8<|B@=a-~4v|WV$-ObH+Ajb28yp0)bJgA@Lqgy0UzL)um6*RNTuY@$^(sTMi_Z#no4%T^+8oq z?4#7>L8YeV$F$CW?Xm^5K8_%w-IX8~!-n`(TJzZjzXxr;#=Ntp#sdKHVJ8M%Y`+gX zIXk|*TW#(w8c+XfSNmOEKJLL2!Z20*aK5>D^`eM?=Ah}>RUXZXPuZdfV8u6ApVqHl zfZ;+|fdA_0@1RYr+(r%$Sd1g`g&ar9lOML|w=k!{G=;9n?G{5I4mnu62aATr-|A}Q zdJCE@436IvTTr=sCI11M)9j|A)gX?{Jpt^c_(Hec(q@b-ew)^YMFiN@3%|d6IM`$c z&xMnjj8IgRF5R(44@@*CxL=#=yNBH9#f!(={dvXdS|~3pcdRV>X>nmnOA8N21t(oC zeONC{xx4KK-_&=(1%viOIwd?XY4BM51a04@@8WOM+Oi1ry4v!PV<%G%tr9lH#QX` z^}T2+6an1VQ~~}XNRhuizhB+KjA>Zo`RCQ`s~3oofgP{zZvBUnp-)$bQw@>#X zq)yT2sC`mJA@AW=e}rHCEBxyB_^U8XrSUnAR`^dU|D9XR1GQV>Yy;K*2&));Rs@ri zl@NMa7qO}jUP>nzuyhllspfOB`DU9sZ{Zip=XNCoMT*4>?moPdmsh z0mN2qz&|P_ipYfvF{HUHTa>S5p;Y-7#HtBRsva>h%;6yf7`bZc7(BkoF5ML1VW zbXB@kIq0zDX;s4z2#A-lumC3Eys%LiP_eWjRIpIXcm$eeLaAwM2HmP_UN21~>P6E^ zl%W}H2R0han`T7;1F>)p3gYphE-ktK1fiD1T0S`@oOcX|6eHqadD&qXC;Ho(xaL^1)G^dHW zOHHkM@Y}!rwEW?(f3j%m;bHwGHQn-=wu<5#@Harr)aa?(i=Af>0kOopt{xJLXw=m3O z5?Mp?B{wo~YRQ+7fx{sI6W2M79ZVwoY;iub5D;!kldgz-JEikJ`un$(UZ)eBo%$4^ z%myZk$EOdV7yiF+9Yq$7nuMWME!rM_mDKjUh+I3{-uHarzv&yj$&S`8wtyuV$a zK=uUq>qTzb-{CEbCfDOtXS7?3p)g21L=4r_@D59%$}KWybCnDreNgp6&*wOWG{spB zv$a^a+e1cgu@Ho>@+23`54X-0dMqwPvk%!*~~5`IuGV!g2fzm}LUQu9S- zzL=XY7Um09_9IHqz@%xa`!Z>q`c>&MSm`-f=|NcONm%JoSm{}K=~;N`S$OGLc+XNgPC5|^GODLqS4dX}X0EJ^8ElG3vzrDsV>&ytj$ zB`G~iQhJuO^ek!VS<=$8q@`y`OV5&)o+XvfqW4p#@?r9q@@evy@^SRbOg>NkQa(`r zQa(}sQa)1tQa+O$2{QRe>V6(u^+}WJ zlg8C2jjK-@SD!SlK51Ni(zyDharH^#>XXLRCylF58daY(sy=B{ebT7XSy*C*{>A<<%$U)hFfEC*{>A<<%$U)hFfEHs#eP<<%!;)hA`uCuP+q z6?tK1d$8)0vg(tv>XWkSld|fQvg(soAGG?M)yJ&1XZ0bg&scrL+7p&-PrZV$6n=t1 zFh6w#wm##dn{VMkEYTc^=pwul$Vc{UBN^1nx+vz zpkG>dWsQXf@!isz=CdmcIXBO)EOZQr1D;)3ogDY<%IcPQc4ePkS=0Nix(Ls%Y&l+d zc4f=$@$AZ~fcDvy&G#GQ3NfS}Rre>uQH(hY$F%giD{CZji0_tM*=cN1j&vS}bg4>k z$wVl<1f{4_m*Cc};VVd4S8P#lYa`X8tE~^2(!1S$S1l&09|Wcj;Jazp}d-F^5N3Da%oxl z86&I4I}k?J$Kj}yi2P+qr01Ln4R#Nd6QTNuN{P^~N*bjlOH%m|TFy)kr};}Ww9Cxc zE;C)ELAem^eih`@<|}tFD0gN#TyO6lo&b74wHNf8UQa~ZfwnW_t_)dkn;f^2ocwz{BOUGS|g2-jAO>ubu@N35?)S0A#zwq1S9`uceF zL2GO5wN?1~I(_v?>udehC#~lTRG+k-b5MQKTHZn}vq9uOfCW^KDc)4ytHSzv7Dcsx z)bVw-ht#t$xk{wy)>ERNKCuLsM=0S{_bqd83}oQ+?8; z+NMeMNoB2Fb5*7Kr1iX{>XX)To6>5oMp{)rtv;#9v8whN{8IJ3ky989tcwQ=)*}EB z^oimHOni5O5dh|)cR8Teg{4ZEtF5$DhDcb~Ey{~dRpY<+ou#EjUxyM?oKndszZWLW z!wIS#Tkz{L8j;>)W$fWH9Vw5vhg+2a)AgR9>UJR$zS*Wwy}VRx!BgtDqv=tyI|%Pe zW_9??py!y*3_OF(a)*gXtmZt&ba~yb3Ff)$D6Ygt(&v~C1GDFtPNehKvyrQDMLnar z8dua)Nvd(hb4&+2C+fNL)%c^He_xG1>N)(?_@lND;5nu%Cq5sUuVM z^J54p>)~2E>8lk5kwrjcux8<^+tm2Tm&eo(%iGQ49>U?XtA{NdZ~_l^seXXBZdUu% z$J_0%;%(yvd<3~wpI)DRb7KFyxV*Uh!@Jd&|AM@m^=_O$ZYKZtP0PQtSrqHf@GIZU z*o-s&&H0yc9;bZOC*;L&`|`WNyn?OxcX)i&E0!@h{%0OXi;Fl)8K1M0>+8XYO87%} zYaIM8+qREhd|vN9Y#-MbkJtZN-(2h-_JnKeucA?>v9NKLB^+&C|2vx{Q3@6AzhQAY zV`;<_o_#apQ9Mh(IsYm)sqO#A4g7`opML+Br>%bO(!YJ5m%e;FFV4& zUR+6PlX#t-s$}hoz1a_2TPj&2+e$Q&uB7qW=jNW@ejgAZM1lm^BVsgwcwD;~iqs3b z8x3?n-Hk?~^V4Ae@A+mP{5;tN=u{RaPm|u$coamv2!P+0!LPH;76C%}cHECHqTtE* zxAVny5cdaoJqT9I;01b}At!`A{{o+Txmo>&_Gj{QYyKKfUac0lEasR$%1I5L{5tBZAkH&AZu7eA)FazW?pyX1@6JH25&z>}DTt*NfXNzL38!xSoBOPZ?bw zr?=6tcm8(!;e9k5Md#5^=QG$WEoJo$6V}Vw2I9GyET^;JFIz1B;N-UbH-8npp5M%u z@16!{Oe)~f?aj?(14^^kU!9A8^5T4dRlGbu|0?^yA3^W~qO-pTxDed=Lyq_QkKpeZ z|7M4N5xY-+9QX?pbevoK90^(^6ci~nW3lxz||6FixInl5JBFBm=Y-sH`e&DB|U_iBlrDmYON@5s*y;FRGL z0fdMDW>=Gs;;L{nxDj{R`~JvYvG>0Iw4UKpW&X6K2;Yl;G5db}OTz?Lql*z2MG%A+ zgD?tinY8%3_&eCEV7an27EV&|Y=%j;5VM&5!k57nQlXjp6mI_Q^1HL_1N=y;6#HAGeenMQaW;$%e!aJ{)Sgx}dxD*p2`v%r5 zrTkrzq(1^iQotfA?6+#>O8%pGJej_q&pynqvoD2tjTJEa+N==^yUHiuHJ23|c9EU9|W52mAh^QW0u8Q6P^ziO3& zR%>?Q zP?}!5Z>|~p56_Bw5)fQIAWIfrvf3aj+c<=15lkGp|o7wd*v)%0m)C z&%k7F;us+PMZ?W31#hEZTq;S6_!@Lo<&wEdU`F>5nj>o>N=k{<@==idg*>XgGk zR;*Zj*&EKXpTM_&{pwfzX7AhJ>u0mYGAE^tJgSr_-XJW|4@(w{|qm~e+5r^ z7rovR`+I=jz>fsM=Z}8F$8ZV|sv$F+6baMvVetzd^Y=Us9{=_@`1&Pg?40#=$A?ko zGb;>%{Y1?WQo|5fygZvTZzofB>R%7vTDn&kp3gQO_5tL@RF3u#hXMbYr)G-`oc*5+ zB;*fy-k#=B>3yXaEKzX(q4KNJ8%r0DLdKW?VW* z4*g@w0Xa(r`mg~|@pW}k)}{NEnHuJXQYZGS*P@9_lT|Na1W-IpMuBMQR* z4Fa&*eF-8q3F7umb_N4hByj*l@l5w$5SzXLRy(=ftuA1Mb7Pa8yI*U31HgaGzJ)2X z_}+tT?Xci?#Y4sK%1+_FmxZX> zC1M|!o5^~9z1=~4H|NvU>i0MJ|K%Hi=(;SvUhonRUS$t>JC7J`J^25{l*gd>l}OQJMcfa}$ziXalQ8-B zbb_BC{V;wOO#DHrXkp&EYRIO0p(7USfr1|duW;oqk6@0oL4!McLYkN~NP*V;fJKBs zg`oO#v@-jgVL<{CVvhnCn7ECv%0YRKGjXh|g!W`#_xyG_{W}0aJb8ge>(?{DPkdy! zbG3ZQ@}%%n5qo~S%U_0d3sb=n7;2@(4*Drb3k&BXIkVZa&KpHP_{;|6CfT|N(?T#; zm0IIcF|;eS?Cb1FEh@MTVWjBT1P214Dk)PjTnELzT|)+RJ)yK4o=2f1R~@kjjkt_m2L91or@nMo41 z0TY~LhJZF673!%kW*_IfS37nJbmnhA60JsD-Eu&B!HmI#Z4z)T(j7H940$jmo9{7J zGUiw3Hw8d6-fpjN#yCXi6`ti`7QSsWVi6)Z){ve*q zFQOFo@k5(aQ9bM7(=c9_7$Epxx|azdY9)k%+fxZQY6@>@p@}klA@(_{#^LUGQ6Yb8hysfbBo#*I7LLJj9DGCU?ZuqizAbJ zELg)%3R|vrcS+S{dA4!vjfPQWuLcZ!2WV?!VeRT^x;VF3D}FjNMi?QK?620 zW?q(5nu9eyH!-ve>^*5bTz)xth#U_1c-uiC7XXXO{>ga4OqRWFs8YUza^JU{waSeZ zcTa$j^c`%DlUdXYU`MT_nQs6?MLEIcwD!D9xS#v2d#ZwE>nnmE9TjJPMffF39rD1Kq5u2od$9TDh1e^oT3fNR7Q02U zGXo7`uYqfv)qQ|)>Lf@H-SoYf1QndE?Id94eLe~Hn#8jIF%|YVa0sKL%Ri7fbqXA8 z+=W!%+9gEI-Xg z&%(J?Ig9PS7{PE>+X2m~;*N<6zL)t9IORcF`F9m}t+1KfR$AHJweSGYDY8CgNhc;C zj%T*ue1I(LwIskidu9Ii0s+qa70YFLv%3BihQ0CpEs|qDxT?~iyO`E8Qqx)tu6#`? zsl>R#izrkwy|Si7-?JWXy*wM6!(A+y+ zSeP2emM1W+;;0~1Q*2QuNKM*NQbCGj+UMtwvNnjA69b0+ik^sBh6M(2Y%T!F$wt6H zy$y19vtiwNI_tPlflZ2BfQ`$HqkT$umbbP~NGYbSvy^qPsF1s!GYoqxvJpn&49}4D z(A0QM_p~km6xox&*vROz#=!~#p>U7^3j3dL!9g6)$5|PsI9dO=ECi&mr$Mk#k15<$ z6)XO`!a~-eVgK`OSeSSA2uJr8iqY*(aLM;H2o?^k&BBWRtFUlni-k#kxO9>nU6E_b zOU5H>EG+nt)tIkXd08xAFU1x!F-e3nCxfFaGu*{J4TWt*A0W7^LKplqEh`7ZEGcF` zk~ZATY7(%^q~X!^8V=c>h5|PkeYWOiYI1{6J9aaM-8TMt%r2QR_h!DEPEaYtHr|3U zbL3qEqkb$#0=}rjw8k6h-7p(R@ouuHCm4&M<4m06vIO3NesWdnIQI_oU3p{l6By+TC*BLE#q{cn<^m&} z^nP4k!pGQCkWVi?VtiK?nw$(F!`#`bPOM`u=qcQV{lqE`&)SM*av6$0Sg&eFUwl}l zINwk(HOk|&#uAeYQ2I$`fr%SpdxH)hU14C%Ygl4$&o`O$C6+KBy~2`X8|NvEa}7(Z z`P!+`L}zQUHTygqiOkF>I=a49?DLE=YpP~4&P(%(Wx!PCRj4oFx*zx^g@LV^So+kK zJMK_@lYO1pkk)XpC=$DTlpcH40+lt}yfy9Yn+);N#A1+Gbz&V`&oExy#Igo$^-Y#_ zHnEtJ?QO3X)*}j8IXoB*kG=MT%9@E~PdiN}cxhs>yq)UA(&uU1&x+NDIW0z^8cg~m zoV%`ACYw5&Sk`doXegknI6O8~g+lF`iDgea$%Z&XpsN$>=nJ^s61RpV_f3{~HnEtJ zSy{2-yvJai9^1(Sl{FK~o_3OLcNSo*PAq-;$vv%DdgEPRE^^lutI>G37UqdlVZ6t~ zqZ<{q#=AZ3BpdH6;8UGgN4E_0#=Et^&7jeEXG&&g#Tp9ZJqeG!_Jhir70a4-4#>tk z&QGnIS^83#`&qIuV4aa=4;V+&d6{Tfi7g22%8*Nr0$23y*!B{}t7VEcICnrc$1^yl z%#=KidSrwfW7aap8e)e7!KkyP3faljp7F5(7Iu!A5R&Sygx0`;fyva)^P12P5Npek z@~!Y=wP}PHX(izb@3jTL4NUemuS8|SSS?wr4)mePlJVj~9_IJ+-4FYxBIzn*e|c#F zJNgIL`?xO#e_z_B<)OgG_v6IO0&&)uDDCT-jMl7y2@F`;@i6y~&F6scEeF zaXKQG?cUrJEhAx=3p&8TjIulP@T4+Xk&!9Z*c!?2lYT?Xxy<(_culq#$P|V95W7lN z$7g`a1>y(o6tjjaxy*cO+}DbzlPCP3;;6Fa(3;_a!#(weN4~itABkluly}!-+Zq^Y zWpiZ%yYrOR9vk9?C9IM;bpB6lPz?5cC zS!H5mEv0H`a+26Y#KE<;nD}r>&7iV|iT1SFJ;{FwY6~M(B#1tcH8y=xSXL6m)#6nmAScRsI@TMP|+O$FlN*Avc?;fP&Zh7);5O+%W(#c%1Xv0YHd>(nH&#+u8K%OZIViK>?9QoxG=Yr z5!za}MkZIH{G0U|7RL^tV8B|gSPSBgOuj*xE4AqX(XneSFkmfLtVJM4CS$+MmD<>L zbnML^1J-iInlnB!TJLNLvu0*KV9GP7tXZ6`8JHuJ#a^0P8MGnp?8^(HV+Z>&VBOTR z2T_bnW_M;(w$JnuM&$!0J%h@csbwvkH!@k~<*CI0pX$`Qx7eHpiN=7nQ_C7~Gcp<5 z+0<&E>y=Nfhf8|~l{Hh#nwb#xOlEm`ZdILPwly3(+l!4@JGra@T4B#*YiF~oeZp5h zyB;q0nUPsDy{y?=VUKK_qeWNU(sk^VFE(QB^s?p*hdq;do=q=nF{B5~fM#UYOfPGO zYuF>(^HFV~S#)gQkBwM6y{rKRVXw)eM{5R4k)a37gJxt_r&nw(z83cAHhpcmS$u3K znvGaHy{x%9VXw)mM^6Y_)9c}~p&6Mq)61Fx8}{gSeJ!46XwrQ@`Os{{+UaG@-3fap z%f4)r)*^b*u`^ECh_!sNXR9MCUJs#{`BKI7_5rM8qrf-`RnHxJrY6ovp>n5+?d`d9 zY#1iQxV3Y~o~49jT|Ia5fHE>fkD0%vOGphd*h&UhHa1%^gD^DN-~2>MrcnFbVwU39 zHbZ)RZ|Jd}lLA%W6Ov^G+H+)Ze6N^SHMz1`E-?e1$`;4FtFtCiI1G(`(%$A^&{sKU`uH{)e4T6vU_ovUAYsqqMqzSx7~+Lv zB-{Fo`Pp_4b_{eF)+HFl_F(DI*L@x1L#MucDu)-aol?URvm zHa=YDbOQvEJEs*BN|Bl+yDk+n(E}yNC(*U^&zwh*YK<+c53Hzmdt6s0gn<@N(>omk@(C zO)-m`h0&*Al4zgyBBt1baH>=vy8}ter3R900_5seGwlr;mQn^s3D>h>xBqz3ed<;?&ivny!&?`PktQj95FpEUxM%<2##P?X$;(2lIf(N{4Y>C?K(y zJyvW`Z9X?L+YQ8ew)bI@d&@@9!7vzyc6!-c)s5|(v*~3m(Dab0)vSB-{=8WhwPQ<$ zy+{)}9TQitY&WP*ucNzytT(e52G~*Bzb&rn#x}>946H@q9x}BWWY$bCdmgp1HF8;Y zwKZ+Y(LHL6IG1A(KPfRF#HodGxCgTT8tp=Gj)5{((k&sP$O!S(%qvYto1V*f# zUKUq%lWAX8yLy1{=;^UIu2;(!i^~z&R>#a$=gU5_b#%NT(Oc|^MQt)!?B!Wgh57c} zIl8-?=t1+u9@v+dK=VA8ilr~JmF7rkUfK*+47QTzm5t3>48hn(7;O}V`s_23t)y1p zo3*LsWZrprPYBEc&}Wa4(gLqZtIboZ89QyIRbw)pzISX{A>0 zyC&DnfqiOqY&o_1=*BhZtV^xtblq8_PHYaCq9E%ri+mJwm@BE(oQcQA5>vQK#bITO zqrDIaIwS0kaO`cT7#`gJ1IU64^ zwVJh}-fI-oYzDvDi@`Ovp@wf`Nv9w1Sn3dD*09lDtO<>sN!x@q)lMETwVHLYF3-um z?`==P&3&x*zqqwFKOZo)y4udVK%lh^+}PE+lJQzib=i;U=y{3d2G`ZG+T&4EN)?a| zOAF$|rB>HAxlZiGM$t7|zZ_PCSDW;b9Nl6mx4N#5(%uv^`V`pT0r^;(Vh@*EUEA(D zwU_nMH#s9^thhGoB|Z9?Nf@yugv zR@ZiJPA#&LZraxad`AZ+SQ}>D^s)!=8M`r;)vg}kJ9_dk>#VHfi@lfwS`X`E4kf-I z*rrddKK`OqIy6Wbs5M6!-Gr&!slt5wxZn2J>0PV~vS#k|?SXxyHpnb}nR(4eO7qfY zu(CeJYMxg%HhYuBWPh*6x%%uglC7jx-|#3`-%NI!`N#3i?P51yFXq$9ZoXPx zUeC7kcgxFnv*m0v+0Cvmr|b3Q%fI|M{{Ck7@d7WNVod)EM;r)6}XNY zVW3x)hh{bF^vt%uJuO(FI1B8tTh@QDl-1?-i@nf4fArs&OW-%3pX^1(=tq1AT4UhB z*@mzK8!VW$C%_)VOrFVNHJvQR-;XEP*Bi{zce5SKB$+LD>)nPUcj6tGdB~CI@jnGV zyUSF#Hzjhw-6FO2_$#xAuoI{ga=Tk?W^zVmuQ*%PgdL{Yz2H%CgzmBy9#TdM)9yWi zcjhSL*SEpfKY&G7OCZJH1fT!%-OrzYyVq#;C}0j5?&Ir!!qUH-e!?3=eD3N>Ts)gC zCfQB?eXlU2$-5ce@nSt)UC)B2O!AZKe6)}8;QY zm2NT8wYtSAwxwFpz6@^#?10A`doaJu4)&fy6f6SK{ApaLA??IWcY(;L_GtZ zA!xRzU{)ZFih_w@x~pMb$2Fp!DJq@sUm*q82))BK81dR2Owepk!(@Q_E?Zd1^@`N} zON`N7_3ApT5%oy01_{^j4%lGCYt<{Ui)=)__Q*y>y~G&ZRj;mN8&QvfZG;qTBlHg2 zV8mndIgz*dE0P$K46Es`X zuux_>+{Hd@)G#qjXEh9DcO2sgDHumY!8juSFb)u})i6P`JqfFq;;94Q6hNc{siK)hDH1kLu;t3AL`Q7w;&7@m1x28=_{Y)`}NU>vH3iDA0C zhjkv~h$t9GM8P;B|FSqhynYX}oW>CygmIKSuvCQ*gmYQa;(jq6 z7u_#DN_VxZ^Y}(Y!8hWVpk6VnefLbi4ETni*`9*g!8cR|6T@^@!#a;|L?nEJpkS$g z`ei~lGK%e~*FoS$$@Lm2dsmu`&|S^yJgyN_aE*9CP_3BB-mkq2#A_WdL9;dGireEF zs&a`TI;&kEx#O?~PQhu;j2aP?YviA989)tAu|3r~2-B$eUCj0_`dxgK?rK-(QH_{_ zY9tg`Bk>Q{0P)(rOVDgj!R!DVs)C7Ox~pNGM>b*#vJp~{jnF@21H@}JOwepk!wy0= zO0HL=s+Sm}yXw_>SRMGc$MKDXf^Q@gfFtn_ z;Q;Yk4HGom(=a;_hpJ&>nC@y==P{0if^kF?j3e?7;{fqm4HGom)3Aduj*h=+5;RF^%7%rSG_t9a3mCfBccEtk$(UO zh}Wu@pxK^!9RzSxJTNuFEQaZ>hIJm}NGTXcO2If%|1b^^uhlR?vo#G%?O+_LhKXT1 zt6?C!;}{2;*f-~JL==o8@(<$x@mdWNG~3g#gD{Sg2bQV;hZv)~>eYFG16|ge)vHed zIQsqp93Wn+UV>(O>eU|LsHm41qr2+Wd4MCO034K)ZTvgf2Bd41i&Jb*w_2kcDst#{ z-aNX0cik$aAR95|OqvLR@;r&&{3C1|#% zTh= zS|b|c>>T9M?&bIqz5ULE8UqTbkx-84P5gs3K)hDH1kKjeYtSCosHm41qqDmgXzn<& zF`ytDAqCk8{X3r*#B0?{&}>h=+9MlrrAH-~i@WO8d1zxmfi_YKw2}G;ZGd>KdI_5C zsaJbwqoQ77jP9ye=b?=O1=@%x&_>pv)Gu5f#B0?{&}>h=+Cv*zm-wRZCC2EkdUYP! z7*L>%lmcyJXPh=+Cv)^^%7%rSG_t9Z44>UMnr)&BLAQb5U=08ET?P? z+d~^!huzZd<#^HtXzn<)F{D5nDFxa{{ew0@yjHyg&DM6WVS8w!qF!Q*&hB2Ix$Ejh zfi_|av=RFUZ43?2hM?J=dbNi(vhIY%-AjzoUG?fbv@xVW8+{72(f2QF1H@~0FF~_C z^=c1oRMbn1(OvcGJhU;SKpT|vYy3OD2Bd41i&Jb*x7y>3cS*DX%7HRT$$M>Q(S#fRwZz6Fvy?sbhQpa$jG8vjnM0qI)ZvV1V_s6C>g zo@vNO=&ojU9?uw&@C?d%HQ9lCeg(TgyjHhjPP4szt395fDwi0dyV})xIAcVCGeXL7 zHKBjU)qr@db_ts8X;*tVBRjRfh!%=5x~pEDhciYLI3uCp8Hs;@28h?Hm!R36dRag; z)Uyo57~NH`u45W;kAi806ig%Z4%1-7Yt>88Y)if3UVBUMxYCW1%f(&w>N>O$_bAXtN`W>~@1PAvyjHyg&Gyu*J+x6#FEK`U)vN2!M%<%7 z8xaNC$Xbzlh08PIwdy5kwx?e0p^dB`e9`w3V{})&IuC6?TFr;Ar4(o*JLTLj^#bu) z^%68&Q?IZ+v{6wnF-B+A3p95e+6XDoMnr)&BLAQb5U*7)L9;#eY7cE>y>v^vm)l7j zaoBliBcwnZDFxa{{ew0@yjHyg&Gyu*J+x6#FEK`UcdyPv8zBYSh$+xU>>soN; zXd^N~8>`KDv5ZEe;G1Bz;qB+Q?-#ho+unrE$`w>SUTq$;|8NSdX-Omzirz)9x7>aa z1i|_F`M3D<`J?}yecbWi8;9T-d&#+$55rxC0fb<~1T#h+YXZ!*Tco9$Tp z=-G0&-eKOwQSfN7nobtu?=kUe(X+9`bJ5`7bBgV8xxIg{9-qla=yjWD%Re|S5-_7(p@dHUwBz#e&An|mT6D?b6Ckhz7|o-skWwLu>=dki%10vw!774Ch?W*6?b(@ZBVn0 z5yhP>AEdJ?2BJHj&j7rlIbA5>r~WnRSaxKwZ!Q@apj9$Sw>>Ruk9t(JOpelBHS0X` z5mS(lkcNDO+VlTh-pdTghosw{npr?Tm|0%j%;YHDRkO}RA2A8~$Q^8iJ@n}PIPnqu z00Z>9Sx&b-HEWN4WGCGh)hx+J>8_e}9{z|a@JC34Ke7(F-WiPs_(RfdPtDrHA2D0Z zifSfD>8_e}9{xxu@JEt6*$umyj{pc5px@1Mx~-{M(jEb+sF{?GvuXyaI}U*)6bK}u zK_HQ~^?}2_85p2dGfB5SHER!nBx+b%j?!H<>pTRKP#}<$27#nLLLgv(R?Q^c_SCFB z1X58mIZAictn&~^LV-Y{+{rc@jamP9-+VJLK&xhwZhLCh9s&2qY} zsae_{0?B%7mUgpzl+LOdsO~rfl2Ra$J`Dot`v`%60a`VablX$2_7F%#&EzQERkO}R zASnd`;nnv|xmMcpdxvpGkgrv;oN9YI)*k<;9Nn3+d`P$)UdQ1rMqg@ zc?e`cfk09k1d{p)fq(&8HIsDPQ?vFENJY)$DBV@F&O;yr3Ir16P(Z_O<|70G258kx z(rr)8+Cv~&AL^oSCP(S6nspum8B!pSG9(e3!}btJMa|?W zomDeX-EjzHNP$2i8Uzygm;(X^Xw^*8ZBNbGLm*ja&(dy|OUGR`>pTQ9q(C5j8U)h! z5dr}Nv}z{lwx?$8A&`oi$x*tiW}SyXh7<^dcE*m6N9=%nt&-(b+tV=%_=gfR%g5-h zhIJnO7*f!Wn0CHSc3hx$ZkYl7kaXKqvi9hQdi1Frq`O+ydGKRI0Y7M`>-gAS3FK?{ zv7BmaDmH45d}J*NiY{3`NM}_HM0Xtc7*T+aI6u6_j4#GM9<2igXq8OTZBNVE10NMF zlcRK3%{mW!j3~fINIP05Yhve{y$A+q)lAZDPtDo`AK4ks#m!8P(p@#{Jn%8103S*2 zUz>Nc?A%-L)XV^VNV@H*S$piGqGocG?y6bm(T@=Y{RnC3N9bdNB``q0o8@%dQ?vHy zN5o9?(r%WI(p@#{I{cCJDDX#;JJ}7pnTG%fV}Mr8B;B^uEa|mJKq_h`N9n4XF{--_ zfh0W&1QOC9kgP4MXGSAqfL6^U-S*V1Jp>Y0x^m{yaaYZ{4uK>+3IvkUAdu`7ckk59 z0D(xl?WtLN2&AHBa+L0>S=S+uq(^~3A{qn|d6@md7@*zFB;EGZtUUyhwHPk?W^$D7 zs#(_|kfcX}K+@dFHv49&hY$#3fL6^U-S*V1Jp@uwGdW6k)vWUn2$sd>W8)$k1d=rw z_swVo1GH);>9(e3VS5N9Ysy&K&2s5Dt7f3O;}A$lfk4vS$!^%qJj?<~zyPh9NxJQ+ zS$hbiqGocG?y6bmA&`&)fy6WjB=)euQUV5O)lAZDPtDpxAXyu$;%+8K>8_e}9s&s| z5J;Z}f%JWZK)?X4nn}9tsabmnq@reWlM^D(-sVVy@mA`1Eu)6Uq*jtuk-{Qv{>I+oLIP01n)=!cSKC57XxmVxMwgC7wE z{Ggq%<6(=X1mtUVET`I@inT{RvbF?8mnO7e{J5)va@f!Q!@kfA?dcKX6><$ikit$x~pcLM?Yc;`VrHv&2UL1PsusnWWpEnzctj zDrzQ2>8_e}9s-Fe5J;Fq0cJJJTC@6QG=c$IHIsDPQ?vFENX!fn+DSd#7dw2t?9tPtDpxAQd%}qjXozIuC)w6bK}uK_HQj*&kqlb~lrB+f%dl z5J;ltf5=g~t7e^tKoSZBlIBjf*=S6Cgh0Rmt(r-?t*Kek9s;STnH;6FY6hx14uK>T z2qdCGAX%ev-;72uK&xhwZhLCh9sev1QOFAkl4c}O9>dDRWnJqJvD0&fn=?$io2N{rMqg@ zc?cw-Kp=e@1k(2r0s#ZGY9{Hnr)KRTkcyhgQM#*Uorgfu0t7M~F1KF$j7 z+u-XTR-4(?a=QcVpMQ6KJ==WF*de&W9tLpfvj_NvpC-H6a{3AH?ct+WSGWjq@ocu3 zWH&FeuY7*Hoc?_|-{HxN^>lST3!df!-QK==%s#n%x!UZu_;|$Lbi2!6hTopOdOZ&D zfg+s}O6gt1s@S$WjB&hJ#yAu3n;?6Y3y_uDW}{Zj`VY-53`{e-fD-Jvg|}(B^+idEH5@W|+?&}BlZi11SD)_}kfIjDVZ}oT zPrO+j&3{go*Z2~QvpSr!vu|4bJNqj5b+&o4+RlPkw>LMF&8Mfq>-o)m`7Zb{UoEob zbldJ1UQagfX1idzSWSNqutd*S*H44^B952aKZ(0o6=$2>WWLFuPgrKHV4PVbZUXzPjCwp=b9) zd-jX}3{$4>d*bcu#`p8(HRe`3jriN;cV}M)&tLugESM}Oi%cPy3mv}`y@Y`Fg<{#{W9CGZa33e zaJ!wnn+5H8@Y(mcqA@Or>3^%v7!5XS6t(HHpK%gySy*>opAx8|?$ z;B?HVjINKt@Kt?wcxLm6=1XMpS(EVUllLU&%eq(@JA5*ka>)_5Zw7gj`#YH;O~2v z@s9(4VX_`i7rzGqeu258aF=iuUBqe1FEQ-i1-e7y{@s58jbRSzQB^gU2(}D z?%yK$ltYhCrk|#Z8K7H`A@5DzY}sU;0no+mtL1LC`2g4Xk04*~Ic<0r!0X3=k?S>rd+$K2~N?VfgzIL$>)e$S<`-;fwKa#C`z(qTUc!(dc3{ z$mGE!(;vm~M6x%qxAC`R?_RE~jfPVdJevWXSO`h7-}n-&g#Cy~Sh&gjy6gk|9Y3vB z>%!9l?OIJJyr*zkWLx37@D4r~*v|@vvCHfqUdy?#pC4D42H6ge$5+6k=h=(>^vJ&E z^=7^dtEbq@?XZ=C)4+HxT@FLTVZ%JNQhnku)1AlSNVLr z-v3I0!29IbIWQz?@)QUjFe>pc>h;AHUa)zX{|lAtF!&$5xtHJlG!qL4d;k5?(rW## z!vJ4>S^`W1u!dcA32%SX?ia3>%(VRF#m`TJ@a!)i*T5TpT&&(qpi;ed-&})V{_yPi zkHOCft}NPp_0{(EYMp%#8zs<>+3vgPZvJ8R*ZI5mjF7AC538Fu^JS(yoR+I?4wt-G zvTeS1_SebwAM?%Z`j^@6b_0tcWOsgkzP$ma$u57LY=oNdugvv;efDbm%Wje10BXwa zVFHQU=e?)Fe7{ZrsO8(pldG#QfNUckcs*MKBKjs6wlq^}CnNJdZWpt5 z;`}oB+wIL8Ky3hufxQWI4QSdB23SrgUWQo0^Oxs6+~C2yKLyVid4CErq>TmW{x9Nx zQ4j}7kOuu=5DbI=hi_u?f6HvY{5vvcXK)|?$zZpc0J3KG;}+XPh=}61_@1*UyNH9c zIJ-!Kvn0DngR?Zd=m%&0>|zj{4YG@2a5l^?n3*eS+T*`LY63pL;X5Wk*r$^`1S~_M`-lcR>Yu-fMPQX^#%^;vD-44DM%^Gx@wx4K zHqGYX+sTwgI9YV1bdSgE{yg4puW!by_4pM&kl8-$1BiV_gEV-Q#Q`SYf0#|jNDRrM ze1Fbh@i9B}8{yIYpTa}qqtg3IFUsFnepPy7=>>aV5{;5ke-MpWWdR#iZ4ikatzTjR zIA40r*mRgAO!2?UPqdW;BGUy9cqs{%fn1!R_9S77GnRhRhE8Bn_gxZ*tCrYePZBce zw`Pef{iF>^U>)*Z5-eT#essc=hFki{gCvm-#6I!e7}09qrGSjx5=-pqgUrsY(Fa7& z$8nT}+Oa!i;dr)>?RV#25Q4e@8Z)`wtuFA0?{km%=jwMm>W5pCBH3t9)TUk;kK4}jiE6Wn5F@A^7(2XrpUTrXq*`NheGlM)@C)aGp5-vq171k zLCR1(q%^Hhn4D0@zAbYW00J`B!VJ38TRnW%=XH=+R6l`TSelTiJQxm_2 zDV&yKO6U(a>qlmxf&RXOsdPX}dRSDOx+jSLU(lnEM{jC7t7n28NZdh-y;j8c?h zQ+vdc_U6lJI7%;OALqMQyW2O#M{icwpThowC-hI z1#DGdyJ>z?SO+DaGsgh9Zscjx{8g=Y`S2=JpHasgSXY&>Ht*YLV^&SgCd zh2@)%zQ8?6Ogp|w0~nc?p|WviKocB@+=g7f;YM(j4hvTB-`?bQFnj;Shb;ScF}s*Y z>ELDWJ4{nt?7fj=a}X9cA2)bcB8bK}#ujA*eSY=)MP&!YqBUE~Ff zHH8-#XDcQc&(alE*Z{L4x5DI1$xSU@WD<^YJUTPWGTUnqjpuKX>;6GIV~*v0goD~8 zmK~$J_rv0F(2kRZ!lp{m$z;4){d>%!8E~X_+t~tHIxuUCi|I=|c$Gc4z=LcJWypd+ z7qW#E!p52kk1husl2NUL$sRuN1ej6ttElQ9;Lj935x%c?kc>s@fB|KL@IVWgSy za60y+g5fy}EOOlBkz{hNVR;c+D{>sO9}{1z2B~mJQg;~+C#1x1$pMQTH@P7~^HGJV zO!7mQo>8AKL19=AZpASDOBBlySftow@{84{LNOGxUai?0Yno;Kgi}09>(?(B>I%Wx zA~se%`hr_?=jB$~>NRNJdW=L5Aaa?-@@Br@T?+Jm4}2uwTO_r)eJ-~ZtxRD_%P+>N zvHwMjGBttP`7(vWoGKH!S0J;vc7zS9br|L|If7s{zTJ^56zzHqr|>iqfqgeFCy-;9=3Lg^(8*o}9!}vb9aFvkdj#Z&<_yTqjl7*z${u3%JESDxsL#SVL67;&`JynJZ3Dsh+f zCJWpm?;8#hV<%A+4iXbdBM*)^=~8Nn=ZIC#o+25ro}46>7VvicL1Nf-l!L^?n&U!J zRDJLqgjJ4RkK@A@`r351)Z~nmGjFo=(JZ9Hj>pOp+8!1u(WTRXrcx}&;Mi2d8=~MO z5(Ov4Q}7T3=CvLX%4+uIBB{yQ`ESJN7|4wh?Qa710+v88c$DuPuKFsV=`kBE45&Q? z6+2l50IO_7f{el?lUu?Hauzt$3Tx{Id_r|40Lq)$a)*=|o|h-y0q?zfY(ALlEFa-` zl&Aqii^R5Lsma^Oe}y06Y-DP7Af{hzg=3>*D<`-eV@*Cy&e*7VwvL%$+H{QN1h-=>{I%#3HUv98PCex^XKa=Pp67yRyHH`- zb#?`X(}HNIOjw{umKsy z;FYP;hx@EERXD*k(aTiZ^48Wjxyw0YdACBd4Ori*&|zl~lxrEw32w(&iih1N%vhES zO=yy)O8acaj!k1R8Tuuv( zXWsfQeK`4zQcd+zQbd341K*+`8w>ZRI4Zhr{&b8O2HWhda3eF zz*(tQaRyGyiAxoyjOr_Laua()oZy=l#s zV0~j+hkX}Nu4ODIxE*6D-gej{OxaLW#EUkjq%Cts7Cotf~f6zE zEvGJ33fh1Lm+=O>clL)T>xeL^Sd5*OYZY%0)SS9tDS!i3d%a-Y4wnw9kb|J+)CFtI zLeI65l86&}mx;qplF>zBLJO%l15=iH?#hIeT%6FmWE{}0=dFco95j?|_P;|)@GvWm z^~wVW?Rwr?2pm+h z*br9@-43jRzKUQw5m_BkDi0z`_D+D=4QaYPFtktd=g@?=N#dKIi;#OtkZ3z#lxF zbvvzv5m?z$JCWBC_9)5vSoHOxbvv(RL!*8sZ?(=3<42lGu|qSMtlp0r7fE#zJOK7*fg=B1&pc z=Atr3E2=>clCy_+i5P0z{-}|i9DAuq$KZS(btRC?L-$wU`4c@$aF!YSc2AK_0@`2 ztjx|D!XQu;tssZCnRpv}4MPetf$dH&TDOC*jKGR$J8|xM7@CR~_9sMT4W-%3a+4nT zt`FYg3rB5WdU3&F|A*CRJ`SV!^*U~Wsq;@?n^V3j|z$vD!gF2%+ zqPW|9A!%T)zHN`g>;?H+vpT1`C4)&GcZNnaF<6__=Q4v$KDVH{C4)&$H;KX8%s!VH zY;wEpFqo1j&#aJazsk&!(m7RpnR3>`jH+q!oEX})^w+?QC>}pI$TX78S4ekdTlM*K zf=*t#B&R>~9yHSB8Ghr)UFp`i{eqyAmoCZgH%XT#`ME6J8qdEg(xntD@RX7!n^D{D z$7PeoP_K|vtyl2izk>fr< zZi+Y0Q!kp>t<3~BU+dxLR9j^?CHhQ3Qq3Vc3pLtF zK4wNGhKdeJ_aSpa=XxcS6BtBijYf|9m?{MZXhQ*#ZmS%pU<;!0QX|KGjN~Q;bV1T> zmE#n6L9}CPX^7G*otWAq!YLE@$96Eu1J!)CGM00uZT8JI&nK6(gu+#z#>WNn7Apm zDWc&>qqXE?E>>!&PLXsUGADFCSV}2Y5iOw_IqqXR78s!S!SblNRgRNzhCBj*M(g_W z!Lhzol*93u)PytSbX(;(31`T0_y&&q801Y&I73diRgP0?J+Ph`inQcv=PXj5R;xWE zNry1gUmq-`6n}_TQ#vaxUuxYIceVUOlGHJAlMt3X9*p(0T7oHBP&r)flhzw`(Ut#X`#Gl(uvjU4we*4sDW43ciE9H-z6qW4oH$9;_T_6<0Lq}wXT zDfJxqnE>RFc4W0cTQ5rw3~#mFiV;cDA(0b$cj%6<-t|Bawq>gDf1z{0A$aLa% zKFU3;A}o@mj)~h;D^uu87Qx%D?MvovuZSUV6*lC@{Lgr?L<_TVq?a${;P@e>(k13` ze>1)x>$BP%=Bc61MNr+6zZ6U$=7IJG{_1ns9Okb95fD_j??}#y76htrfgtDPMN5JQc=#F{UbRp$ z=G%h1qOE}jI5{UTT1rJp%=4%kY#IGYA@15TBSSrjpjtlzN-fDkif1`8dE$9XvY6*k zHE>&>Ip#384QEyes;zRHjmzaG~_y=qmdO`Dr)m=eXkA4v3bWG3`v;^z6UeJ6eb63z+v_z28F+o$% z5^NcILAxDaj(SzJM3B=lK~pL~5=xF!;$e_(P$#_aU%y^1= zhBGDv)i${ul5hh`Og8Z_CL4i#y(i15w#sc1Za|62CLYFQqtJvKaH_3xn^Jm!6->WD zyPYKzh1IeHLCzs;^w+lvDaSfs@ze|2?VOHuW(k8yau}LA6b8N0bT- ztYCVR+wBaZ2n1G4?ha-UMG>VQ16zh(&~9fCF#;=s?qUW}L_tfiZfgZC)^um%Rv=In zv>@k@h0$NMB%+`t*fR8jc03Xd0xN>%Ad0Hh8G@W{2|A{rC0Muhf_6L- z4FW4BHz%iKf~KG)*fR8jc03XtSJ4tdPR9gIsYyvGc~hy6c~h~WCPh$v$b8WGRxza} zC8gv|r9S3OfqcDhWj}8!CgBE@m~84}Ocvzpxy`AzI=4x<0VO7z`WTaqO}K&mm~2d` z&cF($-=H1OAOe9EORS3-L@}j016zh((2i#ifxwEOyO==~lh6`FBsz6G5)A??g6?7@ zIwqkdhDdbkcqAGGRs`L}NOVG}N$FGarushSO@Vx^{VAxnX@4e^nv^~zZ>sNO-W15! zbDL9bmD?2Dpiha(_I-@WCI;LI8>rK&{q zfNAXhs<+r3=BlBtMAF@k$0^0%7u~8Fd91h7-Q_VDp!Go|-7R@c@$yB-szx5`GbSD8 zvBA%mbhqR&#kUvjNg8>q&y#eR#|H0S(%q8Bl;Q=^;7Zp{l-s0Zch6T%s|5^_BpUnt z^(|8hh#=Zr=>*JeQI`c=1rj7lCof*KPAzc=56+nT%RfFFvksNPDr|~a-4!Qhz?kd9QQHy+Be_~ zl5VRUr{D~t3sxh?eT>BR4LF0O+bYK?MGc~1mS)?QtDU>scD1lUl5_|&{q?~Hl!G8d z+bo^9dG4gcJ{X8pvnM4<9TPVNVG+%bW2|>z!WnY9t#X`F{2&@@>9%d>Gm-|?0tiXc zAT#xbt=1S%hU!gRtZzbxYhs62ig{ z%F&5C-(;K>H;AktEICOX6E~%F?S=6Lj%qr>9)#o3eF(9YBh4)$5`*sfHO$Ct#X`F z6(ahH>9%d>vz3O`st`%iAX^7G2#aXOr4hGW z=iL=|6=9Jibxhn8ghg~1(}~;pDEF|6ut<_RCT>ctjOe)4Xf64er!_Rx%1F8onG-r6 zY(%M*5xvG5IqqYg78s!Q!6e;QIZnYDMCYwWj{6wv9T{*2Nw-ywQ*Z{+eXEhLhKG=v-F(TS^>BQ}Pwi1X`k#b2=$HYxR zSVRvpow%Kka*wJAizKOI;-(-hqIH)}+|Eb2M^%JHlGHJAQ)*>IXRbzT$;Ujck)c*b z(tXIB(E4DMS{c!ktdZkB=4p)#wK9@!s~jic40#m5oEc~6Oy+JJY-GY2a=I;YJnoTj zh8&1*;JAmeUd8}D&XCh>mE)9(5z(Jaw{5$gtrYjF6(f?QLzwBU4;J?*6(gccnNHlU zXDcxxD?V5!vz6i=31P_(u)unnowq&@d%>gplrPb(%-!-oMr1|YIY}MUZW6+hA7D{0 z?tGJRHS8JpY7my3q>hQ3QY#~R+%$OvhR$Wq+NW{PP%9(pK4ea4e6YAjsg)7E%NjZE zVV)LafYv^hbX(;(1!oYQyc#*~VXQaq8E^(kw^fc)a0b!MtC8a##(LwP0cVhOTje;V zVnj6l(ir7(wR3mdu2zglk`7^}zdjhO>wiX<(Z7NxjE3d*iy#Qj&(FWbpUvQVb$hqg;~IF>zB67SRMuCvMlH+;Lb%SR_du6E_865v{;<;&wgC9fwtfMUr&N z;y!z|o9t#m9DM!iSGdp7x53xXW{b%uT!$C^^xLynug7ulG?3FdW-JLu@m%yUO!Q+f!v?>?P51yFJ>QS zo6ngeEBsmZmVlkFQ+STw_z6bTa>}fx9=_-5ikVLZQ%ZdQb1?7k%lQsZUaY69>lqBI zY_RMz%a^OojtQ9AU@vZW`OC1@2FoC=h7};uHyh?@i0%rpS{cNNp^4LDODs#!X^<;# z{DqlP6WbiSZC_U*GfvE@%QecNjy>PF}8AQB#9ld8S6K zTzTe+yK=39V4RqfmusPPs@4)iKe@w9F}{x}CKg`=m783Hl$)IWz8GT>P_?}=mJVst z#ye{)q99^Cfv0vA;EAX1t^!q5j1xl>r@z)%M8U;)rcSL~dFGM3a;@TGoS2iBD+Lz| zdwTZ?&z!ciqbf2c$T@k@QlPQWgk?JpW=BRkz@c>$3{C5S8?(I$?6Rv85&3k~59Jac=MucBmv9GXNuHq0n6S!jrW;F;T^tpa6& zoKqKVOhL**1GJ52PKy=7E>^@&=3;AGq)FmDrzRkp-I$V>nx_g zW}zV}f@f}vwhEjHa!y{fB;?Ehb%%~)-Ej?a)(x;bCLw1Av^#Vh?goJs!@C=Jcie=W z^}|E0v)Uk~SPWG=tQKa&tP$C1epqKE?5rQs7JUD#GYWPV86qTj=Jpm|#m)pdG>Lj_ zol&r}$PgjHGq*)s#m)pdr!Lxrf}KSM#2e3?7A*)=w{Stu$%~ePoka%38_(PpZ52Bc z{3U(G5VkCIx_F_=Q z&ICC$iTZ1uB^2x|GQ>#m%x%$Du`@x=$%~ePoka%38_(PpZ52BctYM zGq*)s#m)pdCokGY>?}FdI;)LVV*Rc;OGD_9VzUVm_+p)2U6ySXI?D+JhrKkuJh-Mrd0qfC+Os*+lZj02ij z(>Q?^rQ81un@*7DQBRGmUGKCSgG5!WbJ%!KIG1;vd#(Wn5-MIxc-55UcM(Pwp+e@Dz|e@Q*P%%@yXKbmod5iArs0w zyRT0{=r}s7Su^rRzRsS!1rpUYBPZw(5&MhU^(m+w$J{ltcD}nKNK|E=6Vx$TQ!qSn zz>-GT;@mZdG1`6=#gim;OxzSuPaIvQ6Swn_e7_3oNs>Ay?nabvaG>>Fbw~zQG|=%0K&$g8PYMVRQ?J^U<5aY&j@+|EP$gDM0lN$Qxm z8!^B``zFZUQMKy|5!_;6SL&Pk{sL;~jU6~Bp)pSdT^N}JD zS=lLa0J~#L2L%cgCkyGs?R>CkPz3`eNgWe62@TABe?SK;*(aEz3%l%UD9(~|7!4fM zpn*9_9TPVR4a_l}dT~1s^|QW^Y?`9^p9@?ux zZuqKQSBUSH?7&>#)c5Ce4fp-A1Iu`zp>uaq5^(+|Hx@ z!zvyqN$QxmoA5v&<%ji!kh`N|*U4p6y{{<%k%IBb4jh*7z=5Gh#0lAfLkb=!j)~JP z9nMFNKxAd7$kSgtwscVNKyg}ah#k^+|Hx@!zvyqN$Qxm zDR`hb-%KZN=h6OQ6%Ujobxhn%cpyUP2ik%8?x@;(g*a~!50v_*zQ2GUdV>cJOL*Ym zAduNRJa9U1d$axFej;FO9u%L%+dUMaXTM58rI-}IZ53T_lSZA ziUYSahJiSV&tdHbk*an}k~$`C3LYppCxi!%D0pCO=yrr>P9N(D0xP=&Cr7_%oW^l5BMSBx^UU8` zix1D-7Ht*x6Xcw{Xel^f%$@pr(K_C{W>m%a1UV-!S_-BYb6logw2t?#8CCH-LC(pG zwh_NOvy07uNSo2y=@qQ6^-WP zbWG4BT#jQa^@4W0(@oN=!Q?nO9TRjTB6ny94Y9GS)*9ah)Vo~A)Vo|D9$9utuZ+YQ zx@hR_0N*0ANsofWC5GNfc;+%(!w6J&1wl^777Ge4mv98Vc2~eNw*_6r- zOAOdLp1CdPDoQ8F>6oA?m|bE(+VRY7L02(5K~Bd6-H6~F+J!^xgo^DZmQD38UozCY z67BN^!Ap8&1kcce6k`0;&}&m;i!$iie*!^ z=(vulcO~}cjhz>k@jPk=j#6CDJ3KEW;dzEAPvUr#2Lx7jg)T;ULK2>5i1H+kM|nVC zMbKT0@`MyTFEt?ac;@!@U&ZqTIUU>nDR^FLKRbe zP_^A;EVfupD|AeGuMi0C`eWyn@jPm$4bSa73Z9o5qC9x!_F_@R^8`5^TP!GeUTTQ) z;F;TkuHt!uoNfs^qTqR{0ink;rv(iHRfArT(=kC)@VwN3(Bqlgg0A9uf}D;Cx)IMi zw4;XD302!o#$ro$UM=<~1mcsO7nSimY9|f9?YxMB=cR@y51zTbSXA*mK~BdO3ksf> z8lpUS=C+`#c%C4qV}d5(c?N_&bsV9OYVf=+BJ>dn&odzOspAMe2&@?NT}0@kMm+D( zju~PnRP8(&i!IrCwb&o#kU#{z!Sle*$2Yeh(TQbuvmOtqoiaSP^C);;-w@@&Gq<<@ zDxN3E>Dcy9!SnitC=Z^wE$AwqC&=lRpkoT2*Eb;ac;>XAL7=+*3vxOpXbPU!Hz4$Q z=C+`#c%C4qV}fqN^Uy2iu#=F*PN>*lW1kCpXmjztK@+3(oFJKCOCytHN z3E1^sHc4E?@FYnmFJKC8Ck~I(3E1`SHA!5>?j%VkFW@G;4o%<=v*YA0r`T+Aaa8Z~ z*z7n|@AK$?c3;8mVpmVbOX3o4H#Bs#DDL#$RanFnq)r^5qgx(a?{<`c$chEWgUsZ1 z*ili+-nPR|VhUa-4wTc0+x2cojL3?(d61!N;!Y^2UCcu*I&t&(ti$Fzh^&Y^CrQ8g zmrg@C5$#SW*j>zHXgYDb-k~M|kri?0By~*OjR@YMJuKvguUc~XGOFIs^-aB>3kLVS zvHX%Ul1J@fQCdU1vjY(JUR}>^zruiYk&PN$S|rLBaLJ$w@kKyWZ_6NvgP> zB&lQKrl5S{*g2iJoyX~uD#|BG>X^7Gn4dU&PA6{XQTwEd`AL#GChkTA@X($Za(7hh zI=PIh_jxq8f&favcx4Bc5kNz4481SupB+fS1I1Bvx~0SUcu-Qs10_ivTRJFspg37c zCvNAXLrE16lq7Xa+$jYQ6sPRz#O*xV4aX6h$+|Hx@X%!EYBy~*O zjdpl$ZoNEL+YFQ{sMmJ4IY@5@jz-P4Zrcgl!OQ7uy1{f1?MA2AhNPk zBjlhiSBQ}94>q?X1o5a;kYjP|EhJW!IzDyKyg-@ zPTbC;{b>~slq7Xb+>LnP!5ud8-BGpc@?})HFZE5m&np7`$_Px$cp$aYhUa!51rHPl z_~@1n=OagH6%Ujob!_RN;DO>mJDs?lj~t~{JW!IFJ?vAQm$Lqo?@n5NL>iY}$p*MJ7zl;Y` zJ8}4J2lgp=pg7=1w{$okIRcTDouZp{B7F)TC=R^SiQD=T`)vn8zQT2YV zZ|ePAFu3oJ9azQ#shv7Jw*x77pf~_XV;G3D{aoHDs(7FzsbfnA1rHP_JL$yjeB`KK z#RDZt-4geJf(MFY@pR&L9_X^7Gc%V3oO($;W(f&ad50oTzOx%rl;GrEn z5BuU?On;A!w;J=;un^VKp)1{q)&{wsLWyXf_n+b@D3I6puC7Joi}G`m^v*oWWD zchkvs7tC4m=w$q1vKasR`TmXNuX`-sjia=)&+C=9cvcJh_1f_P;YuzOjE_;EjPK@l zF`i?5Z*jo~m;Iuc#q1#Ot+NLg4S;H~af3}688kL!Vhq0iVYQiEEg_L_g3q7-3@+SE zK3;FvpEI!u>9My2?6lm%bNt3nm>|n36Dpe>S68?Q)oBuZ{rq-0{rhsh!;=^5>FRoh zNyA6WKD2zf+U&OYWW=7|?(&ymtpI^pnFTmzU!@meI&@ctfU1fz9B)rnih!aTq{ucU zgA_;ZN)ZTDNs5N8p}1susEa_D8l=dYM(Cy3@3|{Qz&s@>8d^AbE=6EF4N_zUBnByl z?n)7mPDzS}G7itB2*{>EiY)!pAjQaCDFUe}Nzssm>9-Vd_&W^DsO5dsA&<=qb zC=MKF6XP(0WE*7J zcUP7QPQmEW&;HU8D_hUklV;>19J8Yv8)Q3hSGFpC0eU(j+h#l?9JAw?8f5D(HZ@dH z4bamO**2pbAz<)E*}98Z4OOfI^mIhF&DcjcuJM}{+iBn~jx|&f5YW>R*)}60;kd?| zR%Pohx;0dB5zx~O*^ZiVl5kw(W2>@t7xMyziqA7Pc!{TECy%o96jKNpQe@Ggx-c?J zFRb&s@uf9>H!(7!^Seht2patEdV79Y@Vf`@B6gs!JO>Tdyx+drs2M?tG=6tUmhR$q zpiq$|+3zkjtMm_388u@nk;d;X$<|$b3>2!eHE3#Sukc;A&6rB0@w-d1br&xishA4r zA=-Gp%eEO)i8Ow9Nw)6dWg`_+0X-d&Z8N44Y5eYzY~97nMk=NPdO9N8W=tj0_}wMh zx{H^MR7?f*bVRnzm`bGayNj|Nx{H^MR7?f*bV9aiFRKD-@Vi+)U#;H_FSf?-W?x$4 zcN25zG=6v5YtFBzkF|^ne)rH>T#wOLw&x8NpVxkO+G|EoVvXNjlBKga9-~l^CE4#T zm5O-hcc;B(OeNO%-6h#Ni;po1RoPPgZr^3wjH$#Lzq=$`XYsPMr(!CghiC`*F56~I zCD!=eCD}TQm!&-wQvp34k!>@k5^MbKl5CyD%hH~Tseqo2$hH|%i8X$ANw&`7Wob{v zR6tKhWZR6X#2UZ5BwJ_kvb3jSDxl{SWh-i`Q&Cf$sKv6ZraCRvRHr?FF7XN0EHlDN z_Oo8zo_V>707D=vW&wIzvz&sqk_=C%W?7XYP^Shd`dYJ`hAQGj%#85>l~AP!#Hm4w zzSbA4hv0X0a` z=Stu-R1qLU?WpIH1me>qNlj$5RMqV+QX8s>&*@eIt3F60po6OD`pSWlY~4j_Lj~Dk z^ytx@Qbw|GRo;qhqh_qf?@Hhl6qXU6)2#$nW!sDZ`CSQ|Mk)?;x|P7HY@2Z*zbk>$ zNJWQEw-Q*DZ8KWrcO`HdshH8}RsyTCZN`xNt^`ga6-fd;9kHdFk)?VoxtMG2ZhdVU zspyiyM)upAjhfLVzw2vLP*}E#K@U+&eXG+`SKwyM$?y8w6sP>DvNdRG$(!|Ew#_J% z-}SXAPLfb%OU?83UAE0Al;8EWX{4f1r(0jEtjTE9(1afQU0<8BRurW(K~J~7R+Vit z3gvfwZ5pd6)almOs-l~gH=|HqSFM7+vSbZ*l;7TL+>AMS zUbPAe6LMP)D^fHbMm}uHC9n4&_hHje3xxA3gvm#YOJDAr(3nE>TNR$<$2X= ztfEk-TeYgnwi$);ylOR8QK-|cT2*D+j6!){wHm7^)ah2ODzZ(QQ7F%=Rzaa^CsVyy zuWTt%wb~a|t7%=;YQJ2yngFJXPO)kggq38jx1Bxna#aBWi!uw)->TI_MWMDQD@CAA z4N~;BYBf<2r_-rgRdo@FQ-c(}ty)b~tm$;BR#hniTWXM^w^gf&iYlE>)v78*phyi; z^tNg>QSqbGsajQ~2)w94ir!YOCMr^NI#sKx6oCviNYUG>)kMXF44$Ruo(3?W1}S=7 zwVJ31kRdbFZ%L*=e3~TbchxE=EP4MY+`m>?Ytu$R$M>pLP^ik58X5JiYE_kOGuGpI z)oQ9DKBrr?s>-$*0rI?RHC1t-)2&)nW!sDkd0w@es_4+^R;{YCZAObcuUbu2%;~tD%)lh%JZt#zKTMfZq=$P+h!EX^QzUpib9=kS6EfH%_x-DRjYj!gF2n6 zRaKJBn3LyKt9=!70zE{J$E$37w1`q=+l)DRUbWg+QK!?bT2*D+j6!){wc1xvsMD=l zRb|_ZLU~@b+E-Di)2&)nWIJd^p**iz1%+i4>U67CRoOP9P@Y$<4pbECbgNcX**2q4 zo>#37R21s8d#w&c)oQ=4YIRVqS{(qU3Qw_W6@-=6YQ10NS-HC{lwIy{%dusQA(8RIRE~1YXo2MQ^KC2P#r@I#sKR6o){D8l>oL)hcK!`5C5O zHGX>#37RUGJat5#LnHseB`SFH|Jbm(-eR#n+HqeY%q ztqxVp=ya=ARoOOUNS;@%4pk)SbgNcX*)}6fURSLSRdmTv3+J~tJ8DLkJg-^>g=J*o zbgNbsEgdyuPM%k-fPSVQPPb}R zm2EQ$<$2ZWNJXJew`x_DZ8HkxdDZGjMWIf&YE_kOGYaK-)#^w^p-#7IRh4Zs3gvax z>PW?)PN!;Bm1HyKM5|VDx{D%PoNtf()bL-ylio$Ix7>aa1i|_F`M3D<`J>HjH(o4z z!8ZY}KHooiv7T)vyZLGv^x66Nc=$N`FMG3E{P~~r>CGAs;xH`6KH0B*dnS6n4n-C1 zpj<_petU)i4@*_F{ayx}X$JgezMD?AY|vrE(%i-CU>--oqnq2sc>a0t&&&6#o7v@0 z^XdE9^4|shd*Lv6G#PJJ{~rIUoiMw}dUE+@GW~tFyuMt2+Pz;bFSC0W z7nl5h+s%~U`8Z$9mme?RFJQ%H2JXfCr(ueDEKU7_K_9}PXPnwI9Ofvb)XoSEGZ&Jn zPIwW8iktE8&3rdwVnLISf>$N=jK#L-yD7z97)ht+0wwcPH&klST zgI@*LZE~Ft5`UL(#Es<}K7PFUj#rYGb7#g{y?5~ZwU=x!vTz>JA<&|G>mlDAB+tCU}%6J4qznRJ%r_;VWi$z zeQ0YZGI)rg0gyO=ktT<6ce56}+j}T5^`oTVEqt#!j8S6p6zjY&H~d5GI)7i@UsUJ) zf#rJF1>#+gf0=C&2pN-XGDu1val%i@D8&8BH>`K+!+Nhitas}}jbC5u*pI_{Btj2( z- zN?x}ZChlD=bN4!C@3`INFT*-#Ix=~MYw19j6o-VQfz5n@EI?)%>x+D>T_!V#Z4Xx& zoX&fj%)*)6Qw{lp8C0>eICM4qhw!mjrH%wxu_Z$QR{Frx`St%WB$n1C}LKqwboiZ4{rXNJX-@gUNV1cQedh}PkaZ@R)d+M zP}^BXf;{~kG_2YOF!Bzbtp-I!6|uXFG7Ffci(1bXCA;o2(%{)fR2Y@U zNRwwPFjEnq1a6^Wq`RP1EWAf7>#)I8dh`a_0jh0sB9$N3z^Eujb$3Pz2d$QoR2Y>u zBMVMiCI3@lqy|Ps<)^!hG=%6PDvU~Fq{%m9zID#My`OR)uvJtKR7CYaMN|(|MD;*L zII494GoP`VU=iwP#eKOkah)re@!sm%BV9x0;~Q{|49VgibQ#&md_9J2DDHKRb}*x( z4&sR6rU~pIzu*W8J=xWLkRvuZVC!*isFl>n9>_7S*NBiM1{KnB4EFWCO>W`4?Fr9t z4uhdrhPUc*j#zqaN5VPSLL_jG;{%_d_J45>UbvCay-ciBwWg@Mt`UgK&CjYKY6$vK zG$x^Ym4Kw{8Rsz00rK>$qlWoPEw6PsPRSj-N)6J6l6PlKPmrf)qycLyIYTr?-odNX zAaAHIcbAbSuab(q(HMCLuTq1&p_toUMw+}zD)L5S6<^up@!5Ru6U<0MN1l?>^X(n!K>}IA79Bs$>!D z(4c}W2dW5m=xxLMn&99|W<2i+&%h4DmQa>_J=lTzqT?oYFfdkt9X;*dac?|?C-=We z9sHCEqpP_Ah#F%Tz_zvFg=dfEZ!b_+7moBZ|48`=7*~CrUdr6d4MR7?@bwFSRW;7e zzG?CA?5p6{+2+k^I}2Xj-r#tQPfvr_^PBndUGQO^mFBIM+jhV3da`*p+Xd6bYWjPC z(?;g2>!(3{5y#8zpTu1x*3CA%$$YuP&-X5dqtSAEadyV)+*l21`0djmy66oslGpEN z!4w6AIHh9|tS2a1Lv`bJzC~Hv>TR&Y)3>X|V)btj@bv6I9#3#RojeX!@|2S&kAHjo zMexr76UCEW0LUM2TdY{=T=`9Z3Lf-ukvI;&2yiM38~-BsFxku}Zx*uvqYwT$jEjSx zTst}Te+ItP=XeB;zb*0l!G{#;=0Gy)aqh-wG?cOT z4O1|txchkwRqC;)>`S00yUmI#%@=#!ilAEv7u;R7pwr0vy_qd{>mAmv{f|C@I$_R^ zzaL{}ZXQ~yIHU*a9`-o5wECV8Ia>)HSnAo3A+gD3gPPx*o6!5Pmok|{Tp1m5eT*|1 z_S3ryvAXd2$cX=Vd~^G;JO!BpwRL6giFGi+0b5K{rQDKiUyBb=zPC86s!VWpB9$By6-M|c#+Sv&p0Jqtg3n149a=km`lCm;Wc^IB$``x!%z|NBhy zx7Ul4{26=8XT7i&h0$lh$NL#h`CD%>FE{x4^4-q7LgCKMZhkZSCLDy}AQ>h}e9;>w z5!U;&&M=|Fgl=YRTiYKc`+?(c7h4=+dwsE4?=0|!DRn=|bUYlS5!3bjZ?6~iqqNum zEKG2IeLs%UIR2~`_2MY`EI5iz=K5bawzrn#rsuUEa{p$#Es|lq*!qHBfq`y=zy98LqVCS7ZMLaM6_k1%Cex7UsR0oF1)1>z_iG!#YC1)^3 z03vSz&&#*tegv4}$@jPO#dQ$(2Y5YTFw~3bF2Er!?D-e?+{?}CHx!S{&#n1uJbATR z+_Ln>{83I?@Z{I|hspISxOy2p2htmGd|7@0FwM+zS+$_-mVw7TYRCw zp>aU;e9GwhIK7RAz4N!*5AUPlC_0aRI-j+)UvlBRoNXYEn+ag;;4fP&_RJ1zFOshW zG@lu8K>!}*kUb2#AovPL%4PrL#rgiKczJ&QRrY~Dg5U=R8V0x!-1$R}_xg|E?|WGO zj{|=J$NWtfzX$9W7~~H}CcEmVeSV2y_b$+=7x(Y}3kY6_?w9lR3}-gZIDPm~faps01Xq)f z;;L{{-evF0-p}5}E?$3H&u~>{lm*i8)j<#q*-xZ{9w1{}^)6r%!qmnkLNCCWZ`dVt zAOFqXl)asOaJjNLB2HWIY=&siLP(YU$d_O$%tlPe!cFD}Wgp=0_-VCT7oP5ASj(cq zW9UP!I`~_AUAW10hy5gDi1>#~IT;EQ?n{aD@1$$ysp!esh>4u9@C8ySpj7I$OUKdf$-J6z;*@tRAFjlD>iWWxUD z{z}K0;{C$A3tT!67UK;l+|w9^jGAm3^>Bsy$o~oAv_DAMZSn71xn}PP`|@T!>)5;h z2)=^SNUdVGLOwm&mqyuVkOT2Q!GKS4_6Gc``-OzfZ~m|N3q`{0a;ep>P#3*@^=XMP zC_7mYRML_Utau-FwxmxKCTfd{&BH-Gl6pU+I@2kI`YG_=RXEN<2=(v zyRW|5zFw`f?_r|`a4_3_H{H!Y%>Fum_nzIl+WxS*c{9fe#jr3qEmzwdX?U?@#zXJy zuaoUR=9}5|FSFh426jlu?)?0Gdm|qHI@t*2<6oI;7khlQ{bjevZy?^y?&K@j3t0S% z$$C8#_n#p$_j>jJ+q>2#w{2vbuXlb0?^I2VvukU_x8$;?Hg@8yE3rKlJMo9qEtN*1 zGrHDm_3+yJ;r{k}8YDmx04a(iYD9^t*p?`X1P&UF(~U;=dVrR(hrXW7$FFa~-~0^b zFbn}_OEq1+AA!`$44EG5ad1D>|7N^hPj2Ch!X_%5Q<3`#?k3X({o-KYeH(8H>`z4B z_;uDZ=G6*+Xsi~f(E*K#{e5V46A5##4a+#Q*bCb@v)K#BICIzw*En<83(q+7*bCn{ z^Vy4zan@lky2e?Ty+DT0GyI`jBF7~@$KUJ?9)Mhp>?IxnqRL+4A;_15wuCl2YbWutUbTrxX=m3THu11Oa&MDKw?2$ z@?sh}E_48~7PugqQNcw%ZCDVOywh+T7dlT^3tVvaO~FMzJXjEyyu)oA7djqT3tVuN zO~FMz3s?}Byt8T?7dq`%3tVtAO~FMz+E);lJZi~tp|d`4LZv;JQfl zS{Gn6bQi5JhfE>HTNlbpxe}GBq!a@vC^JPkFU$8|i^-%Ty-IffV#wqsJLD6UCGf8U zGL+j;m6>w97spVu^JEKT>Oy?c8x1n$m@h&^3m{V$>WkiJkSWJ~u~}9CnYxf)N++n! zrgH4pF2a6ME~p-K2EEZBQ;z@IMffjvLTZAHjsTnG7%?JPn}J2wu*wQ zb`cKDQo+_@)z)!fCGl%PWQuTLmfN)!$mlq*CFheUh)fXab5pT# zriaQb^+1MluPJ&)$+cQcW^!|_31sTRfho0`icC2UoSQsNAX66(Ou5ojWXf@11Q>2! zwNXi>CbLP$fvs{J*eSw+5ph`)WON+ZD#wAHA{-bFp_(A0YD1jb=8L zIu7iV;fLDHXW$U32{Jkk?3ClcUJ(wAQIu7iX}IE3nf40@w-V7D9x_KR>}xVLJ8jE)1l=)s{a0t}|865}q%5h-72nU9Ht0u_kIIvfa1N%idFx*=;K}N@cy>cA5Q-lMNKld*wKACyxUMllkf!K$+eykR^E${0l|QjDPf&%i*LqoA=({{)WrH1^;RxzaXUt zZ;fpGru_p|0JM#Zo1c0kWQ)UJJ(L)tqJR&cqQ-P6DZ84Y1}I#LPND)7>v(|^yT-GZ zsHH<0rGV1;tJkmIonOcIr_T(it4sO-cjGzYo*R^h==E#-#!O@aGFy&?x9?G&2MNRQ z>fL;RBwWZ&bV=}|S-kdG*i>AY-iDX((>yM)$GIc*Uo`kob$8V@5nxsda zJigDs=$S0MOn|hNB(T)+2PX?Im2uI?0;~nmO)d-6{Zo>MJS&IG1F1^^)JA!*Tt8F| zcwt;HiTL4g^nypVyfm@^`$%*#Aqz!x?a}ClJiCs|0=WVNP#a~zHKSz$FCtlZLCZu` zY4+il309X*BMvYMMK2TLP{fsRG~$qF%yMxcD_;OrS{$N!#0MY_RF6a>4zPqpFB9TW z#7l5A;*e*-b8#R8UI0~E9HP>?4=)ZKeV)S(%zx3#gg6v&033}thS!f{H5XSaZhlEszo zL?jNy*sx4Jy963~Em34&{%EvB0Z%0hsNF^+bURwBS?}d!_4Pn34$IQ>%P#X)YShFj zIV8FT+?6bpxU5X1ERNoxNk)dYV2(>wG73c{AC0ys;JIX>)Z0jg<-5@?7lOXRU9SF% zFTvn&EDzh#8lzq2ywr%qDQ$ap3wSSC4Eat(;$SQfTfY$wG_;(eP#pTvXo&(IOcp%9 z6OlL=%fr_1cy%+Jn1urHk47X4I5F9&ft`rN!B`$n2FuLwVir1ia4aHWwuKwhY+0sM zQYje-*P~D__^#ML6ebsk(@`*;h@|^68>1@XILHpEJ2(Ekx|>act3-kBE0k5fTJ`7s ztK0tIb1)rV&A+YgX4CLmt92Frzg!H$D_=(_EBW>6ZoIr&uF#}O>+WeszZy^%c^sP3 zq5RM&f&@`%#}O)Lw)5PRZ-0N&d;Q@j3^3A{O$TZqBpd&|4;_4ntUd4*MJ>!9v8MSngThHLSY!EE;V7Jsg8gX!RI(qDYWG97$H{q<#UIqxr)L2uGuEk<8^ zll6EtnvbcRDhl<21uRE@O|Sk6rd0Pl7+wwL^Q)Vme(t@1*Rq8-Pth{18^CPCHN+Z> zxt!=m{#wQEJSc9Ws)qSmgJuC?11J{ZlkQCLQgbY%^R6I?6QY9OlVQa-XZ z*OKyZ=lNF{LBXWy&~ASod+KFJ09HkP;R)gVDQ;%|$O#H1W02=in1^NV(j=r5hl-n- zscP;CRyK`-lOWv#MxzRsz>@(J=C(#hBI0rynWVo=*Uc(_^!TJ99iL|rh8-C{6 zx;L2gCoW8r(##CWIVU=@2_(NG?PmTk90m&|^9L9``vAAwkokj9#Vuc9$ME;*XoZ(? z>W{E(%k}LgF2A1gG#_L*y<4yNTazXAkk$y4i_PAx8!zt`7&lpMI9Y1Lf$H!{W$^7f zjIuy1QWD`mrgyM|4MftqB0^!)h_~Cqz3oJntBnERmMb#1xNHENwB?Gbv|<1}U)m%X z4JLCoame4v-XOnDq*P2&yHMfTEA8H~`8o!&w;D|XjFnhojf=SJ;doIV;A*m)4*AdG;m-O%D^Et<|VEd898=8?Z`zfON|{(HAUCSW0z+?)25l2YV;-? zrKt0VJ5m6YT8nXtd$4J!NL9W6(39cGv!TUeO-nev0X&Xz5$VQ&WuHU>s zU6#)@<3;wfuyHXF68ek2FBlOeK1*o{EY#no16+OiTkw}yzujp4CXL3|Z}x1OHLkRN z!^pNzRxDt1pN?2~kyyAovG63ZfGKXBtXN=5pN?4gkyv;Mu@L)Iz9bfT?t|qVZkgG9 zG8?YP6dGi*I>xE1asc3a{N%%I{)YYJar9}F65*j26Et5RKZNk6%T%w3yr_LIxJ=6k zC;SlYwnWhBDWmBsSbXXa2w~b6NL|z6`1YKH>* z8p{dt!o~v;UC|B03w-%af36t>eaG;0*0Jc8QMVG0EZM1qy{_$43b=d9*E|S5r$mLH z5v-MnAuDWUB9<`6wWE<3?`SNdD_e;ejYEc%k);f+vTG^JHC1<^#o{x`VeaLGGO4GK zks+J}W`}w#&oE95ei=QM9)=7VgAto}%+55K*bCO|nWvykbWCVB-TaYP%2el$M3+(Q zb46k%wrexS;~u(98Ho%@gFRP;q~+~PrqC=SX;QN2+AA^`Pbo}xsK_>1A0;I$H3Auu z6>s~Vn$@>LD9M?%f~PVG{EA<~T!uG)UNy0MhO0OEW@9mB4Q{RrjrUYP>N!T8k zJ{yG$9aas?_bO%ivVJ}STM~d(CSeuvd}S0eB&-^y?^Vw9c``7Ou%zy`Bp|Cw#{3Go zzBCScDMJHT-y+7htH@WsQns&HGI7PHy2~1Xt4!7^V*Qz;ks)!_uz#F;uaNztqLf@n zs`ipr9sBnyV*ko0WJp*w>>nbqM+rLu`x1avrpqc~|FVQ-*q44a?BB1H{mXqj0{aqx zRVHB-v43S0GIUrq?BB1H{mXqj0{aqxRV87ainzZr3VI2{<5|yk%=|lf%s)Ce&raP> zZz(_Y0_nC;bSN%P^!D~QT>dTimngb}BjI5+Pa>M!sKJp++Jp@cUPDV~RN>lFf-ck1 zSL!o?2C6qk9fffv04Q)YI-T3))$3R9l+-Rhv;=*CyKP8rhvaCKtnNK(qV)d?@G4I1 zLajs7cxKPAxwsG&&ZCTXJi#4hclkIPuI_Ns_eoeQ*DLIMx1P;5vrPG=T@e=^}uorNOLUgJXHY$X&p#}t+Q#qNK&;rzov zX$dbQd1?oyn2`O1mT*o=OXL}iTp%dzt3Ya_mVl=<6o{nDHBu7%2>!#b9lotk;?jW` zEBcy{iXwS+k4H`98QokeI=hn!nB9~D<^ZH3qcj)_Gijxwb5gn@&-{<10_RnCrYm47 zABI$9Rln%KA)(O~PLU!8$D=Fq+$UTrw&R((D+tWn!;p$@Mk&<}+#@=vI4zJEOZBkU}VQ>x|F{()Vy$!Y;5LvxPHOl<`y+XOm~JS;huH+ zG8H%cOT4JzFZtud>_5tnD)qRV=SM;bHvdf~}bADzi{Vx1HVIpn(?QgW)I=ioQ z!fvTe{U0azhOaTs>#ePHA}>UF9-Mh^&|j{Aeq1F8Ww^Tu&wsK$lGWu!PI!GJixoQY zJK>N;)H|mjQdL6-r%c=fcxA$VK{;(N_I8RV!x#tIANLg+eMfh;9}ArO*6Z?r){0g`s`hp+qVmhK5uyuP@{&HJx-a>u#P!i_!-~?Zz`QRt~(NJvwqp4FzP>>>_YMxyxt>OHPx%QIvR~ zIYVzaCOL)5A6$%JwNX=nO5FUC*d)xJ4y&CZa@3s11#$=*RxM{aUZKhn_F?1F7+un= zxF9NO9PaFc&BSU8C8{26R7)MXSjPRT9;He;(=wGIuvmnYW*gmhWbmpA%D1cF*kNg?Fel{apYkVHl#)c@x=f`g=Gv; z4T*^t<-EE0G+VTS=@9U=#T~=pds4rIqC#lZlt?KizO+4^xvW~S@-+YYM-cN*Nx}^aePh(L~V<1 ziVj%qgmt6M#ZDr%T8vP$XFX-Lws43vtiO=@B+9?kTP}x_-fZ4`k95nw;-??*)0gy9 zC>I=|BOOEkP#HY@+j;1ruspq=n{Z*FOsP&{U?|CN>Kf5ZuPFPF!Oyd9_>-pn301ua zxoq-c7UXa7gLFPD_rYOy^;?ftJBq6&NU5UM) zpU_RubVC^@efnORP*-C;T5Z@;k()l<5VrS_4_(dObMk=a*@Md!N+tKO4WIJXYY^M} z_`&Yu-g@51{87sk_&m#Qg_@*9)py{v=dG*?sVoro>sU#^gz=}*5D6bQ zU}NuOh5KOA8B-larvX)Ix}|DH8@|LDOoWZeL0iO%IicVrquShRZ@ z@c0lR+qik4fro8-;sb9cOkrF0;fFRB&fhQ_D>R&FMeV)FoTK})gnfOuuZ8|3jV6C% z{GQzrbu#hWXYc<&XS)d!h56vHIBR_R)QBsMS=j2$KA|?kUFLTqIC)Gek|x`n;Q099 zVnm*WB&^&b74D?;^Dc2q=qUVocC!eEqd|W~)tR$spVHzyOOUT!J&MT)n~q%oew86-N6-3j$Qxh6-`f!XaSuF13#&4`eC@O3u5DYtpj zWvQw>(<}-jMGDi{Hl=0raMcm)FmAGn#!Eu~C|1C#pAzm{Mbv~XrtyNKEHSW2n|^Fz zj?ehL7_DB;rbHE{_!I8*TXt(iTTm8arbIjOzH77(7h70q>5hU5v9io5GPE_k!t#N# zl?m{2eG7Q$Z$@@llt8pH;>np%Rpihz>3Hn=7Tsol7wh)H#m~gFpox3jb3$4P;;)!YOPu*kIHl>G*c+#V4Tl{%V4-i9 ztP3P$aaUx-#9oWg>7!*_cxdR`RYbs;W9Cvf5m(Lt^FLR7F>TyR-H11t!B z4>yV(i!b=nV_n+mA`?>lB&zHkUvT7a$Srl{mb!9FUAd)>+)_twsUx@4kz4A>Ep_CU zI&w=LxuuTWQb%s7Ew|K`TWZTKwdI!Da!YNwrMBEsvgT9cV#_VH<(67`5F!aQT&$Kt2TNLq8Z1TwCEo;?3+}Zs)dbcQ z<5_eMyb`G_iW^P_K&WUO}2}#)d5GGyEtdV7fKF{AwaT>ci z;~Z`sSA|n%tQ0(OsvkM*S6Re_3t6Kk5&=b|$tW-?a?gl};E(r+mfHV$XA7s}PA+Oj z))6?n69s?lX~;G4QV%fn==Nz1eRPb_bU3l0gH189=|rJHPMX+YV?H}Hh;KvC;pnZ1 z4elxvn~kTL`L3(nK=|WBZ?e_uIAy)bgV|)hULmw|Hsz!}iX~>=8DjA~JZOY;fg(%b zGWvGp_)WiKZla{SO?FJlR-|lZ%8oDDF(y0CWXGE9cvC!cs_#y2qU!&X8>#vbkoq4=rPJrlX5u8gTGx73v} zRd;t}Ow}DC8BbS6b)tA~5-Ztke-XHAUUcmDiMpBVjPqJ%4#USK|g`=Ap(O$jn2D zUuZZ|dcUXPNY~Kni6bsHT=$2&$w6^#@){vF2sC@;=`ir*F`tKDPcu$W*=3@-&(5CT zc8L@+-v+44FPx#PZ{1vPWWG5JWHs*-6 zm<^vAcFRWQp2yME^>h#{Ryf?W!s8JL-0e=6t+O+*VfZ%!!@PcK&^8uY^5HHp25{Ko z@YNXU)liTFxjvVp}gpht@!CWQAqe~@g?B!$Q z>TWg(u6`X2?tXsUsf2Gin*| zEk!7VuJ0ra3Dm6vIjk)ERU-Zav{Ba z_~!cza>{80$XyV6f?Noi3qfO-x0kfz0KhwS0Q{;~Ejx1#)Raq8vBT3QK;&eP5fI9x z!{$=Q^|n_gVRqbDostU8l$*URS6ybRuw8NEOMfxy-;M*s<;^d#S>Gm${ZTtw4cO83 z18hFp8L55@OIr1JcRTSlVTzdpxXX#3er{D(WQUlGWl{yhSnxw$ti zq~Q!y37s7}hU2F_N*uYWu;;58dCv3)X-P5LY?4x!()!LMS5JG}rAaJq=8nz#c+Mtb zl&h2&;dV?vxmt~BvsLo&9FH*u)oV*2#|EA0I~~WdTkVcxS)I<=$$)Ue9bE*p5q!njZ0k$7@7`Ks&w1Ed%vY_i zlkq+Ap-JsIY>u10YtdZi|I$a6?_1xQj@LFl+j4FDJIsF5YJX?!Wlr+>pV(#Bc6Za~ z+8-VM#b@)y>=W{EBQwOaC3Zk?Zo{DPPy~ja|AB~xrSZ>S-($gK;Q~ld7#lv9=OJx) ze%?O6K6{2UY!mTIthB-T^{d6mc++1PI2>j=Po4Ht>|CH~hjaGqioPxX2q7O!JpTL| z-?3Vj@#w{RG#(nZ=i|Lk2IRZJ%D|~B`uuzSJ#H4W|3xp(uhA`fq5szV*?3JoJ-_C1 zZ#?>A^rb(X8Lw}QSBTUw!uXKvrwrF<%cuTiH2!ve{bjUR1z*?m@p`F$U=(eF=#9|; zzjt2a5@NH=Ab@GSW#?Z{!HFGWH-)nz6S2x7}eT1K)8_-FalFvXx7J0M|=?7$8P>oI`9(=ZWx7ypCBvn$_%ZOzv0 zh4UAW04Zswz+Snqfi7Bv;<)(Q?gFu5ogFu5ogFu5o zgFu5ogFu5ogFu5ogFu5ogFu5ogFu5ogFu5ogFu5ogFu5ogFu5ogFu5ogFu5ogFu5o XgFu5ogFu5ogFu5ogFu78JrVeS=j+j{ diff --git a/benchmarks/tapa_flow/sextans/design/generated/tar/PEG_Cmtx.tar b/benchmarks/tapa_flow/sextans/design/generated/tar/PEG_Cmtx.tar deleted file mode 100644 index e5a7b6bee6aad783da8e7cbc6314192cdcec6693..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1454080 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 F{{zT#x(EOO diff --git a/benchmarks/tapa_flow/sextans/design/generated/tar/Scatter_1_2.tar b/benchmarks/tapa_flow/sextans/design/generated/tar/Scatter_1_2.tar deleted file mode 100644 index 0585e7594e7870970747cda6349bbc97f89a6183..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204800 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 diff --git a/benchmarks/tapa_flow/sextans/design/generated/tar/Sextans.tar b/benchmarks/tapa_flow/sextans/design/generated/tar/Sextans.tar deleted file mode 100644 index 4fe2e25301e517ca67824203dca017ceb04a8c4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 481280 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

  1. =NjIy&x5?}2+?wfT6*yBq&%Rl_Z?rJMpo<*x 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 M1_K)m{OB0?|9#It1^@s6 diff --git a/benchmarks/tapa_flow/sextans/design/generated/tar/black_hole_int.tar b/benchmarks/tapa_flow/sextans/design/generated/tar/black_hole_int.tar deleted file mode 100644 index daaccf8b87e6f90930691181cc9d5b6d3b30402b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163840 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

    ^O={%2T#bSwZ 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 z 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

    r(;zf?;VeokA*Kt;U()5x%)#EeWf6#FnE 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 Oqri>=I|^)q0{;(4kGZ!1 diff --git a/benchmarks/tapa_flow/sextans/design/generated/tar/read_C.tar b/benchmarks/tapa_flow/sextans/design/generated/tar/read_C.tar deleted file mode 100644 index 4f9a49678fcdd871bca6b5e79ef066f15b36b052..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327680 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 K4gy<-!2buc-}e;& diff --git a/benchmarks/tapa_flow/sextans/design/generated/tar/read_edge_list_ptr.tar b/benchmarks/tapa_flow/sextans/design/generated/tar/read_edge_list_ptr.tar deleted file mode 100644 index fc1939802468af1d7fbee8896663b837845ef9a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358400 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 diff --git a/benchmarks/tapa_flow/sextans/design/generated/tar/write_C.tar b/benchmarks/tapa_flow/sextans/design/generated/tar/write_C.tar deleted file mode 100644 index e9dff4a09b65c33b1649b450251549d3e1fa9fd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348160 zcmeFa`&Zk@vM-)rFMowD_q!*_B-obxW(@Z*B$;6ylCT1q*?Y~Jgww1>h4mhTq^&^N$=)YyEm}iXKVSZ@V{pXzm-b0 zCiAGsvx-@2&Ss#GRGb$^shH&3c{2xY?{*`Y&bC-!rq;sF;naRku*itk&>j)YpoY04~S> zvD3e@$Co?5%qOwUrsc<0Dt=<=N&i3T|0n%l{DHbA42Ayhd$;4+Rmq*s*3b?q_(qM{ zcv1atR_c{nHKhORwMO%qaW6L6cdq}pw)XD$2LQ$?NssM0o^d)Kje72_@rl_L#^l0y z{?&D6cK7i4-CKHP{9=!7w>LD7#upQJ)SEez@vgCD;O|G{O>buJ(xdo$=Q_swo@-cb z!>sMrD!bLXVO6Y}DE^!6daSxAjx4KW883dGJHvrdZ8Y)TG$v!?V}E9tRjO*e6m?JB z$$#7ZnQCpy-$m}}WH{%TanOPR#*5#a>)v2u9Gw{NhLf+xS#4(FbL%gY-B``YOfr8oV#)vD}Vc-L1}t8MLA$2&GFy0!JnII&&EqH*6g zen5A4levq>w;rs0Fv=5bW93gyca7(-o*SrOj3$Hm(EiDIKH=}f$z+PRANkv$H|t#h zcUJAyPV%41lMnKDXUBgEJp0M&Nj<27ev1F3G8r~J{S`y-n-m4Zc+bf4`~>73dEVSM zWT9`yG59j>-%^Tv#PiV%5=Y%B3mR15%yp*hK|&O{fkHA*wLuBI#J4blKN!d0bP&O_ z+o??zPKUkz7yQ2H-}Z;L_mY8lG4@_^a1vSIItH@Wy&(!5PUhno>YO-Jd+3bq!8haQ zPY3T=^KVX16e925DWr}+pYi9rS{b076>bX{Hsb{n(yLe&@yDo$!`X^ztMyyh;iUfvWqlTv-f^|ZilKG#+ z%WSA59l>BBdXp9WXN91lc-WQF(*5do54oU+IcP9UEHrDDnw2Iv=%c_}Q3V(le!~d} zHhd0RW+RS+hA}}e6GGuXNxaTMjv#e$41%g-4SHgjQc3oAYkU0BN7;W`z(HM3nSg5l zs66=~f8#`2lWuxcMb(2!^HcmMm8pSwwUy5V|LgBuw_No4ws-f5{72*9r2FpZ-N!8* zeTKLACy@SXOQ<$#J|F_$Xx8r;zdM83mGLb*w8QRXKI^)0dUkt*fh%BsGa7XT{u>(A ziqXv1o!a&n8WnZe1F}v`F|NfEig9)2x0=u>FGj8Mh899|ZEwnv`)0HyWRWnvXNq6-NUXk_GUqN-;Ana8^cW%3&0B%3rK<{B7tLplkYgasDAaa^n~r~$6wX3P>y>MiP`9NL$|5p6mU8vci8Z-(w2 zb)4~R{|A{I{v~%d44jZW|YK7mg>_m}1s(NMG6m68?!X znh$5r6qA#xGnl&=(#EH=W8;!}k(hct?|G;KJv-{%aC?w7)g59l2qq;tM3BKnA&`UV zbOv}{X$vd)4-Yfl1f9ip~^EZ{I9+)|67*Jr{;n*~*-HUnGstb@rKNc-nr}a z@lX-fNPX*IO$NBuQh>i1NnpDs;4B1-G18^~&Dz-OS}m_zwYs&g+5Ox=%@7mD^HG<% zaT&I#g(3rQ3XcaKssU`>Y1d+CwrdJaSs;upl@)m@*s4AY`zRPf#4nAv5+wcd(jgY&m z?jNBwht5DMQQC3o-9%MnN^h#}&00=XxSt1_OSE-17u}CjnyLdPE@g!N;J=^rnWH|G zvDw#viO-psmG@c8-A~u3R;Z7hG3_ZR&MNJyQsN)J86_MzDV47#BfG4fs3~JltL*ls z&Va8qclwjbmvj7IKF5yC6?PQAcxBJNne{MJc`)`oyNg{c*SVnyj0`=8cRc`+^;H%Y zo;@h{r_(Yw-wsQ7-mO_Q(D|B@ycUEg%>)C->s?;D_9ZrfD9N~%M#`RAHN_BB0E*y0 z2SuF5zCe*E^4Ah95mUglOUpTfPJ9_YRi$o#t|Cy>il<2LAmAL^N1*215uPr|jLl13 zqa9CC_C5+Ms0+|X%}P8)+4_i4qxVx0C^F+ITBI42rz9|h*h>*8s>f55CUu;ukY1qi zwsGyGcc-3YTs0Z>#QG0W$ z{2d0-Nkx#l6|{E@HL{b6Kv9DB&Zg^lA87-r02H-Xu)Xy@64Vr^kJ<^g_cDD%j?v`3ai_;T(_?;R@N36S|1QlT%nO4-W<9ibib^plZM#I$Z zPh7iuKAPP?4Y1vohf0xUGBap8w-`x%BI$usgs2wKVxo^2L2ILkj--}7w_j!tHx8uW zrhGNTb|pJCTe{ligW4WVXSXqfboHcl^-%_jn3XwmZ@cy+xYf2gHB@tR6yah51SVf< zHcL^BO(lCQCsVq5K5_T=^XZ{YQq*QP!(-|rM5!aA zA$O8CCv|3piQQwO$Yd0evcq6fm)h<;oHp1;2ucE}%axkV>N=B~suy$I^U3pXgMCy} z3nb=*&WoxIQdIXnQ+ZKCa5hO1>mxbEb~-tcwLyxw@lCo8m&HB*boL!7+ayIyd*@2c zMx+kmpoZ`SnM~xc#nJ8ea9J|Pzt}#?VQ(VQ7bGaMnBN4a=5wTlgCdF|e(z*ox8D9j zPkt&zY)!r{im-FULQDyCzu_ipV7EmlLwmj(MZ)r4Pam!0CP-o*A$S0WQH^zx)ZBmk zsWIxVk0f=A_R42hh;b*+WCR;qt&apnfw?GmiZ;t6m6i7xCOK}soOvwarYxa z5C#P~kGI(QC>!9rjH5bp)~QH0*&57NYC{w?*#s-4&fw8gC>qQTZo%QwJz`|+m^+o% z#&~HT(S|7EN6#NqAGHFyZZDfWWh+H}G#|SYZE2j#UCWdimLJEIQui1r!p9AS+k|;k zU*$;ChWf}fnX;3ewDTA!3Jjzl9|1*t?_c&&`7uz$cK9Ske|roRF*m-X=!eHZQNU>U z_82G%EcyQHF;Em(@^w1-k+iA#$YSR+jfA|zt1M|_VY$jW#Qk&`{zSSc8hyn)X z^|vvK0`t+o^CAauHbqe*FpeIB)bR)p>0=lmJ2q@waN@O4X?J-ak z&~=HicvqlwQ@XAhu)VXoHnI@7F^U4V_kU$UHDj5LQ53MfbK58f)f=NIV0-6xx^4sK z8TkH@*AH1Mw1Gad zD&md-!uw;Vo&^Wg_-*(MQ~q|ClJk7wT{fWL*?(VE@RfGD~$` z6m3H4YK$Uig}W$$*t(n23^k^`*G17L`iLKBSQkZ`7)N!sYq>6pHql4i7ql*lHql2s zw(Db}h#xvx7e$+pI=-4%7e$+px^}={_Xxbi)e2j~N`KuW*qf+U0{*&3;3cl|D{r!o z9)Xv*S_$~;9)Xv*S_$~;9)Xv*S_$~;9)Xv*%KZ#-96bUrakUaSU-t;S#8vJ&k$vSpU{;C}~F;M(*x z$a3Gq_hhe1H>2SiXr@8ksIf6_HtQCRb@^MtNH-fz^O;#|RLn-zs#|r8|9Y*_d}iFs zn3UsR`x@aSu-BYQmaG+^_wGut0~oicl1AXpJJopK;mE8KGt z7U6I>>3=z~U1u`bua>G+6py6)by(@oEGg$rii5qIO zMU|Tni)dD`szU6O-5a8J6xP*dsg89s4WGm^K~OrLVQ7s~3y04}0Jf-95T1{E7@E~A zRq??H0+(DU2<&K#2o~49;SS_)--KofBqWvX-RyHtq6_^BNL3X&zH}wYjxSxu_^OAL z3I%})z_9C1eV~*?f1T4|um5G=D%GlJhdl?Xu`*})rp6(CQzKfR<-5J{rBJ){9{%ev zhIGpG69Fy@ci=nOHybFW(=K!Aw}a1W$F>7ymW*I0mKzdoCjq3&C!Fh9P-mUkfT~yp z|3n-+2j|{oIG@@2xQXRqCQ8g^7E-Kc)vUKz*%kUC6ULn*j1~5U`$W=Nm*>_!>{BT# z_D(vkoue_8n%NKEJ5yM40_Nx*L~ z5~TR!`G4E}nQ!%p_h2DrE4lV;?v4#iNOPEwEGby(w2uwpu&^F|gnc@j^e01x#mpUc zuP_H{$w44T9}g$v3+FNn=Z)j;J7e?P3O>d`~AsyhEPG^ zs!CEtAyEbFlKn%AuK)jjMwFdMsGcfiKYqOmWFcFM^U{&eDyxv}b8f8kufyOQ@rPp+nwXL@E4 z9Wv7eq`?6dv|^Sv1T>bjZK4ZK zG@GUH!v0V+%wZRpGHu@N4F+y^K%+F-`w}Yt@U(ja8`y>M!GyTkrEeuJ_QQl~6qEl8 z6n&BOO^BCWc6#hl3x7emKj_VR8P-f%fAJa*PWp>w=0y0JWfc{v^x!(7*n=R=@OdEo ze}Lu>(<#jOOj~J%``|%Z{>9cstRFJ0y&gqZ6j>u>T8%xNUU*n~iQi|)zAp327jsr# z#Qg#;%zSocUYYq-irE7XYH8*(Gwa&SuTf0)FB$;Fn*}&GnO&60E##Mfc-$|dIpp(m zN&Q1zR?IGVfcl5YKkJHg-;m#9#bp0O)IYB6O*4Ckcn9z*#q5FwBcNS4*R;;g?A{^0 z)`RPWqE5qN7-aJg6~6}_tR`B*L!|Y>gLDxUS|2UvA$sUtQE08SgpcS!^g}^(lehyP zxiZ=Lbawp4rU)FrI=DFO_OEXJyMrAb`eHt`jrRwC@4k6^a`x-qc6Hk?!46m>W(JCU z2n5a0($xJzR#;x>_2@=#5KtgLnx(Q?OPB7HFXVAVQbw*o0^Tm>U9-)i1b8!6G=Km> zp}&rXAs3_&oK9IQ5f9?XJDiNBMA1GzV}nakT0%mNH@G28xV=fB?`LN`P%PSaaG2t+ zuEj}ebrJ6s{=4pQY*tyCWz{K-O2MqHQ8BAZNo4!!a3aW%IPijW*3d(m$x>?!>Ct@HrT@*^*y~y?uM6~RDDk;rpcgqQ?b;%|arcJBW`Ue>gmHpA zL2yOK9*tS>lUXoE4e!zr&AQ|UWvNq+3Q&hGmxnIcGJzuD3*Xi)#}rNp%)+FT1XKk! zSrm9hm5zp;NexFM>(Xy05`!i!G)hnu%HQm5zUE*pwRskiu7VuN*2D+ls(dm zgW(}JJKvY8^$_=OSugmoI?KqN+WQKgfj)A$845Tl~im{MRUK1E!pC<&H+ zW23}WONd;BAqPOdNM{PpB0+bg;2j-Nzy|FtR!$ivvd|lQI=j+q@r3k>OvrC3@RbA= zy!0uNlfR2Xuc$KRc;VHQd7}I;3dy42$He}SdGwnUqD7XWh%AkmfGjHi;J1UL<1R|6 zh$bo}mZP1|XT1EsDTIl5jxR~UPb`YN6p4ZoYMt^`$Q0guauwDlWh(@d%c|Hez*RlR zBg>nmLi;=}jFu2zgCW8yNKUYq_`(!K2E`(=WI~*vd>(a%H=kUdwJxBl=lHhcqvyz$ z>9@mM^JCL!?+Gxe=M`Y}5-AKTH5#LbH5nJxM&iWm><9kXA5oA7`L^-#gg3_koP0X?<^2Iwh8@luh%8pNjnj{x zKOF*(^3`Nym$mSi<$-+-y*_mY-V9#I(N2Fd`Eri`%jfpEe}#a9U%aws-yrsr*Y&17 z*R#6_VCXtGw2+uN)1iY8wZXOrAX>bZFYPhKy|M@8{&Whhrq$XusIM47 zza4x!I{5h*I0SFU*;u~f&cLjvBiS%vw zW~W#+`w46u=quwm^D}WROp)0_0}B&jbm9E87Dn9Im}x^TAJ)AVP7iRZW+i>aC@tsg zfld_|e}O20WDR(#KqM}QmkxZYKM4}_|KN&`M-J#1Q7mZ-R= z3kpVrj-acB$!1r?!MKi+Z28Mq#8f6uCCO6sn2Cev|6lL4nk0+kG4c%(!xm1UV%A}z?QUs!r2z=}M)64_}| z!;Y`zsZ*GH1c=BHywoZ`-Ib+?mfHaFyD_pD{VIRJezvU_irN~T+9X7OqanHFaDZ38 zu9_Y<>s_D)DEv3c%T#|EyX3M~t?rXy!)Xy4Y*ulJH@-ICMtnTmQ0w1;Z$r5O$axa0 z;hy{pDgK3Y--1|0>U)g^S&o_2May2~hL%AzK$L^$KAkwrFj?EYeIRV^n(JXSyiLMe zX2MUVdCLagv#9g z@Q>8QwTSThmwMxPHSj;Vp2+je16OY2yOsm{hPiMDj*Cd`@cqJvJKi=tw@<58yl_|Y z55w6{2x|Jn)dZX!2ti-AFPm~~6aBzz5Tz&myUuexM`-No~GY(lsnP zB9`5=-n6&7i%(~EXT<%B;iNZvZI}(}10%L0Dy=+wLdFMMg+FXQPVWaTM$js)EZGa} z4y@_~IMxH5fFp&P*!S>Rwtg35cuKrqzAM^RCC5Rb-QI;dcC+w`$XRW0XpOOpHJJut ze$8bal6P&9?`GW>J9%qdgOTQ6tk&|Ojo(MO4`JcdvG(rJeG7*()30Jm@jq0e%`twW z!Ok(!pca zV6s9S=)vjf$HOCR`@ZRZdVBizY@0q&BEIY)OZpQA)0kzM9%`mTpNf3ni#;GIvJCMX zAbJ1r_&+;kkrQq!9wuul)I7tDimOk(u$REHoHwIYBwv)6)%}(ib`s-_>?UUNgt|$j z<=agsACIwnefE#-{e#1^qu<_kk3at2Q61r4ru*jL>>#0UGXW9-b+-54zQ@6!?uWa;Vw@qQ-X?)j&_gsY zo&-X4b09$}P_*LHU-Baf{_Rv^bcXVTe;jb07DgG%Yb;gi1F)eShKrwT_>WyKU{ic) zbky?~p;DTZ;JNlCmch1*gI;`vj1ytK$YMHVZFkCkLmEa)PK%0t+^$;dh@d9&8x#y$ zPUC{X%5P{eaBCkOiUDyl95X<4BA2Q1G)!>HQbhI7XU;&Rk>I2u!QXjwC_r}`7z)gt z$Ap5kuHm2>;34}KseV;dMU~4``eDdFCob%g$!C%fj3WiI-T}Z=)LqRc4O{lHpVjRq z9a3H+fswf8!NA(cJRVr-WrlqXLs+lv{og;Wwy+2TRshOPSCku~9ff!zH_KN)2%u|!AJuysS&A`nQ%C$9RGBkmML4lCnE%1G2WIO)=LhtSYrT{!EV<0gZHfSto3 zPAA#}x=Ii|*}=+wv2Q)YV>bq@?R|ylYvT>9QG=b<>6EEZLjC?^I3JA#PMSx7Ed%!( z_16Y%rcs$C0Wd3vWM_LH*6iKDcq_x;0wArsNDG91N+Fo3@Q)a^^D5ae;jkr*nHVDr?o*2h(e|vju9De+8_UYqs z%rNV$I2@~i;dq8q(XWjYs1pRW%Q_zEBr=c7DMVSUMi!d-G=ru- zg{Cflgtk^8cQdJLg!DDu&BqKGx`8ww**FrHQC!TJa$)Taagku5yydkquE%LvlwE4% zn8A_S@oP*YENEHyrr9!DU2G?Z!NpzQiCm;wrX9Z6L^C+{3F%6`E3`yonWT+%iKZP+ zf8Uu+b}+T$$n?}1U&i!eoN`#Yw{_#;wShNM7OV8P?D;MRCr)hIF5T96Z7dpwjOKt5 zAc1WAhfHZ2zXL=mKXMw$57ZqI69N}9d+vZ<6d*H$?$R9zAoHZ$HPZ@xFWT_alRqNtn5eU*8_QdHbpR;p5rc zz3mT^nZ0Wq42QTp1-Q8B{MQ^@r=TwcwLbKAI>yR$3XH4v_HhCtPr#s{P_CI&A1 zQ^-o&uQQmtP<|9U(-4s>QQSE1VPRt6fi7Fq^03RA68El+iOVuLivu~ZLS}&Hm84ry z&gzUjG0~r}!{dCm*SNxy)lKK2gKHG zD->WbECp#g>}~UDjeA|Ld#*!kJ-W8&cw*AO#w$+3^F#4~BiY0>b$|f_2RFDcaf}|Z zL<_}+Ml+QSTrd#9H4_hHA!E-_)01{Fpc7z=n)!;w69nK$5sl?|0wbFyRCa7m<4dWV zEHDL?7Wf!*b6S%tl5M-taJ&-GB5@m+wzlSC_O$2<%l{>L=L!4PGJB3xl zO&qFS7lVXN|G<=Rvyn4LLIa9(<>9H|<{Bq#$&bIp^sA+QU`J|u?RK@VjFP?Z#axuN@6n{@%KAZ$w0knEeGV<2(uVlF zUH4+xo6T&5B`?qpx@qRElO`7z$zzJ~0iWue_9yc(B2^cP6M1W$ku%0du}KFr=(q7O z*@6(@`8rmEY~kPfPG-&2nc9UrcVb$3FS)$gEzSV#fzwmt=!nE6nI+D+cnry48c*&1 z#I?KUquEWyV<-=b1(un1sEFs$+M$?pJ&>;GMqsnz^@Kdx9BPE*Vxl1Gkj!NynVx8mGuh0kN*7 zPl-juI^EJEDPiV*!NjDVLABC}s)C{2NVgJ-$n8cJC0;ykXEBuR_+86pjx!&0;gGMV+qMNoJe})mGQ!93=z?zHn4iI5BrSvc=^kz% z6->=E(p6-U5TDPSA=dn6y4c_*OSg}2@)U&Q0&y#S>5Qvt8F60dv|rK%o4D$ih^H^+ zvLl}6E5(+JJ?`IT+-XQfJzZF`qaO5w=jHEBBmtjbg}B$!nJ=~EAAe>Po@6)evKQde zkWXj-(#T6C3YYur%JCL&sDB7P3Pd(j5 zgL~h19>00Ydoz8$k|JZM&qY%tmK|K_#USr4Hsk}DEQvu5KjLcZ!C3c0vEKV5n!n zq$Rs*bcSojdElHUpRG!| zr8sjDsvJ9wh(9WKF;+ZZohP@gO1j%FKg@IGc?Mr;K{2<|EyesW&sAEg>GoEBnCB`j zwRFreI*T29ysU9=L{RAdElI@RM*pYUGl&=S3YN0;pc&Ku6)jN`m1PTFvFH~ z9(>MKHZs_%dElI@Y_!woMCpSlmanZ^Nng)M%!}ojtya?KM2UH^d~MYXR~sbe#qzaP zE9rB(#JpI(wrXVw&k1dM7Rr{YR{NFi7A$^ty)R9t0d-y^tDwpERGcc zMf9~*&2()u>V2`hI5$sda3_ySz{KTdi# zzv7E@wwn*kFq8`adzSE9sZ?t+kBU62;C8%eJu_~?fY$LoNB9~S&94LY1Au9@jM2;) z*?VRa2i$9|TD4wkShb2(wek|N2f&5z7e$wSAiB)ssUCJuM6|x{SGRlE?cgW|)*2PFQMKw8%2{R;D#5syF)7FYvD3e@$Co?5 z%qOwLrsc<0Dt_YD*4`ce0KoVSpG5VHUyn}>{s~e89}730#|qW+yEpiw@dkVKyYzui z@%PSk@X=}4u-b-M+pSf0t91iXRomM7(fG}FJ$!&w6-T;NvWyo$&z<4Gs5Y8-Z_EoyLpboa^3TVjP_q?}n4F##ztB zy+Z+urhnt2H*$uzyT-NS&g`4{bU60_kC!tB_O;U|vTpiwt5w;#@UE|{R@>UKj(6;> zd^+j`-?*N*qu#i08*e=*elXIzdyl*_&K#JMm%GLm^$1urAB}o0C}r=jcEq20*zuqA z$DN&5tim_LI7DdKF9se2cfKin2j7g(z~7zq5aIdu+lnn9K6!um#h@0drE1j}d+e!Z z*7zgHsFd0jdRe}Otyjh|zqp>p5si9{C0eR@RGI3*XO(Emc+tP@4{h%y(WKIP=N^fx z{gRQ2uOZ_eCO)+b^1c~T+j9z03*S2)vm87j=q;}z5(%oGOa)m5Dn<|V4R$;Qd8N_e zs8;A1|g#QGzj^`}>tFDFNkh92oMlspWIbVa5ks@uk8s5+vJ2cCUZs z*w^?FHWh{84gDyvJfwiq1XxMsz;8pN)PIb7x(ly%@U7(TAyDwyW)hk_!ZAJZKbDyA zY#RR#mA|!x0-+i{${M16qW`322f8+puD`s(1aWsgj;Z`J!m2p`upx=J}bnw1ww*C|OZ%$8mN4|T9e5!E#`HVe%Mxk$8K2Qyb zC9$A3B7X|E9sVSKP%iwm^KI+f+nXtZ(36Ft0ZIl@5m`8?%bp0tyQ6m>waWZ48AKcw zQhNo!EC=GfJ({?;0RY-a%EXKJ^Wn^y4(%J;_2Fc|qS{cr_+(!?9+aA2A5V!O8qH7^ z*qMi1oK0qIijBuY^r7rZLt$Z=oRCUBSR7nqlIoo!F8S&4Cy5Ft*sRuSc*6OJ7A3SA zZPQ}-)T*_5gPy8*&xIGdLLod}{7sl545KhF{;jwoo^ry%=Y?bhemO5{l`7d3ZLAmY zV>K$xD&v5O^8gJt%-VR*ofnJ`gbc?55BJ0i7^eaIC1SfMy9Eoa(-UE`Xo-BJN7G3U zMN@qRC-UM4n68AiXRR=Mq<_?dDyNk~HZx5WSBb^+_gl|(*kI6S44#E9_{id%GD8S7 ze>2{_gI)9a3^R%|`|1p4SH=mt$A2-yR;9uv`9Z@{k)R$_HLaAQ1>Z*O4##HI>R!yd zmR0XgErEIT$0z(1J(5t-|3bBh@@>BqvN$c@9K_cBtIOIj+pR@yXhLfQTB+)Q*|1Uw z>aBRwZjF&rT}X;QG_tmWCVB6(&vC(v<;-kQh4wraIJi4Lr|_iIwrLWH-HK03Z;Yj- z&oP6vg8I{~J}{KGf*RB>men;G$a*E2YZ6%YRwT##R(Rhuto61+%&9k$+gOETiWV%p zC*uKD8j~?3xvBUY^RPO{W}~U-X_9Er)2wx;)tDxbw0tYF_nkhPLHC<&*7>ysoiAIV zD%7AHm3-0_hy})rl4RKmgp4|-wrIo%T2^U=kCHmIVb#n;ZV{@i70({R8>Z6|Kp#p) zP=y~w3!Eo?S_$TY%OkBN{1*1}o{eS{hYBk|OE38zpdQf$=Qc5Ss+IR^R zNm`Jt(IRblRtX*Jmoj0|G7S@GSfP{fpcPgms0UR?D@C-hW_~m@(>ryVj=X% zI5_Ky$@OSFozIL@=bvyLU~YvEhjW!Zr!XKp7LdBZWNdfgE)4b$F`}Uiv*d=9K%@`KV>jc z-6RQ4sjK%|lISM#d6CTWuU(;H%EY0QrFz ztrJ4&x_{32barfplIJRgy1 z!1obCB>23Sx)J;tgO!w_{V5nK-Rt*;Jr|M_v#cF}BdoFyUK%w3f8ktAIGAWv34S_( zWn?FSXCF-K!a1#h7qd|w;HfVp_IlSMZE5gCD^9I=u=WH?e5NYw>t>bH9RTkalt7}) zkvUz(62F!LucqqN!7G*oz%OEsUr^#0#a{1zxRc!OfNk}%swgeMH^d?&gnhVj2JrM{ z4-y;vr7~v)@J!P(=mdT-bCv^7pC^xHPLky4;HmOr<}mQ9GAASWRhbhDJ~X#$vpybq zrv7hW5)Kxow-7X}KZ}1x>M>*ZbpH40{BPv^FZREzYW-_qol*n?uzrW`&%9P#81q2%JO}yQw|l~>U{QW_W;LO zF2^H#Jo8X{j^kweW3N+Y4_h59^XUxiJ9Y$iUpoOyw_Nlr6vg6oKkgJPic;2A=WH^4 zKN;9V@+$AguDUzrKp9kFr_I>0Qk;TyCWC!C_laVW^sNpnr5!Ter=y^qawK`HLkE31 z1dv3he>-I@37m>B2ITpNaMcMb&?HY|(n-qwF#rV;wmRZW?Z*p#*7jiB8{T?O9IGYN zL6BOUZS9m}^MGeEbd~e*8ixgkLvfr>c5$B_)a6GCRcHTfd$S#UbIX>6!RScZR_A~q zUfO|@7M-`VI_0>$tV&GlR?%nK5R`_L*sP}E82UXwF8BW<( zTOB$GiHfJgUjNI!RjQ#~{)}OSv!Lv(Ci30h_!4)~I)s|pDbo*LBqA6v^o;gpxw2l_ zZ%t-r2IE&f5T~2(Il>`lx#K9^JJ#oNF zqR5)XQ7a#T*hb4C4u~;8E^;BwAm!6+$b8Ot9Mcp5e+C@7oicmb>Tut3(!?QhA?u`x zb>A&!3rfPs=p(koK1K!m1qvUf7n?Q39m42zKbgv4>*&I{L^bt@9&p@!XAC~!7u|$S zP?9G0i_V_ST<098_xEvVVup|KK-;J!>LH&@?NL$;P5GTs%-r7J8O`L2FDl9K%dJJS zX@lTwXUPdeVScC>uzJVDbDvT z!n8(q_ zoLpmPClAS%ge1wc%-+4hrzh|Puy}gozbJu9V4+Iy9+TX~wAM(AGdfNYg+W!yl|2N@;wOZ!W{{MHN3_|<= zIYs;mGH&tyKjI*p)nNQD#Gn2!l+-U zOC{-ivtMq-xL;XlWXHQrx@^#*DWpkPw5rWgz24>_+N@@&YBogZFOx2B@^a#O!b-8f z7UIS4`vs$C5R#Dy8k86ia_YtCUs4f2J?<%Rh?*Br#ngj{f59eLP|At8KvfYE=Bu9q$Cyb)8n3&?wU(?DuPsm zW3SR(|2Cq0e2YEZrZJOUXW=J*K&v{~M9<*6eo{I$CgEE*Y}k&5e`qXwp*=szvp z(>dM6)k9fH+a!nRsp}479SI8=FhPn0`&C0V6rm4?^Fmqo85>W^h1r%7`f4>6PJ(Xb`@*lZ zgc5&B$udUN(Za&V#*0M6L$`gevGLZlB_Eo$HVuz`kqMjmRHj8;mFxO8(4n{50J@gM#r&5)sM&wXDPa@J!XHWh=a^1)K zATeAB>lFGY*i9NfdYd7%3j{%t$07#Aw zA3^OY2BXn@*ror?+Suz_Ew76hi8Vyy``kbuC1i@;b1GPDI3h5e4q9uGKPG4DIesiH z7714@VYIlJcZ`pzwZ$IkAN8Pc)=D8;Qz_B-m$^s1)Y?{vsfUFaiU5~pl?PI^YCQa; zFH?ailPplHltfcn2rQv0yjng$3TRhpi)e-k02hR>?~wGg#qbN9v!o39mz@_Fa8Q5knyjgQV?pS83adY^1ire5 z2%PB65LV}W_(eo?Avm!hSkx!kNlCY2~T-K_^7|H+TXn@&_5N*V%nTS6` zW++}%ub`%Oxr9!QIT&g~y!uVWwZSOmScm`BJvo6qic}3I$WYY?LY6%~;mSCEFdI1h zdkI@BA*OBsMUoV*%b86aQ0r34FkIr}AO<1HH zCOaIWJ{~2+p?BpX+^?X#EpbWuC90VtlvAzyL?uLZkA=gmrN9Kllo*NM5(j)dmV_fS zPB@Obog#6Rb2jVmT2zyS024$O@smUJgMX@cir;4LeB4)zG+QAE;a5Pk{J!RoqKv>% zAF1&&9ZbzI3KR8B7(4zBEyUerM78cYQ&i`RV^02Tc2E4CV@skdbln%=OW;N8vrxM3 z;x=O9OVVgwYlO*sXn+Dr3^EC^f+QuznG8yy*das({jRc#GpWtl!Fu_$z?5hZuzJg< zg~Vu+Xa_Ce@G!N*Ob_CzipHtXU=NG9lo)UlHS=kK-QEl$q~3C9L9^0gf*)$KR9zJP z(1*ep3IzSokba)L-lXuS2dbb&Ma3Jsf-G1Gi3(AGRB27h^w<`-wau%@e^Ej2X(X@S z!qm3EM59FdG$eCL5kMdo(7;-V1d8-qkcM)UhNW7FFe(d|Qd&^!jyOrudO9f{qUj3T1bN1O&E zkxPt*7)E8|(!v(_Vw_-iL zNE*}2w7@(Tp$N8$h6GvC;PdJWX%H<0bdzc!VZ^P}LO`O>!b0u6LJOgxr)Y@dQW$*v zh>I(w4L#LD9GBwiQU&_+=eW31Sp10?$YEOpRkiscu5MBb+}Md3a;PBsAz{SvR{Z)I zTF|1|0%NMMaKx?9LU73WG$f3;GGr9TCdUhRI+ z)BVq<`=8d7V z{xbrg=~1DdB0g73n~eBuQV@@D80cV3WpUMJ-y#iBZ3ROq%S=6lvP={A0rkkqGHXH5 zXLWZ_L+n#1Fmw>XaBid2vf6hF`mF9O>bQrS5g~2yxiA*>*+gtzKcq7Yvh2Si!m_ya zs25r>?lWERq3E`&#(k!E!{N}%=`o)XyUGvIEUptp;rJaKAFMeLMH*3%eUMhOYSvpO zrG?^A$3s%Lz5FJ1-~n{m#k-h*(lIdPk=dk((1Q87Mueuo&KQS0zB7U_<35EJfEjlx zWbkEqay%3t`g;ut9S-HDZ>(kvv?=x>SBX)=7DSny1Ioj7H^pY}mq#-=uW#&DSeb1uK zhB}>^OCbH82YM)!@Y)5QkuP?o3(0{si#?-1PSXp?zvu41FX8700EljN#xLCap&}d9 z0NDfOFKP9KNL&~?U-9Z584*$j>lzASHZUJdamC>t*uV~d#T!8yvv{e^$;0|4hX|2L zW>KWz=D2ZxVi7l8Y?2Whm^7H^v$-?QbP6-$o+r_e+PuGE!WfcZOcjeK_cd4;N3x8U zdlr%V9Ws1VL!Ru8pIQAf_oza{Y*@3U<Q z@@T$gw9+DkO9W%YqxrniT^Yf6vS?@!yY5j%gtg^;3=MI?BH7B~g2Rj5BQHYgGV@nP z?;sO`6$|aFVsPUg1tZzE+7K%?Hb|JMnQ5Hdv#q(Qp~4uFb+l}jC-*jB7*8^dnR{l) zx`xfu2lm!<2!DfMpYDG>-Tw;S|7w)XN~=Hp#n-#cSS`k$}v4@=i~h87Qi6nvvr)Ahcb2ar>(HfmN#|JQ2u>eKgM zmRkDm1joQw+GkZzEf3scBnT&T0o<~WClj*Gs zuruSu;Y;n!Y_}RaRLuChGjzr`uko$6e#tl(4vkM#+%rDep6y=SgA#$E|L;Ki*4F<| zn$zp|@SQ>vpQJR(_?ddf*4B$3jl++h-gbX^`{C`UgR`TLAG${$-hJHL7DG*b^Y8W5 z(Ca$*vH)=ITCe~0>+vZHo_s#*p8ezG?Oy-p=Cz;n?)c-u*1nZS7dcJGNHq@c855f9_RF)hZ24E#u(R;jeoW^pNYZ)YE@_=*q&l zNnES*!jyarOvJ5SRrKuSY;Qan^QNfK`?v1}a`c8fh}zq`cYC;tsOlnq^&V~`viINK zemVum0H2uhKikHSFSoWv{Bw|kf5r*VHTE2<`Dyu*dd%0 zzf3~chl^2jTQ7gw+M4!Ud_-|(yF%BTo^>z0k^Cacp3!VyT7MH5?Qf6auu?8cwFq7evbugwgsLGbyX22XjhL$`FR7S(biIL7mHz7Y?1T^(^$y0O%e~a+yo|SB?K2$PX*Y>%SkP- zcpZseDNayDI!miB+7Sc$kCrbFypX2rDhItoZxOvgiJ`$sNnDJ0gRIxtBZr~q`4eh1FTk2DMEb`^OPKY` z6e>Q^bNv%7J7{vU$NdRr^-E~vZ8FHof)*A2Xi~?4KK`|ppSHd_F8f5VN)l5WM*uBo zG_vpiBv!#R!jSTu%Q04ge^{)k@W(zR+&|1ZVWNFW#?PrzPUveZiOp73jsPh?SVG@@ zV;>pw0kbA$K9KEJYnas%Sb*7+=SYI8CgDZjl>z8#1>Y}|BpZM5yvX-lBnX35;{p)> zp?CE;n&ql+F_jc#`Q{CmMJ!Wm-H_N?fRFbzyF8VQzh4Zew9?ljm~D3DeUG zR27mCU=TQ@5!AQ2c#|h@I{9k5JCiYjk2^D`H+25lo5630wFi4O&h1NQy!C%7z8H%Y z%TJWJ)ObQg^Z7YYvB!h0EveS!?};Y1YV8kqT<{Xzs{Vj|yt_*bI`XA}c9ts_FEFdZO;etlgGHbY(5( z8d@*BNJw8$O_+&sHAU8f%7k`0eKAN;MG05UdW?d=Tcn7@R+S3jsM51x7AP(o)6tdl z=yF8LT8R+(`X<10R)?o2R%0V=1yoqQIH+=dUJjlPiLAZ);@>Y`XbW?p`~|9& zm-sRV$tW`rR3hU#Nh+m;x+I3<(wb-eU4K3hXe*h`y^Hk*@f=t(tj44SVy%dDXUH!a|VW9SPk?W;E6rYgmaa;1Wqti6f%1OAZ-y%rD^#hYw6G7 z=9AfzZ2zQ5Tv#+D9t*I?2C*zfzpJw$%1;G&0UN5ZY*>IV_Rl1~3&7Tv1zXPqw!SP_ z?2>1|wy`W&Y)obV+l&Q!H_t@OY$-8W&}q>j66e{=00^6^vK0O55}-ea##(E6Mzok| zlRDF)AnQ@cvRmXT}^8SB(?xRn&n#L%2|GQB__z%SYShL_gdd@x!0=4_!-HYMmYqvic z&)mtdJDg0W-6@W;bv^s9xjm*MbvR}2%$C0~~TMm$w^uP1!vlOs>*#a8Hw91zpQ$ zg8>0~)w=AxtR z{!%w|UUAF!@sl?cq!6}h-Q(wyKTao<^#niR=kFnLZ=G{NaDsiF3rMAumV^e85bngV zXehzbdY3rQsQZBk7McRArVX1h`pTCV$gn$OQAzr9*M;R{h&366U_6uSUAsSV2Rg{tjNpO2!{HKF zB>vPQW0c?MYeMSH=QE?myua&xG?j;F=u{h0faRtn+&u^LhT58{74`F|qam3snW zWkvlzPopt+J{J|B?*B=+sk6MpCq!(D|Hm>LW-$IAuKiZ(Px1dkY+TE0qF=+1RxjTK zKI|q)2gP;6_2|kAio#}Knep1_+ps2I8|SZ$DK=C1ViLLX5oP3KA4^f5kGtZ=4z8l@ z8n~j}lc_TF0xp=T%yYG}pO?mu zyk@8pRZz9#S5H%{I#?0#(KplL109Bf@+CZ+iYKg! zXe-VSz;*NnxUr3OJ+76yvly32fcb62gj{ijF*X+ngzH9SnTV0ns-*c3tzAeaMIE3N zQI2wDyM8W~BWMs2u>PPE4x(Y1jTErLziOT`7I9v}nc3acG28vDUBSfa@r$~~i81;D zt3(i|l5mF-BU`=pUND-}`#F2}?~+dO4zzItG$2V&ro~#+_{u;FVgFZIY~bMjuk~dA zuiU9iRKzS7vj6L)dYeM8)}Dsy5`289MRogM&KiLLCU>^}pRu)l^8T+?GpnKa-&Un* z;rkDj`(Ua(|B?26hqV0rz;z96z*Bk0ol!t|ivNw3iyr?w7_C}H`|bt?R%#4uZU>Xq z4`(WKvIkPgl^aN)Yh{6i&^EEUAMO{@4*`oCtz@(5aH>xLj8JaSFrvtSs-D3H(OgW zGZE0%&Av#;RRfn2l8Imn2}Ll4NrhapL?RdZ8S!B^d2nr2DiGRINRYa=21()(ef6#p zg$N4;MFxLW{Z4|Sa{Y*!QOK$WhbLPM1gz!LniLoxtd14SR{j z;@e@l3)}HU2kRzs2w?E@PNWyTr2r=>GsKK=c}An4Aek&Ca%$txbX zkx==IAMD2Itw7jDE>L3@*pWW_z_{5!A8DZ-SsD1fy5n==2f;!!O$2ZZq8(ui4ipnx zBr*(6!blRZS@R~L*i}qZem~~Wk;lt{EbDlLc2p$|E*m(sM1dwzf*nCO>ky7CWx}Y& z!3nd)FGJYW8&Sr^Agq7{N%KU6OsmFw0c=oc%aRQiyE3MvhJ4**oRVQ)%vyuNYw1xi zCA@e6QOz1WAf`REM_nAmAvl)V3`Fi^^OZbeU*)$4EQqv*5Gw*TNWCIU02##wIU8zF z_~n6W5RQ*51{PzIRpoH}5zBVk@v6j5XajYqP7WJNXNB45<^Y8J$h*A(7(zp0)CZE8 zfygz4kA$y%EX$Ae$}qWW$QLktPlvbqz>P0J{ zl)Y*-4uXGNjf(j_9Xrox(EV9PCm_@Uz$rl$;MKbZOUf-3khd_D@5M}g}gvXy$@=xiIr6W)3=zLbN!y7}wG>UJ4GBK9?<529JkKf5m zm=tIVXF@wglmPZbW=dh?B*cpI`5p~r5sxI4FJ;gl4S4y>27h#$jN~{e+M-WFkdvqr zt9~-~0-ZV)>_{6#2_2K(zMxz0q_y@!5=LN_QcpSb3=8p?C`-&3T|tuM*ifobb$uNF zxlIXspuwWpv8%KJ(ln;Wb~R?kNL&``uMprE+m%Yu-^!9*6#mKO0jaKq4D_RRYReto zJ-Cr6VkN~2pFC}t$Z8!2;x*m_%M#A&h0G4z_hnK9U5D$Pr0bL^uB|K>!qO}@lPFp= zP<;_kQbUq%p?DcG`qD#lJghKOB9NFt#ceF1dez(zRGW)x!a9>;9a7W}k;9tH<>o zog~Y0I9zin4sTdOg_}wE-tNdk&1bbN4PREpt| zg;iOhEX6edy?;v*jmot|M#8n?vN81Hn0h(dpfjcnGvR2Sixp0vG2(`nm>d$8T*2Z?QLt#L)mJ8qsYr?;wrKSNh-%fH zv6n*Smn1aJEK$CEp?3pPxq%r049Xzq3Tt9c7Cy#Q$jHbHQTqH2PYneH@bg;aq%MU2~g<8rIBatyN{@`xT+20~l-8;NprD zbm>JLDkkQIxO6>Ij-RhBHwd5{x!SIQ6@aI__gWYlADYS~Sn)d{0cbuSEFE6VSO!2f z#N*;og*`Z(p)JGgb)%bz@pTi! zUip?E{1B*1E`hYUK?+ggk`+A}Gs`o3g>@DBiZAR`RBTZkj369PU(MqG#U}k=@5TV9 zdZ?z1C2erU*pO@oB5h|>>bK~o588^+LUd?=Z4>!zhn+TrrRLX3F33i|JX;@u@)Al* zX0ik6?2xm#c`lq6+O`m}G=577a71x(VCfn}Bx^1Zf)e;r(qc^=33U~N*KT6#eeAN* zC-wqP5wtI<4q&ZC_)=$#7R2_F;;ZSvbb5FVr#15j`E>rDrYsy$&Y!gp0%G+1f1}iBHV~An`ZR(c zL=WB#$>HQuMw%?)`EI}xYA?S3+c4{OJ^ouA@gM6rul02PKY^XOCU5=7{_+dqW*7v} zIQ`xDdF~7cMzztzWum5m5A%NP&kVDQXl|ATcM2rs<~nqxGirocX5ZYJekhQGX$FR$~O)ID&3S>1iS99$ERh&u4I+HzUxe9 zUilh_H@)r^O5*?0tUok%5Ch2V_3f>r5AQzi8h@Y?P^;{ixaIk2K1TeWOXGQl7S5e< zc|QK?_NG&NP#%tN8nx2IZ|`{={C9{xg&01r@m#x(@|>7%<=V*Iqf1OMQC3iX~ zd9&xni(>?FyXoGv8ni)vZMz=Mq8jy*Sua&~+O?fadu+Q-|D|O7`<`o9ZG7l+w^rFT zE5-?Dd@T-}k7Hxv8K2MRh*)HRYn585W*ncL#+5x9-oAdmbxPetd^`icc~7L&DfcI%5&R^qi=wQnYn`);$XoWfJ9Q`j4Rj3o z8;A5E+?Y7_gfrMUU_-U&Syos~L|GJjUWxz?B7-ZoU5Y3rxL~9dCqw?iL6|tBd^H)_ zWlavs1N*uRadHOU42X|*`jg3*bNpXEx5xdfQP2J2m1&{U8+%<3_o_X+JL=6`=Z0=> z&z$Md>9bE}0}vg{EHl}FgJe+dPp4{@z_YQ_zZmu|J!8k44fgu4UYX6n<52=~v);5< zKJWFvU=>lG-p;Nj<1$Mt!3<^pd2Zj>alBh^W{C&JhW4g*w#YZ0hlmSHA4` zcN!(ga9MyXgRC-3F?QaZ9h@9=&kjEQ^7gE|_xGdYqYr;4WfAQx=zxO({I8b==ONZ> z*!Fq8!M=J<@xCZHmk`Jl`C?3*? z4yoY5r0bS=^r2+>K$-OSF_PD%)nX|h@RRrrYN2V z`M0B^EHI|vZx_zx++|~JSG>~sOWVD`ykhK(y1g5xJH*Hv_iy(q;Rem90>NOO88`j8 z)vD}Vc-L1}t8MLA$2)dZLK~*(qbryR#o?e~2+H#~AZhxvPioS}(LD;-xiiIlGQqrG zs#Y;q_C_{_0`EUb$mu^mP)OGu{O_YOpNjBx&qeX)B8r|N03rq=!5n*O8kO@Gd+MVp z4L*hg6x~gCXpb)um(QwK6(vk@CjDBrrq#$y3{fVL*e1A|LJ=HM3DOBPf#Gyh9X47N_zZaTbw8`(F?g z5R;=nw*w^#*+J@K*El@+%Kfh#}Zuta!j!)i{x!F*< z+HLHbFAIXxtml0xBu3469@VY3^`|i(vq+nM?3(A3bFwyJkLS}>n4X7VORc(F#kcFD z;**5N1-#06AR(4bv@Q}ogms!#T?Q4>t!qQ2wiH*^hf2-bB~-#o#egnls~sClTG+8n zLwOY56-xC4s??qIZS2yGFC)sdQ6jr0Nu8RdYR%6Ms?%nvRh4;*wQ0N5Xt(3EX|oCK z#H}-bjuR8N$D+|b|BV}HJm4)iG=fUmtnHXpOe#mD@mYvpl5y<%A<#QH3*?2CNQZIr~fam@XuZ>_Lf4jE(-B|~=S`X37 z%*MXq7wlo~?02!YoOTk+qTz&LeJ`uAU2t*NY6Yb%mAUX2&>}IBD$ZucO2NnommquI z>^o+=)!eljOR`(j8yqd*(Onl4bcV#e6s!UkcU1WttLb?e%?2aBX=BmK=>2 zPXkP*_y#Xta^`-wI@zl3TJ0s3gJi7`)+atrcX4}uw^3V?kLgO5ows%lzb)PND?@Zojo6E8lhdYTew8RpA>Z#ki9QAON6B|cZoWXtQGZ_0GHa34Zx-4q9 zcB2z;pr^kB9@L+B(6*j<(5^i3p!K8=c3X`nIcU|=c(Aku@bD(bX6j)09+;3i8dk8( z9-u6wP7dD%8yay#0^cV7)4)!-T6Vx|D7Ry2r{NF>H`qD5_L>f=Gr)%qcZ zwo*l%YLDxPMDlQNS>`RK&@9mn^@O`chm!Z~vK21S{!ooh`{ac2_3JIhw}lBj@mi{y9C5vA@U;h2{Nr&J9qpGPtG-5aopK4jz&{_kISYn1znP}ZBC&Mgl-Fd>-2f_igJ!zb9FRuj0q^)RZ~b!L8(Ufg?sQH8A6 zYV|P&u6@(D?SaP*T8g{-xSYiTBItE?#ZCFw;z~X4)!FW>hohUgBV8%A+HG^}y*BKN z3k(hCnr`S1d$-2167~1oy?iqN{iR7xO8T+nu7i@XPAP3x3jA z+f?j&?3&^8*LMkL!tYmW_htFfWL(~Dwpi31x^r*Dw4J!!L>F&Tqo^!y_KzBPiZ4Nx zEDPT)e!2C(p2IhTI6@jTkib8amq`BooNd5|`d%9N&?@0uDK(*R6Ak2x^zA@Rexm=bw*0(7auTk|&!+`Upl&-<|CAblXjYqN12Y z+FY*Hr@7o;nyM38L+8S#_#(JZkI)~O4it-mb>H4hhZC2~0L<(>NSp_23<(Jpes=I( z-=JloK?F4_RLVkX6!dueRkRY)S~ z;uqUWd#FAPm;owqA2FQ)i<@6ol{Z!IA9U{kYU)ACj~JQ z`62VJ$6`4?7Z(hCFU4Kq^4&YkO1Xg+hgot)SU}AmUF~EBKckQ*FErrn*hkJx34>o3 zcetuq7kfB#ep(`b=5y$5t9mWm*Wl;Dem@Qt2Yjf;eShW-yH_5DzV9gWM?V&fzE(l( z(o5$1#8+`xT*nxNLdbF#7ulqhyFt}PXKpYx;U>xJV#&pLaYt0cU>Tcp2F%C$Iyk`~ z=h}6gA0a6Ypf1j>>avCzOf%s6@GB{k2;rnDq;%J;A=0$f^1AroTdiw8-!)9Ef;?>I z_igM$DLW+uHmlj=&wzI@beOLOuHyKhq|$hfE`kv9I*ZezP44!{3K3BsVsTOdexRBI0gx zs6qsHU4U^to5P~rDp~EOj`455zBz^|-P);E;0D$B%QEDGLugnfioYFy`~|hzsD&6L zdM$)C#s@OgN+n!TGN{?cz+m4tpzTvcb%eaTwDm&%t=Sy?d4T?9=09yv@I24>ir^)N z2WEP-;85r&sI9hu>hBW0L!e@8*0ik>Jd^K#{byt$6SVqyfPACR_7-I@;81{G(=4^M zD7+Ej!j}=W!%o4?P_tIDR5ve@t{Q~PjNc43v9WkInZXeoMhu@8&|3D(1l*KXsjV<5 z2|(D{(jp04P1+4t19xioz8EoKgdt7XbJL{>XTwHV^qEaWt%lp@?G5&#AouF?5Jqpt zK3oy_egZ}tLWviHoUX*O#uM6)kdEgbc#n}wCx9L4{; z2gN6D`5lJfsf`lbSt|7g=cSv`aCKHK{{BabJ0U5dH3FW(Gju(w^ew%K{ly=`+F>&U%r zYkPmILnbxmNX(g3X2+zoiQC0NwEYfFlJSSK|0MFZI{1{2sEHb7)~I@rt)qRYZG3Y= zV#D58OTfXK;q$eG4dLl;byHeR%SE}~rOmL$#tknIv|W4u!{_5;!UK<6o%i&`;Wsn2WJO=Y>n-&?{K2$ z6ZV*PE5_gW<~U9naXZFvs+M7HZTZ>NuDj2>~&Hgvqf0#H0ac z8GrMpHctDBsE0TcMc)Pvq#4%}XJGtCmj+iC+&D#rBU$0K;k1pvMLaAxe#dL^FaK6h z4CB`S(J~ii116=15J!xx=|okMf9vMWSDc}uM7-UP?q8?gs0%*4S&Bcd`~#6;J>HkrW||j_DBqVyVi^%E~;ImANtELM&=dTo{#U;x=;~c{t%0 zGa;uJGwysp#8!3`10G*`-4bNvj~5B(vm=H>5^|;hNhPF&GNb`XS0R$@#v1B}98^uI zXp`uQrV5?x`B2R$uXo9mgMchckep+bJ->+P8Hy^HvaS>rV4Kjg3CLT5q7t&~xfz0% zQL{wPzj|&Zaw_Puh@7XR>6Q?4SAa8^Xkj#1h?zq7H2DO$7Y#;JXa(0j20__LjD5Yj znD+d%!N6>dGSZv8yAr__8dgN`Ev`{`7H^+ZpPOtPCX>#-ZaZkS2js&PDyKX&azwJ7 zP)wNdOhZTGK_f)K#fSOgLce}7x%}prS?Z7B8by4)rkkTC{(B8GB}CZWeZwk8f~ zjp_*WT()ecttWYCe0Gvlnnvg#16enKbpuzIuzH%OoD-z)$(fVe8faX3q^R_ZHn99$ z?3LgH4cq9+fERzPka&r~r+u8y7g3Rx`xyZ}F>vL@JWjsF119L=RbZO>TqS-fueyj| zr|UIJ)~=g{15?Fv5e&oZDd$S0aIjh~u=BVgRY*rw!v&K^h428HYDx^ES7)!@t<{Fi2@RgL zTbyO~MVbnntLBz@<#2=A^G>+JdAut-*Z>6+^GFp|VV*hQ^dJqs1YL!F)pTV!kmB{^ zOEmZufo`={m=*_ISC}mHFNt0w7f@(OpvM&dN4BHK#vNstBR7zZL#RPZ0BKIhhXEwHkX&Pi1m{JGNho=&5+BNe9(RKeV8D&|0Ejvv z9#dr*PVh0IEWax3=v7ltKL-3k@J1T`&~+2{j`E-?p{GzcO<+~b))rWm#wrO)MV}iX z6k7BdYYJD|MP#2Fi>oC##?h*Zws(#33e!N>$aYgq%NK6004x&7R|hP>3XSRvnF_Bt zP7y%I#W+zQFI=S(e4%I9WEE7=Y^0S-ctz`mb4{X4jX_wsh9jCct%EbdqZKAM=ZrYv zh!Y=te88nJrWDIC;Y@omc!kGb3Oq4SeVZ%(b zfW9V>45{~0ZwIYAmU-ckOHoSmPZ%=HBxq(?a|qwjRuC+JCT?INRf7An z6_rGw9FFti5_wQ>9n)O9RTKzxK?G4Gj;I>yspW>0*$d!}M`RIhja?mvM~Z<j*3TwO6ogksol7o#{N3q2`Q1B^ar_t`alv z6ZjJd@P{LJe8?608X9^>OiE&ZF%}hASAsbLmOHM(8L|fIiVaiXi_4`Di6V*BIBRKjtKoa7n!KMhuVu*g5)>ZLD#CKt4u2zm3Gjzgo9?%n5d`kOC*$I7E*i= zt=8bE1X0EPMKYZ1C>IAZ;pN^l%C{ayiH% zIbYSk2Tix>x$Xn!x_lbbo8P&>PW}6w|GDFgs6e8g|2b%Po9?kqT5e9}-IMjCfSLb! zT^XOvzS7Wc2LX+7zqr(C`@V1He|9_mF8{Mh!%dxK^FNo!_}qc3_<1%NvAqTx z%J?kuO|$%m9ZbRed+@30do0q061S``!?f`|SoHjR@FnScEbM7>-|NDbpA)Y*+eTXT#qE+xYh&sPsLCHI|~Mx%iyKO@mHa-1IX4 zH%VKr3so2I;EjSbZ-@xu!-`Hk7-vI!c43i{k?-nx(6ogfSNSV{(6k0U_c`Ov{N;rUWhDR1#~o^jk!|7weAN zu0Xz)&^9LdU|Hx3iCJ0(&@p219D(oJdhQ#cC|V_GnY^G9O~LOHs$z>0*%B^+hn6Nj zlsK`(MGMOFz-X%x6u?7}dxSviX&);T2-q1QbO%K@Re0w)e!#LderVtaO35w%6DxrU z!TGsZ$1RoWQGUM?t7`A=wuQT^ulWhrmvagyS>bPCO-ikmvPE;ApxbS+N<;Yba8@OO zw2RLaBm_$qtIDT8E}3|5o4x^rgN5;|Frgx*BsI6O@SfYBQmaJ-d2BLZwe*+^S3ej? z#ud`^pQtdHKH0J0BYNa*;iOt>3*_4(`A<8(B@^Opa|!^5nGLVgPY}~$EiRt|e8hXa zMM-s2`{ROL`@3yuer#3bGXQCO114g|j!a|dw)t#OY8pTrDsc*fTTIqBFrIiKAvy{ZBU#Vt8TAk<_B6MRCCFsEzO`Q;zG>Qua!vDDK66_KUC>jb@t4HY*nv61| zMR}|2#u`qn7#Eq~W%vdbbps<(rq^LE7Ei4NgFo>FO3+!op@`HOI--?AZP%2JZCLCX zI;OH{2t5OWCAybfRUZ6Jxif?imLQ{gK_xOOS5=V_3Y}F&7E9kKh5YivdC*;FtZ@bR zzby=vs_s9`k)(DLXgXR9c}TD#6juhC2$vvp^2#DATlIpPCW)>Yc~*`nyOHSyuw=)G zoEp|QXM~zh$#YIKLQC4lZe)zW#Jgj}+8LpyLNaDEj8HBpyRm*VrLBA#hiSOgV}=cL zU5~{=Dxol+Oh=Q;#gOvtBT*UlH0T#?`Sw3frf=92X2Sh43+cwY*$0c1SB4MF>SRzr zUHJfwNi(euk?DL83nFsa!!SPSB#^c4=tR~zq2oJQ!ko()JV9dnO2x}fkKB|yRhxzO z+2AZwN?hGx{FHwpUS$1K{M4;iEhmW*)@NPEgjh5w7!z589taEx4YF>=BUC0(_3p(L zn_fcxsrXHQO16{%;FPeXQs1hil$149R|cS6JEipL^yQ0>FFx%FM`ztiX&Q!q8mgzK zw9dWMOUkyb>#z{$LM6RKIK!Is5=qR4RTHCpt?eZNhvxCX46WjKC1~A`YA^xoUD;q_ z8TMqB*_~ce)yRE?*40%n2@JbvOk@ovV9YBhCPQ2{tdtbaS5pSqDvNSvaA*2nDkT8J zYgI}+ducL7jn#QH8MEDGzCvB=IxGbGT}>}h>V=ydOuAm$yuG9)N~|jnfPfXba>gEk zdtxq8YKfIqlPa7?@lZW1*UolUlhRIk_Ah+tOTX6iCyH{tRoOVPlF>eVD zzgK|;6imLdwo*1ctG2%L{GO#0RqgR|ZwX!wOvGYSt%jG|q-MhwRqbJOS^2vNAH07$ zYHhf=UfF_tzn$l&d49DA&;1*L=g5`IX1E*TQ<^o!CpVIt&8jIay>U$;bPC=tvZNqN z_sx*<)`6fyRCN`_3oPxFlu}Y!ChEEljU^bmSvNvN_pSz^Tcu{hDysG%y1xWOzmFF>2_52E`^Ky<5?S`9+a6Pyhzs&XLu7SobYFdf-aFm7QpWs^u6+g+^L zdOYBTJpG#6#onXx>DR3Jz4&0JaO*Ogk>q!)MEg?)s1hr%+vJIWL-KfHE^OGD0&qm+ z#G^VA<(YzaYlWXh_~}iUf)Kn4c^@c;RK1xZ3$o`i#faOn^8`SG;EBt4!aTYg=JwQL zT&fKgB;%>VmvY$Q76(hU`ssGYU~&+Qp*$xy9W0iW{fexqlq!Yl$<%zv2tPe<$du4y zKKxq28p>s`F4o*gq4|{tPB}bln*#?bw`k_qT@>rE@ns_Kp4X|wn}WQnH)2eu3S%gf zMu}l_I+|`NMTM;QXp9>03g(%}e`C$ogn^P&8KCKforHfmNHIhin^@K>95qWAyy`ub z2#W@nAncm!3|7efL4FYvcuvf$tt%3i@fBEmPAotrvuTeC9f8C$DJ3o{l40*E$n5ez zME4Q|7q6^D?IH+dmuuzs{%{eVJd5MYku&b2EY*Ig6d&ny1?}3q($vB%7M@)#Z9zyy z@jc2AkyP*dd)7NGA))foA`!JFs!{eMB}L27SNX^6#`>k@AhVt+4g6IOGC#2;<{*0V zS|KdQ+i*hJu1hCKg(9eAo>S|D&aEr`q?KVPU2{F3(G2pLBvT>@6=|ygE)Y>lh^TtH zNJujhh<25r;P%XcHW-^R(>O7$<^Urmpw?tYB4VPvlfR-dUDMd4J)$%fBUk#1h0#xKj>@{sDLqC9ZB*%(d$e_uy)`3t?J5l>No ztAseqPgP=pa_w%D1#77&rd4w42+IM!otoKFj-I0BQ>YZ-h!e{DcRxZlcA&H>AMYQy zRD$C2B~>WiQ9hfZIGWAUsIgMtg9#D~uG3*#JGGZA2nsH6--El}JWGNENqAl8#rm-4IZGbXoNZI4EOq_Hgvi0yFl+)gMG!2K* zIPB45l&%NjkyzL`w=K6|r%Qw;I}cS-gUA+zCvVeZ5lV)=sAg9ZFXg!^@xnDGUM__m zGVxk>QrxwRm@rih#j9JYVm8Z080Sg?Z6=^p|4bBEX1OHsKb!Z!s?xTt_M%G6QI2kn zm{Ym>Hq8b#v7mFjVR)AhJnh#t}6pEzKa-`tD9gJN&*qW zqg0fj8ePoe&0G9t2DbSX_@O>mi51FM&$41OMog7)w6jm@Yo92LA}cwYvrno>4_cTV z#5w8}kdAb_xQE9*I#R$T2BCbkXy_#~oj6G97(bg%P)iE!IuZw%@yN9NJe>T^E^82|xj0dx1@_Jrejp<0_n8 zOyaN+559(%joEa*4ieCyZU=0PyPcLtV_p8mVW%Bqj?lNzrFt8yl3*{z(IBngisx< z{)wNQm;HJ8)KULl%_8Sbf980{jvG7;nom)+)@ypf-ri5n@8K*)a<}AmT=yED^XQjF zG`w{Db_eGj2if1=p)@6cE&Ba2o;#mS{s&q4ljo-V9KU>+3>TCyPW~i%<~;g6y6Rs} zoU?Q16-*K5V}JG~oQro|F7W!#{ZTah_SCtGX7liRF&!>qypP}KT!vTCfVy=(Sa{v$ z;ph13tJgjD4!zfh;of>!a~{sXj8T6)2%Ue$Q1u{WygEmIc0NX{j+%=sqDXfzu^~< z%zQBX)1fc;4df{w$LuITi5+%`ZZsRmO**Omg}tAh*P!fpASsYb5v}(cNwljV2_v5R zRXdWz5+8FO4ZaPAVf>hSC0pP;>R-epvEgIZTgN#Y&%@bOe~5d&I}!uty`<;BNcIbk z`q$z}Tx9PRmvKyYvL}-JK7N~qc&kYO7syeaU9ph_qsHNbecHwJB?QB zm@~}lGm~Qm6YSr3vfg&_PC73`2;xvkI(_IT5Ey18L{z)@_UOePdw}0T z(31A6MizBwI|8-T<(y;f20ohTladJh&?YZu5DLCY4)>mop~Lx^k``PiILv%m(y8wb zb;==7hCXJKBKcWrO@Ht;3a`RT)-o8~(3I@O3~a+iDVLX=Y19Y3V?v?mB+!1=FXtR< zcWYESbcVeddZ_iWg~l?8YX>-LIsfalNdD+V{yR(^yST}1Cl{sQ(e3(Y*V~7cv^W$N z=1DU4l?!6D=aQYukH7b4$#g-ll(J7hpT+OzLwVtn zUy=Id9Srnge>x4t^_P?J{NrRXK+D)i&qmYX**SmaSIkG3oZxI~rK_vi6jqrbPXRTI zR-^h)&fCT4BAhvs&(5n4Zz$9RW{UF^csuMev1p0YCQgag1pFk|S;u}-&pGp1e;h-d zO~x@)uIn5go;aSf=dlCd+4I>!;OqtLpylkf*g@ObYqNunv)5q3)37!n zbSHgb?*ld0ah+!$eg`zxJaL}A42S)1IQAONW zBj_WRMj(A_ek<5|KVDTnblpg-4nnbp-qOXx5)bm+>6?Vn&C9 z$>h%q{C9K#L+UHc$v@*GstgHk_F|NikHa3!*I9JkLm|I;gjf;u7hJ}R;^@ox=u0>z zu7sCIgXuK!X>t6t^`)b2tl`L7XnvO7JIs+5TM`p zNe;ZFa^M9_4w&5CaPJ%Unt6ifIw%FV>DvXuBY}`TO(en#?vq6L%O!#WOB9_DQldqb zy}kHj7R|%=;a?5--4r?0pdcbmH>AUa>M>Ec&A=`bzFj6-_emy#dQZ3m?&;DURPZ zyV}kHYYe9AH^m&v^M*RAuib7+oME)EKqcDD%ytY=;OrYQWg$RltIiFgeeF7`;~b!| zph(jEWt8c5Q?mQw5@7)u=LQxt`vI?8;@mVF?3J$|CjSP)h_@^6hPN$VTpZx?*;slq z5bS%iW$>=~kNO96w-3D^`0Nk=KRF@#KG;rwgfTt#++vE} z@d+};<{|*)ZQ%ro9iv;;CCy{&wBbR!%c=BjF)x#;G)0vnI00MhQ<@nU?3&qalQF1k z=B%B;Hti9@NCDdTTLTqshnYN}3WkaXA#O(9BG)|GB1(H3#a>*>Be88+bL{}E2e+D9 z36-o`elx0Q&S@t-XC<>aQ?)q5RE11i>XS5gbsTI|spaer>@97`Ez`2iMrZw|9DC); zrd&!_BwnP&#Tdq4XIV=Q0UJ5`B4~h(n!X?=YrGd4g8!kcA@$@oJWoSW2r85r7Q#^R zg`q;Gv|Nd5Hd;P2rG3*-DRS{>@g?zl=){4w>^zjlWnBpfUyvG0c3#qfGStH|U5YrG zPnhvD674}wA)P>nVB?+OR$XZWpOD(BD_s9(w1E#6904uG8fMEUfBDgDGMPJLTD!tB zE+Pq>mmkiJrOjlkDJX^|JT_q~E$s7w`A{*fu0({lh312XNr#q^5M$2-g+Q7BTlZ3{ zhAsjV57nP1;mo=r8_>9Z{tE@pk<*;48}i0M^U)B1e@z2{oL$q=rX@qe(T3Le zHXcwz--p;hA(TlVlnFH=qf7!*nZR-M@2O0{ySzU#(GoHd*kqz*$OKXWe)8_8OrY!c zNG94sCR&C}9CQ4xZOTNE+f2Jd=acDZLSaR)K9FmGZ{JNW+O~)Cs4YBU?hoCzlijvs zQ9gWZqo1UrGyPsRsR-mLMcX3ho4$bhxYeE3w zfvZ1kgWx||P)*@a#(l<#`9AZ^xY0PF`vUJcIBs{mW2By8&sn3Wa3iC8LKDG<qjAp_cvbrmf* z?FL!aCt5`=v&MLh4}$r&(fvy_kKgpCL`8jU6A$dt1@~0@$hxGf&<$NxYo*fHXu@+R zC5!x9oh0j%tRjC`V|rD|GU#uYD)>Fx2i7H3MeBqH3AG+2y5BZh^tn*))sLaF;MW>d zS)X8OD~i_1Lz|t1Nm5E>rCDH?En4_fGwzyXD@a!OEWo8f#hb{MO0Y!>gLkers+A9* z*oMR_SmsaMP`oT$u=h-u^Wrn>lCX_h@@(i>Y9HM3$uZcNMIUU)qPH``E@vCD?1PP3 z_SWwG5Yr{-wkdtKAqzj37j|jeh@~HF)Y4ZPTiH*}W;=SWi2AXYX&P1h*{N1dY`=@zhrCdxa zAFNV_7Hq)JY;DvFu=VbTFwQ`>O$pkD{D3@G*kx@ao6k}doy&jRRR z5e2WzqTmlB3Pm295QX(uM%}VFxJ`Q)cMHCl+Vl*hPZHoh>4qY&QP5)(6FTv^B(}-AV1SPD<1jmBHOMZ(aKofQ}td`=R|+HGzNkm8jnJV;CREU+9~AGFeiqKd9o zOt-FVBgBSB##0tGRv>s8*F1`O*13j#7pedQqdx z&s~{ZITSc@zk<&-saLyoiLtLqfsO}6A@D^}Eu{&HIK!=6R;~d# zi+`n5$$$KA>Bxis`=_q6|M7B~CY#5+@QH+ufB8AT92`Yj7O_kR6{y{M_Jdbix ze#Ci%>JUc$#e*k~z0$_Yd6FMf&AchOkL|bFdukI;0G8@~aIbscy4SsL zv)&)OnDi=6Z~}!^qW?%=PT#h`yQJYM+6NlG-D!&{NvzVUieMO|Krg7McCKc=ts%-< zOmGrf>|y^ZO`^%9)B&4lajZI*_=1zpB~&2WHg{UgJfW&-L+7eLi~1MCkQT)boKGwX z(<7?vYPBKi(fChoIg`L;;Vl)}%5_5PiOcIi@y{l$x85W&QLQr25vG~n?U=)$OWLaH z7+AlP@=G+ngq6RVYeF?=S(U<<4hnb~)HFneK*FMVp4pFOh2&Y51Eb_pU2fjQA)UNP0#fn zIM>EoHgvLxQHmI!-_Yyp{#vAS9+9c?-0c7Z4!VKgYWQBzbX)FT-P^uv-|7^Yg#_rx zTB$u*YPUzIVgtp7sX%lirW(JE*>rxh@6n)c2W*VHot8&qUH-*k%ct@02JNQX_Pv(p zKWKVBN;5uiZe>i$@vqgTwf1t^@79Ove{nTK<~jahx^;dBf*Cu%z5al?m;r>JCo@sD zws&d@)xk>BGy5Pb0UbWYZaw+$)ht5E@|oiuJ8tkaXg>8@j@R^pJy=7iavq~baB@4Y zdkxQd^vfa|UOIlegYyoVjqe6?$Mxws?=hY`pH2P;iD;AOru-bge3%RuRCZYY#50YY zI*)#juKJe~=j_~hMfIsUP%Pecxxni`_eT*G2)~ME^YD5x9WG+LPXNlOh8zv3Ti1hy z*KHntj<3FY-DB_2dwm$LXg^6tog?$>WH#yppLYHgL-7NSUJVXsZ~ocg7&|i{9S0;@ zj8MKAJ%vH(I6up}_sPMbI?@jh4}WG4e0LmHvfROepw9QCy_esee=B_b`whQ?lAAe|CswHyg*~Gv43}D3mTjD3(z~>%B%2?W#CTeoPJ&sbsXqqrtbq zFhnAL^dz~~zlcd(L*(JdWtjU&{(A)%nNFp)=RKsKM=<>PjidgxI1(4x_5iP(WHdEf#M&;JJ`GEbxFs*JJd0U*6itK ziv-E<;^+S0YXraYlC=zm_m^-kT6sEIjB$(~q*Pw2Z)iPLhqj|tXm#k2(L)_%ou&hq zj+i_(lWY7U{fd9=27btnUFUyO_kRn80-?K9leLDbi|R=G*llvpY^9ld?`(|PtKs{1Z-6@P{p)&)Z~Z!)T=X%FnybCp()QDr zuYPsjpc2V&wO60TJg+>E5VR6NLpXmim`7LPZ_$^p)RD9JbTYb##%$d1zMRDpnRqv* z$-cSwTR;9InuVx+JYURUHn?=<&8v8XRY5xZy+0FUguhab0DAT;em@_|3s`8TD^l0I zgMmKmPp6@{{&F&&f1E4^Xc_zH*=RaEJLk{*ikbeB6P!)0bQN4b1L|}YT`p+(IhuyV zA}7`+Z`eWN@?rC-6DbwJvgFc4^62dBG2(i#+3PZ#VgdU(`m_OIBo_qP{a0h>PtM!L z=mMY^megK-cq4Ey;9efgFxgR@y3lU&^stEwe7oHf=OuOTiNi3l7{~wDaUIY3e|VaB z{+X;k`5YrK1LOE-P%F2OrF}9SV@w0Cb9i`yXZJjIK$dFKBDI!4cZzs8SH#0nbl!Phh*XJ*M2cX;57u0(TK6m95O znH6kUh{Q{GUp0xGj*0lMZ8*4EmV%6KN-Dl#>gr!&?h=KYJ*_6?d;HP>z|ddJCsd7+ zS15UyJZhb8@l{z-Ik}O2<3>Z;Ewk%_RsWeI0fAn(=OLSv?M<|7cvz}&tQLx^ZF9)o z6q4V(cxrDS<@}@mkSNgKG8)m|zM>rkEDDzzmu#m7rq)2<=B3xQx69blyp&?vhGtvE zalaApnp$QdRRCA{n;^LThU%7bQ!@%5F-8+5w;NgS+wf)Kr&Bx0`sY^xd^dujvrDkETv+kZH0-IGits7@k{3|k^#U26T z9`uv3arRi)T@OiLMdLvuypHA{=8Fsc`o-k(TMde+=P(mCu)d>UDI-ajV%JiNe#;Er zslYrawA`ai5M+AEi#A74I{kd6r^GiHF5-`>U8ebh+a4^QJ&zHxyR!XZvaiCXlBb*= zsllT*I38QK1E*-e%)+IuRC55%0|JEE2bmp^-oO|_&)rL+(GiZ8<8~)GQ4p%W90I7#m!qe>K+|4QWBys z73AHtknU2dYjaBSikv-=ggFQ*=Wm+Be_;P!Xt225;)$;9(AP#8?FROV9eo6+85j!4 z9h#2y>pn8O$W11q@WjQEQp=fbj^}hak`0gRTz12I&ak_*HfGs9bnoX5kL`^6|LDtX zvcQrl7BlA)=k>ooI)6u4wwxd=evAcU1kSS^rJmRG48K@iCx-xM%(r602uw!$OC~(I z3jCI~{CGL04lSUKDNCHzjT?{t*OM>NfEJW9>0>A#Lh>u#FGD|`J2^>9U2=D=o-uFk zgfanMq}V)@A}ZuQaEvh!_H=^F5q6yyiemKo9^Pr9zX&{;_9!?A<;5UYNMI8p zJPd1Wa0irU_)9cDRX;ZHVaIk`k{XZW(Pn?^lP0Y zOwbWz_&_!kLnpKP03f2UVy$*~;#6O;%r3)_$XMulkw=D3+&VFVjfjqbimYolp(Bwg zwJvdYEpq_mLgiSvFM|~1B0Gmy9DpZ*HikI5Vvz#VCzCJR6xTcU#X59QfGgm+Y=dn@ zUqi+6)zFW{`y#}J<1J9#v;JU?2-5{rC-MEELBrc-Ch!xzNlY20(`}bxWRkO--}COk&GY1pTqJt>zJTyD2-1MSH1q=rYP9S$xV@FSmtg z<;<>0Ms(4Go9Ul!H)T+*o+_Qa(hg}|5&{=5E-Is0zUJxX#>=_zdElTW0e!+lli`Pq zPPs$!wzz4J>p=f9k$dRQ&3Gyz`cm_2k%ud=0ueJ~fd=YIHaNLjILu86W_56b#KE;p z9=g(}{Up6OZK)%iRn5n_hWau0)~tIca%sMzU6W(3qrb{r&*@*jJnE4zKh)$ABu+XR zYYa|Zf}@LYP2}U!thOlb#f!lpj0qUg4QUu1P3K__y>D9t;HK+sgR)lbF30;Ei#AA{ z-Lg~^iA{ZT5sEKQ>TRqQ{owKHZDUT-YQQ9t)}?^SrR#S*BW#LrDDpPy(RRheeS*#b zHE&zO;6_T{Nj7OU!OFOeH=~a%^91`(mU-$r4`mZ`sdP(LLr#o%08cbk>B(PF+%(U# z!?oSg#Um+iARGp*6G5;PHQ{I?CrMrDN2|ijCQYq?B^KdBr;K|EG3v@TxVagz&uj(I{9N5Q$(x{-`G~ObX!!@U;j2G7@gU^VZ=~G; zbtRkOF;aiZ3i};#5(CXi^vbP#OIr<`<#}ug1A3^89+R`QHdTtz8?w;JNtD%EWy{O* z(4#;TeS!PKie+1K16M>7@i`T+VlCThI;er>pys>yh!4-W_z-23MAJC4?E#px69+xa zI{9valW*!Rt6Senyi{peYYN`n3d7xceXHJf7p`-tgdXWWeR=v=z4%tfebeZ}>oXCY zjw9>NMLcfQa>}67s*;ms^T+zrfbcY9H7n)OY#^y{)eOR@Wx*0~9H?X;NF2^Ex&!1H zXN50h#%i&r)s_dkiJKACgg66AKQ(unwgkxht+0edD)3AWWU5a=+e#~Uf|lg66-jcu z`P>xYD^C|%Ws>Z-H&vme(*>Vc^hBA06>v0ciT+!Dy8?iz&aQ;TAZD2F~WMFIjtA)10A=|W|1nbqzw(+VmL{-$Y^ zr*$Alswz&Rc2-N`WJ&jRcao>Ce@c|e#&&7Y>z{46el6VPf8XVQPv?IR+Q|Rj?e6lw z*KfG4y+vmJ_iV=Z#`S2p>PIPSZ+`ywrq^z_Q~BRr*KO|dzpqO7GS5FlTJz7*Fg)4Y zdlnvpv&lnlhIb-!`~JzZIjf*W!ti{5-}%}{D%^R0DER$n_$_wg z=s)-^*gs(zWuJ&t?N3yu_9uF#_Gd@*5Lz=pLh=z8v*-If5BvU!NW%Vv;SiLA{fW%K z{_Kc9fG3Ywo9IADkRn%d$&f^`|8V0p=vn=G=s9&Kr2XzoIvQ^s2mu5v+b$ z=m>|R&Ji30_502dDE3V^=m=1;Ab4(q7x3F~DE=oM0$fD-pCVUniNSC2ayQ@u+{Qe! l`^Js}I|}S5u%p0^0y_%qD6pfzjsiOh>?p9Kz;-F{{{jBS{bc|E diff --git a/benchmarks/tapa_flow/sextans/design/run_tapa.sh b/benchmarks/tapa_flow/sextans/design/run_tapa.sh index cf9dcccc..54aec1b4 100644 --- a/benchmarks/tapa_flow/sextans/design/run_tapa.sh +++ b/benchmarks/tapa_flow/sextans/design/run_tapa.sh @@ -1,14 +1,12 @@ # Copyright 2024 RapidStream Design Automation, Inc. # All Rights Reserved. -WORK_DIR=generated - -tapac \ - --work-dir ${WORK_DIR} \ +tapa compile \ --top Sextans \ - --part-num xcu280-fsvh2892-2L-e \ + --part-num xcu55c-fsvh2892-2L-e \ --clock-period 3.33 \ - -o ${WORK_DIR}/Sextans.xo \ - --connectivity config/link_config.ini \ - src/sextans.cpp \ - 2>&1 | tee ${WORK_DIR}/tapa.log + -o generated/Sextans.xo \ + -f src/sextans.cpp \ + 2>&1 | tee tapa.log + +# change `src/serpens.cpp` to `src/serpens-noconst.cpp` to generate the design without aggressively passing constants through handshake interfaces. diff --git a/benchmarks/tapa_flow/sextans/run.py b/benchmarks/tapa_flow/sextans/run.py deleted file mode 100644 index 14317fec..00000000 --- a/benchmarks/tapa_flow/sextans/run.py +++ /dev/null @@ -1,143 +0,0 @@ -__copyright__ = """ -Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. -The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. -""" - -from rapidstream import get_u280_vitis_device_factory, RapidStreamTAPA -import os - -CURR_DIR = os.path.dirname(os.path.abspath(__file__)) -INI_PATH = f"{CURR_DIR}/design/config/link_config.ini" -VITIS_PLATFORM = "xilinx_u280_gen3x16_xdma_1_202211_1" -XO_PATH = f"{CURR_DIR}/design/generated/Sextans.xo" - - -factory = get_u280_vitis_device_factory(VITIS_PLATFORM) - -# Reserve resource for the HBM Memory Sub-System. -# The HMSS is not part of the user kernel so the partition optimization process -# is unaware of its existence. We need to manually reserve resources for it. -# For 512-bit HBM channels, each HBM channel uses approximately the following resources: -# AREA_PER_HBM_CHANNEL = { -# "LUT": 5000, -# "FF": 6500, -# "BRAM": 0, -# "URAM": 0, -# "DSP": 0, -# } -factory.reduce_slot_area(1, 0, lut=5000 * 16, ff=6500 * 16) -factory.reduce_slot_area(0, 0, lut=8000 * 15, ff=6500 * 13, bram_18k=400, dsp=1000) - -# For this U280 platform, the right most DSP column on the boundary between -# dynamic/static region is not usable. So we need to adjust the DSP count -# to reflect the actual available DSPs. -print("Reducing DSP of (1, 1) to make it less congested") -factory.reduce_slot_area(1, 1, dsp=100) - -rs = RapidStreamTAPA(f"{CURR_DIR}/build/{os.path.basename(__file__)}") - -rs.set_virtual_device(factory.generate_virtual_device()) -rs.add_xo_file(XO_PATH) -rs.set_vitis_platform(VITIS_PLATFORM) -rs.set_vitis_connectivity_config(INI_PATH) - -rs.set_top_module_name("Sextans") -rs.add_clock("ap_clk", 3.33) - -rs.add_flatten_targets(["Sextans"]) - -# Bind ports to HBM 16-31 -right_slot = "SLOT_X1Y0:SLOT_X1Y0" -left_slot = "SLOT_X0Y0:SLOT_X0Y0" - -# The config file binds the following argument to HBM 0 - 15 -# Thus we need to constrain them to the left side of SLR 0 -# sp=Sextans.edge_list_ptr:HBM[0] -# sp=Sextans.edge_list_ch_0:HBM[1] -# sp=Sextans.edge_list_ch_1:HBM[2] -# sp=Sextans.edge_list_ch_2:HBM[3] -# sp=Sextans.edge_list_ch_3:HBM[4] -# sp=Sextans.edge_list_ch_4:HBM[5] -# sp=Sextans.edge_list_ch_5:HBM[6] -# sp=Sextans.edge_list_ch_6:HBM[7] -# sp=Sextans.edge_list_ch_7:HBM[8] -# sp=Sextans.mat_B_ch_0:HBM[9] -# sp=Sextans.mat_B_ch_1:HBM[10] -# sp=Sextans.mat_B_ch_2:HBM[11] -# sp=Sextans.mat_B_ch_3:HBM[12] - -left_args = [ - "edge_list_ptr", - "edge_list_ch_0", - "edge_list_ch_1", - "edge_list_ch_2", - "edge_list_ch_3", - "edge_list_ch_4", - "edge_list_ch_5", - "edge_list_ch_6", - "edge_list_ch_7", - "mat_B_ch_0", - "mat_B_ch_1", - "mat_B_ch_2", - "mat_B_ch_3", -] -for arg in left_args: - rs.assign_port_to_region(f"m_axi_{arg}_.*", left_slot) - -# The config file binds the following argument to HBM 16 - 31 -# Thus we need to constrain them to the right side of SLR 0 -# sp=Sextans.mat_C_ch_0:HBM[16] -# sp=Sextans.mat_C_ch_1:HBM[17] -# sp=Sextans.mat_C_ch_2:HBM[18] -# sp=Sextans.mat_C_ch_3:HBM[19] -# sp=Sextans.mat_C_ch_4:HBM[20] -# sp=Sextans.mat_C_ch_5:HBM[21] -# sp=Sextans.mat_C_ch_6:HBM[22] -# sp=Sextans.mat_C_ch_7:HBM[23] -# sp=Sextans.mat_C_ch_in_0:HBM[24] -# sp=Sextans.mat_C_ch_in_1:HBM[25] -# sp=Sextans.mat_C_ch_in_2:HBM[26] -# sp=Sextans.mat_C_ch_in_3:HBM[27] -# sp=Sextans.mat_C_ch_in_4:HBM[28] -# sp=Sextans.mat_C_ch_in_5:HBM[29] -# sp=Sextans.mat_C_ch_in_6:HBM[30] -# sp=Sextans.mat_C_ch_in_7:HBM[31] - -right_args = [ - "mat_C_ch_0", - "mat_C_ch_1", - "mat_C_ch_2", - "mat_C_ch_3", - "mat_C_ch_4", - "mat_C_ch_5", - "mat_C_ch_6", - "mat_C_ch_7", - "mat_C_ch_in_0", - "mat_C_ch_in_1", - "mat_C_ch_in_2", - "mat_C_ch_in_3", - "mat_C_ch_in_4", - "mat_C_ch_in_5", - "mat_C_ch_in_6", - "mat_C_ch_in_7", -] -for arg in right_args: - rs.assign_port_to_region(f"m_axi_{arg}_.*", right_slot) - -# Constrain the remaining control ports. -# All ports must be constrained to a specific slot: -rs.assign_port_to_region("s_axi_control_.*", left_slot) -rs.assign_port_to_region("ap_clk", left_slot) -rs.assign_port_to_region("ap_rst_n", left_slot) -rs.assign_port_to_region("interrupt", left_slot) - -# Xustomize the placement strategy: -rs.set_placement_strategy("EarlyBlockPlacement") - -# Allow two parallel Vitis implementation -rs.run_dse( - max_workers=2, - max_dse_limit=0.85, - min_dse_limit=0.75, - partition_strategy="flat", -) diff --git a/benchmarks/tapa_flow/sextans/run_u55c.py b/benchmarks/tapa_flow/sextans/run_u55c.py new file mode 100644 index 00000000..f356c7b6 --- /dev/null +++ b/benchmarks/tapa_flow/sextans/run_u55c.py @@ -0,0 +1,22 @@ +__copyright__ = """ +Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. +The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. +""" + +from pathlib import Path +from rapidstream import get_u55c_vitis_device_factory + +CURR_DIR = Path(__file__).parent +CURR_FILE = Path(__file__).name + +VITIS_PLATFORM = ( + "xilinx_u55c_gen3x16_xdma_3_202210_1" # "xilinx_u280_gen3x16_xdma_1_202211_1" +) + +factory = get_u55c_vitis_device_factory(VITIS_PLATFORM) + +factory.reduce_slot_area(1, 0, lut=50000, ff=60000) +factory.reduce_slot_area(0, 0, lut=50000, ff=60000) +factory.reduce_slot_area(1, 1, dsp=100) + +factory.generate_virtual_device(Path(f"{CURR_DIR}/build/{CURR_FILE}/device.json")) diff --git a/benchmarks/tapa_flow/stencil_sasa/high_congestion/Makefile b/benchmarks/tapa_flow/stencil_sasa/high_congestion/Makefile index 3dbead17..49a72757 100644 --- a/benchmarks/tapa_flow/stencil_sasa/high_congestion/Makefile +++ b/benchmarks/tapa_flow/stencil_sasa/high_congestion/Makefile @@ -3,8 +3,8 @@ ROOT_DIR := $(shell git rev-parse --show-toplevel) KERNEL_NAME := unikernel -RS_SCRIPT := $(CURDIR)/run.py -AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/ab_config.json +RS_SCRIPT := $(CURDIR)/run_u55c.py +AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/floorplan_config.json IMPL_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/impl_config.json LINK_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/link_config.ini PLATFORM := xilinx_u55c_gen3x16_xdma_3_202210_1 @@ -26,21 +26,22 @@ all: $(RS_TARGET) cd $(RSPATH) && $(RSPYTHON) $(SLACK_GETTER) -d $(TEMP_DIR) -i $(TIMING_RPT) -o $(BUILD_LOG) -c clk_kernel_00_unbuffered_net -p 3.333 @echo $(SUCCESS) -$(RS_TARGET):$(TAPA_XO) $(DEVICE_CONFIG) +$(RS_TARGET):$(TAPA_XO) $(DEVICE_CONFIG) $(AB_CONFIG) mkdir -p $(TEMP_DIR) cd $(RSPATH) && $(RSXX)-tapaopt \ --work-dir $(TEMP_DIR) \ --tapa-xo-path $< \ --device-config $(DEVICE_CONFIG) \ --floorplan-config $(AB_CONFIG) \ - --single-reg \ --run-impl \ --implementation-config $(IMPL_CONFIG) \ --connectivity-ini $(LINK_CONFIG) -$(DEVICE_CONFIG):$(AB_CONFIG) +device:$(DEVICE_CONFIG) + +$(DEVICE_CONFIG): $(RS_SCRIPT) mkdir -p $(TEMP_DIR) - cd $(RSPATH) && $(RSPYTHON) $(RS_SCRIPT) + cd $(RSPATH) && $(RSPYTHON) $< show_groups: rapidstream $(GRP_UTIL) -i $(TEMP_DIR)/passes/0-imported.json \ diff --git a/benchmarks/tapa_flow/stencil_sasa/high_congestion/README.md b/benchmarks/tapa_flow/stencil_sasa/high_congestion/README.md index f581aac4..f67cdf5b 100644 --- a/benchmarks/tapa_flow/stencil_sasa/high_congestion/README.md +++ b/benchmarks/tapa_flow/stencil_sasa/high_congestion/README.md @@ -12,7 +12,7 @@ The contributor(s) of this file has/have agreed to the RapidStream Contributor L In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. The basic steps include: -- Compile the HLS C++ code into a Vitis-compatible .xo file using TAPA. +- Compile the TAPA C++ code into a Vitis-compatible .xo file using TAPA. - Optimize the .xo file with RapidStream to obtain an optimized .xo file. - Use Vitis to compile the optimized .xo file into an .xclbin file for FPGA deployment. @@ -24,150 +24,66 @@ In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. We utilize TAPA to generate the `.xo` file. If you have not installed TAPA, we've already compiled the C++ source to `.xo` using TAPA. The original C++ source files are located in [design/src](design/src). The generated `.xo` file can be found at [design/generated/unikernel.xo](design/generated/unikernel.xo). To compile C++ to `.xo` using TAPA, we use the script [design/run_tapa.sh](design/run_tapa.sh), with the detailed commands shown below. For your convenience, we have also backed up all the generated metadata by TAPA in the [design/generated](design/generated/) directory. ```bash -WORK_DIR=generated -tapac \ - --work-dir ${WORK_DIR} \ - --top unikernel \ - --part-num xcu280-fsvh2892-2L-e \ - --clock-period 3.33 \ - -o ${WORK_DIR}/unikernel.xo \ - --connectivity config/link_config.ini \ - src/unikernel.cpp \ - 2>&1 | tee tapa.log +mkdir -p build/run_u55c.py +cd build/run_u55c.py && tapa compile \ +--top unikernel \ +--part-num xcu55c-fsvh2892-2L-e \ +--clock-period 3.33 \ +-o unikernel.xo \ +-f $< \ +2>&1 | tee tapa.log + ``` -### Step 2: Use Rapidstream to Optimize `.xo` Design +### Step 2: Define Virtual Device -The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. -The RapidStream flow for TAPA requires the following key inputs: +In this tutorial, we use the [Alveo U55C](https://www.amd.com/en/products/accelerators/alveo/u55c/a-u55c-p00g-pq-g.html) as an example. The device is organized into six slots, each +containing 16 clock regions of logic. In actual implementations, the available resource of each slot is reduced + based on the platform specifics, as some resources are reserved for shell logic. -- **Platform**: The Vitis platform (e.g., `xilinx_u280_gen3x16_xdma_1_202211_1`). -- **Device**: virtual device define by calling rapidstream APIs based on platform (e.g., `get_u280_vitis_device_factory`). -- **.xo file**: The `.xo` file generated by TAPA -- **Connectivity** (.ini): Include the configuration file for `v++` ([link_config.ini](design/config/run.py/link_config.ini)). -- **top_module_name**: Top module name for the kernel. -- **Clock**: All the clock and frequencies. -- **Flatten Module**: Within a design, not all modules need to be optimized. The flatten module name is the target module rapidstream will optimize. - -The Python snippet below shows how we initiate rapidstream instance to set up the rapidstream environment. - -```Python -from rapidstream import get_u280_vitis_device_factory, RapidStreamTAPA -import os - -CURR_DIR = os.path.dirname(os.path.abspath(__file__)) -INI_PATH = f"{CURR_DIR}/design/config/link_config.ini" -VITIS_PLATFORM = "xilinx_u280_gen3x16_xdma_1_202211_1" -XO_PATH = f"{CURR_DIR}/design/generated/unikernel.xo" -kernel_name = "unikernel" -factory = get_u280_vitis_device_factory(VITIS_PLATFORM) -rs = RapidStreamTAPA(f"{CURR_DIR}/build") -rs.set_virtual_device(factory.generate_virtual_device()) -rs.add_xo_file(XO_PATH) -rs.set_vitis_platform(VITIS_PLATFORM) -rs.set_vitis_connectivity_config(INI_PATH) -rs.set_top_module_name(kernel_name) -rs.add_clock("ap_clk", 3.33) -rs.add_flatten_targets([kernel_name]) -``` +AU55C Device -The HBM AXI port connection is described in [design/config/link_config.ini](design/config/run.py/link_config.ini). +To generate a `device.json` file that details the device features, such as slot resources and + locations, you can either run the `run_u55c.py` script by invoking RapidStream as shown below or + simply enter `make device` in the terminal. ```bash -[connectivity] -sp=unikernel.in_0:HBM[0] -sp=unikernel.out_0:HBM[1] -sp=unikernel.in_1:HBM[2] -sp=unikernel.out_1:HBM[3] -sp=unikernel.in_2:HBM[4] -sp=unikernel.out_2:HBM[5] -sp=unikernel.in_3:HBM[6] -sp=unikernel.out_3:HBM[7] -sp=unikernel.in_4:HBM[8] -sp=unikernel.out_4:HBM[9] -sp=unikernel.in_5:HBM[10] -sp=unikernel.out_5:HBM[11] -sp=unikernel.in_6:HBM[12] -sp=unikernel.out_6:HBM[13] -sp=unikernel.in_7:HBM[14] -sp=unikernel.out_7:HBM[15] -sp=unikernel.in_8:HBM[17] -sp=unikernel.out_8:HBM[18] -sp=unikernel.in_9:HBM[19] -sp=unikernel.out_9:HBM[20] -sp=unikernel.in_10:HBM[21] -sp=unikernel.out_10:HBM[22] -sp=unikernel.in_11:HBM[23] -sp=unikernel.out_11:HBM[24] -sp=unikernel.in_12:HBM[25] -sp=unikernel.out_12:HBM[26] -sp=unikernel.in_13:HBM[27] -sp=unikernel.out_13:HBM[28] -sp=unikernel.in_14:HBM[29] -sp=unikernel.out_14:HBM[30] +rapidstream run_u55c.py ``` -As a result, it is necessary to assign the kernel ports to the appropriate slots. The Python code below demonstrates this process. For comprehensive linking details, please refer to the [design/config/link_config.ini](design/config/run.py/link_config.ini) file. - - ```Python -right_slot = "SLOT_X1Y0:SLOT_X1Y0" -left_slot = "SLOT_X0Y0:SLOT_X0Y0" -left_args = [ - "in_0", - "out_0", - "in_1", - "out_1", - "in_2", - "out_2", - "in_3", - "out_3", - "in_4", - "out_4", - "in_5", - "out_5", - "in_6", - "out_6", - "in_7", - "out_7", -] -for arg in left_args: - rs.assign_port_to_region(f"m_axi_{arg}_.*", left_slot) -right_args = [ - "in_8", - "out_8", - "in_9", - "out_9", - "in_10", - "out_10", - "in_11", - "out_11", - "in_12", - "out_12", - "in_13", - "out_13", - "in_14", - "out_14", -] -for arg in right_args: - rs.assign_port_to_region(f"m_axi_{arg}_.*", right_slot) -rs.assign_port_to_region("s_axi_control_.*", left_slot) -rs.assign_port_to_region("ap_clk", left_slot) -rs.assign_port_to_region("ap_rst_n", left_slot) -rs.assign_port_to_region("interrupt", left_slot) -``` -For the complete detail, please refore to [./run.py](./run.py) file. Call the rapidstream by launching the command below or `make all`. +### Step 3: Use Rapidstream to Optimize `.xo` Design + +The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. +The RapidStream flow for TAPA requires the following key inputs: + +- **tapa-xo-path**: The path to the tapa-generated `xo` file (unikernel.xo). +- **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. +- **floorplan-config**: The configure file ([floorplan_config.json](design/config/run_u55c.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. +- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). +- **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_u55c.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is +the same for vitis link configure file. + +We encapulate the rapidstream command for TAPA as `rapidstream-tapaopt` for invoking. +You can run the command below or execute `make all` supported by our [Makefile](Makefile). ```bash -rapidstream run.py +rapidstream-tapaopt --work-dir build/run_u55c.py \ + --tapa-xo-path build/run_u55c.py/unikernel.xo \ + --device-config build/run_u55c.py/device.json \ + --floorplan-config design/config/run_u55c.py/floorplan_config.json \ + --implementation-config design/config/run_u55c.py/impl_config.json \ + --connectivity-ini design/config/run_u55c.py/link_config.ini ``` + If everything is successful, you should at least get one optimized `.xclbin` file. -### Step 3: Check the Group Module Report + +### Step 4: Check the Group Module Report RapidStream mandates a clear distinction between communication and computation within user designs. diff --git a/benchmarks/tapa_flow/stencil_sasa/high_congestion/autobridge_fail b/benchmarks/tapa_flow/stencil_sasa/high_congestion/autobridge_fail deleted file mode 100644 index e69de29b..00000000 diff --git a/benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/run.py/ab_config.json b/benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/run_u55c.py/floorplan_config.json similarity index 100% rename from benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/run.py/ab_config.json rename to benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/run_u55c.py/floorplan_config.json diff --git a/benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/run_u55c.py/impl_config.json b/benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/run_u55c.py/impl_config.json new file mode 100644 index 00000000..3c481977 --- /dev/null +++ b/benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/run_u55c.py/impl_config.json @@ -0,0 +1,7 @@ +{ + "max_workers": 2, + "port_to_clock_period": { + "ap_clk": 3.33 + }, + "vitis_platform": "xilinx_u55c_gen3x16_xdma_3_202210_1" +} diff --git a/benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/run.py/link_config.ini b/benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/run_u55c.py/link_config.ini similarity index 100% rename from benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/run.py/link_config.ini rename to benchmarks/tapa_flow/stencil_sasa/high_congestion/design/config/run_u55c.py/link_config.ini diff --git a/benchmarks/tapa_flow/stencil_sasa/high_congestion/run.py b/benchmarks/tapa_flow/stencil_sasa/high_congestion/run_u55c.py similarity index 100% rename from benchmarks/tapa_flow/stencil_sasa/high_congestion/run.py rename to benchmarks/tapa_flow/stencil_sasa/high_congestion/run_u55c.py diff --git a/benchmarks/tapa_flow/stencil_sasa/low_congestion/Makefile b/benchmarks/tapa_flow/stencil_sasa/low_congestion/Makefile index 3dbead17..49a72757 100644 --- a/benchmarks/tapa_flow/stencil_sasa/low_congestion/Makefile +++ b/benchmarks/tapa_flow/stencil_sasa/low_congestion/Makefile @@ -3,8 +3,8 @@ ROOT_DIR := $(shell git rev-parse --show-toplevel) KERNEL_NAME := unikernel -RS_SCRIPT := $(CURDIR)/run.py -AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/ab_config.json +RS_SCRIPT := $(CURDIR)/run_u55c.py +AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/floorplan_config.json IMPL_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/impl_config.json LINK_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/link_config.ini PLATFORM := xilinx_u55c_gen3x16_xdma_3_202210_1 @@ -26,21 +26,22 @@ all: $(RS_TARGET) cd $(RSPATH) && $(RSPYTHON) $(SLACK_GETTER) -d $(TEMP_DIR) -i $(TIMING_RPT) -o $(BUILD_LOG) -c clk_kernel_00_unbuffered_net -p 3.333 @echo $(SUCCESS) -$(RS_TARGET):$(TAPA_XO) $(DEVICE_CONFIG) +$(RS_TARGET):$(TAPA_XO) $(DEVICE_CONFIG) $(AB_CONFIG) mkdir -p $(TEMP_DIR) cd $(RSPATH) && $(RSXX)-tapaopt \ --work-dir $(TEMP_DIR) \ --tapa-xo-path $< \ --device-config $(DEVICE_CONFIG) \ --floorplan-config $(AB_CONFIG) \ - --single-reg \ --run-impl \ --implementation-config $(IMPL_CONFIG) \ --connectivity-ini $(LINK_CONFIG) -$(DEVICE_CONFIG):$(AB_CONFIG) +device:$(DEVICE_CONFIG) + +$(DEVICE_CONFIG): $(RS_SCRIPT) mkdir -p $(TEMP_DIR) - cd $(RSPATH) && $(RSPYTHON) $(RS_SCRIPT) + cd $(RSPATH) && $(RSPYTHON) $< show_groups: rapidstream $(GRP_UTIL) -i $(TEMP_DIR)/passes/0-imported.json \ diff --git a/benchmarks/tapa_flow/stencil_sasa/low_congestion/README.md b/benchmarks/tapa_flow/stencil_sasa/low_congestion/README.md index 6056f318..f67cdf5b 100644 --- a/benchmarks/tapa_flow/stencil_sasa/low_congestion/README.md +++ b/benchmarks/tapa_flow/stencil_sasa/low_congestion/README.md @@ -12,7 +12,7 @@ The contributor(s) of this file has/have agreed to the RapidStream Contributor L In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. The basic steps include: -- Compile the HLS C++ code into a Vitis-compatible .xo file using TAPA. +- Compile the TAPA C++ code into a Vitis-compatible .xo file using TAPA. - Optimize the .xo file with RapidStream to obtain an optimized .xo file. - Use Vitis to compile the optimized .xo file into an .xclbin file for FPGA deployment. @@ -24,139 +24,66 @@ In this recipe, we demonstrate how to use RapidStream to optimize TAPA projects. We utilize TAPA to generate the `.xo` file. If you have not installed TAPA, we've already compiled the C++ source to `.xo` using TAPA. The original C++ source files are located in [design/src](design/src). The generated `.xo` file can be found at [design/generated/unikernel.xo](design/generated/unikernel.xo). To compile C++ to `.xo` using TAPA, we use the script [design/run_tapa.sh](design/run_tapa.sh), with the detailed commands shown below. For your convenience, we have also backed up all the generated metadata by TAPA in the [design/generated](design/generated/) directory. ```bash -WORK_DIR=generated -tapac \ - --work-dir ${WORK_DIR} \ - --top unikernel \ - --part-num xcu280-fsvh2892-2L-e \ - --clock-period 3.33 \ - -o ${WORK_DIR}/unikernel.xo \ - --connectivity config/link_config.ini \ - src/unikernel.cpp \ - 2>&1 | tee tapa.log +mkdir -p build/run_u55c.py +cd build/run_u55c.py && tapa compile \ +--top unikernel \ +--part-num xcu55c-fsvh2892-2L-e \ +--clock-period 3.33 \ +-o unikernel.xo \ +-f $< \ +2>&1 | tee tapa.log + ``` -### Step 2: Use Rapidstream to Optimize `.xo` Design +### Step 2: Define Virtual Device -The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. -The RapidStream flow for TAPA requires the following key inputs: +In this tutorial, we use the [Alveo U55C](https://www.amd.com/en/products/accelerators/alveo/u55c/a-u55c-p00g-pq-g.html) as an example. The device is organized into six slots, each +containing 16 clock regions of logic. In actual implementations, the available resource of each slot is reduced + based on the platform specifics, as some resources are reserved for shell logic. -- **Platform**: The Vitis platform (e.g., `xilinx_u280_gen3x16_xdma_1_202211_1`). -- **Device**: virtual device define by calling rapidstream APIs based on platform (e.g., `get_u280_vitis_device_factory`). -- **.xo file**: The `.xo` file generated by TAPA -- **Connectivity** (.ini): Include the configuration file for `v++` ([link_config.ini](design/config/run.py/link_config.ini)). -- **top_module_name**: Top module name for the kernel. -- **Clock**: All the clock and frequencies. -- **Flatten Module**: Within a design, not all modules need to be optimized. The flatten module name is the target module rapidstream will optimize. - -The Python snippet below shows how we initiate rapidstream instance to set up the rapidstream environment. - -```Python -from rapidstream import get_u280_vitis_device_factory, RapidStreamTAPA -import os - -CURR_DIR = os.path.dirname(os.path.abspath(__file__)) -INI_PATH = f"{CURR_DIR}/design/config/link_config.ini" -VITIS_PLATFORM = "xilinx_u280_gen3x16_xdma_1_202211_1" -XO_PATH = f"{CURR_DIR}/design/generated/unikernel.xo" -kernel_name = "unikernel" -factory = get_u280_vitis_device_factory(VITIS_PLATFORM) -rs = RapidStreamTAPA(f"{CURR_DIR}/build") -rs.set_virtual_device(factory.generate_virtual_device()) -rs.add_xo_file(XO_PATH) -rs.set_vitis_platform(VITIS_PLATFORM) -rs.set_vitis_connectivity_config(INI_PATH) -rs.set_top_module_name(kernel_name) -rs.add_clock("ap_clk", 3.33) -rs.add_flatten_targets([kernel_name]) -``` +AU55C Device -The HBM AXI port connection is described in [design/config/link_config.ini](design/config/run.py/link_config.ini). +To generate a `device.json` file that details the device features, such as slot resources and + locations, you can either run the `run_u55c.py` script by invoking RapidStream as shown below or + simply enter `make device` in the terminal. ```bash -[connectivity] -sp=unikernel.in_0:HBM[0] -sp=unikernel.out_0:HBM[1] -sp=unikernel.in_1:HBM[2] -sp=unikernel.out_1:HBM[3] -sp=unikernel.in_3:HBM[4] -sp=unikernel.out_3:HBM[5] -sp=unikernel.in_6:HBM[6] -sp=unikernel.out_6:HBM[7] -sp=unikernel.in_9:HBM[8] -sp=unikernel.out_9:HBM[9] -sp=unikernel.in_11:HBM[10] -sp=unikernel.out_11:HBM[11] -sp=unikernel.in_2:HBM[12] -sp=unikernel.out_2:HBM[13] -sp=unikernel.in_4:HBM[18] -sp=unikernel.out_4:HBM[19] -sp=unikernel.in_5:HBM[20] -sp=unikernel.out_5:HBM[21] -sp=unikernel.in_7:HBM[22] -sp=unikernel.out_7:HBM[23] -sp=unikernel.in_8:HBM[24] -sp=unikernel.out_8:HBM[25] -sp=unikernel.in_10:HBM[26] -sp=unikernel.out_10:HBM[27] +rapidstream run_u55c.py ``` -As a result, it is necessary to assign the kernel ports to the appropriate slots. The Python code below demonstrates this process. For comprehensive linking details, please refer to the [design/config/link_config.ini](design/config/run.py/link_config.ini) file. - - ```Python -right_slot = "SLOT_X1Y0:SLOT_X1Y0" -left_slot = "SLOT_X0Y0:SLOT_X0Y0" -left_args = [ - "in_0", - "out_0", - "in_1", - "out_1", - "in_3", - "out_3", - "in_6", - "out_6", - "in_9", - "out_9", - "in_11", - "out_11", - "in_2", - "out_2", -] -for arg in left_args: - rs.assign_port_to_region(f"m_axi_{arg}_.*", left_slot) -right_args = [ - "in_4", - "out_4", - "in_5", - "out_5", - "in_7", - "out_7", - "in_8", - "out_8", - "in_10", - "out_10", -] -for arg in right_args: - rs.assign_port_to_region(f"m_axi_{arg}_.*", right_slot) -rs.assign_port_to_region("s_axi_control_.*", left_slot) -rs.assign_port_to_region("ap_clk", left_slot) -rs.assign_port_to_region("ap_rst_n", left_slot) -rs.assign_port_to_region("interrupt", left_slot) -``` -For the complete detail, please refore to [./run.py](./run.py) file. Call the rapidstream by launching the command below or `make all`. +### Step 3: Use Rapidstream to Optimize `.xo` Design + +The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. +The RapidStream flow for TAPA requires the following key inputs: + +- **tapa-xo-path**: The path to the tapa-generated `xo` file (unikernel.xo). +- **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. +- **floorplan-config**: The configure file ([floorplan_config.json](design/config/run_u55c.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. +- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernel clock, vitis_platform and etc.). +- **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_u55c.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is +the same for vitis link configure file. + +We encapulate the rapidstream command for TAPA as `rapidstream-tapaopt` for invoking. +You can run the command below or execute `make all` supported by our [Makefile](Makefile). ```bash -rapidstream run.py +rapidstream-tapaopt --work-dir build/run_u55c.py \ + --tapa-xo-path build/run_u55c.py/unikernel.xo \ + --device-config build/run_u55c.py/device.json \ + --floorplan-config design/config/run_u55c.py/floorplan_config.json \ + --implementation-config design/config/run_u55c.py/impl_config.json \ + --connectivity-ini design/config/run_u55c.py/link_config.ini ``` + If everything is successful, you should at least get one optimized `.xclbin` file. -### Step 3: Check the Group Module Report +### Step 4: Check the Group Module Report RapidStream mandates a clear distinction between communication and computation within user designs. diff --git a/benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/run.py/ab_config.json b/benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/run_u55c.py/floorplan_config.json similarity index 100% rename from benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/run.py/ab_config.json rename to benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/run_u55c.py/floorplan_config.json diff --git a/benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/run_u55c.py/impl_config.json b/benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/run_u55c.py/impl_config.json new file mode 100644 index 00000000..3c481977 --- /dev/null +++ b/benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/run_u55c.py/impl_config.json @@ -0,0 +1,7 @@ +{ + "max_workers": 2, + "port_to_clock_period": { + "ap_clk": 3.33 + }, + "vitis_platform": "xilinx_u55c_gen3x16_xdma_3_202210_1" +} diff --git a/benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/run.py/link_config.ini b/benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/run_u55c.py/link_config.ini similarity index 100% rename from benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/run.py/link_config.ini rename to benchmarks/tapa_flow/stencil_sasa/low_congestion/design/config/run_u55c.py/link_config.ini diff --git a/benchmarks/tapa_flow/stencil_sasa/low_congestion/run.py b/benchmarks/tapa_flow/stencil_sasa/low_congestion/run_u55c.py similarity index 100% rename from benchmarks/tapa_flow/stencil_sasa/low_congestion/run.py rename to benchmarks/tapa_flow/stencil_sasa/low_congestion/run_u55c.py diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/Makefile b/benchmarks/vitis_flow/vck5000_VecAdd/Makefile new file mode 100644 index 00000000..4cd0c472 --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/Makefile @@ -0,0 +1,83 @@ +# Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. +# The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. + + +#ROOT_DIR := $(shell git rev-parse --show-toplevel) +PLATFORM := xilinx_vck5000_gen4x8_qdma_2_202220_1 +PLATFORM_REPO_PATHS := /opt/xilinx/platforms +XPFM_FILE := $(PLATFORM_REPO_PATHS)/$(PLATFORM)/$(PLATFORM).xpfm +SRC_DIR := $(CURDIR)/design +TARGET := hw +TEMP_DIR := $(CURDIR)/build +AIE_OBJ := $(TEMP_DIR)/libadf.a +KERNEL_NAMES := krnl_input_mover krnl_output_mover +XO_OBJS := $(foreach kernel,$(KERNEL_NAMES),$(TEMP_DIR)/$(kernel)_$(TARGET).xo) +EXECUTABLE := $(TEMP_DIR)/host_overlay.exe +XSA_OBJ := $(TEMP_DIR)/overlay_$(TARGET).xsa +XCLBIN := $(TEMP_DIR)/overlay_$(TARGET).xclbin +AXX := aiecompiler +AX86XX := x86simulator +CXXFLAGS := -std=c++17 -Wno-deprecated-declarations +CXXFLAGS += -I$(XILINX_XRT)/include -I$(XILINX_HLS)/include +LDFLAGS := -L$(XILINX_XRT)/lib +LDFLAGS += $(LDFLAGS) -lxrt_coreutil +VPP := v++ +CXX := g++ + + +all:$(EXECUTABLE) $(XCLBIN) + +$(EXECUTABLE): $(SRC_DIR)/host/host_overlay.cpp + @mkdir -p $(TEMP_DIR) + cd $(TEMP_DIR) && $(CXX) -o $(EXECUTABLE) $^ $(CXXFLAGS) $(LDFLAGS) + +$(XCLBIN): $(XSA_OBJ) $(AIE_OBJ) + cd $(TEMP_DIR) && $(VPP) -p -t $(TARGET) -f $(PLATFORM) $^ -o $@ --package.boot_mode=ospi + +$(XSA_OBJ): $(XO_OBJS) $(AIE_OBJ) + @mkdir -p $(TEMP_DIR) + @cd $(TEMP_DIR) && $(VPP) -l \ + --kernel_frequency 200 \ + --platform $(PLATFORM) \ + -t $(TARGET) \ + -g \ + --save-temps \ + --config $(SRC_DIR)/cfg/xclbin_overlay.cfg \ + -o $@ \ + $^ + +$(XO_OBJS):$(TEMP_DIR)/%_$(TARGET).xo:$(SRC_DIR)/hls/%.cpp + @mkdir -p $(TEMP_DIR) + @cd $(TEMP_DIR) && $(VPP) --platform $(PLATFORM) -t $(TARGET) -c -k $* -o $@ $< + +ASIM: $(AIE_OBJ) + @echo "INFO:Running aiesimulator..." + @cd $(TEMP_DIR) && aiesimulator --pkg-dir=$(TEMP_DIR)/Work --profile + +$(AIE_OBJ): $(SRC_DIR)/aie/* + @mkdir -p $(TEMP_DIR)/Work + @cd $(TEMP_DIR) && $(AXX) \ + --target=$(TARGET) \ + --platform=$(XPFM_FILE) \ + --include="$(SRC_DIR)/aie" \ + --workdir=$(TEMP_DIR)/Work \ + $(SRC_DIR)/aie/graph.cpp + +run: + @cd $(TEMP_DIR) && ./host_overlay.exe $(XCLBIN) + +x86_compile: + @mkdir -p $(TEMP_DIR)/Work + @cd $(TEMP_DIR) && aiecompiler \ + --target=x86sim \ + --include="$(SRC_DIR)" \ + --include="$(CURDIR)/common" \ + --workdir=$(TEMP_DIR)/Work \ + $(SRC_DIR)/graph.cpp + +run_x86: + @cd $(TEMP_DIR) && x86simulator --pkg-dir=./Work --dump + @diff ../data/s3_exp.txt $(TEMP_DIR)/data/s3_act.txt + +clean: + -@rm -rf $(TEMP_DIR) diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/data/gen.py b/benchmarks/vitis_flow/vck5000_VecAdd/data/gen.py new file mode 100644 index 00000000..a8145b40 --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/data/gen.py @@ -0,0 +1,27 @@ +__copyright__ = """ +Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. +The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. +""" + +NUM = 16 + +with open("s0.txt", "w") as f: + f.write(f" 1 {NUM} 0 0\n") + f.write(" 0 0 0 0\n") + f.write(" 0 0 0 0\n") + f.write(" 0 0 0 0\n") + +with open("s1.txt", "w") as f: + for i in range(NUM): + str_out = str(i) + f.write(f"{str_out.rjust(4)}\n") + + +with open("s2.txt", "w") as f: + for i in range(NUM): + str_out = str(i) + f.write(f"{str_out.rjust(4)}\n") + +with open("s3_exp.txt", "w") as f: + for i in range(NUM): + f.write(f"{i*2} \n") diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/common.h b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/common.h new file mode 100644 index 00000000..48f942c3 --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/common.h @@ -0,0 +1,18 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +#pragma once +#include +#include + +//Definitions that are needed by both the AIE and host sources + +//S0 control packet, 16 word (64 bytes) total +struct overlay_S0_control +{ + //Parameters + uint32_t VEC_NUM; // The number of vectors of the inputs + uint32_t VEC_LEN; // The vector length of the inputs + uint32_t RSVD[14]; // reserved words to fill up the 64 byte packets +}; diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/graph.cpp b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/graph.cpp new file mode 100644 index 00000000..2dd651d9 --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/graph.cpp @@ -0,0 +1,20 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + +#include "graph.h" + +using namespace adf; + +graph_overlay my_graph; + +int main(int argc, char ** argv) +{ + my_graph.init(); +#if defined(__X86SIM__) + my_graph.run(1); +#else + my_graph.run(); +#endif + my_graph.end(); + return 0; +} diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/graph.h b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/graph.h new file mode 100644 index 00000000..1beb23de --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/graph.h @@ -0,0 +1,121 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + +#pragma once +#include + +#include "kernel_vadd.h" + + +#include "kernel_lshift.h" + + +#include "kernel_rshift.h" +#include "kernel_rshift_last.h" + + +using namespace adf; + +#define SHIFT_NUM (4) + +// 16 x 32 bits = 64 bytes +#define DATA_SIZE (64) +#define OCCUPANCY (0.9) +#define STARTCOL (0) +#define STARTROW (0) +#define MAXCOL (50) + +class graph_overlay: public graph +{ + +private: + kernel k_vadd; + kernel k_lshift[SHIFT_NUM]; + kernel k_rshift[SHIFT_NUM]; + +public: + input_plio p_s0; + input_plio p_s1; + input_plio p_s2; + output_plio p_s3; + + graph_overlay() + { + // create kernel + k_vadd = kernel::create(kernel_vadd); + source(k_vadd) = "../design/aie/kernel_vadd.cpp"; + headers(k_vadd) = {"../design/aie/kernel_vadd.h","../design/aie/common.h"}; + runtime(k_vadd) = OCCUPANCY; + + for(int i=0; i(k_lshift[i]) = OCCUPANCY; + } + + for(int i=0; i(k_rshift[i]) = OCCUPANCY; + } + + k_rshift[SHIFT_NUM-1] = kernel::create(kernel_rshift_last); + source(k_rshift[SHIFT_NUM-1]) = "../design/aie/kernel_rshift_last.cpp"; + headers(k_rshift[SHIFT_NUM-1]) = {"../design/aie/kernel_rshift_last.h","../design/aie/common.h"}; + runtime(k_rshift[SHIFT_NUM-1]) = OCCUPANCY; + + // Constrain the kernel to fixed locations + + for(int i=0; i(k_lshift[i]) = tile(STARTCOL+col_offset, STARTROW+2*row_offset); + location(k_rshift[i]) = tile(STARTCOL+col_offset, STARTROW+2*row_offset+1); + } + + + + // create port + p_s0 = input_plio::create("s0", plio_128_bits, "../data/s0.txt"); + p_s1 = input_plio::create("s1", plio_32_bits, "../data/s1.txt"); + p_s2 = input_plio::create("s2", plio_32_bits, "../data/s2.txt"); + p_s3 = output_plio::create("s3", plio_32_bits, "../data/s3_act.txt"); + + + // connect port and kernel + connect>(p_s0.out[0], k_vadd.in[0]); + connect>(p_s1.out[0], k_vadd.in[1]); + connect>(p_s2.out[0], k_vadd.in[2]); + connect (k_vadd.out[0], k_lshift[0].in[0]); + + connect (k_vadd.out[1], k_lshift[0].in[1]); + connect s_experi(k_lshift[0].out[0], k_rshift[0].in[0]); + //fifo_depth(s_experi) = 64; + + for(int i=0; i (k_rshift[i].out[0], k_lshift[i+1].in[0]); + connect (k_lshift[i+1].out[0], k_rshift[i+1].in[0]); + } + + for(int i=0; i (k_lshift[i].out[1], k_rshift[i].in[1]); + connect (k_rshift[i].out[1], k_lshift[i+1].in[1]); + } + + connect (k_lshift[SHIFT_NUM-1].out[1], k_rshift[SHIFT_NUM-1].in[1]); + connect>(k_rshift[SHIFT_NUM-1].out[0], p_s3.in[0]); + + }; + +}; diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_lshift.cpp b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_lshift.cpp new file mode 100644 index 00000000..89457e92 --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_lshift.cpp @@ -0,0 +1,49 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + +#include "kernel_lshift.h" +#include "common.h" +#include + +using namespace std; + +//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +// VecAdd krnl to perform s1 << 1 +// Input window w_s0: control packet. 64 bytes +// Input window w_s1: intput 1 window, 32bits x s0.VEC_LEN +// Output window w_s2: output window, 32bits x s0.VEC_LEN +void kernel_lshift( + input_stream* s0, + input_stream* s1, + output_stream* s2, + output_stream* s3 +){ + + //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + //Acquire S0 control packet + //window_acquire(w_s0); + //window_acquire(w_s2); + + uint32_t VEC_NUM = readincr(s0); + uint32_t VEC_LEN = readincr(s0); + + writeincr(s2, VEC_NUM); + writeincr(s2, VEC_LEN); + + //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + //Process data + for (int i = 0; i < VEC_NUM; i++) // processing data of input vectors + { + // The input window size will be 32bits x s0.VEC_LEN + for (int j = 0; j < VEC_LEN; j++) + { + uint32_t in1 = readincr(s1); + writeincr(s3, (in1<<1)); + //printf("[KERNEL_LSHIFT] processing %d, %d\n", j, *(out+j)); + } + + } + + printf("%s: finish processing\n", __FILE__); + +} diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_lshift.h b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_lshift.h new file mode 100644 index 00000000..9b2a5fd1 --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_lshift.h @@ -0,0 +1,13 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +#pragma once +#include + +void kernel_lshift( + input_stream* s0, + input_stream* s1, + output_stream* s2, + output_stream* s3 +); diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift.cpp b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift.cpp new file mode 100644 index 00000000..f8eab5da --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift.cpp @@ -0,0 +1,49 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + +#include "kernel_rshift.h" +#include "common.h" +#include + +using namespace std; + +//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +// VecAdd krnl to perform s1 << 1 +// Input window w_s0: control packet. 64 bytes +// Input window w_s1: intput 1 window, 32bits x s0.VEC_LEN +// Output window w_s2: output window, 32bits x s0.VEC_LEN +void kernel_rshift( + input_stream* s0, + input_stream* s1, + output_stream* s2, + output_stream* s3 +){ + + //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + //Acquire S0 control packet + //window_acquire(w_s0); + //window_acquire(w_s2); + + uint32_t VEC_NUM = readincr(s0); + uint32_t VEC_LEN = readincr(s0); + + writeincr(s2, VEC_NUM); + writeincr(s2, VEC_LEN); + + //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + //Process data + for (int i = 0; i < VEC_NUM; i++) // processing data of input vectors + { + // The input window size will be 32bits x s0.VEC_LEN + for (int j = 0; j < VEC_LEN; j++) + { + uint32_t in1 = readincr(s1); + writeincr(s3, (in1>>1)); + //printf("[KERNEL_LSHIFT] processing %d, %d\n", j, *(out+j)); + } + + } + + printf("%s: finish processing\n", __FILE__); + +} diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift.h b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift.h new file mode 100644 index 00000000..ac791f7c --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift.h @@ -0,0 +1,13 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +#pragma once +#include + +void kernel_rshift( + input_stream* s0, + input_stream* s1, + output_stream* s2, + output_stream* s3 +); diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift_last.cpp b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift_last.cpp new file mode 100644 index 00000000..9027b27e --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift_last.cpp @@ -0,0 +1,48 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + +#include "kernel_rshift_last.h" +#include "common.h" +#include + +using namespace std; + +//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +// VecAdd krnl to perform s1 << 1 +// Input window w_s0: control packet. 64 bytes +// Input window w_s1: intput 1 window, 32bits x s0.VEC_LEN +// Output window w_s2: output window, 32bits x s0.VEC_LEN +void kernel_rshift_last( + input_stream* s0, + input_stream* s1, + output_window_uint32* restrict w_s3 +){ + + //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + //Acquire S0 control packet + //window_acquire(w_s0); + //window_acquire(w_s2); + + uint32_t VEC_NUM = readincr(s0); + uint32_t VEC_LEN = readincr(s0); + + //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + //Process data + for (int i = 0; i < VEC_NUM; i++) // processing data of input vectors + { + + uint32_t* restrict out =reinterpret_cast(w_s3->ptr); + + // The input window size will be 32bits x s0.VEC_LEN + for (int j = 0; j < VEC_LEN; j++) + { + uint32_t in1 = readincr(s1); + *(out+j) = (in1>>1); + //printf("[KERNEL_LSHIFT] processing %d, %d\n", j, *(out+j)); + } + + } + + printf("%s: finish processing\n", __FILE__); + +} diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift_last.h b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift_last.h new file mode 100644 index 00000000..ce9d3ecd --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_rshift_last.h @@ -0,0 +1,12 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +#pragma once +#include + +void kernel_rshift_last( + input_stream* s0, + input_stream* s1, + output_window_uint32* restrict w_s3 +); diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_vadd.cpp b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_vadd.cpp new file mode 100644 index 00000000..9c03c146 --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_vadd.cpp @@ -0,0 +1,65 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + +#include "kernel_vadd.h" +#include "common.h" + +using namespace std; + +//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +// VecAdd krnl to perform s1 + s2 +// Input window w_s0: control packet. 64 bytes +// Input window w_s1: intput 1 window, 32bits x s0.VEC_LEN +// Input window w_s2: intput 2 window, 32bits x s0.VEC_LEN +// Output window w_s3: output window, 64 bytes +// Output window w_s4: output window, 32bits x s0.VEC_LEN +void kernel_vadd( + input_window_uint32* restrict w_s0, + input_window_uint32* restrict w_s1, + input_window_uint32* restrict w_s2, + output_stream* s3, + output_stream* s4 + ){ + + //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + //Acquire S0 control packet + //window_acquire(w_s0); + //window_acquire(w_s3); + + overlay_S0_control& s0_ctrl(*reinterpret_cast(w_s0->ptr)); + printf("[KERNEL_VADD] s0_ctrl.VEC_NUM = %d\n", s0_ctrl.VEC_NUM); + + writeincr(s3, s0_ctrl.VEC_NUM); + writeincr(s3, s0_ctrl.VEC_LEN); + + //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + //Process data + for (int i = 0; i < s0_ctrl.VEC_NUM; i++) // processing data of input vectors + { + + // The input window size will be 32bits x s0.VEC_LEN + //window_acquire(w_s1); + //window_acquire(w_s2); + //window_acquire(w_s4); + + //Get working pointers into the acquired S1/S2 windows + uint32_t* restrict in1 =reinterpret_cast(w_s1->ptr); + uint32_t* restrict in2 =reinterpret_cast(w_s2->ptr); + + + for (int j = 0; j < s0_ctrl.VEC_LEN; j++) {// processing data of input vectors + writeincr(s4, *(in1+j) + *(in2+j)); + printf("[KERNEL_VADD] processing %d\n", j); + } + + //window_release(w_s1); + //window_release(w_s2); + //window_release(w_s4); + + } + + //All done, release S0 window + //window_release(w_s0); + //window_release(w_s3); + +} diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_vadd.h b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_vadd.h new file mode 100644 index 00000000..28f9fe19 --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/design/aie/kernel_vadd.h @@ -0,0 +1,14 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +#pragma once +#include + +void kernel_vadd( + input_window_uint32* restrict w_s0, + input_window_uint32* restrict w_s1, + input_window_uint32* restrict w_s2, + output_stream* s3, + output_stream* s4 +); diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/design/cfg/xclbin_overlay.cfg b/benchmarks/vitis_flow/vck5000_VecAdd/design/cfg/xclbin_overlay.cfg new file mode 100644 index 00000000..6a25f212 --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/design/cfg/xclbin_overlay.cfg @@ -0,0 +1,20 @@ +[connectivity] +nk=krnl_output_mover:1:krnl_output_mover_0 +nk=krnl_input_mover:1:krnl_input_mover_0 + +slr = krnl_output_mover_0:SLR0 +slr = krnl_input_mover_0:SLR0 + +sp = krnl_input_mover_0.m_axi_gmem1:MC_NOC0 +sp = krnl_input_mover_0.m_axi_gmem2:MC_NOC0 +sp = krnl_input_mover_0.m_axi_gmem3:MC_NOC0 +sp = krnl_output_mover_0.m_axi_gmem1:MC_NOC0 + +stream_connect=krnl_input_mover_0.stream_s1:ai_engine_0.s0 +stream_connect=krnl_input_mover_0.stream_s2:ai_engine_0.s1 +stream_connect=krnl_input_mover_0.stream_s3:ai_engine_0.s2 +stream_connect=ai_engine_0.s3:krnl_output_mover_0.stream_s1 + +[vivado] +# use following line to improve the hw_emu running speed affected by platform +prop=fileset.sim_1.xsim.elaborate.xelab.more_options={-override_timeprecision -timescale=1ns/1ps} diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/design/hls/krnl_input_mover.cpp b/benchmarks/vitis_flow/vck5000_VecAdd/design/hls/krnl_input_mover.cpp new file mode 100644 index 00000000..3b215a32 --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/design/hls/krnl_input_mover.cpp @@ -0,0 +1,74 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + +#include +#include +#include + + +extern "C" { + + void krnl_input_mover( + int mem_in1_size, + int mem_in2_size, + int mem_in3_size, + + ap_int<32>* mem_in1, + ap_int<32>* mem_in2, + ap_int<32>* mem_in3, + + hls::stream >& stream_s1, + hls::stream >& stream_s2, + hls::stream >& stream_s3 + ) + { + #pragma HLS INTERFACE m_axi port=mem_in1 offset=slave bundle=gmem1 + #pragma HLS INTERFACE m_axi port=mem_in2 offset=slave bundle=gmem2 + #pragma HLS INTERFACE m_axi port=mem_in3 offset=slave bundle=gmem3 + + #pragma HLS INTERFACE axis port=stream_s1 + #pragma HLS INTERFACE axis port=stream_s2 + #pragma HLS INTERFACE axis port=stream_s3 + + #pragma HLS INTERFACE s_axilite port=mem_in1_size bundle=control + #pragma HLS INTERFACE s_axilite port=mem_in2_size bundle=control + #pragma HLS INTERFACE s_axilite port=mem_in3_size bundle=control + + #pragma HLS INTERFACE s_axilite port=mem_in1 bundle=control + #pragma HLS INTERFACE s_axilite port=mem_in2 bundle=control + #pragma HLS INTERFACE s_axilite port=mem_in3 bundle=control + + #pragma HLS INTERFACE s_axilite port=return bundle=control + + #pragma HLS DATAFLOW + + for(int i=0; i x1; + x1.data=mem_in1[i]; + x1.keep_all(); + stream_s1.write(x1); + } + + for(int i=0; i x2; + x2.data=mem_in2[i]; + x2.keep_all(); + stream_s2.write(x2); + } + + for(int i=0; i x3; + x3.data=mem_in3[i]; + x3.keep_all(); + stream_s3.write(x3); + } + + } + +} diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/design/hls/krnl_output_mover.cpp b/benchmarks/vitis_flow/vck5000_VecAdd/design/hls/krnl_output_mover.cpp new file mode 100644 index 00000000..8dc773ba --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/design/hls/krnl_output_mover.cpp @@ -0,0 +1,41 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + +#include +#include +#include + + +extern "C" { + + void krnl_output_mover( + int mem_out1_size, + + ap_int<32>* mem_out1, + + hls::stream >& stream_s1 + ) + { + #pragma HLS INTERFACE m_axi port=mem_out1 offset=slave bundle=gmem1 + + #pragma HLS INTERFACE axis port=stream_s1 + + #pragma HLS INTERFACE s_axilite port=mem_out1_size bundle=control + + #pragma HLS INTERFACE s_axilite port=mem_out1 bundle=control + + #pragma HLS INTERFACE s_axilite port=return bundle=control + + #pragma HLS DATAFLOW + + for(int i=0; i x1; + x1 = stream_s1.read(); + mem_out1[i] = x1.data; + } + + } + +} diff --git a/benchmarks/vitis_flow/vck5000_VecAdd/design/host/host_overlay.cpp b/benchmarks/vitis_flow/vck5000_VecAdd/design/host/host_overlay.cpp new file mode 100644 index 00000000..4a1de2dd --- /dev/null +++ b/benchmarks/vitis_flow/vck5000_VecAdd/design/host/host_overlay.cpp @@ -0,0 +1,113 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + +#include +#include +#include +#include +#include +#include "experimental/xrt_kernel.h" +#include "experimental/xrt_uuid.h" + +// Kernel arguments index definition +#define krnl_input_mover_size1 0 +#define krnl_input_mover_size2 1 +#define krnl_input_mover_size3 2 +#define krnl_input_mover_ptr1 3 +#define krnl_input_mover_ptr2 4 +#define krnl_input_mover_ptr3 5 + +#define krnl_output_mover_size 0 +#define krnl_output_mover_ptr 1 + +#define DEVICE_ID 0 +#define DATA_SIZE 16 + +// print command line help +void print_help(void) { + std::cout << std::endl << " Usage: host_everlay.exe -i JPEGFILE [-c COLOR]" << std::endl << std::endl; +} + + +// Main program body +int main(int argc, char *argv[]) { +struct timeval start, end; + + int buffer_size_in_bytes = DATA_SIZE * sizeof(int); + + std::string binaryFile; + if (argc < 2){ + std::cout << argc << std::endl; + print_help(); + }else{ + binaryFile = argv[argc-1]; + } + + + auto device = xrt::device(DEVICE_ID); + std::cout << "device name: " << device.get_info() << "\n"; + std::cout << "device bdf: " << device.get_info() << "\n"; + + + // Load xclbin + std::cout << "Load " << binaryFile << std::endl; + xrt::uuid xclbin_uuid = device.load_xclbin(binaryFile); + + // create kernel objects + std::cout << "Create kernels" << std::endl; + xrt::kernel krnl_input_mover = xrt::kernel(device, xclbin_uuid, "krnl_input_mover"); + xrt::kernel krnl_output_mover = xrt::kernel(device, xclbin_uuid, "krnl_output_mover"); + + auto bank_grp_in_buf1 = krnl_input_mover.group_id(krnl_input_mover_ptr1); + auto bank_grp_in_buf2 = krnl_input_mover.group_id(krnl_input_mover_ptr2); + auto bank_grp_in_buf3 = krnl_input_mover.group_id(krnl_input_mover_ptr3); + auto bank_grp_out_buf = krnl_output_mover.group_id(krnl_output_mover_ptr); + + auto input_buffer1 = xrt::bo(device, 64, bank_grp_in_buf1); + auto input_buffer2 = xrt::bo(device, buffer_size_in_bytes, bank_grp_in_buf2); + auto input_buffer3 = xrt::bo(device, buffer_size_in_bytes, bank_grp_in_buf3); + auto output_buffer = xrt::bo(device, buffer_size_in_bytes, bank_grp_out_buf); + + + auto input_buffer1_mapped = input_buffer1.map(); + auto input_buffer2_mapped = input_buffer2.map(); + auto input_buffer3_mapped = input_buffer3.map(); + auto output_buffer_mapped = output_buffer.map(); + + input_buffer1_mapped[0] = 1; + input_buffer1_mapped[1] = DATA_SIZE; + + for (auto i=2; i<16; ++i) { input_buffer1_mapped[i] = 0; } + for (auto i=0; i + +RapidStream Logo + +# TAPA Design + +## Introduction + +Rapidsteam is fully compatible with [TAPA](https://github.com/rapidstream-org/rapidstream-tapa). +In this recipe, we illustrate how to create a Xilinx objective file (`.xo`) using TAPA, then optimize the `.xo` file with Rapidstream, and finally utilize the optimized output in the ongoing Vitis development process. + + +## Xilinx Object Files + +[Vitis compiled object files (`.xo`)](https://docs.amd.com/r/en-US/ug1393-vitis-application-acceleration/Design-Topology) are IP packages used in the AMD Vitis kernel development flow for programming the programmable logic (PL) region of target devices. These files can be [generated from HLS C++ code](https://docs.amd.com/r/en-US/ug1393-vitis-application-acceleration/Developing-PL-Kernels-using-C) using the `v++` command, [packed from RTL code](https://docs.amd.com/r/en-US/ug1393-vitis-application-acceleration/RTL-Kernel-Development-Flow), or created using third-party frameworks like [RapidStream TAPA](https://github.com/rapidstream-org/rapidstream-tapa). In this example, we use `RapidStream TAPA` to generate the `VecAdd.xo` file, but the same flow applies to object files generated through other methods. + + +## Tutorial + +### Step 1: C++ Simulation + +Since our +design calls Xilinx Libraries, we need to source the Vitis environment before running the simulation. + +```bash +source /Vitis/2023.2/settings64.sh +``` + +Before generating the `.xo` file, we recommend running a C++ simulation to verify the correctness of the design. This step is optional but highly recommended. Run the following command or `make csim` to perform C++ simulation: + +```bash +tapa g++ design/main.cpp design/VecAdd.cpp \ +-I /opt/tools/xilinx/Vitis_HLS/2023.2/include \ +-o build/run_u55c.py/main.exe -O2 +./build/run_u55c.py/main.exe +``` + +Your should see the following output: + +```bash +I20241010 15:14:52.494259 4113880 task.h:66] running software simulation with TAPA library +kernel time: 0.0197967 s +PASS! +``` + +### Step 2: Generate the Xilinx Object File (`.xo`) + +We use TAPA on top of 2023.2 to generate the `.xo` file. Run the following command or run `make xo`: + +```bash +source /Vitis/2023.2/settings64.sh +mkdir -p build/run_u55c.py +cd build/run_u55c.py && tapa compile \ +--top VecAdd \ +--part-num xcu280-fsvh2892-2L-e \ +--clock-period 3.33 \ +-o VecAdd.xo \ +-f design/VecAdd.cpp \ +2>&1 | tee tapa.log +``` + +### Step 3 (Optional): Use Vitis --link to Generate the `.xclbin` File + +With the `.xo` file generated, you can use `v++ -link` to generate the `.xclbin` file. Run the following command or execute `make hw`: + +```bash +v++ -l -t hw \ + --platform xilinx_u280_gen3x16_xdma_1_202211_1 \ + --kernel VecAdd \ + --connectivity.nk VecAdd:1:VecAdd \ + --config design/link_config.ini \ + --temp_dir build \ + -o build/VecAdd.xclbin \ + build/VecAdd.xo +``` + +If your machines is equipped with the target FPGA device, you can deploy the optimized design on the FPGA by running the following command: + +```bash +./app.exe +``` + +:warning: **Note**: This step can take hours to complete. We recommend using the RapidStream flow to optimize the `.xo` file instead of generating the `.xclbin` file if you are familiar with AMD Vitis flow. + + +### Step 4: Define Virtual Device + +In this tutorial, we use the [Alveo U55C](https://www.amd.com/en/products/accelerators/alveo/u55c/a-u55c-p00g-pq-g.html) as an example. The device is organized into six slots, each +containing 16 clock regions of logic. In actual implementations, the available slots are reduced + based on the platform specifics, as some resources are reserved for shell logic. + +AU55C Device + +To generate a `device.json` file that details the device features, such as slot resources and + locations, you can either run the `run_u55c.py` script by invoking RapidStream as shown below or + simply enter `make device` in the terminal. + +```bash +rapidstream run_u55c.py +``` + + +### Step 5: Use Rapidstream to Optimize `.xo` Design + +The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. +The RapidStream flow for TAPA requires the following key inputs: + +- **tapa-xo-path**: The path to the tapa-generated `xo` file (VecAdd.xo). +- **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. +- **floorplan-config**: The configure file ([floorplan_config.json](design/config/run_u55c.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. +- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_u55c.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is +the same for vitis link configure file. + +We encapulate the rapidstream command for TAPA as `rapidstream-tapaop` for invoking. +You can run the command below or execute `make all` supported by our [Makefile](Makefile). + +```bash +rapidstream-tapaopt --work-dir build/run_u55c.py \ + --tapa-xo-path ./VecAdd.xo \ + --device-config build/run_u55c.py/device.json \ + --floorplan-config ../../design/config/run_u55c.py/ab_config.json \ + --implementation-config ../../ design/config/run_u55c.py/impl_config.json \ + --connectivity-ini ../../design/config/run_u55c.py/link_config.ini +``` + +When finished, you can locate these files using the following command: + +```bash +find ./build/run_u55c.py/ -name *.xo +``` + +If everything is successful, you should at least get one optimized `.xo` file located in `./build/dse/candidate_0/exported/VecAdd.xo`. + +### Step 7: Check the Group Module Report + + +RapidStream mandates a clear distinction between communication and computation within user designs. + +- In `Group modules`, users are tasked solely with defining inter-submodule communication. For those familiar with Vivado IP Integrator flow, crafting a Group module mirrors the process of connecting IPs in IPI. RapidStream subsequently integrates appropriate pipeline registers into these Group modules. + +- In `Leaf modules`, users retain the flexibility to implement diverse computational patterns, as RapidStream leaves these Leaf modules unchanged. + +For further details, please consult the [code style](https://docs.rapidstream-da.com/required-coding-style/) section in our Documentation. + +To generate a report on group types, execute the commands below or `run make show_groups`: + +```bash +rapidstream ../../common/util/get_group.py \ + -i build/passes/0-imported.json \ + -o build/module_types.csv +``` + +The module types for your design can be found in `build/module_types.csv`. Below, we list the four Group modules. In this design, `VecAdd` serves as a Group module, while the other three modules are added by RapidStream. + +| Module Name | Group Type | +|:--------------------------------:|:--------------:| +| VecAdd | grouped_module | +| __rs_VecAdd_aux | aux_module | +| ... | verilog_module | + + +### Step 8: Use Vitis --link with the Optimized `.xo` File + +With the optimized `.xo` file generated, you can use `v++ -link` to generate the `.xclbin` file. Run the following command or run `make`: + +```bash +v++ -l -t hw \ + --platform xilinx_u280_gen3x16_xdma_1_202211_1 \ + --kernel VecAdd \ + --connectivity.nk VecAdd:1:VecAdd \ + --config design/link_config.ini \ + --temp_dir build/rapidstream \ + -o build/VecAdd_rs_opt.xclbin \ + ./build/dse/candidate_0/exported/VecAdd.xo +``` + + +To examine the timing results for each design point, use this command: + +```bash +find ./build -name *.xclbin.info +``` + + + +If your machines is equipped with the target FPGA device, you can deploy the optimized design on the FPGA by running the following command: + +```bash +make host +./app.exe +``` + +## Next Step + + **Click here to [go back to Getting Started](../README.md)** diff --git a/getting_started/aie_source/data/bkgen.py b/getting_started/aie_source/data/bkgen.py new file mode 100755 index 00000000..c88fe98a --- /dev/null +++ b/getting_started/aie_source/data/bkgen.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 +__copyright__ = """ +Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. +The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. +""" + +M = 2 +K = 8 +N = 64 + +with open("s0.txt", "w") as f: + for row in range(1, M + 1): + for col in range(1, K + 1): + str_out = str(f"{row}000{col}") + f.write(f"{str_out.rjust(4)}\n") + +with open("s1.txt", "w") as f: + for row in range(1, K + 1): + for col in range(1, N + 1): + str_out = str(f"{row}000{col}") + f.write(f"{str_out.rjust(4)}\n") + + +with open("s2_exp.txt", "w") as f: + for i in range(K): + f.write(f"{i*i} \n") diff --git a/getting_started/aie_source/data/gen.py b/getting_started/aie_source/data/gen.py new file mode 100755 index 00000000..cdedb5c2 --- /dev/null +++ b/getting_started/aie_source/data/gen.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 +__copyright__ = """ +Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. +The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. +""" + +NUM = 256 + +# with open("s0.txt", "w") as f: +# f.write(f" 1 {NUM} 0 0\n") +# f.write(" 0 0 0 0\n") +# f.write(" 0 0 0 0\n") +# f.write(" 0 0 0 0\n") + +with open("s0.txt", "w") as f: + for i in range(NUM): + for j in range(4): + f.write(f"{i*4+j} ") + f.write("\n") + +with open("s1.txt", "w") as f: + for i in range(NUM): + for j in range(4): + f.write(f"{i*4+j} ") + f.write("\n") + + +with open("s2_exp.txt", "w") as f: + for i in range(NUM): + f.write(f"{i+i} \n") diff --git a/getting_started/aie_source/data/matmul.py b/getting_started/aie_source/data/matmul.py new file mode 100755 index 00000000..2c815d5b --- /dev/null +++ b/getting_started/aie_source/data/matmul.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 +__copyright__ = """ +Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. +The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. +""" +import numpy as np + +M = 2 +K = 4 +N = 8 + +A = np.array([i for i in range(M * K)]).reshape(M, K) +B = np.array([i for i in range(K * N)]).reshape(K, N) +print(A) +print(B) + + +# Multiply matrices +result = np.matmul(A, B) # or you can use matrix_a @ matrix_b +print(result) diff --git a/getting_started/aie_source/design/aie/VecAdd.cpp b/getting_started/aie_source/design/aie/VecAdd.cpp new file mode 100644 index 00000000..911fc241 --- /dev/null +++ b/getting_started/aie_source/design/aie/VecAdd.cpp @@ -0,0 +1,20 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + +#include "VecAdd.h" + +using namespace adf; + +VecAdd my_graph; + +int main(int argc, char ** argv) +{ + my_graph.init(); +#if defined(__X86SIM__) + my_graph.run(1); +#else + my_graph.run(); +#endif + my_graph.end(); + return 0; +} diff --git a/getting_started/aie_source/design/aie/VecAdd.h b/getting_started/aie_source/design/aie/VecAdd.h new file mode 100644 index 00000000..8f72dc86 --- /dev/null +++ b/getting_started/aie_source/design/aie/VecAdd.h @@ -0,0 +1,74 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + +#pragma once +#include +#include "common.h" +#include "add_kernel.h" +#include "read_mem.h" +#include "write_mem.h" + + +using namespace adf; + + + +class VecAdd: public graph +{ + +private: + kernel k_vadd; + kernel k_read_mem1; + kernel k_read_mem2; + kernel k_write_mem; + +public: + input_plio p_s0; + input_plio p_s1; + output_plio p_s2; + + VecAdd() + { + // create kernel + k_read_mem1 = kernel::create(read_mem); + source(k_read_mem1) = "../design/aie/read_mem.cpp"; + headers(k_read_mem1) = {"../design/aie/read_mem.h","../design/aie/common.h"}; + runtime(k_read_mem1) = OCCUPANCY; + + k_read_mem2 = kernel::create(read_mem); + source(k_read_mem2) = "../design/aie/read_mem.cpp"; + headers(k_read_mem2) = {"../design/aie/read_mem.h","../design/aie/common.h"}; + runtime(k_read_mem2) = OCCUPANCY; + + k_vadd = kernel::create(add_kernel); + source(k_vadd) = "../design/aie/add_kernel.cpp"; + headers(k_vadd) = {"../design/aie/add_kernel.h","../design/aie/common.h"}; + runtime(k_vadd) = OCCUPANCY; + + k_write_mem = kernel::create(write_mem); + source(k_write_mem) = "../design/aie/write_mem.cpp"; + headers(k_write_mem) = {"../design/aie/write_mem.h","../design/aie/common.h"}; + runtime(k_write_mem) = OCCUPANCY; + + + location(k_read_mem1) = tile(5, 1); + location(k_read_mem2) = tile(4, 1); + location(k_vadd) = tile(5, 2); + location(k_write_mem) = tile(4, 2); + + // create port + p_s0 = input_plio::create("s0", plio_32_bits, "../data/s0.txt"); + p_s1 = input_plio::create("s1", plio_32_bits, "../data/s1.txt"); + p_s2 = output_plio::create("s2", plio_32_bits, "../data/s2_act.txt"); + + + // connect port and kernel + connect>(p_s0.out[0], k_read_mem1.in[0]); + connect>(p_s1.out[0], k_read_mem2.in[0]); + connect (k_read_mem1.out[0], k_vadd.in[0]); + connect (k_read_mem2.out[0], k_vadd.in[1]); + connect (k_vadd.out[0], k_write_mem.in[0]); + connect>(k_write_mem.out[0], p_s2.in[0]); + }; + +}; diff --git a/getting_started/aie_source/design/aie/add_kernel.cpp b/getting_started/aie_source/design/aie/add_kernel.cpp new file mode 100644 index 00000000..7de66c39 --- /dev/null +++ b/getting_started/aie_source/design/aie/add_kernel.cpp @@ -0,0 +1,17 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +// Includes +#include "add_kernel.h" +#include "common.h" + +void add_kernel( + input_stream* stream_in1, + input_stream* stream_in2, + output_stream* stream_out) { + + for (int i = 0; i < DATA_NUM; i++) { + writeincr(stream_out, readincr(stream_in1) + readincr(stream_in2)); + } +} diff --git a/getting_started/aie_source/design/aie/add_kernel.h b/getting_started/aie_source/design/aie/add_kernel.h new file mode 100644 index 00000000..bb8cb0f2 --- /dev/null +++ b/getting_started/aie_source/design/aie/add_kernel.h @@ -0,0 +1,8 @@ +#pragma once +#include + +void add_kernel( + input_stream* stream_in1, + input_stream* stream_in2, + output_stream* stream_out +); diff --git a/getting_started/aie_source/design/aie/common.h b/getting_started/aie_source/design/aie/common.h new file mode 100644 index 00000000..b046147c --- /dev/null +++ b/getting_started/aie_source/design/aie/common.h @@ -0,0 +1,14 @@ + +#pragma once +#include +#include + +#define DATA_NUM 256 + +// size of data in bytes +// uint32 is 4 bytes +#define DATA_SIZE (DATA_NUM*4) +#define OCCUPANCY (0.9) +#define STARTCOL (0) +#define STARTROW (0) +#define MAXCOL (50) diff --git a/getting_started/aie_source/design/aie/read_mem.cpp b/getting_started/aie_source/design/aie/read_mem.cpp new file mode 100644 index 00000000..190e5583 --- /dev/null +++ b/getting_started/aie_source/design/aie/read_mem.cpp @@ -0,0 +1,16 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +// Includes +#include "read_mem.h" +#include "common.h" + +void read_mem( + input_window* restrict mem_in, + output_stream* stream_out) { + + for (int i = 0; i < DATA_NUM; i++) { + writeincr(stream_out, window_readincr(mem_in)); + } +} diff --git a/getting_started/aie_source/design/aie/read_mem.h b/getting_started/aie_source/design/aie/read_mem.h new file mode 100644 index 00000000..fe52314e --- /dev/null +++ b/getting_started/aie_source/design/aie/read_mem.h @@ -0,0 +1,7 @@ +#pragma once +#include + +void read_mem( + input_window* restrict mem_in, + output_stream* stream_out +); diff --git a/getting_started/aie_source/design/aie/write_mem.cpp b/getting_started/aie_source/design/aie/write_mem.cpp new file mode 100644 index 00000000..e13b54c2 --- /dev/null +++ b/getting_started/aie_source/design/aie/write_mem.cpp @@ -0,0 +1,17 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +// Includes +#include "write_mem.h" +#include "common.h" + +void write_mem( + input_stream* stream_in, + output_window* restrict mem_out +) { + + for (int i = 0; i < DATA_NUM; i++) { + window_writeincr(mem_out, readincr(stream_in)); + } +} diff --git a/getting_started/aie_source/design/aie/write_mem.h b/getting_started/aie_source/design/aie/write_mem.h new file mode 100644 index 00000000..b73c0261 --- /dev/null +++ b/getting_started/aie_source/design/aie/write_mem.h @@ -0,0 +1,7 @@ +#pragma once +#include + +void write_mem( + input_stream* stream_in, + output_window* restrict mem_out +); diff --git a/getting_started/aie_source/design/config/run_u55c.py/floorplan_config.json b/getting_started/aie_source/design/config/run_u55c.py/floorplan_config.json new file mode 100644 index 00000000..d4e0f55d --- /dev/null +++ b/getting_started/aie_source/design/config/run_u55c.py/floorplan_config.json @@ -0,0 +1,14 @@ +{ + "dse_range_max": 0.8, + "dse_range_min": 0.7, + "partition_strategy": "flat", + "port_pre_assignments": { + ".*mem_in1_.*": "HBM[16]", + ".*mem_in2_.*": "HBM[17]", + ".*mem_out_.*": "HBM[18]", + "ap_clk": "CLK_RST", + "ap_rst_n": "CLK_RST", + "interrupt": "CLK_RST", + "s_axi_control_.*": "S_AXI_CONTROL" + } +} diff --git a/getting_started/aie_source/design/config/run_u55c.py/impl_config.json b/getting_started/aie_source/design/config/run_u55c.py/impl_config.json new file mode 100644 index 00000000..3c481977 --- /dev/null +++ b/getting_started/aie_source/design/config/run_u55c.py/impl_config.json @@ -0,0 +1,7 @@ +{ + "max_workers": 2, + "port_to_clock_period": { + "ap_clk": 3.33 + }, + "vitis_platform": "xilinx_u55c_gen3x16_xdma_3_202210_1" +} diff --git a/getting_started/tapa_source/design/link_config.ini b/getting_started/aie_source/design/config/run_u55c.py/link_config.ini similarity index 100% rename from getting_started/tapa_source/design/link_config.ini rename to getting_started/aie_source/design/config/run_u55c.py/link_config.ini diff --git a/getting_started/aie_source/design/main.cpp b/getting_started/aie_source/design/main.cpp new file mode 100644 index 00000000..90279e0a --- /dev/null +++ b/getting_started/aie_source/design/main.cpp @@ -0,0 +1,49 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +#include +#include +#include +#include +#include + +#include +#include + +using std::clog; +using std::endl; +using std::vector; + +#define DATA_NUM 4096 + +void VecAdd(tapa::mmap mem_in1, tapa::mmap mem_in2, tapa::mmap mem_out); +DEFINE_string(bitstream, "", "path to bitstream file, run csim if empty"); + +int main(int argc, char **argv) +{ + vector mem_in1(DATA_NUM); + vector mem_in2(DATA_NUM); + vector mem_out(DATA_NUM); + vector out_golden(DATA_NUM); + + for(int i=0; i(rand() % DATA_NUM); + mem_in2[i] = static_cast(rand() % DATA_NUM); + out_golden[i] = mem_in1[i] + mem_in2[i]; + } + + int64_t kernel_time_ns = tapa::invoke( + VecAdd, FLAGS_bitstream, tapa::read_only_mmap(mem_in1), + tapa::read_only_mmap(mem_in2), tapa::write_only_mmap(mem_out)); + + for(int i=0; i + +RapidStream Logo + +# TAPA Design + +## Introduction + +Rapidsteam is fully compatible with [TAPA](https://github.com/rapidstream-org/rapidstream-tapa). +In this recipe, we illustrate how to create a Xilinx objective file (`.xo`) using TAPA, then optimize the `.xo` file with Rapidstream, and finally utilize the optimized output in the ongoing Vitis development process. + + +## Xilinx Object Files + +[Vitis compiled object files (`.xo`)](https://docs.amd.com/r/en-US/ug1393-vitis-application-acceleration/Design-Topology) are IP packages used in the AMD Vitis kernel development flow for programming the programmable logic (PL) region of target devices. These files can be [generated from HLS C++ code](https://docs.amd.com/r/en-US/ug1393-vitis-application-acceleration/Developing-PL-Kernels-using-C) using the `v++` command, [packed from RTL code](https://docs.amd.com/r/en-US/ug1393-vitis-application-acceleration/RTL-Kernel-Development-Flow), or created using third-party frameworks like [RapidStream TAPA](https://github.com/rapidstream-org/rapidstream-tapa). In this example, we use `RapidStream TAPA` to generate the `VecAdd.xo` file, but the same flow applies to object files generated through other methods. + + +## Tutorial + +### Step 1: C++ Simulation + +Since our +design calls Xilinx Libraries, we need to source the Vitis environment before running the simulation. + +```bash +source /Vitis/2023.2/settings64.sh +``` + +Before generating the `.xo` file, we recommend running a C++ simulation to verify the correctness of the design. This step is optional but highly recommended. Run the following command or `make csim` to perform C++ simulation: + +```bash +tapa g++ design/main.cpp design/VecAdd.cpp \ +-I /opt/tools/xilinx/Vitis_HLS/2023.2/include \ +-o build/run_u55c.py/main.exe -O2 +./build/run_u55c.py/main.exe +``` + +Your should see the following output: + +```bash +I20241010 15:14:52.494259 4113880 task.h:66] running software simulation with TAPA library +kernel time: 0.0197967 s +PASS! +``` + +### Step 2: Generate the Xilinx Object File (`.xo`) + +We use TAPA on top of 2023.2 to generate the `.xo` file. Run the following command or run `make xo`: + +```bash +source /Vitis/2023.2/settings64.sh +mkdir -p build/run_u55c.py +cd build/run_u55c.py && tapa compile \ +--top VecAdd \ +--part-num xcu280-fsvh2892-2L-e \ +--clock-period 3.33 \ +-o VecAdd.xo \ +-f design/VecAdd.cpp \ +2>&1 | tee tapa.log +``` + +### Step 3 (Optional): Use Vitis --link to Generate the `.xclbin` File + +With the `.xo` file generated, you can use `v++ -link` to generate the `.xclbin` file. Run the following command or execute `make hw`: + +```bash +v++ -l -t hw \ + --platform xilinx_u280_gen3x16_xdma_1_202211_1 \ + --kernel VecAdd \ + --connectivity.nk VecAdd:1:VecAdd \ + --config design/link_config.ini \ + --temp_dir build \ + -o build/VecAdd.xclbin \ + build/VecAdd.xo +``` + +If your machines is equipped with the target FPGA device, you can deploy the optimized design on the FPGA by running the following command: + +```bash +./app.exe +``` + +:warning: **Note**: This step can take hours to complete. We recommend using the RapidStream flow to optimize the `.xo` file instead of generating the `.xclbin` file if you are familiar with AMD Vitis flow. + + +### Step 4: Define Virtual Device + +In this tutorial, we use the [Alveo U55C](https://www.amd.com/en/products/accelerators/alveo/u55c/a-u55c-p00g-pq-g.html) as an example. The device is organized into six slots, each +containing 16 clock regions of logic. In actual implementations, the available slots are reduced + based on the platform specifics, as some resources are reserved for shell logic. + +AU55C Device + +To generate a `device.json` file that details the device features, such as slot resources and + locations, you can either run the `run_u55c.py` script by invoking RapidStream as shown below or + simply enter `make device` in the terminal. + +```bash +rapidstream run_u55c.py +``` + + +### Step 5: Use Rapidstream to Optimize `.xo` Design + +The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. +The RapidStream flow for TAPA requires the following key inputs: + +- **tapa-xo-path**: The path to the tapa-generated `xo` file (VecAdd.xo). +- **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. +- **floorplan-config**: The configure file ([floorplan_config.json](design/config/run_u55c.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. +- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_u55c.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is +the same for vitis link configure file. + +We encapulate the rapidstream command for TAPA as `rapidstream-tapaop` for invoking. +You can run the command below or execute `make all` supported by our [Makefile](Makefile). + +```bash +rapidstream-tapaopt --work-dir build/run_u55c.py \ + --tapa-xo-path ./VecAdd.xo \ + --device-config build/run_u55c.py/device.json \ + --floorplan-config ../../design/config/run_u55c.py/ab_config.json \ + --implementation-config ../../ design/config/run_u55c.py/impl_config.json \ + --connectivity-ini ../../design/config/run_u55c.py/link_config.ini +``` + +When finished, you can locate these files using the following command: + +```bash +find ./build/run_u55c.py/ -name *.xo +``` + +If everything is successful, you should at least get one optimized `.xo` file located in `./build/dse/candidate_0/exported/VecAdd.xo`. + +### Step 7: Check the Group Module Report + + +RapidStream mandates a clear distinction between communication and computation within user designs. + +- In `Group modules`, users are tasked solely with defining inter-submodule communication. For those familiar with Vivado IP Integrator flow, crafting a Group module mirrors the process of connecting IPs in IPI. RapidStream subsequently integrates appropriate pipeline registers into these Group modules. + +- In `Leaf modules`, users retain the flexibility to implement diverse computational patterns, as RapidStream leaves these Leaf modules unchanged. + +For further details, please consult the [code style](https://docs.rapidstream-da.com/required-coding-style/) section in our Documentation. + +To generate a report on group types, execute the commands below or `run make show_groups`: + +```bash +rapidstream ../../common/util/get_group.py \ + -i build/passes/0-imported.json \ + -o build/module_types.csv +``` + +The module types for your design can be found in `build/module_types.csv`. Below, we list the four Group modules. In this design, `VecAdd` serves as a Group module, while the other three modules are added by RapidStream. + +| Module Name | Group Type | +|:--------------------------------:|:--------------:| +| VecAdd | grouped_module | +| __rs_VecAdd_aux | aux_module | +| ... | verilog_module | + + +### Step 8: Use Vitis --link with the Optimized `.xo` File + +With the optimized `.xo` file generated, you can use `v++ -link` to generate the `.xclbin` file. Run the following command or run `make`: + +```bash +v++ -l -t hw \ + --platform xilinx_u280_gen3x16_xdma_1_202211_1 \ + --kernel VecAdd \ + --connectivity.nk VecAdd:1:VecAdd \ + --config design/link_config.ini \ + --temp_dir build/rapidstream \ + -o build/VecAdd_rs_opt.xclbin \ + ./build/dse/candidate_0/exported/VecAdd.xo +``` + + +To examine the timing results for each design point, use this command: + +```bash +find ./build -name *.xclbin.info +``` + + + +If your machines is equipped with the target FPGA device, you can deploy the optimized design on the FPGA by running the following command: + +```bash +make host +./app.exe +``` + +## Next Step + + **Click here to [go back to Getting Started](../README.md)** diff --git a/getting_started/aie_source_gmio/data/bkgen.py b/getting_started/aie_source_gmio/data/bkgen.py new file mode 100755 index 00000000..c88fe98a --- /dev/null +++ b/getting_started/aie_source_gmio/data/bkgen.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 +__copyright__ = """ +Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. +The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. +""" + +M = 2 +K = 8 +N = 64 + +with open("s0.txt", "w") as f: + for row in range(1, M + 1): + for col in range(1, K + 1): + str_out = str(f"{row}000{col}") + f.write(f"{str_out.rjust(4)}\n") + +with open("s1.txt", "w") as f: + for row in range(1, K + 1): + for col in range(1, N + 1): + str_out = str(f"{row}000{col}") + f.write(f"{str_out.rjust(4)}\n") + + +with open("s2_exp.txt", "w") as f: + for i in range(K): + f.write(f"{i*i} \n") diff --git a/getting_started/aie_source_gmio/data/gen.py b/getting_started/aie_source_gmio/data/gen.py new file mode 100755 index 00000000..cdedb5c2 --- /dev/null +++ b/getting_started/aie_source_gmio/data/gen.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 +__copyright__ = """ +Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. +The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. +""" + +NUM = 256 + +# with open("s0.txt", "w") as f: +# f.write(f" 1 {NUM} 0 0\n") +# f.write(" 0 0 0 0\n") +# f.write(" 0 0 0 0\n") +# f.write(" 0 0 0 0\n") + +with open("s0.txt", "w") as f: + for i in range(NUM): + for j in range(4): + f.write(f"{i*4+j} ") + f.write("\n") + +with open("s1.txt", "w") as f: + for i in range(NUM): + for j in range(4): + f.write(f"{i*4+j} ") + f.write("\n") + + +with open("s2_exp.txt", "w") as f: + for i in range(NUM): + f.write(f"{i+i} \n") diff --git a/getting_started/aie_source_gmio/data/matmul.py b/getting_started/aie_source_gmio/data/matmul.py new file mode 100755 index 00000000..2c815d5b --- /dev/null +++ b/getting_started/aie_source_gmio/data/matmul.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 +__copyright__ = """ +Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. +The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. +""" +import numpy as np + +M = 2 +K = 4 +N = 8 + +A = np.array([i for i in range(M * K)]).reshape(M, K) +B = np.array([i for i in range(K * N)]).reshape(K, N) +print(A) +print(B) + + +# Multiply matrices +result = np.matmul(A, B) # or you can use matrix_a @ matrix_b +print(result) diff --git a/getting_started/aie_source_gmio/design/aie/VecAdd.cpp b/getting_started/aie_source_gmio/design/aie/VecAdd.cpp new file mode 100644 index 00000000..ed9065c5 --- /dev/null +++ b/getting_started/aie_source_gmio/design/aie/VecAdd.cpp @@ -0,0 +1,49 @@ + +#include +#include "common.h" +#include "VecAdd.h" +#if !defined(__AIESIM__) && !defined(__X86SIM__) && !defined(__ADF_FRONTEND__) + #include "adf/adf_api/XRTConfig.h" + #include "experimental/xrt_kernel.h" +#endif + +VecAdd gr; +int main(int argc, char ** argv) +{ +#if !defined(__AIESIM__) && !defined(__X86SIM__) && !defined(__ADF_FRONTEND__) + // Create XRT device handle for ADF API + char* xclbinFilename = argv[1]; + auto dhdl = xrtDeviceOpen(0);//device index=0 + xrtDeviceLoadXclbinFile(dhdl,xclbinFilename); + xuid_t uuid; + xrtDeviceGetXclbinUUID(dhdl, uuid); + adf::registerXRT(dhdl, uuid); +#endif + gr.init(); + + const int BLOCK_SIZE=DATA_NUM; + int32 *inputArray1=(int32*)adf::GMIO::malloc(BLOCK_SIZE*sizeof(int32)); + int32 *inputArray2=(int32*)adf::GMIO::malloc(BLOCK_SIZE*sizeof(int32)); + int32 *outputArray=(int32*)adf::GMIO::malloc(BLOCK_SIZE*sizeof(int32)); + // provide input data to AI Engine in inputArray + for (int i=0; i +#include "common.h" +#include "add_kernel.h" +#include "read_mem.h" +#include "write_mem.h" + +using namespace adf; + +class VecAdd: public adf::graph +{ +private: + kernel k_vadd; + kernel k_read_mem1; + kernel k_read_mem2; + kernel k_write_mem; + +public: + input_gmio m_s0; + input_gmio m_s1; + output_gmio m_s2; + + VecAdd() + { + // create kernel + k_read_mem1 = kernel::create(read_mem); + source(k_read_mem1) = "read_mem.cpp"; + headers(k_read_mem1) = {"read_mem.h","common.h"}; + runtime(k_read_mem1) = OCCUPANCY; + + k_read_mem2 = kernel::create(read_mem); + source(k_read_mem2) = "read_mem.cpp"; + headers(k_read_mem2) = {"read_mem.h","common.h"}; + runtime(k_read_mem2) = OCCUPANCY; + + k_vadd = kernel::create(add_kernel); + source(k_vadd) = "add_kernel.cpp"; + headers(k_vadd) = {"add_kernel.h","common.h"}; + runtime(k_vadd) = OCCUPANCY; + + k_write_mem = kernel::create(write_mem); + source(k_write_mem) = "write_mem.cpp"; + headers(k_write_mem) = {"write_mem.h","common.h"}; + runtime(k_write_mem) = OCCUPANCY; + + + location(k_read_mem1) = tile(5, 1); + location(k_read_mem2) = tile(4, 1); + location(k_vadd) = tile(5, 2); + location(k_write_mem) = tile(4, 2); + + m_s0 = input_gmio::create("m_s0", 64, 1000); + m_s1 = input_gmio::create("m_s1", 64, 1000); + m_s2 = output_gmio::create("m_s2", 64, 1000); + + connect>(m_s0.out[0], k_read_mem1.in[0]); + connect>(m_s1.out[0], k_read_mem2.in[0]); + connect (k_read_mem1.out[0], k_vadd.in[0]); + connect (k_read_mem2.out[0], k_vadd.in[1]); + connect (k_vadd.out[0], k_write_mem.in[0]); + connect>(k_write_mem.out[0], m_s2.in[0]); +}; }; diff --git a/getting_started/aie_source_gmio/design/aie/add_kernel.cpp b/getting_started/aie_source_gmio/design/aie/add_kernel.cpp new file mode 100644 index 00000000..7de66c39 --- /dev/null +++ b/getting_started/aie_source_gmio/design/aie/add_kernel.cpp @@ -0,0 +1,17 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +// Includes +#include "add_kernel.h" +#include "common.h" + +void add_kernel( + input_stream* stream_in1, + input_stream* stream_in2, + output_stream* stream_out) { + + for (int i = 0; i < DATA_NUM; i++) { + writeincr(stream_out, readincr(stream_in1) + readincr(stream_in2)); + } +} diff --git a/getting_started/aie_source_gmio/design/aie/add_kernel.h b/getting_started/aie_source_gmio/design/aie/add_kernel.h new file mode 100644 index 00000000..bb8cb0f2 --- /dev/null +++ b/getting_started/aie_source_gmio/design/aie/add_kernel.h @@ -0,0 +1,8 @@ +#pragma once +#include + +void add_kernel( + input_stream* stream_in1, + input_stream* stream_in2, + output_stream* stream_out +); diff --git a/getting_started/aie_source_gmio/design/aie/common.h b/getting_started/aie_source_gmio/design/aie/common.h new file mode 100644 index 00000000..b046147c --- /dev/null +++ b/getting_started/aie_source_gmio/design/aie/common.h @@ -0,0 +1,14 @@ + +#pragma once +#include +#include + +#define DATA_NUM 256 + +// size of data in bytes +// uint32 is 4 bytes +#define DATA_SIZE (DATA_NUM*4) +#define OCCUPANCY (0.9) +#define STARTCOL (0) +#define STARTROW (0) +#define MAXCOL (50) diff --git a/getting_started/aie_source_gmio/design/aie/read_mem.cpp b/getting_started/aie_source_gmio/design/aie/read_mem.cpp new file mode 100644 index 00000000..190e5583 --- /dev/null +++ b/getting_started/aie_source_gmio/design/aie/read_mem.cpp @@ -0,0 +1,16 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +// Includes +#include "read_mem.h" +#include "common.h" + +void read_mem( + input_window* restrict mem_in, + output_stream* stream_out) { + + for (int i = 0; i < DATA_NUM; i++) { + writeincr(stream_out, window_readincr(mem_in)); + } +} diff --git a/getting_started/aie_source_gmio/design/aie/read_mem.h b/getting_started/aie_source_gmio/design/aie/read_mem.h new file mode 100644 index 00000000..fe52314e --- /dev/null +++ b/getting_started/aie_source_gmio/design/aie/read_mem.h @@ -0,0 +1,7 @@ +#pragma once +#include + +void read_mem( + input_window* restrict mem_in, + output_stream* stream_out +); diff --git a/getting_started/aie_source_gmio/design/aie/weighted_sum.cc b/getting_started/aie_source_gmio/design/aie/weighted_sum.cc new file mode 100644 index 00000000..919b6732 --- /dev/null +++ b/getting_started/aie_source_gmio/design/aie/weighted_sum.cc @@ -0,0 +1,16 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +// Includes +#include "weighted_sum.h" + +void weighted_sum( + input_window* restrict mem_in, + output_window* mem_out) { + + uint32 sum = 0; + for (int i = 0; i < 256; i++) { + window_writeincr(mem_out, window_readincr(mem_in)+1); + } +} diff --git a/getting_started/aie_source_gmio/design/aie/weighted_sum.h b/getting_started/aie_source_gmio/design/aie/weighted_sum.h new file mode 100644 index 00000000..3d75139f --- /dev/null +++ b/getting_started/aie_source_gmio/design/aie/weighted_sum.h @@ -0,0 +1,6 @@ +#pragma once +#include + +void weighted_sum( + input_window* restrict mem_in, + output_window* mem_out); diff --git a/getting_started/aie_source_gmio/design/aie/write_mem.cpp b/getting_started/aie_source_gmio/design/aie/write_mem.cpp new file mode 100644 index 00000000..e13b54c2 --- /dev/null +++ b/getting_started/aie_source_gmio/design/aie/write_mem.cpp @@ -0,0 +1,17 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +// Includes +#include "write_mem.h" +#include "common.h" + +void write_mem( + input_stream* stream_in, + output_window* restrict mem_out +) { + + for (int i = 0; i < DATA_NUM; i++) { + window_writeincr(mem_out, readincr(stream_in)); + } +} diff --git a/getting_started/aie_source_gmio/design/aie/write_mem.h b/getting_started/aie_source_gmio/design/aie/write_mem.h new file mode 100644 index 00000000..b73c0261 --- /dev/null +++ b/getting_started/aie_source_gmio/design/aie/write_mem.h @@ -0,0 +1,7 @@ +#pragma once +#include + +void write_mem( + input_stream* stream_in, + output_window* restrict mem_out +); diff --git a/getting_started/aie_source_gmio/design/config/run_u55c.py/floorplan_config.json b/getting_started/aie_source_gmio/design/config/run_u55c.py/floorplan_config.json new file mode 100644 index 00000000..d4e0f55d --- /dev/null +++ b/getting_started/aie_source_gmio/design/config/run_u55c.py/floorplan_config.json @@ -0,0 +1,14 @@ +{ + "dse_range_max": 0.8, + "dse_range_min": 0.7, + "partition_strategy": "flat", + "port_pre_assignments": { + ".*mem_in1_.*": "HBM[16]", + ".*mem_in2_.*": "HBM[17]", + ".*mem_out_.*": "HBM[18]", + "ap_clk": "CLK_RST", + "ap_rst_n": "CLK_RST", + "interrupt": "CLK_RST", + "s_axi_control_.*": "S_AXI_CONTROL" + } +} diff --git a/getting_started/aie_source_gmio/design/config/run_u55c.py/impl_config.json b/getting_started/aie_source_gmio/design/config/run_u55c.py/impl_config.json new file mode 100644 index 00000000..3c481977 --- /dev/null +++ b/getting_started/aie_source_gmio/design/config/run_u55c.py/impl_config.json @@ -0,0 +1,7 @@ +{ + "max_workers": 2, + "port_to_clock_period": { + "ap_clk": 3.33 + }, + "vitis_platform": "xilinx_u55c_gen3x16_xdma_3_202210_1" +} diff --git a/getting_started/aie_source_gmio/design/config/run_u55c.py/link_config.ini b/getting_started/aie_source_gmio/design/config/run_u55c.py/link_config.ini new file mode 100644 index 00000000..c1298b0b --- /dev/null +++ b/getting_started/aie_source_gmio/design/config/run_u55c.py/link_config.ini @@ -0,0 +1,4 @@ +[connectivity] +sp=VecAdd.mem_in1:HBM[16] +sp=VecAdd.mem_in2:HBM[17] +sp=VecAdd.mem_out:HBM[18] diff --git a/getting_started/aie_source_gmio/design/main.cpp b/getting_started/aie_source_gmio/design/main.cpp new file mode 100644 index 00000000..90279e0a --- /dev/null +++ b/getting_started/aie_source_gmio/design/main.cpp @@ -0,0 +1,49 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +#include +#include +#include +#include +#include + +#include +#include + +using std::clog; +using std::endl; +using std::vector; + +#define DATA_NUM 4096 + +void VecAdd(tapa::mmap mem_in1, tapa::mmap mem_in2, tapa::mmap mem_out); +DEFINE_string(bitstream, "", "path to bitstream file, run csim if empty"); + +int main(int argc, char **argv) +{ + vector mem_in1(DATA_NUM); + vector mem_in2(DATA_NUM); + vector mem_out(DATA_NUM); + vector out_golden(DATA_NUM); + + for(int i=0; i(rand() % DATA_NUM); + mem_in2[i] = static_cast(rand() % DATA_NUM); + out_golden[i] = mem_in1[i] + mem_in2[i]; + } + + int64_t kernel_time_ns = tapa::invoke( + VecAdd, FLAGS_bitstream, tapa::read_only_mmap(mem_in1), + tapa::read_only_mmap(mem_in2), tapa::write_only_mmap(mem_out)); + + for(int i=0; i +VP1552 Layout ## Tutorial diff --git a/getting_started/device_factory_vitis_platform/README.md b/getting_started/device_factory_vitis_platform/README.md index dd54e2f1..78c47aa1 100644 --- a/getting_started/device_factory_vitis_platform/README.md +++ b/getting_started/device_factory_vitis_platform/README.md @@ -79,7 +79,7 @@ For this setup, we define 8 slots for the virtual device based on units of clock device = factory.generate_virtual_device() ``` -RapidStream Logo +u250 virtual device ## Tutorial Run command to extract resources of each slot of the platform: diff --git a/getting_started/mixed_sources/README.md b/getting_started/mixed_sources/README.md index f76d186d..9f9242bf 100644 --- a/getting_started/mixed_sources/README.md +++ b/getting_started/mixed_sources/README.md @@ -117,7 +117,7 @@ make hls You can find the HLS-generated Verilog files under `build` for different kernels. The interface information is automatically inferred from the HLS reports, such as -`./build/kernel_add/solution/syn/report/kernel_add_csynth.rpt` +`./build/run.py/kernel_add/solution/syn/report/kernel_add_csynth.rpt` This liminates the need for manual pragma additions to the RTL files. For instance, `stream_*` interfaces with HLS `axis` protocols will be inferred as handshake interfaces. RapidStream uses `.xml` files instead of `.rpt` files for this purpose. The `.rpt` screenshot here is for a readable demonstration purpose: @@ -209,7 +209,7 @@ When execution is completed, we found the target modules are assigned to target The final OoC implementation layout is as below. -U50 Partitioning Scheme +U50 Partitioning Scheme ### Step 3: Check the Group Module Report @@ -237,25 +237,22 @@ The module types for your design can be found in `build/module_types.csv`. Below |:--------------------------------:|:--------------:| | VecAddMix | grouped_module | |__rs_ap_ctrl_start_ready_pipeline | grouped_module | -|__rs_ff_pipeline | grouped_module | -|__rs_hs_pipeline | grouped_module | - ### Step 4: Check results The RapidStream flow performs design space exploration and creates optimized design checkpoint (`.dcp`) files. If you execution is successful, you should find the post-routed dcp located at: ```bash -build/dse/candidate_0/route.dcp +build/run.py/dse/candidate_0/route.dcp ``` To review the timing results for each generated design point, use this command: ```bash -find ./build/dse -name timing_summary.rpt +find build/run.py/dse -name timing_summary.rpt ``` -These commands will help you locate and analyze the relevant files within the `./build/dse` directory. +These commands will help you locate and analyze the relevant files within the `./build/run.py/dse` directory. ## Next Step diff --git a/getting_started/tapa_aie_source/Makefile b/getting_started/tapa_aie_source/Makefile new file mode 100644 index 00000000..95830c59 --- /dev/null +++ b/getting_started/tapa_aie_source/Makefile @@ -0,0 +1,138 @@ +# Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. +# The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. + +ROOT_DIR := $(shell git rev-parse --show-toplevel) +#/opt/xilinx/platforms/xilinx_vck5000_gen4x8_qdma_2_202220_1/xilinx_vck5000_gen4x8_qdma_2_202220_1.xpfm +PART_NUM := xcu280-fsvh2892-2L-e +PLATFORM := xilinx_vck5000_gen4x8_qdma_2_202220_1 +PLATFORM_REPO_PATHS := /opt/xilinx/platforms +XPFM_FILE := $(PLATFORM_REPO_PATHS)/$(PLATFORM)/$(PLATFORM).xpfm +GRP_UTIL := $(ROOT_DIR)/common/util/get_group.py +KERNEL_NAME := VecAdd +RS_SCRIPT := $(CURDIR)/run_u55c.py +SRC_DIR := $(CURDIR)/design +AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/floorplan_config.json +IMPL_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/impl_config.json +LINK_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/link_config.ini +FIX_NOC_TCL := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/fix_noc.tcl +TARGET := hw +TEMP_DIR := $(CURDIR)/build/$(notdir $(RS_SCRIPT)) +KERNEL_XO := $(TEMP_DIR)/$(KERNEL_NAME).xo +KERNEL_XCLBIN := $(TEMP_DIR)/$(KERNEL_NAME).xclbin +RS_XCLBIN := $(TEMP_DIR)/dse/solution_0/vitis_run_hw/$(KERNEL_NAME)_$(PLATFORM).xclbin +INCLUDE := -I $(XILINX_HLS)/include +CFLAGS := $(INCLUDE) $(OPT_LEVEL) +CXX := g++ +HOST := app.exe +RS_TARGET := $(TEMP_DIR)/dse/solution_0/updated.xo +TIMING_RPT := impl_1_hw_bb_locked_timing_summary_routed.rpt +SUCCESS := "Build Successful" +SLACK_GETTER := $(ROOT_DIR)/common/util/get_slack.py +BUILD_LOG := $(TEMP_DIR)/build.json +RSXX := rapidstream +RSPATH := $(CURDIR) +RSPYTHON := rapidstream +DEVICE_CONFIG := $(TEMP_DIR)/device.json +AIE_OBJ := $(TEMP_DIR)/libadf.a +AXX := aiecompiler + +all:clean $(KERNEL_XO) + +all1: $(RS_XCLBIN) + $(RSXX) $(SLACK_GETTER) -d $(TEMP_DIR) -i $(TIMING_RPT) -o $(BUILD_LOG) -c clk_kernel_00_unbuffered_net -p 3.333 + echo $(SUCCESS) + +$(RS_XCLBIN): $(RS_TARGET) + v++ -l -t ${TARGET} \ + --platform $(PLATFORM) \ + --kernel $(KERNEL_NAME) \ + --connectivity.nk $(KERNEL_NAME):1:$(KERNEL_NAME) \ + --config $(LINK_CONFIG) \ + --temp_dir $(TEMP_DIR) \ + -o $@ \ + $^ + +$(RS_TARGET):$(KERNEL_XO) $(DEVICE_CONFIG) $(AB_CONFIG) + mkdir -p $(TEMP_DIR) + cd $(RSPATH) && $(RSXX)-tapaopt \ + --work-dir $(TEMP_DIR) \ + --tapa-xo-path $< \ + --device-config $(DEVICE_CONFIG) \ + --floorplan-config $(AB_CONFIG) \ + --implementation-config $(IMPL_CONFIG) \ + --connectivity-ini $(LINK_CONFIG) + +device: $(DEVICE_CONFIG) + +$(DEVICE_CONFIG):$(RS_SCRIPT) + mkdir -p $(TEMP_DIR) + cd $(RSPATH) && $(RSPYTHON) $(RS_SCRIPT) + +hw: $(KERNEL_XCLBIN) + +$(KERNEL_XCLBIN): $(KERNEL_XO) + v++ -l -t ${TARGET} \ + --platform $(PLATFORM) \ + --kernel $(KERNEL_NAME) \ + --connectivity.nk $(KERNEL_NAME):1:$(KERNEL_NAME) \ + --config $(LINK_CONFIG) \ + --temp_dir $(TEMP_DIR) \ + -o $@ \ + $^ + +xo:$(KERNEL_XO) + +#-o $(KERNEL_NAME).xo +# + +#--flow-type pl \ +# --flow-type aie \ + +$(KERNEL_XO):$(SRC_DIR)/$(KERNEL_NAME).cpp + mkdir -p $(TEMP_DIR) + cd $(TEMP_DIR) && tapa compile \ + --top $(KERNEL_NAME) \ + --platform $(PLATFORM) \ + --flow-type aie \ + --clock-period 3.33 \ + --keep-hls-work-dir \ + -f $< \ + 2>&1 | tee tapa.log + +csim:$(TEMP_DIR)/main.exe + $(TEMP_DIR)/main.exe + +$(TEMP_DIR)/main.exe: $(SRC_DIR)/main.cpp $(SRC_DIR)/VecAdd.cpp + mkdir -p $(TEMP_DIR) + cd $(TEMP_DIR) && tapa g++ $^ $(INCLUDE) -o $@ -O2 + + +show_groups: + @echo $(RS_KERNEL_XCLBIN) + $(RSXX) $(GRP_UTIL) -i $(TEMP_DIR)/passes/1-importer.json \ + -o $(TEMP_DIR)/module_types.csv + +cp: + @cp $(CURDIR)/../aie_source_gmio/design/aie/*.h $(TEMP_DIR)/work.out/cpp/ + @mv $(TEMP_DIR)/work.out/cpp/VecAdd.cpp $(TEMP_DIR)/work.out/cpp/VecAdd.h + @cp $(CURDIR)/../aie_source_gmio/design/aie/VecAdd.cpp $(TEMP_DIR)/work.out/cpp/ + @echo "Copied files" + +aie_compile:$(AIE_OBJ) + +$(AIE_OBJ): $(TEMP_DIR)/work.out/cpp/* + @mkdir -p $(TEMP_DIR)/Work + @cd $(TEMP_DIR) && $(AXX) \ + --target=$(TARGET) \ + --platform=$(XPFM_FILE) \ + --include="$(TEMP_DIR)/work.out/cpp" \ + --workdir=$(TEMP_DIR)/Work \ + $(TEMP_DIR)/work.out/cpp/VecAdd.cpp + + +clean: + rm -rf $(TEMP_DIR) *.log + rm -rf build + rm -rf .Xil .run + rm -rf *.exe + rm -rf .ipcache diff --git a/getting_started/tapa_aie_source/README.md b/getting_started/tapa_aie_source/README.md new file mode 100644 index 00000000..6dcfef6f --- /dev/null +++ b/getting_started/tapa_aie_source/README.md @@ -0,0 +1,199 @@ + + +RapidStream Logo + +# TAPA Design + +## Introduction + +Rapidsteam is fully compatible with [TAPA](https://github.com/rapidstream-org/rapidstream-tapa). +In this recipe, we illustrate how to create a Xilinx objective file (`.xo`) using TAPA, then optimize the `.xo` file with Rapidstream, and finally utilize the optimized output in the ongoing Vitis development process. + + +## Xilinx Object Files + +[Vitis compiled object files (`.xo`)](https://docs.amd.com/r/en-US/ug1393-vitis-application-acceleration/Design-Topology) are IP packages used in the AMD Vitis kernel development flow for programming the programmable logic (PL) region of target devices. These files can be [generated from HLS C++ code](https://docs.amd.com/r/en-US/ug1393-vitis-application-acceleration/Developing-PL-Kernels-using-C) using the `v++` command, [packed from RTL code](https://docs.amd.com/r/en-US/ug1393-vitis-application-acceleration/RTL-Kernel-Development-Flow), or created using third-party frameworks like [RapidStream TAPA](https://github.com/rapidstream-org/rapidstream-tapa). In this example, we use `RapidStream TAPA` to generate the `VecAdd.xo` file, but the same flow applies to object files generated through other methods. + + +## Tutorial + +### Step 1: C++ Simulation + +Since our +design calls Xilinx Libraries, we need to source the Vitis environment before running the simulation. + +```bash +source /Vitis/2023.2/settings64.sh +``` + +Before generating the `.xo` file, we recommend running a C++ simulation to verify the correctness of the design. This step is optional but highly recommended. Run the following command or `make csim` to perform C++ simulation: + +```bash +tapa g++ design/main.cpp design/VecAdd.cpp \ +-I /opt/tools/xilinx/Vitis_HLS/2023.2/include \ +-o build/run_u55c.py/main.exe -O2 +./build/run_u55c.py/main.exe +``` + +Your should see the following output: + +```bash +I20241010 15:14:52.494259 4113880 task.h:66] running software simulation with TAPA library +kernel time: 0.0197967 s +PASS! +``` + +### Step 2: Generate the Xilinx Object File (`.xo`) + +We use TAPA on top of 2023.2 to generate the `.xo` file. Run the following command or run `make xo`: + +```bash +source /Vitis/2023.2/settings64.sh +mkdir -p build/run_u55c.py +cd build/run_u55c.py && tapa compile \ +--top VecAdd \ +--part-num xcu280-fsvh2892-2L-e \ +--clock-period 3.33 \ +-o VecAdd.xo \ +-f design/VecAdd.cpp \ +2>&1 | tee tapa.log +``` + +### Step 3 (Optional): Use Vitis --link to Generate the `.xclbin` File + +With the `.xo` file generated, you can use `v++ -link` to generate the `.xclbin` file. Run the following command or execute `make hw`: + +```bash +v++ -l -t hw \ + --platform xilinx_u280_gen3x16_xdma_1_202211_1 \ + --kernel VecAdd \ + --connectivity.nk VecAdd:1:VecAdd \ + --config design/link_config.ini \ + --temp_dir build \ + -o build/VecAdd.xclbin \ + build/VecAdd.xo +``` + +If your machines is equipped with the target FPGA device, you can deploy the optimized design on the FPGA by running the following command: + +```bash +./app.exe +``` + +:warning: **Note**: This step can take hours to complete. We recommend using the RapidStream flow to optimize the `.xo` file instead of generating the `.xclbin` file if you are familiar with AMD Vitis flow. + + +### Step 4: Define Virtual Device + +In this tutorial, we use the [Alveo U55C](https://www.amd.com/en/products/accelerators/alveo/u55c/a-u55c-p00g-pq-g.html) as an example. The device is organized into six slots, each +containing 16 clock regions of logic. In actual implementations, the available slots are reduced + based on the platform specifics, as some resources are reserved for shell logic. + +AU55C Device + +To generate a `device.json` file that details the device features, such as slot resources and + locations, you can either run the `run_u55c.py` script by invoking RapidStream as shown below or + simply enter `make device` in the terminal. + +```bash +rapidstream run_u55c.py +``` + + +### Step 5: Use Rapidstream to Optimize `.xo` Design + +The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. +The RapidStream flow for TAPA requires the following key inputs: + +- **tapa-xo-path**: The path to the tapa-generated `xo` file (VecAdd.xo). +- **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. +- **floorplan-config**: The configure file ([floorplan_config.json](design/config/run_u55c.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. +- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_u55c.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is +the same for vitis link configure file. + +We encapulate the rapidstream command for TAPA as `rapidstream-tapaop` for invoking. +You can run the command below or execute `make all` supported by our [Makefile](Makefile). + +```bash +rapidstream-tapaopt --work-dir build/run_u55c.py \ + --tapa-xo-path ./VecAdd.xo \ + --device-config build/run_u55c.py/device.json \ + --floorplan-config ../../design/config/run_u55c.py/ab_config.json \ + --implementation-config ../../ design/config/run_u55c.py/impl_config.json \ + --connectivity-ini ../../design/config/run_u55c.py/link_config.ini +``` + +When finished, you can locate these files using the following command: + +```bash +find ./build/run_u55c.py/ -name *.xo +``` + +If everything is successful, you should at least get one optimized `.xo` file located in `./build/dse/candidate_0/exported/VecAdd.xo`. + +### Step 7: Check the Group Module Report + + +RapidStream mandates a clear distinction between communication and computation within user designs. + +- In `Group modules`, users are tasked solely with defining inter-submodule communication. For those familiar with Vivado IP Integrator flow, crafting a Group module mirrors the process of connecting IPs in IPI. RapidStream subsequently integrates appropriate pipeline registers into these Group modules. + +- In `Leaf modules`, users retain the flexibility to implement diverse computational patterns, as RapidStream leaves these Leaf modules unchanged. + +For further details, please consult the [code style](https://docs.rapidstream-da.com/required-coding-style/) section in our Documentation. + +To generate a report on group types, execute the commands below or `run make show_groups`: + +```bash +rapidstream ../../common/util/get_group.py \ + -i build/passes/0-imported.json \ + -o build/module_types.csv +``` + +The module types for your design can be found in `build/module_types.csv`. Below, we list the four Group modules. In this design, `VecAdd` serves as a Group module, while the other three modules are added by RapidStream. + +| Module Name | Group Type | +|:--------------------------------:|:--------------:| +| VecAdd | grouped_module | +| __rs_VecAdd_aux | aux_module | +| ... | verilog_module | + + +### Step 8: Use Vitis --link with the Optimized `.xo` File + +With the optimized `.xo` file generated, you can use `v++ -link` to generate the `.xclbin` file. Run the following command or run `make`: + +```bash +v++ -l -t hw \ + --platform xilinx_u280_gen3x16_xdma_1_202211_1 \ + --kernel VecAdd \ + --connectivity.nk VecAdd:1:VecAdd \ + --config design/link_config.ini \ + --temp_dir build/rapidstream \ + -o build/VecAdd_rs_opt.xclbin \ + ./build/dse/candidate_0/exported/VecAdd.xo +``` + + +To examine the timing results for each design point, use this command: + +```bash +find ./build -name *.xclbin.info +``` + + + +If your machines is equipped with the target FPGA device, you can deploy the optimized design on the FPGA by running the following command: + +```bash +make host +./app.exe +``` + +## Next Step + + **Click here to [go back to Getting Started](../README.md)** diff --git a/getting_started/tapa_aie_source/design/VecAdd.cpp b/getting_started/tapa_aie_source/design/VecAdd.cpp new file mode 100644 index 00000000..e00b3cff --- /dev/null +++ b/getting_started/tapa_aie_source/design/VecAdd.cpp @@ -0,0 +1,49 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +// Includes +#include +#include +#define DATA_NUM 4096 + +[[tapa::target("aie", "xilinx")]] void read_mem(tapa::mmap f, tapa::ostream& g) { + + for (int i = 0; i < DATA_NUM; i++) { + g << f[i]; + } +} + + +[[tapa::target("aie", "xilinx")]] void +add_kernel(tapa::istream& a, + tapa::istream& b, + tapa::ostream& c) { + + // Compute the addition + [[tapa::pipeline(1)]] for (int i = 0; i < DATA_NUM; i++) { + c.write(a.read() + b.read()); + } +} + +[[tapa::target("aie", "xilinx")]] void write_mem(tapa::istream& d, tapa::mmape) { + + for (int i = 0; i < DATA_NUM; i++) { + d >> e[i]; + } +} + + +[[tapa::target("aie", "xilinx")]] void VecAdd(tapa::mmap mem_in1, tapa::mmap mem_in2, tapa::mmap mem_out) { + + tapa::stream stream_in1("input_stream_1"); + tapa::stream stream_in2("input_stream_2"); + tapa::stream stream_out("output_stream"); + + tapa::task() + .invoke(read_mem, mem_in1, stream_in1) + .invoke(read_mem, mem_in2, stream_in2) + .invoke(add_kernel, stream_in1, stream_in2, stream_out) + .invoke(write_mem, stream_out, mem_out); + +} diff --git a/getting_started/tapa_aie_source/design/config/run_u55c.py/floorplan_config.json b/getting_started/tapa_aie_source/design/config/run_u55c.py/floorplan_config.json new file mode 100644 index 00000000..d4e0f55d --- /dev/null +++ b/getting_started/tapa_aie_source/design/config/run_u55c.py/floorplan_config.json @@ -0,0 +1,14 @@ +{ + "dse_range_max": 0.8, + "dse_range_min": 0.7, + "partition_strategy": "flat", + "port_pre_assignments": { + ".*mem_in1_.*": "HBM[16]", + ".*mem_in2_.*": "HBM[17]", + ".*mem_out_.*": "HBM[18]", + "ap_clk": "CLK_RST", + "ap_rst_n": "CLK_RST", + "interrupt": "CLK_RST", + "s_axi_control_.*": "S_AXI_CONTROL" + } +} diff --git a/getting_started/tapa_aie_source/design/config/run_u55c.py/impl_config.json b/getting_started/tapa_aie_source/design/config/run_u55c.py/impl_config.json new file mode 100644 index 00000000..3c481977 --- /dev/null +++ b/getting_started/tapa_aie_source/design/config/run_u55c.py/impl_config.json @@ -0,0 +1,7 @@ +{ + "max_workers": 2, + "port_to_clock_period": { + "ap_clk": 3.33 + }, + "vitis_platform": "xilinx_u55c_gen3x16_xdma_3_202210_1" +} diff --git a/getting_started/tapa_aie_source/design/config/run_u55c.py/link_config.ini b/getting_started/tapa_aie_source/design/config/run_u55c.py/link_config.ini new file mode 100644 index 00000000..c1298b0b --- /dev/null +++ b/getting_started/tapa_aie_source/design/config/run_u55c.py/link_config.ini @@ -0,0 +1,4 @@ +[connectivity] +sp=VecAdd.mem_in1:HBM[16] +sp=VecAdd.mem_in2:HBM[17] +sp=VecAdd.mem_out:HBM[18] diff --git a/getting_started/tapa_aie_source/design/main.cpp b/getting_started/tapa_aie_source/design/main.cpp new file mode 100644 index 00000000..90279e0a --- /dev/null +++ b/getting_started/tapa_aie_source/design/main.cpp @@ -0,0 +1,49 @@ +// Copyright 2024 RapidStream Design Automation, Inc. +// All Rights Reserved. + + +#include +#include +#include +#include +#include + +#include +#include + +using std::clog; +using std::endl; +using std::vector; + +#define DATA_NUM 4096 + +void VecAdd(tapa::mmap mem_in1, tapa::mmap mem_in2, tapa::mmap mem_out); +DEFINE_string(bitstream, "", "path to bitstream file, run csim if empty"); + +int main(int argc, char **argv) +{ + vector mem_in1(DATA_NUM); + vector mem_in2(DATA_NUM); + vector mem_out(DATA_NUM); + vector out_golden(DATA_NUM); + + for(int i=0; i(rand() % DATA_NUM); + mem_in2[i] = static_cast(rand() % DATA_NUM); + out_golden[i] = mem_in1[i] + mem_in2[i]; + } + + int64_t kernel_time_ns = tapa::invoke( + VecAdd, FLAGS_bitstream, tapa::read_only_mmap(mem_in1), + tapa::read_only_mmap(mem_in2), tapa::write_only_mmap(mem_out)); + + for(int i=0; i /* clang -E -fkeep-system-includes */ + +#include /* clang -E -fkeep-system-includes */ +[[tapa::target("aie", "xilinx")]] void read_mem(tapa::mmap f, + tapa::ostream &g) { + for (int i = 0; i < 4096; i++) { + g << f[i]; + } +} +[[tapa::target("aie", "xilinx")]] void add_kernel(tapa::istream &a, + tapa::istream &b, + tapa::ostream &c) { + // Compute the addition + [[tapa::pipeline(1)]] for (int i = 0; i < 4096; i++) { + c << (a.read() + b.read()); + } +} +[[tapa::target("aie", "xilinx")]] void write_mem(tapa::istream &d, + tapa::mmap e) { + for (int i = 0; i < 4096; i++) { + d >> e[i]; + } +} +[[tapa::target("aie", "xilinx")]] void +VecAdd(tapa::mmap mem_in1, tapa::mmap mem_in2, + tapa::mmap mem_out) { + tapa::stream stream_in1("input_stream_1"); + tapa::stream stream_in2("input_stream_2"); + tapa::stream stream_out("output_stream"); + tapa::task() + .invoke(read_mem, mem_in1, stream_in1) + .invoke(read_mem, mem_in2, stream_in2) + .invoke(add_kernel, stream_in1, stream_in2, stream_out) + .invoke(write_mem, stream_out, mem_out); +} diff --git a/getting_started/tapa_aie_source/run_u55c.py b/getting_started/tapa_aie_source/run_u55c.py new file mode 100644 index 00000000..8ea706e5 --- /dev/null +++ b/getting_started/tapa_aie_source/run_u55c.py @@ -0,0 +1,42 @@ +__copyright__ = """ +Copyright (c) 2024 RapidStream Design Automation, Inc. and contributors. All rights reserved. +The contributor(s) of this file has/have agreed to the RapidStream Contributor License Agreement. +""" + +from rapidstream import get_u55c_vitis_device_factory +import os +from pathlib import Path + +CURR_DIR = os.path.dirname(os.path.abspath(__file__)) +CURR_FILE = os.path.basename(__file__) + +VITIS_PLATFORM = "xilinx_u55c_gen3x16_xdma_3_202210_1" +XO_PATH = f"{CURR_DIR}/design/generated/data_decoding.xo" + +factory = get_u55c_vitis_device_factory(VITIS_PLATFORM) + +# Reserve resource for the HBM Memory Sub-System. +# The HMSS is not part of the user kernel so the partition optimization process +# is unaware of its existence. We need to manually reserve resources for it. +# For 512-bit HBM channels, each HBM channel uses approximately the following resources: +# AREA_PER_HBM_CHANNEL = { +# "LUT": 5000, +# "FF": 6500, +# "BRAM": 0, +# "URAM": 0, +# "DSP": 0, +# } +factory.reduce_slot_area(0, 0, lut=150800) +factory.reduce_slot_area(0, 1, lut=146960) +factory.reduce_slot_area(0, 2, lut=146960) +factory.reduce_slot_area(1, 0, lut=128000) +factory.reduce_slot_area(1, 1, lut=107840) +factory.reduce_slot_area(1, 2, lut=115120) + + +# For this U280 platform, the right most DSP column on the boundary between +# dynamic/static region is not usable. So we need to adjust the DSP count +# to reflect the actual available DSPs. +print("Reducing DSP of (1, 1) to make it less congested") +factory.reduce_slot_area(1, 1, dsp=100) +factory.generate_virtual_device(Path(f"{CURR_DIR}/build/{CURR_FILE}/device.json")) diff --git a/getting_started/tapa_source/Makefile b/getting_started/tapa_source/Makefile index 31e0b601..1f685445 100644 --- a/getting_started/tapa_source/Makefile +++ b/getting_started/tapa_source/Makefile @@ -6,13 +6,17 @@ PLATFORM := xilinx_u280_gen3x16_xdma_1_202211_1 PART_NUM := xcu280-fsvh2892-2L-e GRP_UTIL := $(ROOT_DIR)/common/util/get_group.py KERNEL_NAME := VecAdd -SRC_DIR := $(CURDIR)/design +RS_SCRIPT := $(CURDIR)/run_u55c.py +SRC_DIR := $(CURDIR)/design +AB_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/floorplan_config.json +IMPL_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/impl_config.json +LINK_CONFIG := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/link_config.ini +FIX_NOC_TCL := $(CURDIR)/design/config/$(notdir $(RS_SCRIPT))/fix_noc.tcl TARGET := hw -RS_SCRIPT := $(CURDIR)/run.py TEMP_DIR := $(CURDIR)/build/$(notdir $(RS_SCRIPT)) KERNEL_XO := $(TEMP_DIR)/$(KERNEL_NAME).xo KERNEL_XCLBIN := $(TEMP_DIR)/$(KERNEL_NAME).xclbin -RS_KERNEL_XCLBIN := $(TEMP_DIR)/dse/candidate_0/vitis_run_hw/$(KERNEL_NAME)_$(PLATFORM).xclbin +RS_KERNEL_XCLBIN := $(TEMP_DIR)/dse/solution_0/vitis_run_hw/$(KERNEL_NAME)_$(PLATFORM).xclbin INCLUDE := -I $(XILINX_HLS)/include CFLAGS := $(INCLUDE) $(OPT_LEVEL) CXX := g++ @@ -23,34 +27,62 @@ SUCCESS := "Build Successful" SLACK_GETTER := $(ROOT_DIR)/common/util/get_slack.py BUILD_LOG := $(TEMP_DIR)/build.json RSXX := rapidstream +RSPATH := $(CURDIR) +RSPYTHON := rapidstream +DEVICE_CONFIG := $(TEMP_DIR)/device.json all: $(RS_KERNEL_XCLBIN) $(RSXX) $(SLACK_GETTER) -d $(TEMP_DIR) -i $(TIMING_RPT) -o $(BUILD_LOG) -c clk_kernel_00_unbuffered_net -p 3.333 echo $(SUCCESS) -$(RS_KERNEL_XCLBIN):$(SRC_DIR)/$(KERNEL_NAME).xo + +$(RS_KERNEL_XCLBIN):$(KERNEL_XO) $(DEVICE_CONFIG) $(AB_CONFIG) mkdir -p $(TEMP_DIR) - $(RSXX) $(RS_SCRIPT) + cd $(RSPATH) && $(RSXX)-tapaopt \ + --work-dir $(TEMP_DIR) \ + --tapa-xo-path $< \ + --device-config $(DEVICE_CONFIG) \ + --floorplan-config $(AB_CONFIG) \ + --implementation-config $(IMPL_CONFIG) \ + --run-impl \ + --connectivity-ini $(LINK_CONFIG) +$(DEVICE_CONFIG):$(RS_SCRIPT) + mkdir -p $(TEMP_DIR) + cd $(RSPATH) && $(RSPYTHON) $(RS_SCRIPT) -sw_emu: $(KERNEL_XCLBIN) $(HOST) - XCL_EMULATION_MODE=sw_emu ./app.exe $< +hw: $(KERNEL_XCLBIN) +$(KERNEL_XCLBIN): $(KERNEL_XO) + v++ -l -t ${TARGET} \ + --platform $(PLATFORM) \ + --kernel $(KERNEL_NAME) \ + --connectivity.nk $(KERNEL_NAME):1:$(KERNEL_NAME) \ + --config $(LINK_CONFIG) \ + --temp_dir $(TEMP_DIR) \ + -o $@ \ + $^ xo:$(KERNEL_XO) -$(KERNEL_XO): $(SRC_DIR)/$(KERNEL_NAME).cpp - tapac -o $@ $< \ +$(KERNEL_XO):$(SRC_DIR)/$(KERNEL_NAME).cpp + mkdir -p $(TEMP_DIR) + cd $(TEMP_DIR) && tapa compile \ + --top $(KERNEL_NAME) \ --part-num $(PART_NUM) \ --clock-period 3.33 \ - --top $(KERNEL_NAME) \ - --work-dir $(TEMP_DIR) + -o $(KERNEL_NAME).xo \ + -f $< \ + 2>&1 | tee tapa.log -csim:$(SRC_DIR)/main.cpp $(SRC_DIR)/VecAdd.cpp - mkdir -p $(TEMP_DIR) - $(CXX) -o $(TEMP_DIR)/main.exe -O2 $^ -ltapa -lfrt -lglog -lgflags -lOpenCL +csim:$(TEMP_DIR)/main.exe $(TEMP_DIR)/main.exe +$(TEMP_DIR)/main.exe: $(SRC_DIR)/main.cpp $(SRC_DIR)/VecAdd.cpp + mkdir -p $(TEMP_DIR) + cd $(TEMP_DIR) && tapa g++ $^ $(INCLUDE) -o $@ -O2 + + show_groups: @echo $(RS_KERNEL_XCLBIN) $(RSXX) $(GRP_UTIL) -i $(TEMP_DIR)/passes/0-imported.json \ diff --git a/getting_started/tapa_source/README.md b/getting_started/tapa_source/README.md index 34b7825d..6dcfef6f 100644 --- a/getting_started/tapa_source/README.md +++ b/getting_started/tapa_source/README.md @@ -5,22 +5,17 @@ The contributor(s) of this file has/have agreed to the RapidStream Contributor L RapidStream Logo -# AMD Vitis Design +# TAPA Design ## Introduction -Rapidsteam is fully compatible with AMD Vitis by taking Vitis object files (`.xo`) as input, performing optimization and generating optimized `.xo` files as output. Therefore, users can use `v++ -link` to continue their Vitis development flow. - -rapidstream_xo.png - -In this recipe, we illustrate how to create a Vitis objective file (`.xo`) using Vitis, then optimize the `.xo` file with Rapidstream, and finally utilize the optimized output in the ongoing Vitis development process. +Rapidsteam is fully compatible with [TAPA](https://github.com/rapidstream-org/rapidstream-tapa). +In this recipe, we illustrate how to create a Xilinx objective file (`.xo`) using TAPA, then optimize the `.xo` file with Rapidstream, and finally utilize the optimized output in the ongoing Vitis development process. ## Xilinx Object Files -[Vitis compiled object files (`.xo`)](https://docs.amd.com/r/en-US/ug1393-vitis-application-acceleration/Design-Topology) are IP packages used in the AMD Vitis kernel development flow for programming the programmable logic (PL) region of target devices. - -These files can be [generated from HLS C++ code](https://docs.amd.com/r/en-US/ug1393-vitis-application-acceleration/Developing-PL-Kernels-using-C) using the `v++` command, [packed from RTL code](https://docs.amd.com/r/en-US/ug1393-vitis-application-acceleration/RTL-Kernel-Development-Flow), or created using third-party frameworks like [TAPA](https://github.com/UCLA-VAST/tapa). In this example, we use `v++` to generate the `VecAdd.xo` file, but the same flow applies to object files generated through other methods. +[Vitis compiled object files (`.xo`)](https://docs.amd.com/r/en-US/ug1393-vitis-application-acceleration/Design-Topology) are IP packages used in the AMD Vitis kernel development flow for programming the programmable logic (PL) region of target devices. These files can be [generated from HLS C++ code](https://docs.amd.com/r/en-US/ug1393-vitis-application-acceleration/Developing-PL-Kernels-using-C) using the `v++` command, [packed from RTL code](https://docs.amd.com/r/en-US/ug1393-vitis-application-acceleration/RTL-Kernel-Development-Flow), or created using third-party frameworks like [RapidStream TAPA](https://github.com/rapidstream-org/rapidstream-tapa). In this example, we use `RapidStream TAPA` to generate the `VecAdd.xo` file, but the same flow applies to object files generated through other methods. ## Tutorial @@ -37,83 +32,37 @@ source /Vitis/2023.2/settings64.sh Before generating the `.xo` file, we recommend running a C++ simulation to verify the correctness of the design. This step is optional but highly recommended. Run the following command or `make csim` to perform C++ simulation: ```bash -g++ -I ${XILINX_HLS}/include ./design/VecAdd.cpp ./design/main.cpp -o main.exe -./main.exe +tapa g++ design/main.cpp design/VecAdd.cpp \ +-I /opt/tools/xilinx/Vitis_HLS/2023.2/include \ +-o build/run_u55c.py/main.exe -O2 +./build/run_u55c.py/main.exe ``` Your should see the following output: ```bash +I20241010 15:14:52.494259 4113880 task.h:66] running software simulation with TAPA library +kernel time: 0.0197967 s PASS! -INFO [HLS SIM]: The maximum depth reached by any hls::stream() instance in the design is 4096 -``` - -### Step 2: Targeting Vitis Software Emulation - -AMD Vitis provides an easy way to target software emulation for debugging and performance analysis. To target software emulation, your need to source Vitis and XRT environment setting up scripts and run the following command or run `make TARGET=sw_emu sw_emu`: - -```bash -source /Vitis/2023.2/settings64.sh -source /opt/xilinx/xrt/setup.sh - -v++ -c -t sw_emu \ - --platform xilinx_u280_gen3x16_xdma_1_202211_1 \ - -k VecAdd \ - --temp_dir build \ - -o build/VecAdd.xo \ - design/VecAdd.cpp design/VecAdd.h - -v++ -l -t sw_emu \ - --platform xilinx_u280_gen3x16_xdma_1_202211_1 \ - --kernel VecAdd \ - --connectivity.nk VecAdd:1:VecAdd \ - --config design/link_config.ini \ - --temp_dir build \ - -o build/VecAdd.xclbin \ - build/VecAdd.xo - -g++ -Wall -g -std=c++11 design/host.cpp -o app.exe \ - -I${XILINX_XRT}/include/ \ - -I${XILINX_VIVADO}/include/ \ - -L${XILINX_XRT}/lib/ -lOpenCL -lpthread -lrt -lstdc++ - -XCL_EMULATION_MODE=sw_emu ./app.exe build/VecAdd.xclbin -``` - -You would see the following output: - -```bash -Trying to program device[0]: xilinx:pcie-hw-em:7v3:1.0 -Kernel Name: VecAdd, CU Number: 0, Thread creation status: success -Device[0]: xclbin is loaded successfully! -Kernel Name: VecAdd, CU Number: 0, State: Start -Kernel Name: VecAdd, CU Number: 0, State: Running -Kernel Name: VecAdd, CU Number: 0, State: Idle -TEST PASSED! -device process sw_emu_device done -Kernel Name: VecAdd, CU Number: 0, Status: Shutdown -INFO [HLS SIM]: The maximum depth reached by any hls::stream() instance in the design is 4096 ``` -:warning: **Note**: Clean the sw_emu `.xo` file before next steps by running `make clean`. - -### Step 3: Generate the Xilinx Object File (`.xo`) +### Step 2: Generate the Xilinx Object File (`.xo`) -We use Vitis 2023.2 to generate the `.xo` file. Run the following command or run `make xo`: +We use TAPA on top of 2023.2 to generate the `.xo` file. Run the following command or run `make xo`: ```bash source /Vitis/2023.2/settings64.sh -make clean -cd /getting_started/vitis_source -v++ -c -t hw \ - --platform xilinx_u280_gen3x16_xdma_1_202211_1 \ - -k VecAdd \ - --temp_dir build \ - -o build/VecAdd.xo \ - design/VecAdd.cpp design/VecAdd.h +mkdir -p build/run_u55c.py +cd build/run_u55c.py && tapa compile \ +--top VecAdd \ +--part-num xcu280-fsvh2892-2L-e \ +--clock-period 3.33 \ +-o VecAdd.xo \ +-f design/VecAdd.cpp \ +2>&1 | tee tapa.log ``` -### Step 4 (Optional): Use Vitis --link to Generate the `.xclbin` File +### Step 3 (Optional): Use Vitis --link to Generate the `.xclbin` File With the `.xo` file generated, you can use `v++ -link` to generate the `.xclbin` file. Run the following command or execute `make hw`: @@ -137,33 +86,56 @@ If your machines is equipped with the target FPGA device, you can deploy the opt :warning: **Note**: This step can take hours to complete. We recommend using the RapidStream flow to optimize the `.xo` file instead of generating the `.xclbin` file if you are familiar with AMD Vitis flow. -### Step 5: Call RapidStream to Optimize the Design +### Step 4: Define Virtual Device + +In this tutorial, we use the [Alveo U55C](https://www.amd.com/en/products/accelerators/alveo/u55c/a-u55c-p00g-pq-g.html) as an example. The device is organized into six slots, each +containing 16 clock regions of logic. In actual implementations, the available slots are reduced + based on the platform specifics, as some resources are reserved for shell logic. + +AU55C Device + +To generate a `device.json` file that details the device features, such as slot resources and + locations, you can either run the `run_u55c.py` script by invoking RapidStream as shown below or + simply enter `make device` in the terminal. + +```bash +rapidstream run_u55c.py +``` + + +### Step 5: Use Rapidstream to Optimize `.xo` Design -The RapidStream flow conducts design space exploration and generates optimized `.xo` files by taking the Vitis generated `.xo` as the input. The RapidStream flow for Vitis requires four key inputs: +The RapidStream flow conducts design space exploration and generates solutions by taking all TAPA-generated `.xo` file as the input. +The RapidStream flow for TAPA requires the following key inputs: -1. **Device**: Specify the Vitis platform name for `v++`. -2. **Xilinx Object file** (.xo): Provide the file generated by `v++` or Vivado. -3. **Connectivity** (.ini): Include the configuration file for `v++` ([link_config.ini](./design/link_config.ini)). -4. **Clock targets**: Define the desired clock frequencies. -5. RapidStream automatically handles all other aspects of the flow. +- **tapa-xo-path**: The path to the tapa-generated `xo` file (VecAdd.xo). +- **device-config**: The virtual device (`device.json`) generated in previous step 2 by calling rapidstream APIs based on platform. +- **floorplan-config**: The configure file ([floorplan_config.json](design/config/run_u55c.py/floorplan_config.json)) to guide integrated Autobridge to floorplan the design. +- **implementation-config**: The configure file ([impl_config.json](design/config/run_u55c.py/impl_config.json)) to guide Vitis to implement the design (e.g., kernek clock, vitis_platform and etc.). +- **connectivity-ini**: The link configure file ([link_config.ini](design/config/run_u55c.py/link_config.ini)) to specify how the kernel interfaces are connected the memory controller. This is +the same for vitis link configure file. -Please refer to [run.py](./run.py) for the complete RapidStream flow. -To execute the flow and generate optimized `.xo` files, -Run the following command or execute `make rs_opt`: +We encapulate the rapidstream command for TAPA as `rapidstream-tapaop` for invoking. +You can run the command below or execute `make all` supported by our [Makefile](Makefile). ```bash -rapidstream ./run.py +rapidstream-tapaopt --work-dir build/run_u55c.py \ + --tapa-xo-path ./VecAdd.xo \ + --device-config build/run_u55c.py/device.json \ + --floorplan-config ../../design/config/run_u55c.py/ab_config.json \ + --implementation-config ../../ design/config/run_u55c.py/impl_config.json \ + --connectivity-ini ../../design/config/run_u55c.py/link_config.ini ``` When finished, you can locate these files using the following command: ```bash -find ./build/dse/ -name *.xo +find ./build/run_u55c.py/ -name *.xo ``` If everything is successful, you should at least get one optimized `.xo` file located in `./build/dse/candidate_0/exported/VecAdd.xo`. -### Step 6: Check the Group Module Report +### Step 7: Check the Group Module Report RapidStream mandates a clear distinction between communication and computation within user designs. @@ -187,12 +159,11 @@ The module types for your design can be found in `build/module_types.csv`. Below | Module Name | Group Type | |:--------------------------------:|:--------------:| | VecAdd | grouped_module | -|__rs_ap_ctrl_start_ready_pipeline | grouped_module | -|__rs_ff_pipeline | grouped_module | -|__rs_hs_pipeline | grouped_module | +| __rs_VecAdd_aux | aux_module | +| ... | verilog_module | -### Step 7: Use Vitis --link with the Optimized `.xo` File +### Step 8: Use Vitis --link with the Optimized `.xo` File With the optimized `.xo` file generated, you can use `v++ -link` to generate the `.xclbin` file. Run the following command or run `make`: diff --git a/getting_started/tapa_source/design/config/run_u55c.py/floorplan_config.json b/getting_started/tapa_source/design/config/run_u55c.py/floorplan_config.json new file mode 100644 index 00000000..d4e0f55d --- /dev/null +++ b/getting_started/tapa_source/design/config/run_u55c.py/floorplan_config.json @@ -0,0 +1,14 @@ +{ + "dse_range_max": 0.8, + "dse_range_min": 0.7, + "partition_strategy": "flat", + "port_pre_assignments": { + ".*mem_in1_.*": "HBM[16]", + ".*mem_in2_.*": "HBM[17]", + ".*mem_out_.*": "HBM[18]", + "ap_clk": "CLK_RST", + "ap_rst_n": "CLK_RST", + "interrupt": "CLK_RST", + "s_axi_control_.*": "S_AXI_CONTROL" + } +} diff --git a/getting_started/tapa_source/design/config/run_u55c.py/impl_config.json b/getting_started/tapa_source/design/config/run_u55c.py/impl_config.json new file mode 100644 index 00000000..3c481977 --- /dev/null +++ b/getting_started/tapa_source/design/config/run_u55c.py/impl_config.json @@ -0,0 +1,7 @@ +{ + "max_workers": 2, + "port_to_clock_period": { + "ap_clk": 3.33 + }, + "vitis_platform": "xilinx_u55c_gen3x16_xdma_3_202210_1" +} diff --git a/getting_started/tapa_source/design/config/run_u55c.py/link_config.ini b/getting_started/tapa_source/design/config/run_u55c.py/link_config.ini new file mode 100644 index 00000000..c1298b0b --- /dev/null +++ b/getting_started/tapa_source/design/config/run_u55c.py/link_config.ini @@ -0,0 +1,4 @@ +[connectivity] +sp=VecAdd.mem_in1:HBM[16] +sp=VecAdd.mem_in2:HBM[17] +sp=VecAdd.mem_out:HBM[18] diff --git a/getting_started/tapa_source/design/main.cpp b/getting_started/tapa_source/design/main.cpp index b66af06f..90279e0a 100644 --- a/getting_started/tapa_source/design/main.cpp +++ b/getting_started/tapa_source/design/main.cpp @@ -15,21 +15,21 @@ using std::clog; using std::endl; using std::vector; -#define DATA_SIZE 4096 +#define DATA_NUM 4096 void VecAdd(tapa::mmap mem_in1, tapa::mmap mem_in2, tapa::mmap mem_out); DEFINE_string(bitstream, "", "path to bitstream file, run csim if empty"); int main(int argc, char **argv) { - vector mem_in1(DATA_SIZE); - vector mem_in2(DATA_SIZE); - vector mem_out(DATA_SIZE); - vector out_golden(DATA_SIZE); - - for(int i=0; i(rand() % DATA_SIZE); - mem_in2[i] = static_cast(rand() % DATA_SIZE); + vector mem_in1(DATA_NUM); + vector mem_in2(DATA_NUM); + vector mem_out(DATA_NUM); + vector out_golden(DATA_NUM); + + for(int i=0; i(rand() % DATA_NUM); + mem_in2[i] = static_cast(rand() % DATA_NUM); out_golden[i] = mem_in1[i] + mem_in2[i]; } @@ -37,7 +37,7 @@ int main(int argc, char **argv) VecAdd, FLAGS_bitstream, tapa::read_only_mmap(mem_in1), tapa::read_only_mmap(mem_in2), tapa::write_only_mmap(mem_out)); - for(int i=0; i